1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
set_project("celeritas")
set_version("0.1.0")
set_config("cc", "gcc")
add_rules("mode.debug", "mode.release") -- we have two modes: debug & release
add_syslinks("m") -- these are must have when compiling
-- -Wall : base set of warnings
-- -Wextra : additional warnings not covered by -Wall
-- -Wundef : undefined macros
-- -Wdouble-promotion : catch implicit converion of float to double
add_cflags("-Wall", "-Wextra", "-Wundef", "-Wdouble-promotion")
if is_mode("debug") then
add_cflags("-g") -- Add debug symbols in debug mode
end
-- Platform defines and system packages
if is_plat("linux") then
add_defines("CEL_PLATFORM_LINUX")
add_syslinks("dl", "X11")
elseif is_plat("windows") then
add_defines("CEL_PLATFORM_WINDOWS")
elseif is_plat("macosx") then
add_defines("CEL_PLATFORM_MAC")
end
-- Compile GLFW from source
package("local_glfw")
add_deps("cmake")
set_sourcedir(path.join(os.scriptdir(), "deps/glfw-3.3.8"))
on_install(function (package)
local configs = {}
-- NOTE(omni): Keeping these around as comments in case we need to modify glfw flags
-- table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
-- table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
import("package.tools.cmake").install(package, configs)
end)
on_test(function (package)
-- assert(package:has_cfuncs("add", {includes = "foo.h"}))
end)
package_end()
add_requires("local_glfw")
-- common configuration for both static and shared libraries
target("core_config")
set_kind("static") -- kind is required but you can ignore it since it's just for common settings
add_syslinks("dl")
add_packages("local_glfw")
add_includedirs("deps/glfw-3.3.8/include/GLFW", {public = true})
add_includedirs("deps/glad/include", {public = true})
add_includedirs("deps/stb_image", {public = true})
add_includedirs("deps/stb_image_write", {public = true})
add_includedirs("deps/stb_truetype", {public = true})
add_includedirs("src/", {public = true})
add_includedirs("src/logos/", {public = true})
add_includedirs("src/maths/", {public = true})
add_includedirs("src/platform/", {public = true})
add_includedirs("src/renderer/", {public = true})
add_includedirs("src/renderer/backends/", {public = true})
add_includedirs("src/std/", {public = true})
add_includedirs("src/std/containers", {public = true})
add_includedirs("src/systems/", {public = true})
add_files("deps/glad/src/glad.c")
add_files("src/*.c")
add_files("src/logos/*.c")
add_files("src/platform/*.c")
add_files("src/renderer/*.c")
add_files("src/renderer/backends/*.c")
add_files("src/resources/*.c")
add_files("src/std/*.c")
add_files("src/std/containers/*.c")
add_files("src/systems/*.c")
set_default(false) -- prevents standalone building of this target
target("core_static")
set_kind("static")
add_deps("core_config") -- inherit common configurations
target("core_shared")
set_kind("shared")
add_deps("core_config") -- inherit common configurations
target("main_loop")
set_kind("binary")
set_group("examples")
add_deps("core_shared")
add_files("examples/main_loop/ex_main_loop.c")
set_rundir("$(projectdir)")
target("std")
set_kind("binary")
set_group("examples")
add_deps("core_static")
add_files("examples/standard_lib/ex_std.c")
set_rundir("$(projectdir)")
target("obj_loading")
set_kind("binary")
set_group("examples")
add_deps("core_static")
add_files("examples/obj_loading/ex_obj_loading.c")
set_rundir("$(projectdir)")
target("demo")
set_kind("binary")
set_group("examples")
add_deps("core_static")
add_files("examples/demo/demo.c")
set_rundir("$(projectdir)")
|