Browse Source

Handle non-development builds which are in distributable package (OS X)

Josh Engebretson 10 years ago
parent
commit
277947dc34

+ 8 - 2
CMakeLists.txt

@@ -7,12 +7,18 @@ set (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
 
 include(AtomicUtils)
 
-
 add_definitions(-DATOMIC_ROOT_SOURCE_DIR="${CMAKE_SOURCE_DIR}" -DATOMIC_ROOT_BUILD_DIR="${CMAKE_BINARY_DIR}")
 
 add_definitions( -DATOMIC_API= -DATOMIC_STATIC_DEFINE -DATOMIC_ATOMIC2D -DATOMIC_LOGGING)
 
-add_definitions( -DATOMIC_DEV_BUILD )
+if (NOT DEFINED ATOMIC_DEV_BUILD)
+    set(ATOMIC_DEV_BUILD 1)
+ENDIF()
+
+if (ATOMIC_DEV_BUILD)
+    add_definitions("-DATOMIC_DEV_BUILD=1")
+endif()
+
 
 # this is here as QtCreator is having trouble picking up #include <Atomic/*> without it
 include_directories(${CMAKE_SOURCE_DIR}/Source ${CMAKE_SOURCE_DIR}/Source/AtomicEditor/Source)

+ 51 - 1
Rakefile

@@ -14,6 +14,8 @@ $RAKE_ROOT = File.dirname(__FILE__)
 
 ARTIFACTS_FOLDER = "#{$RAKE_ROOT}/Artifacts"
 
+$CMAKE_DEV_BUILD = "-DATOMIC_DEV_BUILD=1"
+
 CMAKE_WINDOWS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Windows_Build"
 CMAKE_MACOSX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/MacOSX_Build"
 CMAKE_ANDROID_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Android_Build"
@@ -23,6 +25,8 @@ CMAKE_LINUX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Linux_Build"
 
 ATOMICTOOL_BIN_MACOSX = "#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicTool/Release/AtomicTool"
 
+PACKAGE_FOLDER_MACOSX = "#{ARTIFACTS_FOLDER}/MacOSX_Package"
+
 namespace :build  do
 
   task :macosx_atomictool do
@@ -69,7 +73,7 @@ namespace :build  do
 
     Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
 
-      sh "cmake ../../ -G Xcode"
+      sh "cmake ../../ -G Xcode #{$CMAKE_DEV_BUILD}"
       sh "xcodebuild -configuration Release"
 
     end
@@ -144,5 +148,51 @@ namespace :build  do
 
   end
 
+end
+
+namespace :clean do
+
+  task :macosx do
+
+    folders = ["#{CMAKE_MACOSX_BUILD_FOLDER}", "#{PACKAGE_FOLDER_MACOSX}"]
+
+    for index in 0 ... folders.size
+
+        if Dir.exists?(folders[index])
+            sh "rm -rf #{folders[index]}"
+        end
+
+        if Dir.exists?(folders[index])
+            abort("Unable to clean #{folders[index]}")
+        end
+
+    end
+
+  end
+
+end
+
+
+namespace :package  do
+
+  $CMAKE_DEV_BUILD = "-DATOMIC_DEV_BUILD=0"
+
+  task :macosx =>  ["clean:macosx", "build:macosx"] do
+
+    FileUtils.mkdir_p("#{PACKAGE_FOLDER_MACOSX}")
+
+    MAC_EDITOR_APP_FOLDER_SRC = "#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicEditor/Release/AtomicEditor.app"
+
+    sh "cp -r #{MAC_EDITOR_APP_FOLDER_SRC} #{PACKAGE_FOLDER_MACOSX}"
+
+    # copy resources
+
+    sh "cp -r #{$RAKE_ROOT}/Resources/CoreData #{PACKAGE_FOLDER_MACOSX}/AtomicEditor.app/Contents/Resources/"
+    sh "cp -r #{$RAKE_ROOT}/Resources/EditorData #{PACKAGE_FOLDER_MACOSX}/AtomicEditor.app/Contents/Resources/"
+    sh "cp -r #{$RAKE_ROOT}/Resources/PlayerData #{PACKAGE_FOLDER_MACOSX}/AtomicEditor.app/Contents/Resources/"
+    sh "cp -r #{$RAKE_ROOT}/Script #{PACKAGE_FOLDER_MACOSX}/AtomicEditor.app/Contents/Resources/"
+    sh "cp -r #{$RAKE_ROOT}/Data/AtomicEditor/ProjectTemplates #{PACKAGE_FOLDER_MACOSX}/AtomicEditor.app/Contents/Resources/"
+
+  end
 
 end

+ 3 - 3
Script/Packages/Editor/Editor.json

@@ -1,7 +1,7 @@
 {
 	"name" : "Editor",
-	"sources" : ["Source/AtomicEditorWork/Application", "Source/AtomicEditorWork/Utils",
-							"Source/AtomicEditorWork/EditorMode", "Source/AtomicEditorWork/PlayerMode",
-							 "Source/AtomicEditorWork/Editors", "Source/AtomicEditorWork/Editors/SceneEditor3D"],
+	"sources" : ["Source/AtomicEditor/Application", "Source/AtomicEditor/Utils",
+							"Source/AtomicEditor/EditorMode", "Source/AtomicEditor/PlayerMode",
+							 "Source/AtomicEditor/Editors", "Source/AtomicEditor/Editors/SceneEditor3D"],
 	"classes" : ["EditorMode", "PlayerMode", "FileUtils", "AEPreferences", "ResourceEditor", "JSResourceEditor", "SceneEditor3D", "SceneView3D"]
 }

+ 10 - 0
Script/TypeScript/Editor.d.ts

@@ -20,6 +20,16 @@ declare module Editor {
    export var AXIS_LOCAL: AxisMode;
 
 
+   export var FINDTEXT_FLAG_NONE: number;
+   export var FINDTEXT_FLAG_CASESENSITIVE: number;
+   export var FINDTEXT_FLAG_WHOLEWORD: number;
+   export var FINDTEXT_FLAG_WRAP: number;
+   export var FINDTEXT_FLAG_NEXT: number;
+   export var FINDTEXT_FLAG_PREV: number;
+   export var EDITOR_MODALERROR: number;
+   export var EDITOR_MODALINFO: number;
+
+
 //----------------------------------------------------
 // MODULE: Editor
 //----------------------------------------------------

+ 6 - 1
Script/TypeScript/ToolCore.d.ts

@@ -41,17 +41,22 @@ declare module ToolCore {
 
       constructor();
 
-      initFromJSON(): boolean;
+      initFromPackage(): boolean;
+      initFromJSON(atomicTool?: boolean): boolean;
+      // Root source and build directories for development source tree builds
       setRootSourceDir(sourceDir: string): void;
       setRootBuildDir(buildDir: string, setBinaryPaths?: boolean): void;
       getRootSourceDir(): string;
       getRootBuildDir(): string;
+      // Binaries
       getEditorBinary(): string;
       getPlayerBinary(): string;
       getToolBinary(): string;
+      // Resource directories
       getCoreDataDir(): string;
       getPlayerDataDir(): string;
       getEditorDataDir(): string;
+      // Data directories
       getDeploymentDataDir(): string;
       getProjectTemplatesDir(): string;
       getExamplesDir(): string;

+ 0 - 2
Source/Atomic/UI/UISceneView.cpp

@@ -5,8 +5,6 @@
 // Please see LICENSE.md in repository root for license information
 // https://github.com/AtomicGameEngine/AtomicGameEngine
 
-#include "AtomicEditor.h"
-
 
 #include <Atomic/UI/UI.h>
 #include <Atomic/UI/UIBatch.h>

+ 29 - 8
Source/AtomicEditor/CMakeLists.txt

@@ -3,34 +3,53 @@ include_directories (${CMAKE_SOURCE_DIR}/Source/ThirdParty/rapidjson/include
                      ${CMAKE_SOURCE_DIR}/Source/ThirdParty/nativefiledialog)
 
 
-file (GLOB_RECURSE SOURCE_FILES Source/*.cpp Source/*.h)
+file (GLOB_RECURSE SOURCE_FILES *.cpp *.h)
+
+# Create the JSBind files ahead of time, so they are picked up with glob
+set (JSFILES JSPackageEditor.cpp;JSModuleEditor.cpp)
+
+foreach(JSFILE ${JSFILES})
+
+  set (JSFILEPATH "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/Javascript/Packages/Editor/${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/Editor/*.cpp)
+
+set (SOURCE_FILES ${SOURCE_FILES} ${JAVASCRIPT_BINDINGS_SOURCE})
 
 if (APPLE)
+
+    file (GLOB_RECURSE OBJC_FILES *.mm *.h)
+    set (SOURCE_FILES ${SOURCE_FILES} ${OBJC_FILES})
+
     set (EXE_TYPE MACOSX_BUNDLE)
-    set (SOURCE_FILES ${SOURCE_FILES} Source/Build/BuildIOSUtils.mm)
 
     #ICNS
     set(MACOSX_BUNDLE_ICON_FILE Atomic.icns)
     set(ATOMIC_EDITOR_ICON ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.icns)
     set_source_files_properties(${ATOMIC_EDITOR_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
+
 elseif(LINUX)
 
 else()
     include_directories (${CMAKE_SOURCE_DIR}/Source/ThirdParty/libcurl/include)
     add_definitions(-DCURL_STATICLIB)
-    
+
     # We want the console for now
     #set (EXE_TYPE WIN32)
     add_definitions(-DATOMIC_WIN32_CONSOLE)
-    
+
     set (SOURCE_FILES ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/CMake/Modules/Atomic.rc)
 endif(APPLE)
 
-GroupSources("Source")
-
 add_executable(AtomicEditor ${EXE_TYPE} ${SOURCE_FILES} ${ATOMIC_EDITOR_ICON})
 
-target_link_libraries(AtomicEditor ToolCore AtomicJS Poco nativefiledialog ${ATOMIC_LINK_LIBRARIES})
+target_link_libraries(AtomicEditor ToolCore AtomicJS AtomicPlayerJS ToolCoreJS Poco nativefiledialog ${ATOMIC_LINK_LIBRARIES})
 
 if (APPLE)
     set (TARGET_PROPERTIES MACOSX_BUNDLE_INFO_PLIST MacOSXBundleInfo.plist.template)
@@ -39,7 +58,7 @@ elseif(LINUX)
     target_link_libraries(AtomicEditor curl nativefiledialog ${GTK3_LIBRARIES})
 else()
     target_link_libraries(AtomicEditor libcurl Iphlpapi Wldap32)
-    
+
     # pre-Windows 8 can't count on D3DCompiler_47.dll being on system
     add_custom_command (TARGET AtomicEditor POST_BUILD
     COMMAND ${CMAKE_COMMAND}
@@ -50,3 +69,5 @@ endif()
 if (TARGET_PROPERTIES)
     set_target_properties (AtomicEditor PROPERTIES ${TARGET_PROPERTIES})
 endif ()
+
+add_dependencies(AtomicEditor AtomicTool)

+ 2 - 8
Source/AtomicTool/AtomicTool.cpp

@@ -67,12 +67,6 @@ void AtomicTool::Setup()
         }
 
     }
-#ifndef ATOMIC_DEV_BUILD
-    if (!cliDataPath_.Length())
-    {
-        ErrorExit("Unable to parse --data-path");
-    }
-#endif
 
     engineParameters_["Headless"] = true;
     engineParameters_["LogLevel"] = LOG_INFO;
@@ -205,7 +199,7 @@ void AtomicTool::Start()
     ToolEnvironment* env = new ToolEnvironment(context_);
     context_->RegisterSubsystem(env);
 
-#ifdef ATOMIC_DEV_BUILD
+//#ifdef ATOMIC_DEV_BUILD
 
     if (!env->InitFromJSON())
     {
@@ -218,7 +212,7 @@ void AtomicTool::Start()
         cliDataPath_ = env->GetRootSourceDir() + "/Resources/";
     }
 
-#endif
+//#endif
 
     ResourceCache* cache = GetSubsystem<ResourceCache>();
     cache->AddResourceDir(env->GetCoreDataDir());

+ 0 - 1
Source/CMakeLists.txt

@@ -9,7 +9,6 @@ if (NOT IOS AND NOT ANDROID AND NOT EMSCRIPTEN)
     add_subdirectory(ToolCore)
     add_subdirectory(ToolCoreJS)
     add_subdirectory(AtomicEditor)
-    add_subdirectory(AtomicEditorWork)
     add_subdirectory(AtomicTool)
     add_subdirectory(Tools)
 endif()

+ 0 - 1
Source/ToolCore/Build/BuildBase.cpp

@@ -2,7 +2,6 @@
 // Please see LICENSE.md in repository root for license information
 // https://github.com/AtomicGameEngine/AtomicGameEngine
 
-#include "AtomicEditor.h"
 #include <Atomic/IO/Log.h>
 #include <Atomic/IO/FileSystem.h>
 

+ 0 - 1
Source/ToolCore/Build/BuildSystem.cpp

@@ -2,7 +2,6 @@
 // Please see LICENSE.md in repository root for license information
 // https://github.com/AtomicGameEngine/AtomicGameEngine
 
-#include "AtomicEditor.h"
 #include <Atomic/Core/Context.h>
 #include <Atomic/Core/StringUtils.h>
 #include <Atomic/IO/FileSystem.h>

+ 0 - 2
Source/ToolCore/Build/ResourcePackager.cpp

@@ -24,8 +24,6 @@
 // THE SOFTWARE.
 //
 
-#include "AtomicEditor.h"
-
 #include "Atomic/Core/StringUtils.h"
 #include <Atomic/IO/FileSystem.h>
 #include <Atomic/Container/ArrayPtr.h>

+ 0 - 1
Source/ToolCore/Import/JSONSceneImporter.cpp

@@ -2,7 +2,6 @@
 // Please see LICENSE.md in repository root for license information
 // https://github.com/AtomicGameEngine/AtomicGameEngine
 
-#include "AtomicEditor.h"
 #include <rapidjson/document.h>
 #include <rapidjson/stringbuffer.h>
 #include <rapidjson/prettywriter.h>

+ 0 - 1
Source/ToolCore/Import/JSONSceneProcess.cpp

@@ -4,7 +4,6 @@
 
 #include <stdint.h>
 
-#include "AtomicEditor.h"
 #include <Atomic/Core/ProcessUtils.h>
 #include <Atomic/IO/Log.h>
 #include <Atomic/IO/FileSystem.h>

+ 0 - 3
Source/ToolCore/Net/CurlManager.cpp

@@ -2,14 +2,11 @@
 // Please see LICENSE.md in repository root for license information
 // https://github.com/AtomicGameEngine/AtomicGameEngine
 
-#include "AtomicEditor.h"
 #include <Atomic/Core/CoreEvents.h>
 #include <Atomic/Core/Context.h>
 #include "CurlManager.h"
 #include <curl/curl.h>
 
-#include "AEEvents.h"
-
 namespace ToolCore
 {
 

+ 23 - 9
Source/ToolCore/ToolEnvironment.cpp

@@ -26,19 +26,33 @@ ToolEnvironment::~ToolEnvironment()
 
 }
 
-bool ToolEnvironment::InitFromJSON()
+bool ToolEnvironment::InitFromPackage()
 {
 
-#ifndef ATOMIC_DEV_BUILD
-    return false;
+    FileSystem* fileSystem = GetSubsystem<FileSystem>();
+
+#ifdef ATOMIC_PLATFORM_WINDOWS
+    editorBinary_ = rootBuildDir_ + fileSystem->GetProgramDir();
 #else
+    editorBinary_ = fileSystem->GetProgramDir() + "AtomicEditor";
+    String resourcesDir = GetPath(RemoveTrailingSlash(fileSystem->GetProgramDir())) + "Resources/";
+    projectTemplatesDir_ = resourcesDir + "ProjectTemplates/";
+#endif
+
+    return true;
+
+}
+
+bool ToolEnvironment::InitFromJSON(bool atomicTool)
+{
+
 
     // make sure config path is initialized
     GetDevConfigFilename();
 
     FileSystem* fileSystem = GetSubsystem<FileSystem>();
 
-    if (!fileSystem->FileExists(devConfigFilename_))
+    if (atomicTool || !fileSystem->FileExists(devConfigFilename_))
     {
         // default to build directories
 
@@ -79,8 +93,6 @@ bool ToolEnvironment::InitFromJSON()
 
     return true;
 
-#endif
-
 }
 
 
@@ -120,14 +132,14 @@ void ToolEnvironment::SetRootBuildDir(const String& buildDir, bool setBinaryPath
 
 #ifdef _DEBUG
         playerBinary_ = rootBuildDir_ + "Source/AtomicPlayer/Debug/AtomicPlayer.exe";
-        editorBinary_ = rootBuildDir_ + "Source/AtomicEditorWork/Debug/AtomicEditorWork.exe";
+        editorBinary_ = rootBuildDir_ + "Source/AtomicEditor/Debug/AtomicEditor.exe";
 #else
         playerBinary_ = rootBuildDir_ + "Source/AtomicPlayer/Release/AtomicPlayer.exe";
-        editorBinary_ = rootBuildDir_ + "Source/AtomicEditorWork/Release/AtomicEditorWork.exe";
+        editorBinary_ = rootBuildDir_ + "Source/AtomicEditor/Release/AtomicEditor.exe";
 #endif
 #elif ATOMIC_PLATFORM_OSX
         playerBinary_ = rootBuildDir_ + "Source/AtomicPlayer/AtomicPlayer.app/Contents/MacOS/AtomicPlayer";
-        editorBinary_ = rootBuildDir_ + "Source/AtomicEditorWork/AtomicEditorWork.app/Contents/MacOS/AtomicEditorWork";
+        editorBinary_ = rootBuildDir_ + "Source/AtomicEditor/AtomicEditor.app/Contents/MacOS/AtomicEditor";
 #endif
     }
 
@@ -146,6 +158,8 @@ void ToolEnvironment::Dump()
     LOGINFOF("Player Binary: %s", playerBinary_.CString());
     LOGINFOF("Tool Binary: %s", toolBinary_.CString());
 
+
+    LOGINFOF("Project Templates Dir: %s", projectTemplatesDir_.CString());
     LOGINFOF("Examples Dir: %s", examplesDir_.CString());
 
     LOGINFOF("Deployment Data Dir: %s", deploymentDataDir_.CString());

+ 7 - 1
Source/ToolCore/ToolEnvironment.h

@@ -23,23 +23,29 @@ public:
     ToolEnvironment(Context* context);
     virtual ~ToolEnvironment();
 
+    bool InitFromPackage();
+
     // dev build init env from json
-    bool InitFromJSON();
+    bool InitFromJSON(bool atomicTool = false);
 
+    /// Root source and build directories for development source tree builds
     void SetRootSourceDir(const String& sourceDir);
     void SetRootBuildDir(const String& buildDir, bool setBinaryPaths = false);
 
     const String& GetRootSourceDir() { return rootSourceDir_; }
     const String& GetRootBuildDir() { return rootBuildDir_; }
 
+    /// Binaries
     const String& GetEditorBinary() { return editorBinary_; }
     const String& GetPlayerBinary() { return playerBinary_; }
     const String& GetToolBinary() { return toolBinary_; }
 
+    /// Resource directories
     const String& GetCoreDataDir() { return resourceCoreDataDir_; }
     const String& GetPlayerDataDir() { return resourcePlayerDataDir_; }
     const String& GetEditorDataDir() { return resourceEditorDataDir_; }
 
+    /// Data directories
     const String& GetDeploymentDataDir() { return toolBinary_; }
 
     const String& GetProjectTemplatesDir() { return projectTemplatesDir_; }