BuildWeb.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. var fs = require('fs-extra');
  2. var path = require("path");
  3. var host = require("./Host");
  4. var os = require('os');
  5. var config = require("./BuildConfig")
  6. var atomicRoot = config.atomicRoot;
  7. var buildDir = config.artifactsRoot + "Build/Web/AtomicPlayer";
  8. // build command:
  9. // ./Build/Mac/node/node ./Build/node_modules/jake/bin/cli.js -f ./Build/Scripts/Bootstrap.js build:web_player
  10. namespace('build', function() {
  11. task('web_player'/*, ["build:atomiceditor"]*/, {
  12. async: true
  13. }, function() {
  14. // TODO: add clean build option
  15. if (!fs.existsSync(buildDir)) {
  16. common.cleanCreateDir(buildDir);
  17. }
  18. process.chdir(buildDir);
  19. var cmds = [];
  20. var scriptModules = host.getScriptModules("WEB");
  21. var bindCmd = host.atomicTool + " bind \"" + atomicRoot + "\" ";
  22. // Generate bindings for each script package
  23. for (var pkgName in scriptModules) {
  24. cmds.push(bindCmd + "Script/Packages/" + pkgName + "/ WEB")
  25. }
  26. if (os.platform() == "win32") {
  27. }
  28. else {
  29. cmds.push("cmake -DEMSCRIPTEN=1 -DCMAKE_TOOLCHAIN_FILE=\"" + atomicRoot + "Build/CMake/Toolchains/emscripten.toolchain.cmake\" -DCMAKE_BUILD_TYPE=Release ../../../../");
  30. cmds.push("make -j4");
  31. // -s ERROR_ON_UNDEFINED_SYMBOLS=1 (disabled for pthread errors currently on incoming)
  32. cmds.push("cd ./Source/AtomicPlayer/Application && mv ./AtomicPlayer ./AtomicPlayer.bc && " +
  33. "emcc -O3 -s USE_PTHREADS=0 -s ASM_JS=1 -s VERBOSE=0 -s USE_SDL=2 -s TOTAL_MEMORY=134217728 -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s NO_EXIT_RUNTIME=1 ./AtomicPlayer.bc -o ./AtomicPlayer.html");
  34. }
  35. jake.exec(cmds, function() {
  36. var editorAppFolder = config.artifactsRoot + (os.platform() == "win32" ? "AtomicEditor/" : "AtomicEditor/AtomicEditor.app/");
  37. var webPlayerBinary = buildDir + "/Source/AtomicPlayer/Application/AtomicPlayer.js";
  38. var webPlayerMemFile = buildDir + "/Source/AtomicPlayer/Application/AtomicPlayer.html.mem";
  39. // Install Deployment
  40. // Don't put into Artifact editor build as this requires a Emscripten install
  41. // fs.copySync(webPlayerBinary, editorAppFolder + "Resources/ToolData/Deployment/Web/AtomicPlayer.js");
  42. // fs.copySync(webPlayerMemFile, editorAppFolder + "Resources/ToolData/Deployment/Web/AtomicPlayer.html.mem");
  43. // Instead, use local build
  44. fs.copySync(webPlayerBinary, atomicRoot + "Data/AtomicEditor/Deployment/Web/AtomicPlayer.js");
  45. fs.copySync(webPlayerMemFile, atomicRoot + "Data/AtomicEditor/Deployment/Web/AtomicPlayer.html.mem");
  46. console.log("Built Web Player");
  47. complete();
  48. }, {
  49. printStdout: true,
  50. breakOnError : false
  51. });
  52. });
  53. }); // end of build namespace