#include "helper.h" #include "c.h" #include "ld.h" #define EXTERNAL "../../external/" ADD_DEPENDENCY_BUILD_FILE(cfg, "../../buildcfg.cpp"); #define FUNNYSTDLIB EXTERNAL"funnystdlib/" 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(Client) { CProject_t compileProject = {}; LinkProject_t ldProject = {}; compileProject.m_szName = "client"; compileProject.files = { "../shared/game.cpp", "../shared/boneanimation.cpp", "game.cpp", "userinput.cpp", "baseentity.cpp", "basemodelentity.cpp", "entitysystem.cpp", "worldrender.cpp", "assetmgr.cpp", "materials.cpp", "milmoba/materials.cpp", "milmoba/player.cpp", }; compileProject.includeDirectories = { ".", "../shared", "../../public", FUNNYSTDLIB"public", EXTERNAL"cglm/include", EXTERNAL"steamworks/public", }; compileProject.bFPIC = true; if ( GET_PROJECT_VALUE(config, "steam") == "true" ) compileProject.macros.AppendTail({"STEAM", "TRUE"}); ldProject = ccompiler->Compile(&compileProject); if ( GET_PROJECT_VALUE(config, "static") == "true" ) { ldProject.linkType = ELINK_STATIC_LIBRARY; } else { 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 ( GET_PROJECT_VALUE(config, "steam") == "true" ) { ldProject.libraryObjects.AppendTail(GET_PROJECT_OBJECT(config, "steam_lib")); } if (ldProject.m_target.kernel & TARGET_KERNEL_WINDOWS_DEVICES) { ldProject.libraryDirectories.AppendTail(EXTERNAL"windows"); ldProject.libraries.AppendTail("winpthread-1"); ldProject.libraries.AppendTail("ws2_32"); } } if (ldProject.m_target.kernel & TARGET_KERNEL_WINDOWS_DEVICES) { ldProject.libraries.AppendTail("pthread"); }; CUtlString outputProject = linker->Link(&ldProject); ADD_OUTPUT_OBJECT("client", outputProject); return 0; }