#include "god/build.h" #include "god/c.h" #include "god/ld.h" #include "god/utils.h" char *engine_lib; char *engine_implib; void engine_build(struct build_data b) { char *szVideoFile = "engine/vk_videosdl.cpp"; char* files[] = { "engine/console.cpp", "engine/filesystem.cpp", "engine/server.cpp", "engine/engine.cpp", /* rendering */ "engine/vk_video.cpp", "engine/vk_mesh.cpp", szVideoFile, /* entities */ "engine/baseentity.cpp", "engine/level.cpp", "engine/brush.cpp", /* server */ "engine/sv_worldspawn.cpp", "engine/sv_light.cpp", /* client */ "engine/cl_worldspawn.cpp", "engine/cl_light.cpp", NULL, }; struct project p = { .b = &b, .files = files, .name = "engine", }; struct project o = C_compile(p, (struct C_settings){ .generation_flags = C_GENERATION_FLAGS_PIC, .compile_flags = C_COMPILE_FLAGS_WALL, .include_dirs = include_dirs, }); add_item(&o.files, tier1_lib); add_item(&o.files, rapierLib); char *szVulkan = (char*)1; char *szws2 = (char*)1; if (b.kernel==BUILD_KERNEL_WINDOWS) { szVulkan="vulkan-1"; szws2="ws2_32"; } if (b.kernel==BUILD_KERNEL_LINUX) { szVulkan="vulkan"; } char* libs[] = { "c", "SDL3", szVulkan, NULL, }; engine_lib = ld_link_project(o, (struct link_settings){ .type = LINK_TYPE_DYNAMIC, .libs = libs, }); mv("build/"GAME_NAME"/game/bin",engine_lib); }