BuildLinux.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. var fs = require('fs-extra');
  2. var path = require("path");
  3. var spawnSync = require('child_process').spawnSync
  4. var host = require("./Host");
  5. var atomicRoot = host.atomicRoot;
  6. var buildDir = host.artifactsRoot + "Build/Linux/";
  7. var editorAppFolder = host.artifactsRoot + "AtomicEditor/";
  8. namespace('build', function() {
  9. // Builds a standalone Atomic Editor, which can be distributed out of build tree
  10. task('atomiceditor', {
  11. async: true
  12. }, function() {
  13. // Clean build
  14. var cleanBuild = true;
  15. if (cleanBuild) {
  16. common.cleanCreateDir(buildDir);
  17. common.cleanCreateDir(editorAppFolder);
  18. common.cleanCreateDir(host.getGenScriptRootDir("LINUX"));
  19. }
  20. var buildAtomicNET = false;
  21. // TODO: build box has old node
  22. if (spawnSync)
  23. buildAtomicNET = spawnSync("which", ["xbuild"]).status == 1 ? false : true;
  24. process.chdir(buildDir);
  25. var cmds = [];
  26. cmds.push("cmake ../../../ -DATOMIC_DEV_BUILD=0 -DCMAKE_BUILD_TYPE=Release");
  27. cmds.push("make -j2")
  28. if (buildAtomicNET)
  29. cmds.push(host.atomicTool + " net compile " + atomicRoot + "Script/AtomicNET/AtomicNETProject.json LINUX Release");
  30. jake.exec(cmds, function() {
  31. // Copy the Editor binaries
  32. fs.copySync(buildDir + "Source/AtomicEditor/AtomicEditor",
  33. host.artifactsRoot + "AtomicEditor/AtomicEditor");
  34. // We need some resources to run
  35. fs.copySync(atomicRoot + "Resources/CoreData",
  36. editorAppFolder + "Resources/CoreData");
  37. fs.copySync(atomicRoot + "Resources/PlayerData",
  38. editorAppFolder + "Resources/PlayerData");
  39. fs.copySync(atomicRoot + "Data/AtomicEditor",
  40. editorAppFolder + "Resources/ToolData");
  41. fs.copySync(atomicRoot + "Resources/EditorData",
  42. editorAppFolder + "Resources/EditorData");
  43. fs.copySync(atomicRoot + "Artifacts/Build/Resources/EditorData/AtomicEditor/EditorScripts",
  44. editorAppFolder + "Resources/EditorData/AtomicEditor/EditorScripts");
  45. fs.copySync(buildDir + "Source/AtomicPlayer/Application/AtomicPlayer",
  46. editorAppFolder + "Resources/ToolData/Deployment/Linux/AtomicPlayer");
  47. // AtomicNET
  48. if (buildAtomicNET) {
  49. fs.copySync(atomicRoot + "Artifacts/AtomicNET/Release",
  50. editorAppFolder + "Resources/ToolData/AtomicNET/Release");
  51. fs.copySync(atomicRoot + "Script/AtomicNET/AtomicProject.json",
  52. editorAppFolder + "Resources/ToolData/AtomicNET/Build/Projects/AtomicProject.json");
  53. }
  54. var binaryFiles = ["chrome-sandbox", "libcef.so", "natives_blob.bin", "snapshot_blob.bin"];
  55. var resourceFiles = ["cef.pak",
  56. "cef_100_percent.pak",
  57. "cef_200_percent.pak",
  58. "cef_extensions.pak",
  59. "devtools_resources.pak",
  60. "icudtl.dat",
  61. "locales"];
  62. for (var i = 0; i < binaryFiles.length; i++) {
  63. fs.copySync(atomicRoot + "Submodules/CEF/Linux/Release/" + binaryFiles[i], editorAppFolder+"/" + binaryFiles[i]);
  64. }
  65. for (var i = 0; i < resourceFiles.length; i++) {
  66. fs.copySync(atomicRoot + "Submodules/CEF/Linux/Resources/" + resourceFiles[i], editorAppFolder+"/" + resourceFiles[i]);
  67. }
  68. console.log("\n\nAtomic Editor build to " + editorAppFolder + "\n\n");
  69. complete();
  70. }, {
  71. printStdout: true
  72. });
  73. });
  74. });