Jakefile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. var fs = require('fs');
  2. var jakeRoot = __dirname;
  3. var artifactsFolder = jakeRoot + "/Artifacts";
  4. // cmake
  5. var cmakeDevBuild = true;
  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. });
  67. });
  68. namespace('package', function() {
  69. cmakeDevBuild = false;
  70. task('macosx', [] /*['clean:all', 'build:macosx']*/, function() {
  71. jake.mkdirP(macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  72. var editorAppSourceFolder = macOSXBuildFolder + "/Source/AtomicEditor/Release/AtomicEditor.app";
  73. // copy app (using cp here as jake.cpR seems to strip executable flag)
  74. jake.exec("cp -r " + editorAppSourceFolder + " " + macOSXPackageFolder, {
  75. printStdout: true
  76. });
  77. // copy resources
  78. jake.cpR(jakeRoot + "/Resources/CoreData", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  79. jake.cpR(jakeRoot + "/Resources/EditorData", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  80. jake.cpR(jakeRoot + "/Resources/PlayerData", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  81. jake.cpR(jakeRoot + "/Script", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  82. jake.cpR(jakeRoot + "/Data/AtomicEditor/ProjectTemplates", macOSXPackageFolder + "/AtomicEditor.app/Contents/Resources/");
  83. });
  84. });