#include "helper.h" #include "c.h" #include "ld.h" #include "tier1/utlstring.h" #define EXTERNAL "../external/" #define FUNNYSTDLIB "../external/funnystdlib/" ADD_DEPENDENCY_BUILD_FILE(cfg, "../buildcfg.cpp"); ADD_DEPENDENCY_BUILD_FILE(MaterialSystem, "../materialsystem/build.cpp") ADD_DEPENDENCY_BUILD_FILE(tier0, FUNNYSTDLIB"tier0/build.cpp"); ADD_DEPENDENCY_BUILD_FILE(tier1, FUNNYSTDLIB"tier1/build.cpp"); ADD_DEPENDENCY_BUILD_FILE(tier2, FUNNYSTDLIB"tier2/build.cpp"); DECLARE_BUILD_STAGE(engine) { CProject_t compileProject = {}; LinkProject_t ldProject = {}; compileProject.m_szName = "engine"; compileProject.files = { "engine.cpp", "cvar.cpp", "localnetwork.cpp", "socketnetwork.cpp", "steamnetwork.cpp", "sv_dll.cpp", "cl_dll.cpp", }; compileProject.includeDirectories = { "../public", "../external/SDL/include", "../external/cglm/include", FUNNYSTDLIB"public", EXTERNAL"steamworks/public", }; if ( GET_PROJECT_VALUE(config, "steam") == "true" ) compileProject.macros.AppendTail({"STEAM", "TRUE"}); compileProject.bFPIC = true; ldProject = ccompiler->Compile(&compileProject); if ( GET_PROJECT_VALUE(config, "static") == "true" ) { ldProject.linkType = ELINK_STATIC_LIBRARY; } else { if ( GET_PROJECT_VALUE(config, "steam") == "true" ) { ldProject.libraryDirectories.AppendTail(EXTERNAL"steamworks/redistributable_bin/linux64"); ldProject.libraries.AppendTail("steam_api"); } ldProject.linkType = ELINK_DYNAMIC_LIBRARY; ldProject.libraryObjects = { GET_PROJECT_LIBRARY(tier0, "tier0"), }; ldProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")}); ldProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier2, "tier2")}); } if (ldProject.m_target.kernel & TARGET_KERNEL_WINDOWS_DEVICES) { ldProject.libraryDirectories.AppendTail(EXTERNAL"windows"); ldProject.libraries.AppendTail("winpthread-1"); ldProject.libraries.AppendTail("winmm"); ldProject.libraries.AppendTail("ole32"); ldProject.libraries.AppendTail("gdi32"); ldProject.libraries.AppendTail("oleaut32"); ldProject.libraries.AppendTail("setupapi"); ldProject.libraries.AppendTail("imm32"); ldProject.libraries.AppendTail("version"); ldProject.libraries.AppendTail("shell32"); ldProject.libraries.AppendTail("uuid"); }; CUtlString outputProject = linker->Link(&ldProject); ADD_OUTPUT_OBJECT("engine", outputProject) return 0; };