|
|
@@ -7,566 +7,133 @@ when /mswin|windows|mingw32/i
|
|
|
when /darwin/i
|
|
|
$HOST_OS = "darwin"
|
|
|
else
|
|
|
- abort("Unknown host config: Config::CONFIG['host_os']: #{Config::CONFIG['host_os']}")
|
|
|
+ $HOST_OS = "linux"
|
|
|
end
|
|
|
|
|
|
$RAKE_ROOT = File.dirname(__FILE__)
|
|
|
|
|
|
ARTIFACTS_FOLDER = "#{$RAKE_ROOT}/Artifacts"
|
|
|
-BUILD_FOLDER = "#{$RAKE_ROOT}/Build"
|
|
|
|
|
|
-ATOMICTILED_BUILD_DIR = "#{ARTIFACTS_FOLDER}/AtomicTiled_Build"
|
|
|
-ATOMICTILED_SOURCE_DIR = "#{$RAKE_ROOT}/../AtomicTiled"
|
|
|
+CMAKE_WINDOWS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Windows_Build"
|
|
|
+CMAKE_MACOSX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/MacOSX_Build"
|
|
|
+CMAKE_ANDROID_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Android_Build"
|
|
|
+CMAKE_IOS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/IOS_Build"
|
|
|
+CMAKE_WEB_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Web_Build"
|
|
|
+CMAKE_LINUX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Linux_Build"
|
|
|
|
|
|
+JSBIND_BIN_MACOSX = "#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicJS/JSBind/Release/JSBind"
|
|
|
|
|
|
-if $HOST_OS == "darwin"
|
|
|
- $QT_BIN_DIR = "#{ENV["QT_SDK"]}/bin"
|
|
|
-else
|
|
|
- $QT_BIN_DIR = "C:\\Qt\\5.4\\msvc2013_64\\bin"
|
|
|
- QT_CREATOR_BIN_DIR = "C:\\Qt\\Tools\\QtCreator\\bin"
|
|
|
- ENV['PATH'] = "#{QT_CREATOR_BIN_DIR};" + ENV['PATH']
|
|
|
-end
|
|
|
-
|
|
|
-
|
|
|
-namespace :android do
|
|
|
-
|
|
|
- CMAKE_ANDROID_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Android_Build"
|
|
|
-
|
|
|
- task :player => "macosx:jsbind" do
|
|
|
-
|
|
|
- if !Dir.exists?("#{CMAKE_ANDROID_BUILD_FOLDER}")
|
|
|
- FileUtils.mkdir_p(CMAKE_ANDROID_BUILD_FOLDER)
|
|
|
- end
|
|
|
+namespace :build do
|
|
|
|
|
|
- Dir.chdir(CMAKE_ANDROID_BUILD_FOLDER) do
|
|
|
+ task :macosx_jsbind do
|
|
|
|
|
|
- sh "#{BUILD_FOLDER}/JSBind #{$RAKE_ROOT} ANDROID"
|
|
|
- sh "cmake -DCMAKE_TOOLCHAIN_FILE=#{$RAKE_ROOT}/CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../"
|
|
|
- sh "make -j8"
|
|
|
+ if !Dir.exists?("#{CMAKE_MACOSX_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_MACOSX_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- end
|
|
|
-
|
|
|
-end
|
|
|
-
|
|
|
-namespace :ios do
|
|
|
-
|
|
|
- CMAKE_IOS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/IOS_Build"
|
|
|
-
|
|
|
- task :player => "macosx:jsbind" do
|
|
|
+ Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
|
|
|
- if !Dir.exists?("#{CMAKE_IOS_BUILD_FOLDER}")
|
|
|
- FileUtils.mkdir_p(CMAKE_IOS_BUILD_FOLDER)
|
|
|
- end
|
|
|
+ sh "cmake ../../ -G Xcode -DCMAKE_BUILD_TYPE=Release"
|
|
|
+ sh "xcodebuild -target JSBind -configuration Release"
|
|
|
|
|
|
- Dir.chdir(CMAKE_IOS_BUILD_FOLDER) do
|
|
|
- sh "#{BUILD_FOLDER}/JSBind #{$RAKE_ROOT} IOS"
|
|
|
- sh "cmake -DIOS=1 -DCMAKE_BUILD_TYPE=Release -G Xcode ../../"
|
|
|
- sh "xcodebuild -configuration Release"
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
-end
|
|
|
-
|
|
|
-
|
|
|
-namespace :web do
|
|
|
-
|
|
|
- CMAKE_WEB_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Web_Build"
|
|
|
-
|
|
|
- task :player => "macosx:jsbind" do
|
|
|
-
|
|
|
- if !Dir.exists?("#{CMAKE_WEB_BUILD_FOLDER}")
|
|
|
- FileUtils.mkdir_p(CMAKE_WEB_BUILD_FOLDER)
|
|
|
- end
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_WEB_BUILD_FOLDER) do
|
|
|
- sh "#{BUILD_FOLDER}/JSBind #{$RAKE_ROOT} WEB"
|
|
|
- sh "cmake -DEMSCRIPTEN=1 -DATOMIC_BUILD_2D=1 -DCMAKE_TOOLCHAIN_FILE=#{$RAKE_ROOT}/CMake/Toolchains/emscripten.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../"
|
|
|
- sh "make -j8"
|
|
|
- end
|
|
|
+ task :windows do
|
|
|
|
|
|
- Dir.chdir("#{CMAKE_WEB_BUILD_FOLDER}/Source/AtomicPlayer") do
|
|
|
- sh "mv AtomicPlayer AtomicPlayer.bc"
|
|
|
- sh "emcc -O3 -s ASM_JS=1 -s VERBOSE=0 -s USE_SDL=2 -s TOTAL_MEMORY=134217728 -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s NO_EXIT_RUNTIME=1 ./AtomicPlayer.bc -o ./AtomicPlayer.html"
|
|
|
+ if !Dir.exists?("#{CMAKE_WINDOWS_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_WINDOWS_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- end
|
|
|
-
|
|
|
-end
|
|
|
-
|
|
|
-
|
|
|
-namespace :macosx do
|
|
|
-
|
|
|
-
|
|
|
- CMAKE_MACOSX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/MacOSX_Build"
|
|
|
- MACOSX_PACKAGE_FOLDER = "#{ARTIFACTS_FOLDER}/MacOSX_Package"
|
|
|
-
|
|
|
- task :clean do
|
|
|
-
|
|
|
- folders = ["#{CMAKE_MACOSX_BUILD_FOLDER}", "#{MACOSX_PACKAGE_FOLDER}",
|
|
|
- "#{ARTIFACTS_FOLDER}/Android_Build", "#{ARTIFACTS_FOLDER}/Web_Build",
|
|
|
- "#{ARTIFACTS_FOLDER}/AtomicExamples", "#{ARTIFACTS_FOLDER}/Docs",
|
|
|
- "#{ARTIFACTS_FOLDER}/Examples", "#{ARTIFACTS_FOLDER}/AtomicTiled_Build",
|
|
|
- "#{ARTIFACTS_FOLDER}/IOS_Build", "#{ARTIFACTS_FOLDER}/IOSDeploy_Build"]
|
|
|
-
|
|
|
- for index in 0 ... folders.size
|
|
|
-
|
|
|
- if Dir.exists?(folders[index])
|
|
|
- puts "rm -rf #{folders[index]}"
|
|
|
- sh "rm -rf #{folders[index]}"
|
|
|
- end
|
|
|
+ Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
|
|
|
|
|
|
- if Dir.exists?(folders[index])
|
|
|
- abort("Unable to clean #{folders[index]}")
|
|
|
- end
|
|
|
+ sh "cmake ../../ -G \"Visual Studio 12 2013 Win64\""
|
|
|
+ sh "msbuild Atomic.sln /p:Configuration=Release"
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
- task :cmake do
|
|
|
+ task :macosx do
|
|
|
|
|
|
- FileUtils.mkdir_p(CMAKE_MACOSX_BUILD_FOLDER)
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
- sh "cmake ../../ -DCMAKE_BUILD_TYPE=Release"
|
|
|
+ if !Dir.exists?("#{CMAKE_MACOSX_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_MACOSX_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- end
|
|
|
+ Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
|
|
|
- task :jsbind => "macosx:cmake" do
|
|
|
+ sh "cmake ../../ -G Xcode"
|
|
|
+ sh "xcodebuild -configuration Release"
|
|
|
|
|
|
- Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
- sh "make -j8 JSBind"
|
|
|
- sh "cp ./Source/AtomicJS/JSBind/JSBind #{BUILD_FOLDER}/JSBind"
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
- task :generate_javascript_bindings => "macosx:jsbind" do
|
|
|
+ task :linux do
|
|
|
|
|
|
- Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
- sh "#{BUILD_FOLDER}/JSBind #{$RAKE_ROOT} MACOSX"
|
|
|
+ if !Dir.exists?("#{CMAKE_LINUX_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_LINUX_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- end
|
|
|
-
|
|
|
- task :generate_docs => "macosx:generate_javascript_bindings" do
|
|
|
+ Dir.chdir(CMAKE_LINUX_BUILD_FOLDER) do
|
|
|
|
|
|
- Dir.chdir("#{$RAKE_ROOT}/Docs") do
|
|
|
+ sh "cmake ../../ -DLINUX=1 -G \"Unix Makefiles\""
|
|
|
+ sh "make -j2"
|
|
|
|
|
|
- if Dir.exists?("out")
|
|
|
- sh "rm -rf out"
|
|
|
- end
|
|
|
-
|
|
|
- # add the generated JS bindings
|
|
|
- sh "./gendocs.sh"
|
|
|
- sh "cp -r out #{ARTIFACTS_FOLDER}/Docs"
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
- task :generate_examples do
|
|
|
|
|
|
- Dir.chdir("#{ARTIFACTS_FOLDER}") do
|
|
|
+ #IOS, dependent on macosx for JSBind
|
|
|
+ task :ios => "build:macosx_jsbind" do
|
|
|
|
|
|
- if Dir.exists?("AtomicExamples")
|
|
|
- sh "rm -rf AtomicExamples"
|
|
|
+ if !Dir.exists?("#{CMAKE_IOS_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_IOS_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- if Dir.exists?("Examples")
|
|
|
- sh "rm -rf Examples"
|
|
|
+ Dir.chdir(CMAKE_IOS_BUILD_FOLDER) do
|
|
|
+ sh "#{JSBIND_BIN_MACOSX} #{$RAKE_ROOT} IOS"
|
|
|
+ sh "cmake -DIOS=1 -DCMAKE_BUILD_TYPE=Release -G Xcode ../../"
|
|
|
+ # the -s option adds $KEYCHAIN to the search scope, while the -d option adds $KEYCHAIN to the system domain; both are needed
|
|
|
+ sh "security -v list-keychains -d system -s /Users/jenkins/Library/Keychains/codesign.keychain"
|
|
|
+ sh "security -v unlock-keychain /Users/jenkins/Library/Keychains/codesign.keychain"
|
|
|
+ sh "xcodebuild -configuration Release"
|
|
|
end
|
|
|
|
|
|
- sh "mkdir Examples"
|
|
|
-
|
|
|
- sh "git clone https://github.com/AtomicGameEngine/AtomicExamples"
|
|
|
-
|
|
|
- Dir.chdir("AtomicExamples") do
|
|
|
- sh "git archive master | tar -x -C #{ARTIFACTS_FOLDER}/Examples"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :player => "macosx:generate_javascript_bindings" do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
- # add the generated JS bindings
|
|
|
- sh "cmake ../../ -DCMAKE_BUILD_TYPE=Release"
|
|
|
- sh "make -j8 AtomicPlayer"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :editor => ["macosx:player"] do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
-
|
|
|
- sh "make -j8 BuildEditorFiles"
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :atomictool => ["macosx:player", "macosx:editor"] do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
|
|
|
-
|
|
|
- sh "make -j8 AtomicTool"
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
end
|
|
|
|
|
|
-end
|
|
|
-
|
|
|
-namespace :package do
|
|
|
-
|
|
|
- task :macosx_preflight => ['macosx:clean',
|
|
|
- 'iosdeploy',
|
|
|
- 'web:player',
|
|
|
- 'android:player',
|
|
|
- 'ios:player',
|
|
|
- "atomictiled:osx",
|
|
|
- 'macosx:editor',
|
|
|
- 'macosx:atomictool',
|
|
|
- 'macosx:generate_examples',
|
|
|
- 'macosx:generate_docs'] do
|
|
|
-
|
|
|
- FileUtils.mkdir_p(MACOSX_PACKAGE_FOLDER)
|
|
|
-
|
|
|
- MAC_PLAYER_APP_FOLDER_SRC = "#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicPlayer/AtomicPlayer.app"
|
|
|
- MAC_EDITOR_APP_FOLDER_SRC = "#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicEditor/AtomicEditor.app"
|
|
|
-
|
|
|
- # Resources
|
|
|
- COREDATA_FOLDER_SRC = "#{$RAKE_ROOT}/Data/AtomicPlayer/Resources/CoreData"
|
|
|
- EDITORAPPLICATIONDATA_FOLDER_SRC = "#{$RAKE_ROOT}/Data/AtomicEditor"
|
|
|
-
|
|
|
- # Project Templates
|
|
|
- PROJECTTEMPLATES_FOLDER_SRC = "#{EDITORAPPLICATIONDATA_FOLDER_SRC}/ProjectTemplates"
|
|
|
-
|
|
|
- #Examples
|
|
|
- #Example info could possibly go in the AtomicExamples repo
|
|
|
- EXAMPLEINFO_FOLDER_SRC = "#{EDITORAPPLICATIONDATA_FOLDER_SRC}/ExampleInfo"
|
|
|
- EXAMPLES_FOLDER_SRC = "#{ARTIFACTS_FOLDER}/Examples"
|
|
|
+ task :android => "build:macosx_jsbind" do
|
|
|
|
|
|
- #Docs
|
|
|
- DOCS_FOLDER_SRC = "#{ARTIFACTS_FOLDER}/Docs"
|
|
|
-
|
|
|
- MAC_EDITOR_APP_FOLDER_DST = "#{MACOSX_PACKAGE_FOLDER}/AtomicEditor.app"
|
|
|
- MAC_EDITOR_APP_RESOURCE_FOLDER_DST = "#{MACOSX_PACKAGE_FOLDER}/AtomicEditor.app/Contents/Resources"
|
|
|
-
|
|
|
- # Copy the Editor application
|
|
|
- sh "cp -r #{MAC_EDITOR_APP_FOLDER_SRC} #{MACOSX_PACKAGE_FOLDER}/AtomicEditor.app"
|
|
|
-
|
|
|
- DEPLOYMENT_FOLDER_DST = "#{MAC_EDITOR_APP_RESOURCE_FOLDER_DST}/Deployment"
|
|
|
-
|
|
|
- # Make Deployment folder
|
|
|
- FileUtils.mkdir_p("#{DEPLOYMENT_FOLDER_DST}")
|
|
|
-
|
|
|
- # Copy Resources
|
|
|
- sh "cp -r #{COREDATA_FOLDER_SRC} #{MAC_EDITOR_APP_RESOURCE_FOLDER_DST}/CoreData"
|
|
|
-
|
|
|
- # Copy Deployment
|
|
|
-
|
|
|
- # MacOS deployment
|
|
|
- FileUtils.mkdir_p("#{DEPLOYMENT_FOLDER_DST}/MacOS")
|
|
|
- sh "cp -r #{MAC_PLAYER_APP_FOLDER_SRC} #{DEPLOYMENT_FOLDER_DST}/MacOS/AtomicPlayer.app"
|
|
|
-
|
|
|
- # Android Deployment
|
|
|
- sh "cp -r #{EDITORAPPLICATIONDATA_FOLDER_SRC}/Deployment/Android #{DEPLOYMENT_FOLDER_DST}/Android"
|
|
|
- FileUtils.mkdir_p("#{DEPLOYMENT_FOLDER_DST}/Android/libs/armeabi-v7a")
|
|
|
- sh "cp #{CMAKE_ANDROID_BUILD_FOLDER}/Source/AtomicPlayer/libAtomicPlayer.so #{DEPLOYMENT_FOLDER_DST}/Android/libs/armeabi-v7a/libAtomicPlayer.so"
|
|
|
-
|
|
|
- # iOS Deployment
|
|
|
- FileUtils.mkdir_p("#{DEPLOYMENT_FOLDER_DST}/IOS/AtomicPlayer.app")
|
|
|
- sh "cp #{CMAKE_IOS_BUILD_FOLDER}/Source/AtomicPlayer/Release-iphoneos/AtomicPlayer.app/AtomicPlayer #{DEPLOYMENT_FOLDER_DST}/IOS/AtomicPlayer.app/AtomicPlayer"
|
|
|
- sh "cp #{CMAKE_IOS_BUILD_FOLDER}/Source/AtomicPlayer/Release-iphoneos/AtomicPlayer.app/PkgInfo #{DEPLOYMENT_FOLDER_DST}/IOS/AtomicPlayer.app/PkgInfo"
|
|
|
-
|
|
|
- # Web Deployment
|
|
|
- sh "cp -r #{EDITORAPPLICATIONDATA_FOLDER_SRC}/Deployment/Web #{DEPLOYMENT_FOLDER_DST}/Web"
|
|
|
- sh "cp #{CMAKE_WEB_BUILD_FOLDER}/Source/AtomicPlayer/AtomicPlayer.js #{DEPLOYMENT_FOLDER_DST}/Web/AtomicPlayer.js"
|
|
|
-
|
|
|
- sh "cp -r #{EXAMPLES_FOLDER_SRC} #{MAC_EDITOR_APP_RESOURCE_FOLDER_DST}/Examples"
|
|
|
- sh "cp -r #{DOCS_FOLDER_SRC} #{MAC_EDITOR_APP_RESOURCE_FOLDER_DST}/Docs"
|
|
|
-
|
|
|
- sh "cp -r #{PROJECTTEMPLATES_FOLDER_SRC} #{MAC_EDITOR_APP_RESOURCE_FOLDER_DST}/ProjectTemplates"
|
|
|
- sh "cp -r #{EXAMPLEINFO_FOLDER_SRC} #{MAC_EDITOR_APP_RESOURCE_FOLDER_DST}/ExampleInfo"
|
|
|
-
|
|
|
- # DEPLOY TILED
|
|
|
- APPLICATIONS_FOLDER_DST = "#{MAC_EDITOR_APP_FOLDER_DST}/Contents/Applications"
|
|
|
-
|
|
|
- FileUtils.mkdir_p(APPLICATIONS_FOLDER_DST)
|
|
|
-
|
|
|
- FileUtils.cp_r("#{ATOMICTILED_BUILD_DIR}/bin/Tiled.app", "#{APPLICATIONS_FOLDER_DST}/Tiled.app")
|
|
|
-
|
|
|
- Dir.chdir(APPLICATIONS_FOLDER_DST) do
|
|
|
- sh "#{$QT_BIN_DIR}/macdeployqt #{APPLICATIONS_FOLDER_DST}/Tiled.app"
|
|
|
+ if !Dir.exists?("#{CMAKE_ANDROID_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_ANDROID_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- FileUtils.mkdir_p("#{APPLICATIONS_FOLDER_DST}/CommandLine")
|
|
|
-
|
|
|
- FileUtils.cp("#{CMAKE_IOSDEPLOY_BUILD_FOLDER}/ios-deploy", "#{APPLICATIONS_FOLDER_DST}/CommandLine/ios-deploy")
|
|
|
-
|
|
|
- FileUtils.cp("#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicTool/AtomicTool", "#{APPLICATIONS_FOLDER_DST}/CommandLine/AtomicTool")
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :macosx_editor do
|
|
|
+ Dir.chdir(CMAKE_ANDROID_BUILD_FOLDER) do
|
|
|
|
|
|
- EDITOR_APP_FOLDER = "#{MACOSX_PACKAGE_FOLDER}/AtomicEditor.app"
|
|
|
- if (!File.file?("#{EDITOR_APP_FOLDER}/Contents/Resources/Deployment/Win64/AtomicPlayer.exe"))
|
|
|
- abort("Missing Windows player, please run rake package:windows_editor from Windows")
|
|
|
- end
|
|
|
-
|
|
|
- Dir.chdir("#{MACOSX_PACKAGE_FOLDER}") do
|
|
|
-
|
|
|
- if (File.file?("AtomicEditor_MacOSX.zip"))
|
|
|
- sh "rm AtomicEditor_MacOSX.zip"
|
|
|
+ sh "#{JSBIND_BIN_MACOSX} #{$RAKE_ROOT} ANDROID"
|
|
|
+ sh "cmake -DCMAKE_TOOLCHAIN_FILE=#{$RAKE_ROOT}/CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../"
|
|
|
+ sh "make -j4"
|
|
|
end
|
|
|
|
|
|
- if (File.file?("AtomicEditor_MacOSX.zip"))
|
|
|
- abort ("Couldn't remove editor")
|
|
|
- end
|
|
|
-
|
|
|
- sh "zip -r AtomicEditor_MacOSX.zip ./AtomicEditor.app"
|
|
|
- sh "zip -T AtomicEditor_MacOSX.zip"
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-
|
|
|
- task :windows_preflight => ['windows:clean',
|
|
|
- 'windows:editor',
|
|
|
- 'windows:atomictool',
|
|
|
- 'atomictiled:windows' ] do
|
|
|
-
|
|
|
-
|
|
|
- ATOMICBUILDBOX_SOURCE_DIR = "#{$RAKE_ROOT}/../AtomicBuildBox/Windows/x64"
|
|
|
- EDITOR_APP_FOLDER_DST = "#{WINDOWS_PACKAGE_FOLDER}/AtomicEditor"
|
|
|
-
|
|
|
- FileUtils.mkdir_p(EDITOR_APP_FOLDER_DST)
|
|
|
-
|
|
|
- PLAYER_APP_EXE_SRC = "#{CMAKE_WINDOWS_BUILD_FOLDER}/Source/AtomicPlayer/AtomicPlayer.exe"
|
|
|
- EDITOR_APP_EXE_SRC = "#{CMAKE_WINDOWS_BUILD_FOLDER}/Source/AtomicEditor/AtomicEditor.exe"
|
|
|
-
|
|
|
- DEPLOYMENT_FOLDER = "#{EDITOR_APP_FOLDER_DST}/Deployment/Win64"
|
|
|
-
|
|
|
- # Resources
|
|
|
- COREDATA_FOLDER_SRC = "#{$RAKE_ROOT}/Data/AtomicPlayer/Resources/CoreData"
|
|
|
- EDITORAPPLICATIONDATA_FOLDER_SRC = "#{$RAKE_ROOT}/Data/AtomicEditor"
|
|
|
-
|
|
|
- # Project Templates
|
|
|
- PROJECTTEMPLATES_FOLDER_SRC = "#{EDITORAPPLICATIONDATA_FOLDER_SRC}/ProjectTemplates"
|
|
|
-
|
|
|
- #Examples
|
|
|
- #Example info could possibly go in the AtomicExamples repo
|
|
|
- EXAMPLEINFO_FOLDER_SRC = "#{EDITORAPPLICATIONDATA_FOLDER_SRC}/ExampleInfo"
|
|
|
-
|
|
|
- # This shouldn't ne in root, used for deployment atm, however the editor can use coredata from pak
|
|
|
- FileUtils.cp_r("#{COREDATA_FOLDER_SRC}", "#{EDITOR_APP_FOLDER_DST}/CoreData")
|
|
|
-
|
|
|
- FileUtils.cp("#{CMAKE_WINDOWS_BUILD_FOLDER}/Source/AtomicEditor/EditorData.pak", "#{EDITOR_APP_FOLDER_DST}/EditorData.pak")
|
|
|
- FileUtils.cp("#{CMAKE_WINDOWS_BUILD_FOLDER}/Source/AtomicEditor/CoreData.pak", "#{EDITOR_APP_FOLDER_DST}/CoreData.pak")
|
|
|
-
|
|
|
- FileUtils.cp_r("#{PROJECTTEMPLATES_FOLDER_SRC}", "#{EDITOR_APP_FOLDER_DST}/ProjectTemplates")
|
|
|
- FileUtils.cp_r("#{EXAMPLEINFO_FOLDER_SRC}", "#{EDITOR_APP_FOLDER_DST}/ExampleInfo")
|
|
|
-
|
|
|
- FileUtils.mkdir_p("#{DEPLOYMENT_FOLDER}")
|
|
|
- FileUtils.cp("#{ATOMICBUILDBOX_SOURCE_DIR}/D3DCompiler_47.dll", "#{DEPLOYMENT_FOLDER}/D3DCompiler_47.dll")
|
|
|
- FileUtils.cp("#{PLAYER_APP_EXE_SRC}", "#{DEPLOYMENT_FOLDER}/AtomicPlayer.exe")
|
|
|
- FileUtils.cp("#{EDITOR_APP_EXE_SRC}", "#{EDITOR_APP_FOLDER_DST}/AtomicEditor.exe")
|
|
|
- FileUtils.cp("#{ATOMICBUILDBOX_SOURCE_DIR}/D3DCompiler_47.dll", "#{EDITOR_APP_FOLDER_DST}/D3DCompiler_47.dll")
|
|
|
-
|
|
|
- # DEPLOY TILED
|
|
|
- ATOMICTILED_DEPLOYED_DIR = "#{EDITOR_APP_FOLDER_DST}/Applications/AtomicTiled"
|
|
|
-
|
|
|
- FileUtils.mkdir_p(ATOMICTILED_DEPLOYED_DIR)
|
|
|
-
|
|
|
- FileUtils.cp("#{ATOMICTILED_BUILD_DIR}/tiled.exe", "#{ATOMICTILED_DEPLOYED_DIR}")
|
|
|
- FileUtils.cp("#{ATOMICTILED_BUILD_DIR}/tiled.dll", "#{ATOMICTILED_DEPLOYED_DIR}")
|
|
|
-
|
|
|
- ENV['PATH'] = "#{$QT_BIN_DIR};" + ENV['PATH']
|
|
|
- Dir.chdir(ATOMICTILED_DEPLOYED_DIR) do
|
|
|
- sh "windeployqt.exe --release #{ATOMICTILED_DEPLOYED_DIR}/tiled.exe"
|
|
|
- FileUtils.cp("#{ATOMICBUILDBOX_SOURCE_DIR}/msvcp120.dll", "#{ATOMICTILED_DEPLOYED_DIR}/msvcp120.dll")
|
|
|
- FileUtils.cp("#{ATOMICBUILDBOX_SOURCE_DIR}/msvcr120.dll", "#{ATOMICTILED_DEPLOYED_DIR}/msvcr120.dll")
|
|
|
- FileUtils.cp("#{ATOMICBUILDBOX_SOURCE_DIR}/vccorlib120.dll", "#{ATOMICTILED_DEPLOYED_DIR}/vccorlib120.dll")
|
|
|
- end
|
|
|
-
|
|
|
- FileUtils.mkdir_p("#{EDITOR_APP_FOLDER_DST}/Applications/CommandLine")
|
|
|
- FileUtils.cp("#{CMAKE_WINDOWS_BUILD_FOLDER}/Source/AtomicTool/AtomicTool.exe", "#{EDITOR_APP_FOLDER_DST}/Applications/CommandLine/AtomicTool.exe")
|
|
|
-
|
|
|
end
|
|
|
|
|
|
- task :windows_editor do
|
|
|
-
|
|
|
- MAC_ARTIFACTS_SRC = "Z:/Artifacts/MacOSX_Package/AtomicEditor.app/Contents/Resources"
|
|
|
- EDITOR_APP_FOLDER_DST = "#{WINDOWS_PACKAGE_FOLDER}/AtomicEditor"
|
|
|
+ task :web => "build:macosx_jsbind" do
|
|
|
|
|
|
- Dir.chdir("#{WINDOWS_PACKAGE_FOLDER}") do
|
|
|
-
|
|
|
- if (File.exists?("AtomicEditor_Windows.zip"))
|
|
|
- FileUtils.rm("AtomicEditor_Windows.zip")
|
|
|
+ if !Dir.exists?("#{CMAKE_WEB_BUILD_FOLDER}")
|
|
|
+ FileUtils.mkdir_p(CMAKE_WEB_BUILD_FOLDER)
|
|
|
end
|
|
|
|
|
|
- if (File.exists?("AtomicEditor_Windows.zip"))
|
|
|
- abort("Unable to remove AtomicEditor_Windows.zip")
|
|
|
+ Dir.chdir(CMAKE_WEB_BUILD_FOLDER) do
|
|
|
+ sh "#{JSBIND_BIN_MACOSX} #{$RAKE_ROOT} WEB"
|
|
|
+ sh "cmake -DEMSCRIPTEN=1 -DATOMIC_BUILD_2D=1 -DCMAKE_TOOLCHAIN_FILE=#{$RAKE_ROOT}/CMake/Toolchains/emscripten.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../"
|
|
|
+ sh "make -j4"
|
|
|
end
|
|
|
|
|
|
- end
|
|
|
-
|
|
|
- DEPLOYMENT_FOLDER = "#{EDITOR_APP_FOLDER_DST}/Deployment"
|
|
|
- FileUtils.cp_r("#{MAC_ARTIFACTS_SRC}/Deployment/Android", "#{EDITOR_APP_FOLDER_DST}/Deployment/Android")
|
|
|
- FileUtils.cp_r("#{MAC_ARTIFACTS_SRC}/Deployment/MacOS", "#{EDITOR_APP_FOLDER_DST}/Deployment/MacOS")
|
|
|
- FileUtils.cp_r("#{MAC_ARTIFACTS_SRC}/Deployment/Web", "#{EDITOR_APP_FOLDER_DST}/Deployment/Web")
|
|
|
-
|
|
|
- FileUtils.cp_r("#{MAC_ARTIFACTS_SRC}/Docs", "#{EDITOR_APP_FOLDER_DST}/Docs")
|
|
|
- FileUtils.cp_r("#{MAC_ARTIFACTS_SRC}/Examples", "#{EDITOR_APP_FOLDER_DST}/Examples")
|
|
|
-
|
|
|
- # copy windows player to mac
|
|
|
- ATOMICBUILDBOX_SOURCE_DIR = "#{$RAKE_ROOT}/../AtomicBuildBox/Windows/x64"
|
|
|
- PLAYER_APP_EXE_SRC = "#{CMAKE_WINDOWS_BUILD_FOLDER}/Source/AtomicPlayer/AtomicPlayer.exe"
|
|
|
- FileUtils.mkdir_p("#{MAC_ARTIFACTS_SRC}/Deployment/Win64")
|
|
|
- FileUtils.cp("#{PLAYER_APP_EXE_SRC}", "#{MAC_ARTIFACTS_SRC}/Deployment/Win64/AtomicPlayer.exe")
|
|
|
- FileUtils.cp("#{ATOMICBUILDBOX_SOURCE_DIR}/D3DCompiler_47.dll", "#{MAC_ARTIFACTS_SRC}/Deployment/Win64/D3DCompiler_47.dll")
|
|
|
-
|
|
|
- Dir.chdir("#{WINDOWS_PACKAGE_FOLDER}") do
|
|
|
-
|
|
|
- sh "\"C:\\Program Files\\7-Zip\\7z.exe\" a -tzip AtomicEditor_Windows.zip AtomicEditor"
|
|
|
- sh "\"C:\\Program Files\\7-Zip\\7z.exe\" t AtomicEditor_Windows.zip"
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-
|
|
|
-end
|
|
|
-
|
|
|
-namespace :windows do
|
|
|
-
|
|
|
- CMAKE_WINDOWS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Windows_Build"
|
|
|
- WINDOWS_PACKAGE_FOLDER = "#{ARTIFACTS_FOLDER}/Windows_Package"
|
|
|
-
|
|
|
- task :clean do
|
|
|
-
|
|
|
-
|
|
|
- folders = ["#{CMAKE_WINDOWS_BUILD_FOLDER}", "#{WINDOWS_PACKAGE_FOLDER}",
|
|
|
- "#{ARTIFACTS_FOLDER}/AtomicExamples", "#{ARTIFACTS_FOLDER}/Docs",
|
|
|
- "#{ARTIFACTS_FOLDER}/Examples", "#{ARTIFACTS_FOLDER}/AtomicTiled_Build"]
|
|
|
-
|
|
|
- for index in 0 ... folders.size
|
|
|
-
|
|
|
- if Dir.exists?(folders[index])
|
|
|
- FileUtils.rmtree(folders[index])
|
|
|
- end
|
|
|
-
|
|
|
- if Dir.exists?(folders[index])
|
|
|
- abort("Unable to clean #{folders[index]}")
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :cmake do
|
|
|
-
|
|
|
- FileUtils.mkdir_p(CMAKE_WINDOWS_BUILD_FOLDER)
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
|
|
|
- sh "cmake ../../ -G\"NMake Makefiles JOM\" -DCMAKE_BUILD_TYPE=Release"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :generate_javascript_bindings => "windows:cmake" do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
|
|
|
- sh "jom -j4 JSBind"
|
|
|
- sh "./Source/AtomicJS/JSBind/JSBind.exe #{$RAKE_ROOT} WINDOWS"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :player => "windows:generate_javascript_bindings" do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
|
|
|
- # add the generated JS bindings
|
|
|
- sh "cmake ../../ -G\"NMake Makefiles JOM\" -DCMAKE_BUILD_TYPE=Release"
|
|
|
- sh "jom -j4 AtomicPlayer"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :editor => "windows:player" do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
|
|
|
-
|
|
|
- sh "jom -j4 AtomicEditor"
|
|
|
- sh "jom BuildEditorFiles"
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :atomictool => "windows:editor" do
|
|
|
-
|
|
|
- Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
|
|
|
-
|
|
|
- sh "jom -j4 AtomicTool"
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-end
|
|
|
-
|
|
|
-task :iosdeploy do
|
|
|
-
|
|
|
- CMAKE_IOSDEPLOY_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/ios-deploy"
|
|
|
-
|
|
|
- if Dir.exists?(CMAKE_IOSDEPLOY_BUILD_FOLDER)
|
|
|
- FileUtils.rmtree(CMAKE_IOSDEPLOY_BUILD_FOLDER)
|
|
|
- end
|
|
|
-
|
|
|
- Dir.chdir("#{ARTIFACTS_FOLDER}") do
|
|
|
-
|
|
|
- sh "git clone https://github.com/AtomicGameEngine/ios-deploy"
|
|
|
-
|
|
|
- Dir.chdir("ios-deploy") do
|
|
|
- sh "make"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-end
|
|
|
-
|
|
|
-namespace :atomictiled do
|
|
|
-
|
|
|
- task :windows do
|
|
|
-
|
|
|
- ENV['PATH'] = "#{$QT_BIN_DIR};" + ENV['PATH']
|
|
|
-
|
|
|
- FileUtils.mkdir_p(ATOMICTILED_BUILD_DIR)
|
|
|
-
|
|
|
- Dir.chdir(ATOMICTILED_BUILD_DIR) do
|
|
|
- sh "qmake.exe -r \"#{ATOMICTILED_SOURCE_DIR}\\tiled.pro\" \"CONFIG+=release\" \"QMAKE_CXXFLAGS+=-DBUILD_INFO_VERSION=ATOMIC_BUILD\""
|
|
|
- sh "#{QT_CREATOR_BIN_DIR}\\jom.exe -j8"
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- task :osx do
|
|
|
-
|
|
|
- FileUtils.mkdir_p(ATOMICTILED_BUILD_DIR)
|
|
|
-
|
|
|
- Dir.chdir(ATOMICTILED_BUILD_DIR) do
|
|
|
- sh "#{$QT_BIN_DIR}/qmake -r \"#{ATOMICTILED_SOURCE_DIR}/tiled.pro\" \"CONFIG+=release\" \"QMAKE_CXXFLAGS+=-DBUILD_INFO_VERSION=ATOMIC_BUILD\""
|
|
|
- sh "make -j8"
|
|
|
+ Dir.chdir("#{CMAKE_WEB_BUILD_FOLDER}/Source/AtomicPlayer") do
|
|
|
+ sh "mv AtomicPlayer AtomicPlayer.bc"
|
|
|
+ sh "emcc -O3 -s ASM_JS=1 -s VERBOSE=0 -s USE_SDL=2 -s TOTAL_MEMORY=134217728 -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s NO_EXIT_RUNTIME=1 ./AtomicPlayer.bc -o ./AtomicPlayer.html"
|
|
|
end
|
|
|
|
|
|
end
|