Jakefile 4.2 KB

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