diff --git a/armorlab/khafile.js b/armorlab/khafile.js index 8f511827..89db3af2 100644 --- a/armorlab/khafile.js +++ b/armorlab/khafile.js @@ -1,95 +1,44 @@ -let android = process.argv.indexOf("android") >= 0; -let ios = process.argv.indexOf("ios") >= 0; -let win_hlsl = process.platform === "win32" && process.argv.indexOf("opengl") < 0; -let d3d12 = process.argv.indexOf("direct3d12") >= 0; -let vulkan = process.argv.indexOf("vulkan") >= 0; -let raytrace = d3d12 || vulkan; -let metal = process.argv.indexOf("metal") >= 0; -let snapshot = process.argv.indexOf("--snapshot") >= 0; - let project = new Project("ArmorLab"); +project.addDefine("is_lab"); + +await project.addProject("../base"); +let flags = globalThis.flags; + project.addSources("Sources"); -project.addShaders("Shaders/*.glsl", { embed: snapshot }); -project.addAssets("Assets/*", { destination: "data/{name}", embed: snapshot }); -project.addLibrary("../../base"); -project.addShaders("../armorcore/Shaders/*.glsl", { embed: snapshot }); -project.addShaders("../base/Shaders/*.glsl", { embed: snapshot }); -project.addAssets("../base/Assets/*", { destination: "data/{name}", embed: snapshot }); -if (!snapshot) { - project.addDefine("arm_noembed"); - project.addAssets("../base/Assets/extra/*", { destination: "data/{name}" }); -} +project.addShaders("Shaders/*.glsl", { embed: flags.snapshot }); +project.addAssets("Assets/*", { destination: "data/{name}", embed: flags.snapshot }); project.addAssets("Assets/export_presets/*", { destination: "data/export_presets/{name}" }); project.addAssets("Assets/keymap_presets/*", { destination: "data/keymap_presets/{name}" }); -project.addAssets("../base/Assets/locale/*", { destination: "data/locale/{name}" }); project.addAssets("Assets/licenses/**", { destination: "data/licenses/{name}" }); project.addAssets("Assets/plugins/*", { destination: "data/plugins/{name}" }); project.addAssets("Assets/meshes/*", { destination: "data/meshes/{name}" }); project.addAssets("Assets/models/*.onnx", { destination: "data/models/{name}" }); project.addAssets("Assets/models/LICENSE.txt", { destination: "data/models/LICENSE.txt" }); -project.addAssets("../base/Assets/licenses/**", { destination: "data/licenses/{name}" }); -project.addAssets("../base/Assets/themes/*.json", { destination: "data/themes/{name}" }); -project.addDefine("js-es=6"); -project.addParameter("--macro include('arm.logic')"); -project.addDefine("zui_translate"); -project.addDefine("arm_data_dir"); -project.addDefine("arm_ltc"); -project.addDefine("arm_skip_envmap"); -project.addDefine("arm_taa"); -project.addDefine("arm_veloc"); -project.addDefine("arm_particles"); -project.addParameter("-dce full"); -project.addDefine("analyzer-optimize"); -if (android) { - project.addDefine("kha_android_rmb"); -} -else if (process.platform === "win32") { +if (process.platform === "win32") { project.addAssets("../armorcore/Libraries/onnx/win32/*.dll", { destination: "{name}" }); } else if (process.platform === "linux") { project.addAssets("../armorcore/Libraries/onnx/linux/*.so.*", { destination: "{name}" }); // Versioned lib } -if (snapshot) { - project.addDefine("arm_snapshot"); - project.addDefine("arm_image_embed"); - project.addDefine("arm_shader_embed"); - project.addParameter("--no-traces"); -} - project.addAssets("Assets/readme/readme.txt", { destination: "{name}" }); -if (android) { +if (flags.android) { project.addAssets("Assets/readme/readme_android.txt", { destination: "{name}" }); } -else if (ios) { +else if (flags.ios) { project.addAssets("Assets/readme/readme_ios.txt", { destination: "{name}" }); } -if (raytrace) { - project.addAssets("../base/Assets/raytrace/*", { destination: "data/{name}", embed: snapshot }); - - if (d3d12) { - project.addAssets("../base/Shaders/raytrace/*.cso", { destination: "data/{name}", embed: snapshot }); +if (flags.raytrace) { + if (flags.d3d12) { project.addAssets("Assets/readme/readme_dxr.txt", { destination: "{name}" }); } - else if (vulkan) { - project.addAssets("../base/Shaders/raytrace/*.spirv", { destination: "data/{name}", embed: snapshot }); + else if (flags.vulkan) { project.addAssets("Assets/readme/readme_vkrt.txt", { destination: "{name}" }); } } -if (process.platform !== "darwin" && !raytrace && !android && !ios) { - project.addDefine("rp_voxels"); - - if (process.platform === "win32" && win_hlsl) { - project.addShaders("../base/Shaders/voxel_hlsl/*.glsl", { embed: snapshot, noprocessing: true }); - } - else { - project.addShaders("../base/Shaders/voxel_glsl/*.glsl", { embed: snapshot }); - } -} - resolve(project); diff --git a/armorlab/kincflags.js b/armorlab/kincflags.js index 4369d339..d0c6f4b3 100644 --- a/armorlab/kincflags.js +++ b/armorlab/kincflags.js @@ -7,10 +7,10 @@ flags.with_nfd = true; flags.with_tinydir = true; flags.with_zlib = true; flags.with_stb_image_write = true; -flags.with_onnx = true; flags.with_g2 = true; flags.with_iron = true; flags.with_zui = true; +flags.with_onnx = true; flags.on_project_created = async function(project) { project.addDefine('IDLE_SLEEP'); diff --git a/armorpaint/khafile.js b/armorpaint/khafile.js index 5bcdf9e7..4dc3968e 100644 --- a/armorpaint/khafile.js +++ b/armorpaint/khafile.js @@ -1,107 +1,47 @@ -let android = process.argv.indexOf("android") >= 0; -let ios = process.argv.indexOf("ios") >= 0; -let win_hlsl = process.platform === "win32" && process.argv.indexOf("opengl") < 0; -let d3d12 = process.argv.indexOf("direct3d12") >= 0; -let vulkan = process.argv.indexOf("vulkan") >= 0; -let raytrace = d3d12 || vulkan; -let metal = process.argv.indexOf("metal") >= 0; -let vr = process.argv.indexOf("--vr") >= 0; -let snapshot = process.argv.indexOf("--snapshot") >= 0; -let plugin_embed = ios; -let physics = !ios; - let project = new Project("ArmorPaint"); +project.addDefine("is_paint"); + +await project.addProject("../base"); +let flags = globalThis.flags; + project.addSources("Sources"); -project.addShaders("Shaders/*.glsl", { embed: snapshot }); -project.addAssets("Assets/*", { destination: "data/{name}", embed: snapshot }); -project.addLibrary("../../base"); -project.addShaders("../armorcore/Shaders/*.glsl", { embed: snapshot }); -project.addShaders("../base/Shaders/*.glsl", { embed: snapshot }); -project.addAssets("../base/Assets/*", { destination: "data/{name}", embed: snapshot }); -if (!snapshot) { - project.addDefine("arm_noembed"); - project.addAssets("../base/Assets/extra/*", { destination: "data/{name}" }); -} +project.addShaders("Shaders/*.glsl", { embed: flags.snapshot }); +project.addAssets("Assets/*", { destination: "data/{name}", embed: flags.snapshot }); project.addAssets("Assets/export_presets/*", { destination: "data/export_presets/{name}" }); project.addAssets("Assets/keymap_presets/*", { destination: "data/keymap_presets/{name}" }); -project.addAssets("../base/Assets/locale/*", { destination: "data/locale/{name}" }); project.addAssets("Assets/licenses/**", { destination: "data/licenses/{name}" }); project.addAssets("Assets/plugins/*", { destination: "data/plugins/{name}" }); -if (plugin_embed) { +project.addAssets("Assets/meshes/*", { destination: "data/meshes/{name}" }); + +if (flags.plugin_embed) { project.addAssets("Assets/plugins/embed/*", { destination: "data/plugins/{name}" }); } else { project.addAssets("Assets/plugins/wasm/*", { destination: "data/plugins/{name}" }); } -project.addAssets("Assets/meshes/*", { destination: "data/meshes/{name}" }); -project.addAssets("../base/Assets/licenses/**", { destination: "data/licenses/{name}" }); -project.addAssets("../base/Assets/themes/*.json", { destination: "data/themes/{name}" }); -project.addDefine("js-es=6"); -project.addParameter("--macro include('arm.logic')"); -project.addDefine("zui_translate"); -project.addDefine("arm_data_dir"); -project.addDefine("arm_ltc"); -project.addDefine("arm_skip_envmap"); -project.addDefine("arm_taa"); -project.addDefine("arm_veloc"); -project.addDefine("arm_particles"); -// project.addDefine("arm_skin"); -project.addParameter("-dce full"); -project.addDefine("analyzer-optimize"); -if (physics) { +if (flags.physics) { project.addDefine("arm_physics"); project.addAssets("Assets/plugins/wasm/ammo/*", { destination: "data/plugins/{name}" }); } -if (android) { - project.addDefine("kha_android_rmb"); -} - -if (vr) { - project.addDefine("arm_vr"); - project.addAssets("Assets/readme/readme_vr.txt", { destination: "{name}" }); -} - -if (snapshot) { - project.addDefine("arm_snapshot"); - project.addDefine("arm_image_embed"); - project.addDefine("arm_shader_embed"); - project.addParameter("--no-traces"); -} - project.addAssets("Assets/readme/readme.txt", { destination: "{name}" }); -if (android) { +if (flags.android) { project.addAssets("Assets/readme/readme_android.txt", { destination: "{name}" }); } -else if (ios) { +else if (flags.ios) { project.addAssets("Assets/readme/readme_ios.txt", { destination: "{name}" }); } -if (raytrace) { - project.addAssets("../base/Assets/raytrace/*", { destination: "data/{name}", embed: snapshot }); - - if (d3d12) { - project.addAssets("../base/Shaders/raytrace/*.cso", { destination: "data/{name}", embed: snapshot }); +if (flags.raytrace) { + if (flags.d3d12) { project.addAssets("Assets/readme/readme_dxr.txt", { destination: "{name}" }); } - else if (vulkan) { - project.addAssets("../base/Shaders/raytrace/*.spirv", { destination: "data/{name}", embed: snapshot }); + else if (flags.vulkan) { project.addAssets("Assets/readme/readme_vkrt.txt", { destination: "{name}" }); } } -if (process.platform !== "darwin" && !raytrace && !android && !ios) { - project.addDefine("rp_voxels"); - - if (process.platform === "win32" && win_hlsl) { - project.addShaders("../base/Shaders/voxel_hlsl/*.glsl", { embed: snapshot, noprocessing: true }); - } - else { - project.addShaders("../base/Shaders/voxel_glsl/*.glsl", { embed: snapshot }); - } -} - resolve(project); diff --git a/base/khafile.js b/base/khafile.js new file mode 100644 index 00000000..70a1f7a6 --- /dev/null +++ b/base/khafile.js @@ -0,0 +1,76 @@ + +let flags = {}; +globalThis.flags = flags; +flags.android = process.argv.indexOf("android") >= 0; +flags.ios = process.argv.indexOf("ios") >= 0; +flags.win_hlsl = process.platform === "win32" && process.argv.indexOf("opengl") < 0; +flags.d3d12 = process.argv.indexOf("direct3d12") >= 0; +flags.vulkan = process.argv.indexOf("vulkan") >= 0; +flags.raytrace = flags.d3d12 || flags.vulkan; +flags.metal = process.argv.indexOf("metal") >= 0; +flags.vr = process.argv.indexOf("--vr") >= 0; +flags.snapshot = process.argv.indexOf("--snapshot") >= 0; +flags.plugin_embed = flags.ios; +flags.physics = !flags.ios; +flags.voxels = process.platform !== "darwin" && !flags.raytrace && !flags.android && !flags.ios; + +let project = new Project("Base"); +project.addSources("Sources"); +project.addShaders("../armorcore/Shaders/*.glsl", { embed: flags.snapshot }); +project.addShaders("Shaders/*.glsl", { embed: flags.snapshot }); +project.addAssets("Assets/*", { destination: "data/{name}", embed: flags.snapshot }); +project.addAssets("Assets/locale/*", { destination: "data/locale/{name}" }); +project.addAssets("Assets/licenses/**", { destination: "data/licenses/{name}" }); +project.addAssets("Assets/themes/*.json", { destination: "data/themes/{name}" }); + +if (flags.snapshot) { + project.addDefine("arm_snapshot"); + project.addDefine("arm_image_embed"); + project.addDefine("arm_shader_embed"); + project.addParameter("--no-traces"); +} +else { + project.addDefine("arm_noembed"); + project.addAssets("Assets/extra/*", { destination: "data/{name}" }); +} + +project.addParameter("--macro include('arm.logic')"); +project.addParameter("-dce full"); +project.addDefine("analyzer-optimize"); +project.addDefine("js-es=6"); +project.addDefine("zui_translate"); +project.addDefine("arm_data_dir"); +project.addDefine("arm_ltc"); +project.addDefine("arm_skip_envmap"); +project.addDefine("arm_taa"); +project.addDefine("arm_veloc"); +project.addDefine("arm_particles"); +// project.addDefine("arm_skin"); + +if (flags.android) { + project.addDefine("kha_android_rmb"); +} + +if (flags.raytrace) { + project.addAssets("Assets/raytrace/*", { destination: "data/{name}", embed: flags.snapshot }); + + if (flags.d3d12) { + project.addAssets("Shaders/raytrace/*.cso", { destination: "data/{name}", embed: flags.snapshot }); + } + else if (flags.vulkan) { + project.addAssets("Shaders/raytrace/*.spirv", { destination: "data/{name}", embed: flags.snapshot }); + } +} + +if (flags.voxels) { + project.addDefine("rp_voxels"); + + if (process.platform === "win32" && flags.win_hlsl) { + project.addShaders("Shaders/voxel_hlsl/*.glsl", { embed: flags.snapshot, noprocessing: true }); + } + else { + project.addShaders("Shaders/voxel_glsl/*.glsl", { embed: flags.snapshot }); + } +} + +resolve(project);