khafile.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. let debug = false;
  2. let android = process.argv.indexOf("android") >= 0;
  3. let ios = process.argv.indexOf("ios") >= 0;
  4. let win_hlsl = process.platform === "win32" && process.argv.indexOf("opengl") < 0;
  5. let d3d12 = process.argv.indexOf("direct3d12") >= 0;
  6. let vulkan = process.argv.indexOf("vulkan") >= 0;
  7. let raytrace = d3d12 || vulkan;
  8. let metal = process.argv.indexOf("metal") >= 0;
  9. let vr = process.argv.indexOf("--vr") >= 0;
  10. let snapshot = process.argv.indexOf("--snapshot") >= 0;
  11. let project = new Project("ArmorPaint");
  12. project.addSources("Sources");
  13. project.addLibrary("iron");
  14. project.addLibrary("zui");
  15. project.addLibrary("armorbase");
  16. project.addShaders("Shaders/*.glsl", { embed: snapshot});
  17. project.addAssets("Assets/*", { destination: "data/{name}", embed: snapshot });
  18. project.addShaders("Libraries/armorbase/Shaders/common/*.glsl", { embed: snapshot});
  19. project.addAssets("Libraries/armorbase/Assets/common/*", { destination: "data/{name}", embed: snapshot });
  20. if (!snapshot) {
  21. project.addDefine("arm_noembed");
  22. project.addAssets("Libraries/armorbase/Assets/common/extra/*", { destination: "data/{name}" });
  23. }
  24. project.addAssets("Assets/export_presets/*", { destination: "data/export_presets/{name}" });
  25. project.addAssets("Assets/keymap_presets/*", { destination: "data/keymap_presets/{name}" });
  26. project.addAssets("Assets/locale/*", { destination: "data/locale/{name}" });
  27. project.addAssets("Assets/licenses/**", { destination: "data/licenses/{name}" });
  28. project.addAssets("Assets/plugins/*", { destination: "data/plugins/{name}" });
  29. project.addAssets("Assets/meshes/*", { destination: "data/meshes/{name}" });
  30. project.addAssets("Libraries/armorbase/Assets/licenses/**", { destination: "data/licenses/{name}" });
  31. project.addAssets("Libraries/armorbase/Assets/themes/*.json", { destination: "data/themes/{name}" });
  32. if (metal) {
  33. project.addShaders("Libraries/armorbase/Shaders/common/metal/*.glsl", { embed: snapshot});
  34. project.addAssets("Libraries/armorbase/Assets/common/metal/*", { destination: "data/{name}" });
  35. }
  36. project.addDefine("js-es=6");
  37. project.addParameter("--macro include('arm.node.brush')");
  38. project.addDefine("kha_no_ogg");
  39. project.addDefine("zui_translate");
  40. project.addDefine("arm_data_dir");
  41. project.addDefine("arm_ltc");
  42. project.addDefine("arm_appwh");
  43. project.addDefine("arm_skip_envmap");
  44. project.addDefine("arm_resizable");
  45. project.addDefine("arm_taa");
  46. project.addDefine("arm_veloc");
  47. project.addDefine("arm_particles");
  48. // project.addDefine("arm_physics");
  49. // project.addDefine("arm_skin");
  50. if (android) {
  51. project.addDefine("krom_android");
  52. project.addDefine("kha_android");
  53. project.addDefine("kha_android_rmb");
  54. }
  55. else if (ios) {
  56. project.addDefine("krom_ios");
  57. project.addDefine("kha_ios");
  58. }
  59. else if (process.platform === "win32") {
  60. project.addDefine("krom_windows");
  61. project.addDefine("kha_windows");
  62. }
  63. else if (process.platform === "linux") {
  64. project.addDefine("krom_linux");
  65. project.addDefine("kha_linux");
  66. }
  67. else if (process.platform === "darwin") {
  68. project.addDefine("krom_darwin");
  69. project.addDefine("kha_darwin");
  70. }
  71. if (android || ios) {
  72. project.addDefine("arm_touchui"); // Use touch friendly UI
  73. project.addDefine("zui_touchui");
  74. }
  75. if (debug) {
  76. project.addDefine("arm_debug");
  77. project.addParameter("--times");
  78. // project.addParameter("--no-inline");
  79. }
  80. else {
  81. project.addParameter("-dce full");
  82. project.addDefine("analyzer-optimize");
  83. }
  84. if (vr) {
  85. project.addDefine("arm_vr");
  86. project.addAssets("Assets/readme/readme_vr.txt", { destination: "{name}" });
  87. }
  88. if (snapshot) {
  89. project.addDefine("arm_snapshot");
  90. project.addDefine("arm_image_embed");
  91. project.addDefine("arm_shader_embed");
  92. project.addParameter("--no-traces");
  93. }
  94. project.addAssets("Assets/readme/readme.txt", { destination: "{name}" });
  95. if (raytrace) {
  96. project.addAssets("Libraries/armorbase/Assets/raytrace/*", { destination: "data/{name}", embed: snapshot });
  97. if (d3d12) {
  98. project.addAssets("Libraries/armorbase/Shaders/raytrace/*.cso", { destination: "data/{name}", embed: snapshot });
  99. project.addAssets("Assets/readme/readme_dxr.txt", { destination: "{name}" });
  100. }
  101. else if (vulkan) {
  102. project.addAssets("Libraries/armorbase/Shaders/raytrace/*.spirv", { destination: "data/{name}", embed: snapshot });
  103. project.addAssets("Assets/readme/readme_vkrt.txt", { destination: "{name}" });
  104. }
  105. }
  106. if (android) {
  107. project.addAssets("Assets/readme/readme_android.txt", { destination: "{name}" });
  108. }
  109. else if (ios) {
  110. project.addAssets("Assets/readme/readme_ios.txt", { destination: "{name}" });
  111. }
  112. if (process.platform !== "darwin" && !raytrace && !android && !ios) {
  113. project.addDefine("rp_voxelao");
  114. project.addDefine("arm_voxelgi_revox");
  115. if (process.platform === "win32" && win_hlsl) {
  116. project.addShaders("Libraries/armorbase/Shaders/voxel_hlsl/*.glsl", { embed: snapshot, noprocessing: true });
  117. }
  118. else {
  119. project.addShaders("Libraries/armorbase/Shaders/voxel_glsl/*.glsl", { embed: snapshot });
  120. }
  121. }
  122. resolve(project);