Files
armorpaint/base/project.js
T

132 lines
4.2 KiB
JavaScript
Raw Normal View History

2023-04-17 21:15:08 +02:00
2023-12-04 17:14:50 +01:00
let flags = globalThis.flags;
2024-05-19 23:36:33 +02:00
flags.android = os_argv().indexOf("android") >= 0;
flags.ios = os_argv().indexOf("ios") >= 0;
flags.d3d12 = os_argv().indexOf("direct3d12") >= 0;
flags.vulkan = os_argv().indexOf("vulkan") >= 0;
flags.metal = os_argv().indexOf("metal") >= 0;
2023-07-04 17:56:02 +02:00
flags.raytrace = flags.d3d12 || flags.vulkan || flags.metal;
2024-09-06 21:14:54 +02:00
flags.embed = os_argv().indexOf("--embed") >= 0; // os_argv().indexOf("--debug") == -1; // clang 19
2024-08-30 14:13:37 +02:00
flags.physics = os_argv().indexOf("--debug") == -1;
2023-07-04 17:56:02 +02:00
flags.voxels = !flags.raytrace && !flags.android && !flags.ios;
2023-04-17 21:15:08 +02:00
2023-12-04 17:14:50 +01:00
flags.with_d3dcompiler = true;
flags.with_nfd = true;
2024-09-29 23:48:42 +02:00
flags.with_compress = true;
2024-09-30 10:31:42 +02:00
flags.with_image_write = true;
2023-12-04 17:14:50 +01:00
flags.with_iron = true;
2024-07-24 12:19:15 +02:00
flags.with_eval = true;
2024-04-02 15:45:49 +02:00
2024-06-16 19:36:26 +02:00
let project = new Project("Base");
{
2024-09-12 21:24:34 +02:00
project.add_define("IDLE_SLEEP");
2023-12-04 17:14:50 +01:00
let dir = flags.name.toLowerCase();
if (graphics === "vulkan") {
2024-09-12 21:24:34 +02:00
project.add_define("KINC_VKRT");
2024-09-29 21:18:27 +02:00
project.add_project("../armorcore/tools/to_spirv");
2023-12-04 17:14:50 +01:00
}
if (flags.with_onnx) {
2024-09-12 21:24:34 +02:00
project.add_define("WITH_ONNX");
project.add_include_dir("../" + dir + "/onnx/include");
2024-10-23 19:10:46 +02:00
if (platform === "windows") {
2024-09-12 21:24:34 +02:00
project.add_lib("../" + dir + "/onnx/win32/onnxruntime");
2023-12-04 17:14:50 +01:00
}
2023-12-13 09:27:19 +01:00
else if (platform === "linux") {
2023-12-04 17:14:50 +01:00
// patchelf --set-rpath . ArmorLab
2024-09-12 21:24:34 +02:00
project.add_lib("onnxruntime -L" + flags.dirname + "/../" + dir + "/onnx/linux");
// project.add_lib("onnxruntime_providers_cuda");
// project.add_lib("onnxruntime_providers_shared");
// project.add_lib("cublasLt");
// project.add_lib("cublas");
// project.add_lib("cudart");
// project.add_lib("cudnn");
// project.add_lib("cufft");
// project.add_lib("curand");
2023-12-04 17:14:50 +01:00
}
2024-06-16 19:36:26 +02:00
else if (platform === "macos") {
2024-09-12 21:24:34 +02:00
project.add_lib("../" + dir + "/onnx/macos/libonnxruntime.1.14.1.dylib");
2023-12-04 17:14:50 +01:00
}
}
2024-09-29 23:48:42 +02:00
project.add_define("WITH_PLUGINS");
2024-09-12 21:24:34 +02:00
project.add_cfiles("sources/plugin_api.c");
project.add_project("../" + dir + "/plugins");
2024-10-23 17:04:51 +02:00
project.add_project("plugins");
2024-06-16 19:36:26 +02:00
}
2023-12-04 17:14:50 +01:00
2024-09-12 21:24:34 +02:00
project.add_project("../armorcore");
project.add_tsfiles("sources");
project.add_tsfiles("sources/nodes");
project.add_shaders("../armorcore/shaders/*.glsl");
project.add_shaders("shaders/*.glsl");
project.add_assets("assets/*", { destination: "data/{name}" });
project.add_assets("assets/locale/*", { destination: "data/locale/{name}" });
project.add_assets("assets/licenses/**", { destination: "data/licenses/{name}" });
project.add_assets("assets/plugins/*", { destination: "data/plugins/{name}" });
project.add_assets("assets/themes/*.json", { destination: "data/themes/{name}" });
2023-04-17 21:15:08 +02:00
2024-05-09 11:22:49 +02:00
if (flags.embed) {
2024-09-12 21:24:34 +02:00
project.add_define("WITH_EMBED");
project.add_define("arm_embed");
2023-04-17 21:15:08 +02:00
}
else {
2024-09-12 21:24:34 +02:00
project.add_assets("assets/extra/*", { destination: "data/{name}" });
2023-04-17 21:15:08 +02:00
}
2024-08-30 21:02:15 +02:00
if (flags.physics) {
2024-09-12 21:24:34 +02:00
project.add_define("arm_physics");
2024-08-30 21:02:15 +02:00
}
2024-09-12 21:24:34 +02:00
project.add_define("arm_particles");
// project.add_define("arm_skin");
// project.add_define("arm_audio");
2023-04-17 21:15:08 +02:00
if (flags.android) {
2024-09-12 21:24:34 +02:00
project.add_define("arm_android_rmb");
2023-04-17 21:15:08 +02:00
}
if (flags.raytrace) {
2024-09-12 21:24:34 +02:00
project.add_assets("assets/raytrace/*", { destination: "data/{name}" });
2023-04-17 21:15:08 +02:00
if (flags.d3d12) {
2024-09-12 21:24:34 +02:00
project.add_assets("shaders/raytrace/*.cso", { destination: "data/{name}" });
project.add_assets("assets/readme/readme_dxr.txt", { destination: "{name}" });
2023-04-17 21:15:08 +02:00
}
else if (flags.vulkan) {
2024-09-12 21:24:34 +02:00
project.add_assets("shaders/raytrace/*.spirv", { destination: "data/{name}" });
project.add_assets("assets/readme/readme_vkrt.txt", { destination: "{name}" });
2023-04-17 21:15:08 +02:00
}
2023-07-04 17:56:02 +02:00
else if (flags.metal) {
2024-09-12 21:24:34 +02:00
project.add_assets("shaders/raytrace/*.metal", { destination: "data/{name}" });
2023-07-04 17:56:02 +02:00
}
2023-04-17 21:15:08 +02:00
}
if (flags.voxels) {
2024-09-12 21:24:34 +02:00
project.add_define("arm_voxels");
2023-04-17 21:15:08 +02:00
2024-10-23 19:10:46 +02:00
if (platform === "windows") {
2024-10-02 23:17:50 +02:00
project.add_assets("shaders/voxel_hlsl/*.d3d11", { destination: "data/{name}" });
2023-04-17 21:15:08 +02:00
}
else {
2024-10-15 23:43:08 +02:00
project.add_shaders("shaders/voxel_glsl/*.glsl", { noprocessing: true });
2023-04-17 21:15:08 +02:00
}
}
2023-12-12 14:57:44 +01:00
let export_version_info = true;
if (export_version_info) {
2024-01-23 16:05:30 +01:00
let dir = "../" + flags.name.toLowerCase() + "/build";
2024-08-24 16:39:31 +02:00
let sha = os_popen(`git log --pretty=format:"%h" -n 1`).stdout.substr(1, 7);
2023-12-12 14:57:44 +01:00
let date = new Date().toISOString().split("T")[0];
let data = `{ "sha": "${sha}", "date": "${date}" }`;
2024-05-19 23:36:33 +02:00
fs_ensuredir(dir);
fs_writefile(dir + "/version.json", data);
2024-01-23 16:05:30 +01:00
// Adds version.json to embed.txt list
2024-09-12 21:24:34 +02:00
project.add_assets(dir + "/version.json", { destination: "data/{name}" });
2023-12-12 14:57:44 +01:00
}
2024-06-16 19:36:26 +02:00
project.flatten();
2024-05-11 22:03:44 +02:00
return project;