63 lines
1.6 KiB
C++
63 lines
1.6 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());
|
|
V_printf("%s\n",rapier_lib.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")});
|
|
CUtlString sz_libRapierPhysics = linker->Link(&linkProject);
|
|
|
|
ADD_OUTPUT_OBJECT("physics", sz_libRapierPhysics);
|
|
|
|
|
|
return 0;
|
|
};
|