Skip to content

Commit

Permalink
Mac Xcode + Local Build support
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshEngebretson committed Nov 2, 2015
1 parent e0529ee commit 26b88e4
Show file tree
Hide file tree
Showing 8 changed files with 124 additions and 51 deletions.
1 change: 1 addition & 0 deletions Build/CMake/Modules/AtomicMac.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

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(AtomicDesktop)
Expand Down
106 changes: 106 additions & 0 deletions Build/Scripts/BuildMac.js
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion Build/Scripts/BuildWindows.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ namespace('build', function() {
async: true
}, function() {

var slnRoot = path.resolve(atomicRoot, "") + "-Build\\";
var slnRoot = path.resolve(atomicRoot, "") + "-VS2015\\";

if (!fs.existsSync(slnRoot)) {
jake.mkdirP(slnRoot);
Expand Down
1 change: 1 addition & 0 deletions Build/Scripts/Host.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ if (os.platform() == "win32") {
require("./BuildWindows");
} else if (os.platform() == "darwin") {
module.exports = require("./HostMac");
require("./BuildMac");
}

require("./BuildCommon");
Expand Down
50 changes: 3 additions & 47 deletions Build/Scripts/HostMac.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,6 @@
var fs = require('fs-extra');

common = require("./HostCommon");

// 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";
Empty file modified Build_AtomicEditor.sh
100644 → 100755
Empty file.
2 changes: 2 additions & 0 deletions CMake_XCode.sh
Original file line number Diff line number Diff line change
@@ -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
13 changes: 10 additions & 3 deletions Source/AtomicTool/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,16 @@ add_custom_command( TARGET AtomicTool POST_BUILD
ARGS -E make_directory ${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool
COMMAND ${CMAKE_COMMAND}
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
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
Expand Down

0 comments on commit 26b88e4

Please sign in to comment.