81 lines
2.3 KiB
C++
81 lines
2.3 KiB
C++
#include "helper.h"
|
|
#include "c.h"
|
|
#include "ld.h"
|
|
#include "tier1/utlstring.h"
|
|
|
|
|
|
#define ROOT "../"
|
|
#define EXTERNAL ROOT"external/"
|
|
#define FUNNYSTDLIB EXTERNAL"funnystdlib/"
|
|
ADD_DEPENDENCY_BUILD_FILE(tier0, FUNNYSTDLIB"tier0/build.cpp");
|
|
ADD_DEPENDENCY_BUILD_FILE(tier1, FUNNYSTDLIB"tier1/build.cpp");
|
|
DECLARE_BUILD_STAGE(rapier)
|
|
{
|
|
Target_t target = Target_t::DefaultTarget();
|
|
target.abi = TARGET_ABI_GNU;
|
|
CUtlString rapier_lib;
|
|
CUtlString szTarget = target.GetTriplet();
|
|
if (CommandLine()->CheckParam("-norust"))
|
|
return 0;
|
|
rapier_lib = CUtlString("target/%s/release/librapier_rtt.a",szTarget.GetString());
|
|
CUtlVector<CUtlString> cargo_args = {
|
|
"build",
|
|
"--release",
|
|
"--target",
|
|
szTarget
|
|
};
|
|
runner->Run("cargo", "rapier", cargo_args);
|
|
runner->Wait();
|
|
|
|
CUtlVector<CUtlString> cbindgen_args = {
|
|
"--config",
|
|
"cbindgen.toml",
|
|
"--crate",
|
|
"rapier_rtt",
|
|
"--output",
|
|
"physics.h",
|
|
};
|
|
runner->Run("cbindgen", "rapier", cbindgen_args);
|
|
runner->Wait();
|
|
|
|
CProject_t cProject = {};
|
|
cProject.m_szName = "RapierPhysics";
|
|
cProject.files = {
|
|
"physics.cpp",
|
|
};
|
|
cProject.includeDirectories = {
|
|
ROOT"public",
|
|
FUNNYSTDLIB"public",
|
|
};
|
|
cProject.bFPIC = true;
|
|
LinkProject_t linkProject = ccompiler->Compile(&cProject);
|
|
linkProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
|
linkProject.objects.AppendTail({rapier_lib});
|
|
linkProject.objects.AppendTail({GET_PROJECT_OBJECT(tier1, "tier1")});
|
|
linkProject.libraryObjects.AppendTail(GET_PROJECT_OBJECT(tier0, "tier0"));
|
|
|
|
if (linkProject.m_target.kernel & TARGET_KERNEL_WINDOWS_DEVICES)
|
|
{
|
|
linkProject.libraryDirectories.AppendTail(EXTERNAL"windows");
|
|
linkProject.libraries.AppendTail("winpthread-1");
|
|
linkProject.libraries.AppendTail("ws2_32");
|
|
linkProject.libraries.AppendTail("ntdll");
|
|
linkProject.libraries.AppendTail("userenv");
|
|
linkProject.libraries.AppendTail("winmm");
|
|
linkProject.libraries.AppendTail("ole32");
|
|
linkProject.libraries.AppendTail("gdi32");
|
|
linkProject.libraries.AppendTail("oleaut32");
|
|
linkProject.libraries.AppendTail("setupapi");
|
|
linkProject.libraries.AppendTail("imm32");
|
|
linkProject.libraries.AppendTail("version");
|
|
linkProject.libraries.AppendTail("shell32");
|
|
linkProject.libraries.AppendTail("uuid");
|
|
};
|
|
CUtlString sz_libRapierPhysics = linker->Link(&linkProject);
|
|
|
|
ADD_OUTPUT_OBJECT("physics", sz_libRapierPhysics);
|
|
|
|
|
|
return 0;
|
|
};
|