| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- let flags = globalThis.flags;
- 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;
- flags.raytrace = flags.d3d12 || flags.vulkan || flags.metal;
- flags.embed = os_argv().indexOf("--embed") >= 0; // os_argv().indexOf("--debug") == -1; // clang 19
- flags.physics = os_argv().indexOf("--debug") == -1;
- flags.voxels = !flags.raytrace && !flags.android && !flags.ios;
- flags.with_d3dcompiler = true;
- flags.with_nfd = true;
- flags.with_compress = true;
- flags.with_image_write = true;
- flags.with_iron = true;
- flags.with_eval = true;
- let project = new Project("Base");
- {
- project.add_define("IDLE_SLEEP");
- let dir = flags.name.toLowerCase();
- if (graphics === "vulkan") {
- project.add_define("KINC_VKRT");
- project.add_project("../armorcore/tools/to_spirv");
- }
- if (flags.with_onnx) {
- project.add_define("WITH_ONNX");
- project.add_include_dir("../" + dir + "/onnx/include");
- if (platform === "windows") {
- project.add_lib("../" + dir + "/onnx/win32/onnxruntime");
- }
- else if (platform === "linux") {
- // patchelf --set-rpath . ArmorLab
- 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");
- }
- else if (platform === "macos") {
- project.add_lib("../" + dir + "/onnx/macos/libonnxruntime.1.14.1.dylib");
- }
- }
- project.add_define("WITH_PLUGINS");
- project.add_cfiles("sources/plugin_api.c");
- project.add_project("../" + dir + "/plugins");
- project.add_project("plugins");
- }
- 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}" });
- if (flags.embed) {
- project.add_define("WITH_EMBED");
- project.add_define("arm_embed");
- }
- else {
- project.add_assets("assets/extra/*", { destination: "data/{name}" });
- }
- if (flags.physics) {
- project.add_define("arm_physics");
- }
- project.add_define("arm_particles");
- // project.add_define("arm_skin");
- // project.add_define("arm_audio");
- if (flags.android) {
- project.add_define("arm_android_rmb");
- }
- if (flags.raytrace) {
- project.add_assets("assets/raytrace/*", { destination: "data/{name}" });
- if (flags.d3d12) {
- project.add_assets("shaders/raytrace/*.cso", { destination: "data/{name}" });
- project.add_assets("assets/readme/readme_dxr.txt", { destination: "{name}" });
- }
- else if (flags.vulkan) {
- project.add_assets("shaders/raytrace/*.spirv", { destination: "data/{name}" });
- project.add_assets("assets/readme/readme_vkrt.txt", { destination: "{name}" });
- }
- else if (flags.metal) {
- project.add_assets("shaders/raytrace/*.metal", { destination: "data/{name}" });
- }
- }
- if (flags.voxels) {
- project.add_define("arm_voxels");
- if (platform === "windows") {
- project.add_assets("shaders/voxel_hlsl/*.d3d11", { destination: "data/{name}" });
- }
- else {
- project.add_shaders("shaders/voxel_glsl/*.glsl", { noprocessing: true });
- }
- }
- let export_version_info = true;
- if (export_version_info) {
- let dir = "../" + flags.name.toLowerCase() + "/build";
- let sha = os_popen(`git log --pretty=format:"%h" -n 1`).stdout.substr(1, 7);
- let date = new Date().toISOString().split("T")[0];
- let data = `{ "sha": "${sha}", "date": "${date}" }`;
- fs_ensuredir(dir);
- fs_writefile(dir + "/version.json", data);
- // Adds version.json to embed.txt list
- project.add_assets(dir + "/version.json", { destination: "data/{name}" });
- }
- let export_data_list = flags.android; // .apk contents
- if (export_data_list) {
- let root = "../" + flags.name.toLowerCase();
- let data_list = {
- "/data/plugins": fs_readdir("../base/assets/plugins").concat(fs_readdir(root + "/assets/plugins")).join(","),
- "/data/export_presets": fs_readdir(root + "/assets/export_presets").join(","),
- "/data/keymap_presets": fs_readdir(root + "/assets/keymap_presets").join(","),
- "/data/locale": fs_readdir("../base/assets/locale").join(","),
- "/data/meshes": fs_readdir(root + "/assets/meshes").join(","),
- "/data/themes": fs_readdir("../base/assets/themes").join(","),
- };
- let dir = "../" + flags.name.toLowerCase() + "/build";
- fs_ensuredir(dir);
- fs_writefile(dir + "/data_list.json", JSON.stringify(data_list));
- project.add_assets(dir + "/data_list.json", { destination: "data/{name}" });
- }
- project.flatten();
- return project;
|