summaryrefslogtreecommitdiff
path: root/xmake.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake.lua')
-rw-r--r--xmake.lua123
1 files changed, 111 insertions, 12 deletions
diff --git a/xmake.lua b/xmake.lua
index ba8011f..a5e6239 100644
--- a/xmake.lua
+++ b/xmake.lua
@@ -12,18 +12,25 @@ add_cflags("-Wall", "-Wextra", "-Wundef", "-Wdouble-promotion")
if is_mode("debug") then
add_cflags("-g") -- Add debug symbols in debug mode
+ add_defines("CDEBUG")
+elseif is_mode("release") then
+ add_defines("CRELEASE")
end
+
-- Platform defines and system packages
if is_plat("linux") then
add_defines("CEL_PLATFORM_LINUX")
- add_syslinks("m", "dl", "X11")
+ add_syslinks("vulkan", "dl", "X11", "pthread")
elseif is_plat("windows") then
add_defines("CEL_PLATFORM_WINDOWS")
add_syslinks("user32", "gdi32", "kernel32", "shell32")
add_links("pthreadVC2-w64")
elseif is_plat("macosx") then
add_defines("CEL_PLATFORM_MAC")
+ add_frameworks("Cocoa", "IOKit", "CoreVideo", "OpenGL")
+ set_runenv("MTL_DEBUG_LAYER", "1")
+ -- add_syslinks("GL")
end
-- Compile GLFW from source
@@ -44,10 +51,45 @@ package_end()
add_requires("local_glfw")
+local core_sources = {
+ "deps/glad/src/glad.c",
+ "src/*.c",
+ "src/logos/*.c",
+ "src/platform/*.c",
+ "src/renderer/*.c",
+ "src/renderer/backends/*.c",
+ "src/renderer/cleanroom/*.c",
+ "src/resources/*.c",
+ "src/std/*.c",
+ "src/std/containers/*.c",
+ "src/systems/*.c",
+}
+
+rule("compile_glsl_vert_shaders")
+ set_extensions(".vert")
+ on_buildcmd_file(function (target, batchcmds, sourcefile, opt)
+ local targetfile = path.join(target:targetdir(), path.basename(sourcefile) .. ".vert.spv")
+
+ print("Compiling shader: %s to %s", sourcefile, targetfile)
+ batchcmds:vrunv('glslc', {sourcefile, "-o", targetfile})
+ -- batchcmds:add_depfiles(sourcefile)
+end)
+rule("compile_glsl_frag_shaders")
+ set_extensions(".frag")
+ on_buildcmd_file(function (target, batchcmds, sourcefile, opt)
+ local targetfile = path.join(target:targetdir(), path.basename(sourcefile) .. ".frag.spv")
+
+ print("Compiling shader: %s to %s", sourcefile, targetfile)
+ batchcmds:vrunv('glslc', {sourcefile, "-o", targetfile})
+ -- batchcmds:add_depfiles(sourcefile)
+end)
+-- TODO: Metal shaders compilation
+
-- 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_packages("local_glfw")
+ add_includedirs("deps/cgltf", {public = true})
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})
@@ -59,24 +101,24 @@ target("core_config")
add_includedirs("src/platform/", {public = true})
add_includedirs("src/renderer/", {public = true})
add_includedirs("src/renderer/backends/", {public = true})
+ add_includedirs("src/renderer/cleanroom/", {public = true})
+ add_includedirs("src/resources/", {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/std/*.c")
- add_files("src/std/containers/*.c")
- add_files("src/systems/*.c")
-
+ add_files("src/empty.c") -- for some reason we need this on Mac so it doesnt call 'ar' with no files and error
+ -- add_rules("compile_glsl_vert_shaders")
+ -- add_rules("compile_glsl_frag_shaders")
+ -- add_files("assets/shaders/object.vert")
+ -- add_files("assets/shaders/object.frag")
+ -- add_files("assets/shaders/*.frag")
set_default(false) -- prevents standalone building of this target
target("core_static")
set_kind("static")
add_deps("core_config") -- inherit common configurations
+ set_policy("build.merge_archive", true)
+ add_files(core_sources)
-- Link against static CRT
if is_plat("windows") then
add_links("libcmt", "legacy_stdio_definitions") -- for release builds
@@ -86,6 +128,7 @@ target("core_static")
target("core_shared")
set_kind("shared")
add_deps("core_config") -- inherit common configurations
+ add_files(core_sources)
-- Link against dynamic CRT
if is_plat("windows") then
add_links("msvcrt", "legacy_stdio_definitions") -- for release builds
@@ -105,4 +148,60 @@ target("std")
set_group("examples")
add_deps("core_static")
add_files("examples/standard_lib/ex_std.c")
- set_rundir("$(projectdir)") \ No newline at end of file
+ set_rundir("$(projectdir)")
+
+target("obj")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_static")
+ add_files("examples/obj_loading/ex_obj_loading.c")
+ set_rundir("$(projectdir)")
+
+target("input")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_static")
+ add_files("examples/input/ex_input.c")
+ set_rundir("$(projectdir)")
+
+target("gltf")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_static")
+ add_files("examples/gltf_loading/ex_gltf_loading.c")
+ set_rundir("$(projectdir)")
+
+target("transforms")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_shared")
+ add_files("examples/transforms/ex_transforms.c")
+ set_rundir("$(projectdir)")
+
+target("animation")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_shared")
+ add_files("examples/property_animation/ex_property_animation.c")
+ set_rundir("$(projectdir)")
+
+target("skinned")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_shared")
+ add_files("examples/skinned_animation/ex_skinned_animation.c")
+ set_rundir("$(projectdir)")
+
+target("input")
+ set_kind("binary")
+ set_group("examples")
+ add_deps("core_static")
+ add_files("examples/input/ex_input.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)")