Jakefile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. var fs = require('fs');
  2. var jakeRoot = __dirname;
  3. var artifactsFolder = jakeRoot + "/Artifacts";
  4. // cmake
  5. var cmakeDevBuild = false;
  6. // build folder
  7. var windowsBuildFolder = artifactsFolder + "/Windows_Build";
  8. var macOSXBuildFolder = artifactsFolder + "/MacOSX_Build";
  9. var androidBuildFolder = artifactsFolder + "/Android_Build";
  10. var iosBuildFolder = artifactsFolder + "/IOS_Build";
  11. var webBuildFolder = artifactsFolder + "/Web_Build";
  12. var linuxBuildFolder = artifactsFolder + "/Linux_Build";
  13. var allBuildFolders = [
  14. windowsBuildFolder,
  15. macOSXBuildFolder,
  16. androidBuildFolder,
  17. iosBuildFolder,
  18. webBuildFolder,
  19. linuxBuildFolder
  20. ];
  21. // packaging
  22. var windowsPackageFolder = artifactsFolder + "/Windows_Package";
  23. var macOSXPackageFolder = artifactsFolder + "/MacOSX_Package";
  24. var allPackageFolders = [
  25. windowsPackageFolder,
  26. macOSXPackageFolder
  27. ];
  28. function getAtomicDevBuildDefine() {
  29. return "-DATOMIC_DEV_BUILD=" + (cmakeDevBuild ? "1" : "0");
  30. }
  31. function testRemoveDir(path) {
  32. if (fs.existsSync(path)) {
  33. jake.rmRf(path);
  34. }
  35. if (fs.existsSync(path)) {
  36. throw "Unable to remove path: " + path;
  37. }
  38. }
  39. namespace('clean', function() {
  40. task('all', {async:true}, function() {
  41. for (var i in allBuildFolders) {
  42. testRemoveDir(allBuildFolders[i]);
  43. }
  44. for (var i in allPackageFolders) {
  45. testRemoveDir(allPackageFolders[i]);
  46. }
  47. complete();
  48. });
  49. });
  50. namespace('build', function() {
  51. task('macosx', {async:true}, function() {
  52. if (!fs.existsSync(macOSXBuildFolder)) {
  53. jake.mkdirP(macOSXBuildFolder);
  54. }
  55. var cmds = [
  56. 'cmake ../../ -G Xcode ' + getAtomicDevBuildDefine(),
  57. 'xcodebuild -configuration Release'
  58. ]
  59. process.chdir(macOSXBuildFolder);
  60. jake.exec(cmds, function() {
  61. console.log("Built MacOSX");
  62. complete();
  63. }, {
  64. printStdout: true
  65. });
  66. }); // end build:macosx
  67. task('windows', {async:true}, function() {
  68. if (!fs.existsSync(windowsBuildFolder)) {
  69. jake.mkdirP(windowsBuildFolder);
  70. }
  71. process.chdir(windowsBuildFolder);
  72. jake.exec(jakeRoot + "/Build/Windows/Compile.bat", function() {
  73. complete();
  74. }, {
  75. printStdout: true
  76. });
  77. });
  78. }); // end build namespace
  79. namespace('package', function() {
  80. task('macosx', ['clean:all', 'build:macosx'], function() {
  81. jake.mkdirP(macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  82. var editorAppSourceFolder = macOSXBuildFolder + "/Source/AtomicEditor/Release/AtomicEditor.app";
  83. // copy app (using cp here as jake.cpR seems to strip executable flag)
  84. jake.exec("cp -r " + editorAppSourceFolder + " " + macOSXPackageFolder, {
  85. printStdout: true
  86. });
  87. // copy resources
  88. jake.cpR(jakeRoot + "/Resources/CoreData", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  89. jake.cpR(jakeRoot + "/Resources/EditorData", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  90. jake.cpR(jakeRoot + "/Resources/PlayerData", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  91. jake.cpR(jakeRoot + "/Script", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  92. jake.cpR(jakeRoot + "/Data/AtomicEditor/ProjectTemplates", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  93. });
  94. task('windows', ['clean:all', 'build:windows'], function() {
  95. jake.mkdirP(windowsPackageFolder + "/Resources");
  96. jake.cpR(windowsBuildFolder + "/Source/AtomicEditor/Release/AtomicEditor.exe", windowsPackageFolder + "/AtomicEditor.exe" )
  97. // 32 bit build for packaging!
  98. jake.cpR(jakeRoot + "/Build/Windows/Binaries/x86/D3DCompiler_47.dll", windowsPackageFolder + "/D3DCompiler_47.dll" )
  99. // copy resources
  100. jake.cpR(jakeRoot + "/Resources/CoreData", windowsPackageFolder + "/Resources");
  101. jake.cpR(jakeRoot + "/Resources/EditorData", windowsPackageFolder + "/Resources");
  102. jake.cpR(jakeRoot + "/Resources/PlayerData", windowsPackageFolder + "/Resources");
  103. jake.cpR(jakeRoot + "/Script", windowsPackageFolder + "/Resources");
  104. jake.cpR(jakeRoot + "/Data/AtomicEditor/ProjectTemplates", windowsPackageFolder + "/Resources");
  105. });
  106. });