khafile.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. let project = new Project('ArmorPaint');
  2. project.addSources('Sources');
  3. project.addLibrary("iron");
  4. project.addLibrary("zui");
  5. project.addShaders("Shaders/common/*.glsl", { noembed: false});
  6. project.addAssets("Assets/common/*", { notinlist: true, destination: "data/{name}" });
  7. project.addAssets("Assets/defaults/*", { notinlist: true, destination: "data/defaults/{name}" });
  8. project.addAssets("Assets/licenses/*", { notinlist: true, destination: "data/licenses/{name}" });
  9. project.addAssets("Assets/plugins/*", { notinlist: true, destination: "data/plugins/{name}" });
  10. project.addAssets("Assets/themes/*", { notinlist: true, destination: "data/themes/{name}" });
  11. project.addDefine('arm_taa');
  12. project.addDefine('arm_veloc');
  13. project.addDefine('arm_particles');
  14. project.addDefine('arm_data_dir');
  15. // project.addDefine('arm_noembed');
  16. if (process.platform === 'win32') {
  17. project.addDefine('krom_windows');
  18. }
  19. else if (process.platform === 'linux') {
  20. project.addDefine('krom_linux');
  21. }
  22. else if (process.platform === 'darwin') {
  23. project.addDefine('krom_darwin');
  24. }
  25. let debug = false;
  26. let raytrace = process.argv.indexOf("direct3d12") >= 0;
  27. let build = 'painter'; // painter || creator || player
  28. if (debug) {
  29. project.addDefine('arm_debug');
  30. project.addShaders("Shaders/debug/*.glsl");
  31. project.addParameter('--times');
  32. // project.addParameter('--no-inline');
  33. }
  34. else {
  35. project.addParameter('-dce full');
  36. }
  37. if (raytrace) {
  38. project.addAssets("Assets/raytrace/*", { notinlist: true, destination: "data/{name}" });
  39. project.addAssets("Shaders/raytrace/*.cso", { notinlist: true, destination: "data/{name}" });
  40. project.addAssets("Assets/readme/readme_dxr.txt", { notinlist: true, destination: "{name}" });
  41. }
  42. else {
  43. project.addAssets("Assets/readme/readme.txt", { notinlist: true, destination: "{name}" });
  44. project.addDefine('rp_voxelao');
  45. project.addDefine('arm_voxelgi_revox');
  46. }
  47. if (process.platform === 'darwin') {
  48. project.addAssets("Assets/readme/readme_macos.txt", { notinlist: true, destination: "INSTRUCTIONS.txt" });
  49. }
  50. if (process.platform === 'win32') {
  51. project.addShaders("Shaders/voxel_hlsl/*.glsl", { noprocessing: true, noembed: false });
  52. }
  53. else {
  54. project.addShaders("Shaders/voxel_glsl/*.glsl", { noembed: false });
  55. }
  56. if (build === 'player') {
  57. project.addDefine('arm_player');
  58. }
  59. else { // painter, creator
  60. project.addDefine('arm_painter');
  61. project.addParameter('--macro include("arm.node.brush")');
  62. project.addDefine('arm_appwh');
  63. project.addDefine('arm_skip_envmap');
  64. project.addDefine('arm_resizable');
  65. if (process.platform === 'win32') {
  66. project.addAssets("Assets/bin/cmft.exe", { notinlist: true, destination: "data/{name}" });
  67. }
  68. else if (process.platform === 'linux') {
  69. project.addAssets("Assets/bin/cmft-linux64", { notinlist: true, destination: "data/{name}" });
  70. }
  71. else if (process.platform === 'darwin') {
  72. project.addAssets("Assets/bin/cmft-osx", { notinlist: true, destination: "data/{name}" });
  73. }
  74. if (build === 'creator') {
  75. project.addDefine('arm_creator');
  76. }
  77. project.addAssets("Assets/painter/export_presets/*", { notinlist: true, destination: "data/export_presets/{name}" });
  78. if (process.platform === 'win32') {
  79. project.addShaders("Shaders/painter/hlsl/*.glsl", { noprocessing: true, noembed: false });
  80. }
  81. else {
  82. project.addShaders("Shaders/painter/glsl/*.glsl", { noembed: false });
  83. }
  84. }
  85. if (build === 'painter') {
  86. project.addShaders("Shaders/painter/*.glsl", { noembed: false});
  87. project.addAssets("Assets/painter/*", { notinlist: true, destination: "data/{name}" });
  88. project.addDefine('kha_no_ogg');
  89. project.addDefine('arm_ltc');
  90. }
  91. else { // player, creator
  92. project.addAssets("Assets/creator/*", { notinlist: true, destination: "data/{name}" });
  93. project.addAssets("Assets/creator/plugins/*", { notinlist: true, destination: "data/plugins/{name}" });
  94. project.addShaders("Shaders/creator/*.glsl", { noembed: false});
  95. project.addDefine('arm_audio');
  96. project.addDefine('arm_soundcompress');
  97. project.addDefine('arm_skin');
  98. project.addDefine('arm_world');
  99. project.addDefine('arm_physics');
  100. }
  101. resolve(project);