Browse Source

Installing deployments for dev builds

Josh Engebretson 10 years ago
parent
commit
a2418151fa
1 changed files with 86 additions and 11 deletions
  1. 86 11
      Jakefile

+ 86 - 11
Jakefile

@@ -1,4 +1,3 @@
-
 // patch in our local node_modules
 process.env.NODE_PATH = __dirname + "/Build/node_modules";
 require('module').Module._initPaths();
@@ -15,6 +14,15 @@ var artifactsFolder = jakeRoot + "/Artifacts";
 // cmake
 var cmakeDevBuild = false;
 
+var includeDeployments = true;
+var deployments = {
+  osx: true,
+  android: true,
+  windows: true,
+  ios: true,
+  web: true
+}
+
 // build folder
 var windowsBuildFolder = artifactsFolder + "/Windows_Build";
 var macOSXBuildFolder = artifactsFolder + "/MacOSX_Build";
@@ -31,6 +39,7 @@ if (host == "darwin") {
   var atomicPlayerBinary = macOSXBuildFolder + "/Source/AtomicPlayer/Application/Release/AtomicPlayer.app/Contents/MacOS/AtomicPlayer"
 }
 
+// source files
 var androidPlayerBinary = androidBuildFolder + "/Source/AtomicPlayer/Application/libAtomicPlayer.so";
 var iosPlayerBinary = iosBuildFolder + "/Source/AtomicPlayer/Application/Release-iphoneos/AtomicPlayer.app/AtomicPlayer"
 var webPlayerBinary = webBuildFolder + "/Source/AtomicPlayer/Application/AtomicPlayer.js"
@@ -77,7 +86,9 @@ function testRemoveDir(path) {
 
 namespace('clean', function() {
 
-  task('all', {async:true}, function() {
+  task('all', {
+    async: true
+  }, function() {
 
     for (var i in allBuildFolders) {
       testRemoveDir(allBuildFolders[i]);
@@ -94,7 +105,9 @@ namespace('clean', function() {
 
 namespace('build', function() {
 
-  task('macosx_atomictool', {async:true}, function() {
+  task('macosx_atomictool', {
+    async: true
+  }, function() {
 
     if (!fs.existsSync(macOSXBuildFolder)) {
       jake.mkdirP(macOSXBuildFolder);
@@ -121,8 +134,57 @@ namespace('build', function() {
 
   }); // end build:macosx_atomictool
 
+  var deps = [];
+
+  if (includeDeployments) {
+
+    if (host == 'darwin') {
+
+      deps = ['macosx_atomictool'];
+
+      if (deployments.ios)
+        deps.push("build:ios");
+
+      if (deployments.android)
+        deps.push("build:android");
+
+      if (deployments.web)
+        deps.push("build:web");
+
+    }
+
+  }
+
+  task('install_deployments', {
+    async: true
+  }, function() {
 
-  task('macosx', {async:true}, function() {
+    console.log("Installing Deployments");
+
+    // deployment root for local dev builds
+    var deployRoot = jakeRoot + "/Data/AtomicEditor/Deployment";
+
+    if (deployments.osx)
+      fs.copySync(platformBinariesFolder + "/MacOSX/AtomicPlayer", deployRoot + "/MacOS/AtomicPlayer.app/Contents/MacOS/AtomicPlayer");
+
+    if (deployments.android)
+      fs.copySync(platformBinariesFolder + "/Android/libAtomicPlayer.so", deployRoot + "/Android/libs/armeabi-v7a/libAtomicPlayer.so");
+
+    if (deployments.ios)
+      fs.copySync(platformBinariesFolder + "/IOS/AtomicPlayer", deployRoot + "/IOS/AtomicPlayer.app/AtomicPlayer");
+
+    if (deployments.web) {
+      fs.copySync(platformBinariesFolder + "/Web/AtomicPlayer.js", deployRoot + "/Web/AtomicPlayer.js");
+      fs.copySync(platformBinariesFolder + "/Web/AtomicPlayer.html.mem", deployRoot + "/Web/AtomicPlayer.html.mem");
+    }
+
+    complete();
+
+  });
+
+  task('macosx', deps, {
+    async: true
+  }, function() {
 
     if (!fs.existsSync(macOSXBuildFolder)) {
       jake.mkdirP(macOSXBuildFolder);
@@ -138,6 +200,11 @@ namespace('build', function() {
     jake.exec(cmds, function() {
       fs.copySync(atomicEditorBinary, platformBinariesFolder + "/MacOSX/" + path.basename(atomicEditorBinary));
       fs.copySync(atomicPlayerBinary, platformBinariesFolder + "/MacOSX/" + path.basename(atomicPlayerBinary));
+
+      if (includeDeployments) {
+        jake.Task['build:install_deployments'].invoke();
+      }
+
       console.log("Built MacOSX");
       complete();
     }, {
@@ -146,7 +213,9 @@ namespace('build', function() {
 
   }); // end build:macosx
 
-  task('windows', {async:true}, function() {
+  task('windows', {
+    async: true
+  }, function() {
 
     if (!fs.existsSync(windowsBuildFolder)) {
       jake.mkdirP(windowsBuildFolder);
@@ -162,7 +231,9 @@ namespace('build', function() {
 
   });
 
-  task('android', ['macosx_atomictool'], {async:true}, function() {
+  task('android', ['macosx_atomictool'], {
+    async: true
+  }, function() {
 
     if (!fs.existsSync(androidBuildFolder)) {
       jake.mkdirP(androidBuildFolder);
@@ -187,7 +258,9 @@ namespace('build', function() {
 
   });
 
-  task('ios', ['macosx_atomictool'], {async:true}, function() {
+  task('ios', ['macosx_atomictool'], {
+    async: true
+  }, function() {
 
     if (!fs.existsSync(iosBuildFolder)) {
       jake.mkdirP(iosBuildFolder);
@@ -213,7 +286,9 @@ namespace('build', function() {
   });
 
 
-  task('web', ['macosx_atomictool'], {async:true}, function() {
+  task('web', ['macosx_atomictool'], {
+    async: true
+  }, function() {
 
     if (!fs.existsSync(webBuildFolder)) {
       jake.mkdirP(webBuildFolder);
@@ -273,15 +348,15 @@ namespace('package', function() {
 
     jake.mkdirP(windowsPackageFolder + "/Resources");
 
-    jake.cpR(windowsBuildFolder + "/Source/AtomicEditor/Release/AtomicEditor.exe", windowsPackageFolder + "/AtomicEditor.exe" )
+    jake.cpR(windowsBuildFolder + "/Source/AtomicEditor/Release/AtomicEditor.exe", windowsPackageFolder + "/AtomicEditor.exe")
 
     // 32 bit build for packaging!
 
-    jake.cpR(jakeRoot + "/Build/Windows/Binaries/x86/D3DCompiler_47.dll", windowsPackageFolder + "/D3DCompiler_47.dll" )
+    jake.cpR(jakeRoot + "/Build/Windows/Binaries/x86/D3DCompiler_47.dll", windowsPackageFolder + "/D3DCompiler_47.dll")
 
     // copy resources
 
-    jake.cpR(jakeRoot + "/Resources/CoreData",  windowsPackageFolder + "/Resources");
+    jake.cpR(jakeRoot + "/Resources/CoreData", windowsPackageFolder + "/Resources");
     jake.cpR(jakeRoot + "/Resources/EditorData", windowsPackageFolder + "/Resources");
     jake.cpR(jakeRoot + "/Resources/PlayerData", windowsPackageFolder + "/Resources");
     jake.cpR(jakeRoot + "/Script", windowsPackageFolder + "/Resources");