BuildWeb.js 2.6 KB

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