khafile.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. let flags = {};
  2. globalThis.flags = flags;
  3. flags.android = process.argv.indexOf("android") >= 0;
  4. flags.ios = process.argv.indexOf("ios") >= 0;
  5. flags.win_hlsl = process.platform === "win32" && process.argv.indexOf("opengl") < 0;
  6. flags.d3d12 = process.argv.indexOf("direct3d12") >= 0;
  7. flags.vulkan = process.argv.indexOf("vulkan") >= 0;
  8. flags.metal = process.argv.indexOf("metal") >= 0;
  9. flags.raytrace = flags.d3d12 || flags.vulkan || flags.metal;
  10. flags.snapshot = process.argv.indexOf("--snapshot") >= 0;
  11. flags.plugin_embed = flags.ios;
  12. flags.physics = !flags.ios;
  13. flags.voxels = !flags.raytrace && !flags.android && !flags.ios;
  14. let project = new Project("Base");
  15. project.addSources("Sources");
  16. project.addShaders("../armorcore/Shaders/*.glsl", { embed: flags.snapshot });
  17. project.addShaders("Shaders/*.glsl", { embed: flags.snapshot });
  18. project.addAssets("Assets/*", { destination: "data/{name}", embed: flags.snapshot });
  19. project.addAssets("Assets/locale/*", { destination: "data/locale/{name}" });
  20. project.addAssets("Assets/licenses/**", { destination: "data/licenses/{name}" });
  21. project.addAssets("Assets/plugins/*", { destination: "data/plugins/{name}" });
  22. project.addAssets("Assets/themes/*.json", { destination: "data/themes/{name}" });
  23. if (flags.snapshot) {
  24. project.addDefine("arm_snapshot");
  25. project.addDefine("arm_image_embed");
  26. project.addDefine("arm_shader_embed");
  27. project.addParameter("--no-traces");
  28. }
  29. else {
  30. project.addDefine("arm_noembed");
  31. project.addAssets("Assets/extra/*", { destination: "data/{name}" });
  32. }
  33. project.addParameter("--macro include('arm.logic')");
  34. project.addParameter("-dce full");
  35. project.addDefine("analyzer-optimize");
  36. project.addDefine("js-es=6");
  37. project.addDefine("zui_translate");
  38. project.addDefine("arm_data_dir");
  39. project.addDefine("arm_ltc");
  40. project.addDefine("arm_skip_envmap");
  41. project.addDefine("arm_taa");
  42. project.addDefine("arm_veloc");
  43. project.addDefine("arm_particles");
  44. // project.addDefine("arm_skin");
  45. if (flags.android) {
  46. project.addDefine("kha_android_rmb");
  47. }
  48. if (flags.raytrace) {
  49. project.addAssets("Assets/raytrace/*", { destination: "data/{name}", embed: flags.snapshot });
  50. if (flags.d3d12) {
  51. project.addAssets("Shaders/raytrace/*.cso", { destination: "data/{name}", embed: flags.snapshot });
  52. }
  53. else if (flags.vulkan) {
  54. project.addAssets("Shaders/raytrace/*.spirv", { destination: "data/{name}", embed: flags.snapshot });
  55. }
  56. else if (flags.metal) {
  57. project.addAssets("Shaders/raytrace/*.metal", { destination: "data/{name}", embed: flags.snapshot });
  58. }
  59. }
  60. if (flags.voxels) {
  61. project.addDefine("rp_voxels");
  62. if (process.platform === "win32" && flags.win_hlsl) {
  63. project.addShaders("Shaders/voxel_hlsl/*.glsl", { embed: flags.snapshot, noprocessing: true });
  64. }
  65. else {
  66. project.addShaders("Shaders/voxel_glsl/*.glsl", { embed: flags.snapshot });
  67. }
  68. }
  69. resolve(project);