Rakefile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. include RbConfig
  2. case CONFIG['host_os']
  3. when /mswin|windows|mingw32/i
  4. $HOST_OS = "windows"
  5. when /darwin/i
  6. $HOST_OS = "darwin"
  7. else
  8. $HOST_OS = "linux"
  9. end
  10. $RAKE_ROOT = File.dirname(__FILE__)
  11. ARTIFACTS_FOLDER = "#{$RAKE_ROOT}/Artifacts"
  12. CMAKE_WINDOWS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Windows_Build"
  13. CMAKE_MACOSX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/MacOSX_Build"
  14. CMAKE_ANDROID_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Android_Build"
  15. CMAKE_IOS_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/IOS_Build"
  16. CMAKE_WEB_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Web_Build"
  17. CMAKE_LINUX_BUILD_FOLDER = "#{ARTIFACTS_FOLDER}/Linux_Build"
  18. ATOMICTOOL_BIN_MACOSX = "#{CMAKE_MACOSX_BUILD_FOLDER}/Source/AtomicTool/Release/AtomicTool"
  19. namespace :build do
  20. task :macosx_atomictool do
  21. if !Dir.exists?("#{CMAKE_MACOSX_BUILD_FOLDER}")
  22. FileUtils.mkdir_p(CMAKE_MACOSX_BUILD_FOLDER)
  23. end
  24. Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
  25. sh "cmake ../../ -G Xcode -DCMAKE_BUILD_TYPE=Release"
  26. sh "xcodebuild -target AtomicTool -configuration Release"
  27. end
  28. end
  29. task :windows do
  30. # remove existing build folder
  31. if Dir.exists?("#{CMAKE_WINDOWS_BUILD_FOLDER}")
  32. FileUtils.rm_rf("#{CMAKE_WINDOWS_BUILD_FOLDER}")
  33. end
  34. # create build folder
  35. if !Dir.exists?("#{CMAKE_WINDOWS_BUILD_FOLDER}")
  36. FileUtils.mkdir_p(CMAKE_WINDOWS_BUILD_FOLDER)
  37. end
  38. Dir.chdir(CMAKE_WINDOWS_BUILD_FOLDER) do
  39. sh "cmake ../../ -G \"Visual Studio 12 2013 Win64\""
  40. sh "msbuild /m Atomic.sln /p:Configuration=Release"
  41. end
  42. end
  43. task :macosx do
  44. if !Dir.exists?("#{CMAKE_MACOSX_BUILD_FOLDER}")
  45. FileUtils.mkdir_p(CMAKE_MACOSX_BUILD_FOLDER)
  46. end
  47. Dir.chdir(CMAKE_MACOSX_BUILD_FOLDER) do
  48. sh "cmake ../../ -G Xcode"
  49. sh "xcodebuild -configuration Release"
  50. end
  51. end
  52. task :linux do
  53. if !Dir.exists?("#{CMAKE_LINUX_BUILD_FOLDER}")
  54. FileUtils.mkdir_p(CMAKE_LINUX_BUILD_FOLDER)
  55. end
  56. Dir.chdir(CMAKE_LINUX_BUILD_FOLDER) do
  57. sh "cmake ../../ -DLINUX=1 -G \"Unix Makefiles\""
  58. sh "make -j2"
  59. end
  60. end
  61. #IOS, dependent on macosx for JSBind
  62. task :ios => "build:macosx_atomictool" do
  63. if !Dir.exists?("#{CMAKE_IOS_BUILD_FOLDER}")
  64. FileUtils.mkdir_p(CMAKE_IOS_BUILD_FOLDER)
  65. end
  66. Dir.chdir(CMAKE_IOS_BUILD_FOLDER) do
  67. sh "#{ATOMICTOOL_BIN_MACOSX} bind #{$RAKE_ROOT} Source/AtomicJS/Packages/Atomic/ IOS"
  68. sh "cmake -DIOS=1 -DCMAKE_BUILD_TYPE=Release -G Xcode ../../"
  69. # the -s option adds $KEYCHAIN to the search scope, while the -d option adds $KEYCHAIN to the system domain; both are needed
  70. sh "security -v list-keychains -d system -s /Users/jenkins/Library/Keychains/codesign.keychain"
  71. sh "security -v unlock-keychain /Users/jenkins/Library/Keychains/codesign.keychain"
  72. sh "xcodebuild -configuration Release"
  73. end
  74. end
  75. task :android => "build:macosx_atomictool" do
  76. if !Dir.exists?("#{CMAKE_ANDROID_BUILD_FOLDER}")
  77. FileUtils.mkdir_p(CMAKE_ANDROID_BUILD_FOLDER)
  78. end
  79. Dir.chdir(CMAKE_ANDROID_BUILD_FOLDER) do
  80. sh "#{ATOMICTOOL_BIN_MACOSX} bind #{$RAKE_ROOT} Source/AtomicJS/Packages/Atomic/ ANDROID"
  81. sh "cmake -DCMAKE_TOOLCHAIN_FILE=#{$RAKE_ROOT}/CMake/Toolchains/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../"
  82. sh "make -j4"
  83. end
  84. end
  85. task :web => "build:macosx_atomictool" do
  86. if !Dir.exists?("#{CMAKE_WEB_BUILD_FOLDER}")
  87. FileUtils.mkdir_p(CMAKE_WEB_BUILD_FOLDER)
  88. end
  89. Dir.chdir(CMAKE_WEB_BUILD_FOLDER) do
  90. sh "#{ATOMICTOOL_BIN_MACOSX} bind #{$RAKE_ROOT} Source/AtomicJS/Packages/Atomic/ WEB"
  91. sh "cmake -DEMSCRIPTEN=1 -DATOMIC_BUILD_2D=1 -DCMAKE_TOOLCHAIN_FILE=#{$RAKE_ROOT}/CMake/Toolchains/emscripten.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ../../"
  92. sh "make -j4"
  93. end
  94. Dir.chdir("#{CMAKE_WEB_BUILD_FOLDER}/Source/AtomicPlayer") do
  95. sh "mv AtomicPlayer AtomicPlayer.bc"
  96. 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"
  97. end
  98. end
  99. end