Browse Source

Mac Xcode + Local Build support

Josh Engebretson 10 years ago
parent
commit
26b88e41a4

+ 1 - 0
Build/CMake/Modules/AtomicMac.cmake

@@ -1,5 +1,6 @@
 
 
 set (JAVASCRIPT_BINDINGS_PLATFORM "MACOSX")
 set (JAVASCRIPT_BINDINGS_PLATFORM "MACOSX")
+set (ATOMIC_NODE_JAKE Build/Mac/node/node Build/node_modules/jake/bin/cli.js  -f  Build/Scripts/Bootstrap.js)
 
 
 include (BundleUtilities)
 include (BundleUtilities)
 include(AtomicDesktop)
 include(AtomicDesktop)

+ 106 - 0
Build/Scripts/BuildMac.js

@@ -0,0 +1,106 @@
+var fs = require('fs-extra');
+var path = require("path");
+var host = require("./Host");
+var atomicRoot = host.atomicRoot;
+
+var buildDir = host.artifactsRoot + "Build/Mac/";
+var editorAppFolder = host.artifactsRoot + "/AtomicEditor/AtomicEditor.app/";
+
+namespace('build', function() {
+
+task('atomiceditor', {
+  async: true
+}, function() {
+
+  // Clean build
+  var cleanBuild = true;
+  if (cleanBuild) {
+    common.cleanCreateDir(buildDir);
+    common.cleanCreateDir(editorAppFolder);
+    common.cleanCreateDir(host.getGenScriptRootDir("MACOSX"));
+  }
+
+  // create the generated script files, so they will be picked up by cmake
+  host.createGenScriptFiles("MACOSX");
+
+  process.chdir(buildDir);
+
+  var cmds = [];
+
+  cmds.push("cmake ../../../ -DATOMIC_DEV_BUILD=0 -G Xcode");
+  cmds.push("xcodebuild -target GenerateScriptBindings -configuration Release")
+  cmds.push("xcodebuild -target AtomicEditor -target AtomicPlayer -configuration Release")
+
+  jake.exec(cmds, function() {
+
+    fs.copySync(buildDir + "Source/AtomicEditor/Release/AtomicEditor.app", editorAppFolder);
+
+    var resourceDest = editorAppFolder + "/Contents/Resources/"
+
+    // We need some resources to run
+    fs.copySync(atomicRoot + "Resources/CoreData",
+      resourceDest + "CoreData");
+
+    fs.copySync(atomicRoot + "Resources/PlayerData",
+      resourceDest + "PlayerData");
+
+    fs.copySync(atomicRoot + "Data/AtomicEditor",
+      resourceDest + "ToolData");
+
+    fs.copySync(atomicRoot + "Resources/EditorData",
+      resourceDest + "EditorData");
+
+    fs.copySync(atomicRoot + "Artifacts/Build/Resources/EditorData/AtomicEditor/EditorScripts",
+      resourceDest + "EditorData/AtomicEditor/EditorScripts");
+
+
+    console.log("\n\nAtomic Editor build to " + editorAppFolder + "\n\n");
+
+    complete();
+
+  }, {
+    printStdout: true
+  });
+
+});
+
+// Generate a XCode Workspace
+task('genxcode', {
+  async: true
+}, function() {
+
+  var xcodeRoot = path.resolve(atomicRoot, "") + "-XCode";
+
+  if (!fs.existsSync(xcodeRoot)) {
+      jake.mkdirP(xcodeRoot);
+  }
+
+  // create the generated script files, so they will be picked up by cmake
+  host.createGenScriptFiles("MACOSX");
+
+  process.chdir(xcodeRoot);
+
+  var cmds = [];
+
+  cmds.push("cmake ../AtomicGameEngine -DATOMIC_DEV_BUILD=1 -G Xcode");
+  cmds.push("xcodebuild -target GenerateScriptBindings -configuration Debug")
+
+  jake.exec(cmds, function() {
+
+    var task = jake.Task['build:genscripts']
+
+    task.addListener('complete', function () {
+        console.log("\n\nXCode workspace generated in " +  xcodeRoot + "\n\n");
+        complete();
+      });
+
+    task.invoke("MACOSX");
+
+  }, {
+    printStdout: true
+  });
+
+});
+
+
+});// end of build namespace

+ 1 - 1
Build/Scripts/BuildWindows.js

@@ -69,7 +69,7 @@ namespace('build', function() {
     async: true
     async: true
   }, function() {
   }, function() {
 
 
-    var slnRoot = path.resolve(atomicRoot, "") + "-Build\\";
+    var slnRoot = path.resolve(atomicRoot, "") + "-VS2015\\";
 
 
     if (!fs.existsSync(slnRoot)) {
     if (!fs.existsSync(slnRoot)) {
         jake.mkdirP(slnRoot);
         jake.mkdirP(slnRoot);

+ 1 - 0
Build/Scripts/Host.js

@@ -5,6 +5,7 @@ if (os.platform() == "win32") {
   require("./BuildWindows");
   require("./BuildWindows");
 } else if (os.platform() == "darwin") {
 } else if (os.platform() == "darwin") {
   module.exports = require("./HostMac");
   module.exports = require("./HostMac");
+  require("./BuildMac");
 }
 }
 
 
 require("./BuildCommon");
 require("./BuildCommon");

+ 3 - 47
Build/Scripts/HostMac.js

@@ -1,50 +1,6 @@
-var fs = require('fs-extra');
+
 common = require("./HostCommon");
 common = require("./HostCommon");
 
 
 // forward exports
 // forward exports
-var atomicRoot = exports.atomicRoot = common.atomicRoot;
-var artifactsRoot = exports.artifactsRoot = common.artifactsRoot;
-exports.cleanCreateDir = common.cleanCreateDir;
-
-var buildDir = common.artifactsRoot + "Build/Mac/";
-var atomicToolBinary = buildDir + "Source/AtomicTool/Debug/AtomicTool";
-
-namespace('build', function() {
-
-  task('atomiceditor', {
-    async: true
-  }, function() {
-
-    common.cleanCreateDir(buildDir);
-
-    process.chdir(buildDir);
-
-    var bindCmd = atomicToolBinary + " bind \"" + atomicRoot + "\" ";
-
-    var cmds = [
-      "cmake ../../../ -DATOMIC_DEV_BUILD=1 -G Xcode",
-      "xcodebuild -target AtomicTool -configuration Debug",
-      bindCmd + "Script/Packages/Atomic/ MACOSX",
-      bindCmd + "Script/Packages/AtomicPlayer/ MACOSX",
-      bindCmd + "Script/Packages/ToolCore/ MACOSX",
-      bindCmd + "Script/Packages/Editor/ MACOSX",
-      bindCmd + "Script/Packages/AtomicNET/ MACOSX",      
-      "cmake ../../../ -DATOMIC_DEV_BUILD=1 -G Xcode",
-      "xcodebuild -configuration Debug"
-    ]
-
-    jake.exec(cmds, function() {
-
-      fs.copySync(buildDir + "Source/AtomicEditor/Debug/AtomicEditor.app", artifactsRoot + "Bin/AtomicEditor.app");
-
-      complete();
-
-      console.log("AtomicEditor built to: " + artifactsRoot + "Bin/AtomicEditor.app");
-
-    }, {
-      printStdout: true
-    });
-
-  });
-
-}); // end of build namespace
+exports = module.exports = common;
+exports.atomicTool = exports.artifactsRoot + "Build/AtomicTool/AtomicTool";

+ 2 - 0
Build_AtomicEditor.sh

@@ -0,0 +1,2 @@
+#!/bin/sh
+./Build/Mac/node/node ./Build/node_modules/jake/bin/cli.js -f ./Build/Scripts/Bootstrap.js build:genxcode --trace

+ 10 - 3
Source/AtomicTool/CMakeLists.txt

@@ -26,9 +26,16 @@ add_custom_command( TARGET AtomicTool POST_BUILD
                    ARGS -E make_directory ${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool
                    ARGS -E make_directory ${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool
                    COMMAND ${CMAKE_COMMAND}
                    COMMAND ${CMAKE_COMMAND}
                    ARGS -E copy_if_different $<TARGET_FILE:AtomicTool> \"${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool/\"
                    ARGS -E copy_if_different $<TARGET_FILE:AtomicTool> \"${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool/\"
-                   COMMAND ${CMAKE_COMMAND}
-                   ARGS -E copy_if_different \"${D3DCOMPILER_47_DLL}\" \"${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool/D3DCompiler_47.dll\"
-                   COMMENT "Copying AtomicTool to Build Artifacts" )
+                   COMMAND ${CMAKE_COMMAND} )
+
+if (MSVC)
+
+# Copy the D3D shader compiler
+add_custom_command( TARGET AtomicTool POST_BUILD
+                    ARGS -E copy_if_different \"${D3DCOMPILER_47_DLL}\" \"${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool/D3DCompiler_47.dll\"
+                    COMMENT "Copying AtomicTool to Build Artifacts" )
+
+endif(MSVC)
 
 
 add_custom_target ( GenerateScriptBindings
 add_custom_target ( GenerateScriptBindings
                     WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
                     WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"