diff options
Diffstat (limited to 'xmake.lua')
-rw-r--r-- | xmake.lua | 123 |
1 files changed, 111 insertions, 12 deletions
@@ -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)") |