Browse Source

More build improvements

JoshEngebretson 10 years ago
parent
commit
fe68a5732d
40 changed files with 174 additions and 112 deletions
  1. 0 1
      .gitignore
  2. 0 2
      Attic/NETNative/CMakeLists.txt
  3. 1 1
      Build/CIScripts/BuildAndroid.js
  4. 1 1
      Build/CIScripts/BuildWeb.js
  5. 0 0
      Build/CMake/Modules/Atomic.icns
  6. 0 0
      Build/CMake/Modules/Atomic.ico
  7. 0 0
      Build/CMake/Modules/Atomic.rc
  8. 0 0
      Build/CMake/Modules/AtomicAndroid.cmake
  9. 0 0
      Build/CMake/Modules/AtomicDesktop.cmake
  10. 0 0
      Build/CMake/Modules/AtomicIOS.cmake
  11. 0 0
      Build/CMake/Modules/AtomicLinux.cmake
  12. 0 0
      Build/CMake/Modules/AtomicMac.cmake
  13. 12 0
      Build/CMake/Modules/AtomicNET.cmake
  14. 0 0
      Build/CMake/Modules/AtomicUtils.cmake
  15. 0 0
      Build/CMake/Modules/AtomicWeb.cmake
  16. 2 0
      Build/CMake/Modules/AtomicWindows.cmake
  17. 0 0
      Build/CMake/Modules/MacOSXBundleInfo.plist.template
  18. 0 0
      Build/CMake/Modules/iOSBundleInfo.plist.template
  19. 0 0
      Build/CMake/Toolchains/android.toolchain.cmake
  20. 0 0
      Build/CMake/Toolchains/emscripten.toolchain.cmake
  21. 31 0
      Build/Scripts/BuildCommon.js
  22. 9 14
      Build/Scripts/BuildWindows.js
  23. 3 1
      Build/Scripts/Host.js
  24. 88 4
      Build/Scripts/HostCommon.js
  25. 1 1
      Build/Scripts/Windows/CompileAndroid.bat
  26. 1 0
      Build/Scripts/Windows/CompileAtomicEditor.bat
  27. 0 3
      Build/Scripts/Windows/CompileAtomicTool.bat
  28. 0 55
      CMake/Modules/AtomicNET.cmake
  29. 1 1
      CMakeLists.txt
  30. 2 1
      Script/Packages/AtomicNET/Package.json
  31. 2 1
      Script/Packages/Editor/Package.json
  32. 2 1
      Script/Packages/ToolCore/Package.json
  33. 3 3
      Source/AtomicEditor/CMakeLists.txt
  34. 1 1
      Source/AtomicJS/CMakeLists.txt
  35. 1 14
      Source/AtomicNET/NETJS/CMakeLists.txt
  36. 3 3
      Source/AtomicPlayer/Application/CMakeLists.txt
  37. 1 1
      Source/AtomicPlayerJS/CMakeLists.txt
  38. 6 0
      Source/AtomicTool/CMakeLists.txt
  39. 2 2
      Source/ToolCore/JSBind/JSBind.cpp
  40. 1 1
      Source/ToolCoreJS/CMakeLists.txt

+ 0 - 1
.gitignore

@@ -11,7 +11,6 @@ Source/Atomic/Javascript/Modules/*
 Data/AtomicPlayer/Resources/CoreData/Shaders/HLSL/Cache
 Resources/CoreData/Shaders/HLSL/Cache
 Artifacts/*
-Build/Source/*
 Docs/out/*
 Docs/node_modules/*
 Data/AtomicEditor/Deployment/Web/AtomicPlayer.js

+ 0 - 2
Attic/NETNative/CMakeLists.txt

@@ -7,8 +7,6 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
                     ${CMAKE_SOURCE_DIR}/Source/ThirdParty/Box2D )
 
 
-# ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/Atomic/Native)                    
-
 file (GLOB CSHARP_SOURCES *.cpp *.h)
 
 if (NOT MSVC)

+ 1 - 1
Build/CIScripts/BuildAndroid.js

@@ -22,7 +22,7 @@ namespace('build', function() {
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/AtomicPlayer/ ANDROID"
     ];
 
-    cmds.push("cmake -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=" + bcommon.atomicRoot + "/CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../../../");
+    cmds.push("cmake -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=" + bcommon.atomicRoot + "Build//CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../../../");
     cmds.push("make -j4");
 
     jake.exec(cmds, function() {

+ 1 - 1
Build/CIScripts/BuildWeb.js

@@ -22,7 +22,7 @@ namespace('build', function() {
 
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/Atomic/ WEB",
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/AtomicPlayer/ WEB",
-      "cmake -DEMSCRIPTEN=1 -DATOMIC_BUILD_2D=1 -DCMAKE_TOOLCHAIN_FILE=" + bcommon.atomicRoot + "/CMake/Toolchains/emscripten.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../../../",
+      "cmake -DEMSCRIPTEN=1 -DATOMIC_BUILD_2D=1 -DCMAKE_TOOLCHAIN_FILE=" + bcommon.atomicRoot + "Build/CMake/Toolchains/emscripten.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../../../",
       "make -j4",
       "cd ./Source/AtomicPlayer/Application && mv ./AtomicPlayer ./AtomicPlayer.bc && " +
       // -s ERROR_ON_UNDEFINED_SYMBOLS=1 (disabled for pthread errors currently on incoming)

+ 0 - 0
CMake/Modules/Atomic.icns → Build/CMake/Modules/Atomic.icns


+ 0 - 0
CMake/Modules/Atomic.ico → Build/CMake/Modules/Atomic.ico


+ 0 - 0
CMake/Modules/Atomic.rc → Build/CMake/Modules/Atomic.rc


+ 0 - 0
CMake/Modules/AtomicAndroid.cmake → Build/CMake/Modules/AtomicAndroid.cmake


+ 0 - 0
CMake/Modules/AtomicDesktop.cmake → Build/CMake/Modules/AtomicDesktop.cmake


+ 0 - 0
CMake/Modules/AtomicIOS.cmake → Build/CMake/Modules/AtomicIOS.cmake


+ 0 - 0
CMake/Modules/AtomicLinux.cmake → Build/CMake/Modules/AtomicLinux.cmake


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


+ 12 - 0
Build/CMake/Modules/AtomicNET.cmake

@@ -0,0 +1,12 @@
+
+if (ATOMIC_DOTNET_DEV)
+add_definitions ( -DATOMIC_DOTNET )
+endif ()
+
+set (CSATOMICNATIVEDIR "${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/Atomic/Native")
+set (CSATOMICPLAYERNATIVEDIR "${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/AtomicPlayer/Native")
+set (CSATOMICNETNATIVEDIR "${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/AtomicNET/Native")
+
+file (GLOB CSHARP_BINDINGS_SOURCE ${CSATOMICNATIVEDIR}/*.cpp ${CSATOMICNATIVEDIR}/*.h)
+file (GLOB CSHARPATOMICPLAYER_BINDINGS_SOURCE ${CSATOMICPLAYERNATIVEDIR}/*.cpp ${CSATOMICPLAYERNATIVEDIR}/*.h)
+file (GLOB CSHARPATOMICNET_BINDINGS_SOURCE ${CSATOMICNETNATIVEDIR}/*.cpp ${CSATOMICNETNATIVEDIR}/*.h)

+ 0 - 0
CMake/Modules/AtomicUtils.cmake → Build/CMake/Modules/AtomicUtils.cmake


+ 0 - 0
CMake/Modules/AtomicWeb.cmake → Build/CMake/Modules/AtomicWeb.cmake


+ 2 - 0
CMake/Modules/AtomicWindows.cmake → Build/CMake/Modules/AtomicWindows.cmake

@@ -5,6 +5,8 @@ include(AtomicDesktop)
 
 #set (CMAKE_DEBUG_POSTFIX _d)
 
+set (ATOMIC_NODE_JAKE Build/Windows/node/node.exe Build/node_modules/jake/bin/cli.js -f Build\\Scripts\\Bootstrap.js)
+
 if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
     set (D3DCOMPILER_47_DLL ${CMAKE_SOURCE_DIR}/Build/Windows/Binaries/x64/D3DCompiler_47.dll)
 else()

+ 0 - 0
CMake/Modules/MacOSXBundleInfo.plist.template → Build/CMake/Modules/MacOSXBundleInfo.plist.template


+ 0 - 0
CMake/Modules/iOSBundleInfo.plist.template → Build/CMake/Modules/iOSBundleInfo.plist.template


+ 0 - 0
CMake/Toolchains/android.toolchain.cmake → Build/CMake/Toolchains/android.toolchain.cmake


+ 0 - 0
CMake/Toolchains/emscripten.toolchain.cmake → Build/CMake/Toolchains/emscripten.toolchain.cmake


+ 31 - 0
Build/Scripts/BuildCommon.js

@@ -0,0 +1,31 @@
+var fs = require('fs-extra');
+var path = require("path");
+var host = require("./Host");
+var atomicRoot = host.atomicRoot;
+
+namespace('build', function() {
+
+  task('genscripts', {
+    async: true
+  }, function(platform) {
+
+        var modules = host.getScriptModules(platform);
+        var bindCmd = host.atomicTool + " bind \"" + atomicRoot + "\" ";
+
+        var cmds = [];
+        for (var pkgName in modules) {
+            cmds.push(bindCmd + "Script/Packages/" + pkgName + "/ " + platform);
+        }
+
+        jake.exec(cmds, function() {
+
+          complete();
+
+        }, {
+          printStdout: true
+        });
+
+  });
+
+
+}); // end of build namespace

+ 9 - 14
Build/Scripts/BuildWindows.js

@@ -13,25 +13,20 @@ namespace('build', function() {
   }, function() {
 
     // Clean build
-    common.cleanCreateDir(buildDir);
-    common.cleanCreateDir(editorAppFolder);
+    var cleanBuild = true;
+    if (cleanBuild) {
+      common.cleanCreateDir(buildDir);
+      common.cleanCreateDir(editorAppFolder);
+      common.cleanCreateDir(host.getGenScriptRootDir("WINDOWS"));
+    }
+
+    // create the generated script files, so they will be picked up by cmake
+    host.createGenScriptFiles("WINDOWS");
 
     process.chdir(buildDir);
 
     var cmds = [];
 
-    // Build the AtomicTool
-    cmds.push(atomicRoot + "Build/Scripts/Windows/CompileAtomicTool.bat");
-
-    // Generate bindings for each script package
-
-    var scriptPackages = host.getScriptPackages();
-    var bindCmd = host.atomicTool + " bind \"" + atomicRoot + "\" ";
-
-    for (var i in scriptPackages) {
-      cmds.push(bindCmd + "Script/Packages/" + scriptPackages[i] + "/ WINDOWS")
-    }
-
     // Build the AtomicEditor
     cmds.push(atomicRoot + "Build/Scripts/Windows/CompileAtomicEditor.bat");
 

+ 3 - 1
Build/Scripts/Host.js

@@ -3,7 +3,9 @@ var os = require('os');
 if (os.platform() == "win32") {
   module.exports = require("./HostWindows");
   require("./BuildWindows");
-  require("./BuildAndroid");
 } else if (os.platform() == "darwin") {
   module.exports = require("./HostMac");
 }
+
+require("./BuildCommon");
+require("./BuildAndroid");

+ 88 - 4
Build/Scripts/HostCommon.js

@@ -9,13 +9,93 @@ process.env.NODE_PATH = atomicRoot + "Build/node_modules/";
 require('module').Module._initPaths();
 var fs = require('fs-extra');
 
+/// Returns a list of all script packages, regardless of platform
 function getScriptPackages() {
 
-    var srcpath = atomicRoot + "Script/Packages/";
+  var srcpath = atomicRoot + "Script/Packages/";
+
+  return fs.readdirSync(srcpath).filter(function(file) {
+    return fs.statSync(path.join(srcpath, file)).isDirectory() && fs.existsSync(srcpath + "/" + file + "/Package.json");
+  });
+
+}
+
+// return an object with package name keys and module name lists as values
+function getScriptModules(platform) {
+
+  modules = {};
+
+  var packages = getScriptPackages();
+
+  for (var i in packages) {
+
+    var pkg = JSON.parse(fs.readFileSync(atomicRoot + "Script/Packages/" + packages[i] + "/Package.json"));
+
+    if (pkg.platforms && pkg.platforms.indexOf(platform) == -1)
+      continue;
+
+    for (var j in pkg.modules) {
+
+      var moduleName = pkg.modules[j];
+
+      if (pkg.moduleExclude && pkg.moduleExclude[platform])
+        if (pkg.moduleExclude[platform].indexOf(moduleName) != -1)
+          continue;
+
+      if (!modules[pkg.name])
+        modules[pkg.name] = [];
+
+      modules[pkg.name].push(moduleName);
+    }
+
+  }
+
+  return modules;
+
+}
+
+function getGenScriptRootDir(platform) {
+
+  return atomicRoot + "Artifacts/Build/Source/Generated/" + platform + "/";
+
+}
+
+// Get a list of script source filenames for a given platform
+function getGenScriptFilenames(platform) {
+
+  var filenames = [];
+
+  var scriptGenRoot = getGenScriptRootDir(platform);
+
+  var modules = getScriptModules(platform);
+
+  for (var pkgName in modules) {
+
+    var jsPackageFolder = scriptGenRoot + "Javascript/Packages/" + pkgName + "/";
+
+    // the JS package sources
+    filenames.push(jsPackageFolder + "JSPackage" + pkgName + ".cpp");
+
+    for (var i in modules[pkgName]) {
+      filenames.push(jsPackageFolder + "JSModule" + modules[pkgName][i] + ".cpp");
+    }
+
+  }
+
+  return filenames;
+
+}
+
+function createGenScriptFiles(platform) {
+
+  var scriptFiles = getGenScriptFilenames(platform);
+
+  for (var i in scriptFiles) {
+
+    fs.ensureFileSync(scriptFiles[i]);
+
+  }
 
-    return fs.readdirSync(srcpath).filter(function(file) {
-      return fs.statSync(path.join(srcpath, file)).isDirectory();
-    });
 }
 
 function cleanCreateDir(directory) {
@@ -56,3 +136,7 @@ exports.cleanCreateDir = cleanCreateDir;
 exports.testCreateDir = testCreateDir;
 exports.testRemoveDir = testRemoveDir;
 exports.getScriptPackages = getScriptPackages;
+exports.getScriptModules = getScriptModules;
+exports.getGenScriptFilenames = getGenScriptFilenames;
+exports.createGenScriptFiles = createGenScriptFiles;
+exports.getGenScriptRootDir = getGenScriptRootDir;

+ 1 - 1
Build/Scripts/Windows/CompileAndroid.bat

@@ -1,3 +1,3 @@
 SET PATH=%ANDROID_NDK%\prebuilt\windows\bin\;%PATH%
-cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../../
+cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../Build/CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../../
 %ANDROID_NDK%\prebuilt\windows\bin\make.exe -j4

+ 1 - 0
Build/Scripts/Windows/CompileAtomicEditor.bat

@@ -1,3 +1,4 @@
 call "%VS140COMNTOOLS%..\..\VC\bin\amd64\vcvars64.bat"
 cmake ..\\..\\..\\ -DATOMIC_DEV_BUILD=0 -G "Visual Studio 14 2015 Win64"
+msbuild /m /p:Configuration=Release /p:Platform=x64 Source\AtomicTool\GenerateScriptBindings.vcxproj
 msbuild /m Atomic.sln /t:AtomicEditor /t:AtomicPlayer /p:Configuration=Release /p:Platform=x64

+ 0 - 3
Build/Scripts/Windows/CompileAtomicTool.bat

@@ -1,3 +0,0 @@
-call "%VS140COMNTOOLS%..\..\VC\bin\amd64\vcvars64.bat"
-cmake ..\\..\\..\\ -DATOMIC_DEV_BUILD=0 -G "Visual Studio 14 2015 Win64"
-msbuild /m Atomic.sln /t:AtomicTool /p:Configuration=Release /p:Platform=x64

+ 0 - 55
CMake/Modules/AtomicNET.cmake

@@ -1,55 +0,0 @@
-
-if (ATOMIC_DOTNET_DEV)
-add_definitions ( -DATOMIC_DOTNET )
-endif ()
-
-set (CSATOMICNATIVEDIR "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/Atomic/Native")
-set (CSATOMICPLAYERNATIVEDIR "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/AtomicPlayer/Native")
-set (CSATOMICNETNATIVEDIR "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/AtomicNET/Native")
-
-# Create the binding files ahead of time, so they are picked up with glob
-
-set (CSFILES CSModuleAtomic2D.cpp;CSModuleAtomic3D.cpp;CSModuleAudio.cpp;CSModuleContainer.cpp;CSModuleCore.cpp;
-             CSModuleEngine.cpp;CSModuleEnvironment.cpp;CSModuleGraphics.cpp;CSModuleInput.cpp;
-             CSModuleIO.cpp;CSModuleJavascript.cpp;CSModuleMath.cpp;CSModuleNavigation.cpp;
-             CSModuleNetwork.cpp;CSModulePhysics.cpp;CSModuleResource.cpp;CSPackageAtomic.cpp;
-             CSModuleScene.cpp;CSModuleUI.cpp;CSPackageAtomic.h;CSModuleAtomicNET.cpp)
-
-set (CSATOMICPLAYERFILES CSModulePlayer.cpp;CSPackageAtomicPlayer.cpp;CSPackageAtomicPlayer.h)
-
-set (CSATOMICNETFILES CSModuleNETCore.cpp;CSModuleNETScript.cpp;CSPackageAtomicNET.cpp;CSPackageAtomicNET.h)
-
-foreach(CSFILE ${CSFILES})
-
-  set (CSFILEPATH "${CSATOMICNATIVEDIR}/${CSFILE}")
-
-  if (NOT EXISTS ${CSFILEPATH})
-    file(WRITE "${CSFILEPATH}" "// will be created by AtomicTool")
-  endif()
-
-endforeach()
-
-foreach(CSFILE ${CSATOMICPLAYERFILES})
-
-  set (CSFILEPATH "${CSATOMICPLAYERNATIVEDIR}/${CSFILE}")
-
-  if (NOT EXISTS ${CSFILEPATH})
-    file(WRITE "${CSFILEPATH}" "// will be created by AtomicTool")
-  endif()
-
-endforeach()
-
-foreach(CSFILE ${CSATOMICNETFILES})
-
-  set (CSFILEPATH "${CSATOMICNETNATIVEDIR}/${CSFILE}")
-
-  if (NOT EXISTS ${CSFILEPATH})
-    file(WRITE "${CSFILEPATH}" "// will be created by AtomicTool")
-  endif()
-
-endforeach()
-
-
-file (GLOB CSHARP_BINDINGS_SOURCE ${CSATOMICNATIVEDIR}/*.cpp ${CSATOMICNATIVEDIR}/*.h)
-file (GLOB CSHARPATOMICPLAYER_BINDINGS_SOURCE ${CSATOMICPLAYERNATIVEDIR}/*.cpp ${CSATOMICPLAYERNATIVEDIR}/*.h)
-file (GLOB CSHARPATOMICNET_BINDINGS_SOURCE ${CSATOMICNETNATIVEDIR}/*.cpp ${CSATOMICNETNATIVEDIR}/*.h)

+ 1 - 1
CMakeLists.txt

@@ -3,7 +3,7 @@ project (Atomic)
 
 cmake_minimum_required (VERSION 2.8)
 
-set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
+set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/Build/CMake/Modules)
 
 include(AtomicUtils)
 

+ 2 - 1
Script/Packages/AtomicNET/Package.json

@@ -3,5 +3,6 @@
   "name" : "AtomicNET",
   "namespace" : "Atomic",
   "dependencies" : ["Script/Packages/Atomic"],
-  "modules" : ["NETCore", "NETScript"]
+  "modules" : ["NETCore", "NETScript"],
+  "platforms" : ["WINDOWS", "MACOSX"]
 }

+ 2 - 1
Script/Packages/Editor/Package.json

@@ -3,5 +3,6 @@
   "name" : "Editor",
   "namespace" : "AtomicEditor",
   "dependencies" : ["Script/Packages/Atomic"],
-  "modules" : ["Editor"]
+  "modules" : ["Editor"],
+  "platforms" : ["WINDOWS", "MACOSX", "LINUX"]
 }

+ 2 - 1
Script/Packages/ToolCore/Package.json

@@ -3,5 +3,6 @@
   "name" : "ToolCore",
   "namespace" : "ToolCore",
   "dependencies" : ["Script/Packages/Atomic"],
-  "modules" : ["ToolCore"]
+  "modules" : ["ToolCore"],
+  "platforms" : ["WINDOWS", "MACOSX", "LINUX"]
 }

+ 3 - 3
Source/AtomicEditor/CMakeLists.txt

@@ -7,7 +7,7 @@ include_directories ( ${CMAKE_SOURCE_DIR}/Source/ThirdParty
 
 file (GLOB_RECURSE SOURCE_FILES *.cpp *.h)
 
-file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/Editor/*.cpp)
+file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/Editor/*.cpp)
 
 set (SOURCE_FILES ${SOURCE_FILES} ${JAVASCRIPT_BINDINGS_SOURCE})
 
@@ -22,7 +22,7 @@ if (APPLE)
 
     #ICNS
     set(MACOSX_BUNDLE_ICON_FILE Atomic.icns)
-    set(ATOMIC_EDITOR_ICON ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.icns)
+    set(ATOMIC_EDITOR_ICON ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/Atomic.icns)
     set_source_files_properties(${ATOMIC_EDITOR_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
 
 elseif(LINUX)
@@ -35,7 +35,7 @@ else()
     #set (EXE_TYPE WIN32)
     add_definitions(-DATOMIC_WIN32_CONSOLE)
 
-    set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.rc)
+    set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/Atomic.rc)
 endif(APPLE)
 
 add_executable(AtomicEditor ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})

+ 1 - 1
Source/AtomicJS/CMakeLists.txt

@@ -15,7 +15,7 @@ if (NOT MSVC)
     add_definitions (-DUNIX)
 endif()
 
-file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/Atomic/*.cpp)
+file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/Atomic/*.cpp)
 
 set (SOURCE_FILES ${JAVASCRIPT_SOURCE} ${JAVASCRIPT_BINDINGS_SOURCE})
 

+ 1 - 14
Source/AtomicNET/NETJS/CMakeLists.txt

@@ -2,20 +2,7 @@ include_directories (${CMAKE_SOURCE_DIR}/Source/ThirdParty)
 
 file (GLOB_RECURSE SOURCE_FILES *.cpp *.h)
 
-# Create the JSBind files ahead of time, so they are picked up with glob
-set (JSFILES JSPackageAtomicNET.cpp;JSModuleNETCore.cpp;JSModuleNETScript.cpp)
-
-foreach(JSFILE ${JSFILES})
-
-  set (JSFILEPATH "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/AtomicNET/${JSFILE}")
-
-  if (NOT EXISTS ${JSFILEPATH})
-    file(WRITE "${JSFILEPATH}" "// will be created by JSBind")
-  endif()
-
-endforeach()
-
-file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/AtomicNET/*.cpp)
+file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/AtomicNET/*.cpp)
 
 set (SOURCE_FILES ${SOURCE_FILES} ${JAVASCRIPT_BINDINGS_SOURCE} )
 

+ 3 - 3
Source/AtomicPlayer/Application/CMakeLists.txt

@@ -13,12 +13,12 @@ set (SOURCE_FILES ${SOURCE_FILES} ${CSHARP_BINDINGS_SOURCE} ${CSHARPATOMICPLAYER
 
 if (MSVC)
     set (EXE_TYPE WIN32)
-    set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.rc)
+    set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/Atomic.rc)
 elseif(APPLE)
     #ICNS
     set(MACOSX_BUNDLE_ICON_FILE Atomic.icns)
 if (NOT IOS)
-    set(ATOMIC_EDITOR_ICON ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.icns)
+    set(ATOMIC_EDITOR_ICON ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/Atomic.icns)
 endif()
     set_source_files_properties(${ATOMIC_EDITOR_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
     set (EXE_TYPE MACOSX_BUNDLE)
@@ -63,7 +63,7 @@ else()
       XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES NO
     )
 
-    set (TARGET_PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/CMake/Modules/iOSBundleInfo.plist.template)
+    set (TARGET_PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/Build/CMake/Modules/iOSBundleInfo.plist.template)
 
 endif()
 endif(APPLE)

+ 1 - 1
Source/AtomicPlayerJS/CMakeLists.txt

@@ -2,7 +2,7 @@ include_directories (${CMAKE_SOURCE_DIR}/Source/ThirdParty)
 
 file (GLOB_RECURSE SOURCE_FILES *.cpp *.h)
 
-file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/AtomicPlayer/*.cpp)
+file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/AtomicPlayer/*.cpp)
 
 set (SOURCE_FILES ${SOURCE_FILES} ${JAVASCRIPT_BINDINGS_SOURCE} )
 

+ 6 - 0
Source/AtomicTool/CMakeLists.txt

@@ -35,6 +35,12 @@ add_custom_command( TARGET AtomicTool POST_BUILD
                    ARGS -E copy_if_different $<TARGET_FILE:AtomicTool> \"${CMAKE_SOURCE_DIR}/Artifacts/Build/AtomicTool/\"
                    COMMENT "Copying AtomicTool to Build Artifacts" )
 
+add_custom_target ( GenerateScriptBindings
+                    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+                    COMMENT "${ATOMIC_NODE_JAKE} build:genscripts[${JAVASCRIPT_BINDINGS_PLATFORM}]"
+                    COMMAND ${ATOMIC_NODE_JAKE} build:genscripts[${JAVASCRIPT_BINDINGS_PLATFORM}]
+                    DEPENDS AtomicTool )
+
 if (ATOMIC_DOTNET_DEV)
 
 if (NOT EXISTS ${CMAKE_SOURCE_DIR}/Artifacts/AtomicNET/TPA)

+ 2 - 2
Source/ToolCore/JSBind/JSBind.cpp

@@ -42,7 +42,7 @@ bool JSBind::LoadPackage(const String& sourceRootFolder, const String& packageFo
 bool JSBind::GenerateCSharpBindings()
 {
 
-    String modulesFolder = "Build/Source/Generated/" + platform_ + "/CSharp/Packages/";
+    String modulesFolder = "Artifacts/Build/Source/Generated/" + platform_ + "/CSharp/Packages/";
     modulesFolder += package_->GetName() + "/";
 
     String nativeOutputFolder = sourceRootFolder_ + "/" + modulesFolder + "Native/";
@@ -75,7 +75,7 @@ bool JSBind::GenerateCSharpBindings()
 
 bool JSBind::GenerateJavaScriptBindings()
 {
-    String modulesFolder = "Build/Source/Generated/" + platform_ + "/Javascript/Packages/";
+    String modulesFolder = "Artifacts/Build/Source/Generated/" + platform_ + "/Javascript/Packages/";
     modulesFolder += package_->GetName() + "/";
 
     String outputFolder = sourceRootFolder_ + "/" + modulesFolder;

+ 1 - 1
Source/ToolCoreJS/CMakeLists.txt

@@ -2,7 +2,7 @@ include_directories (${CMAKE_SOURCE_DIR}/Source/ThirdParty ${CMAKE_SOURCE_DIR}/S
 
 file (GLOB_RECURSE SOURCE_FILES *.cpp *.h)
 
-file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/ToolCore/*.cpp)
+file (GLOB JAVASCRIPT_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Artifacts/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/ToolCore/*.cpp)
 
 set (SOURCE_FILES ${SOURCE_FILES} ${JAVASCRIPT_BINDINGS_SOURCE} )