BuildLinux.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 = spawnSync("which", ["xbuild"]).status == 1 ? false : true;
  21. process.chdir(buildDir);
  22. var cmds = [];
  23. cmds.push("cmake ../../../ -DATOMIC_DEV_BUILD=0 -DCMAKE_BUILD_TYPE=Release");
  24. cmds.push("make -j2")
  25. if (buildAtomicNET)
  26. cmds.push(host.atomicTool + " net compile " + atomicRoot + "Script/AtomicNET/AtomicNETProject.json LINUX Release");
  27. jake.exec(cmds, function() {
  28. // Copy the Editor binaries
  29. fs.copySync(buildDir + "Source/AtomicEditor/AtomicEditor",
  30. host.artifactsRoot + "AtomicEditor/AtomicEditor");
  31. // We need some resources to run
  32. fs.copySync(atomicRoot + "Resources/CoreData",
  33. editorAppFolder + "Resources/CoreData");
  34. fs.copySync(atomicRoot + "Resources/PlayerData",
  35. editorAppFolder + "Resources/PlayerData");
  36. fs.copySync(atomicRoot + "Data/AtomicEditor",
  37. editorAppFolder + "Resources/ToolData");
  38. fs.copySync(atomicRoot + "Resources/EditorData",
  39. editorAppFolder + "Resources/EditorData");
  40. fs.copySync(atomicRoot + "Artifacts/Build/Resources/EditorData/AtomicEditor/EditorScripts",
  41. editorAppFolder + "Resources/EditorData/AtomicEditor/EditorScripts");
  42. fs.copySync(buildDir + "Source/AtomicPlayer/Application/AtomicPlayer",
  43. editorAppFolder + "Resources/ToolData/Deployment/Linux/AtomicPlayer");
  44. // AtomicNET
  45. if (buildAtomicNET) {
  46. fs.copySync(atomicRoot + "Artifacts/AtomicNET/Release",
  47. editorAppFolder + "Resources/ToolData/AtomicNET/Release");
  48. }
  49. var binaryFiles = ["chrome-sandbox", "libcef.so", "natives_blob.bin", "snapshot_blob.bin"];
  50. var resourceFiles = ["cef.pak",
  51. "cef_100_percent.pak",
  52. "cef_200_percent.pak",
  53. "cef_extensions.pak",
  54. "devtools_resources.pak",
  55. "icudtl.dat",
  56. "locales"];
  57. for (var i = 0; i < binaryFiles.length; i++) {
  58. fs.copySync(atomicRoot + "Submodules/CEF/Linux/Release/" + binaryFiles[i], editorAppFolder+"/" + binaryFiles[i]);
  59. }
  60. for (var i = 0; i < resourceFiles.length; i++) {
  61. fs.copySync(atomicRoot + "Submodules/CEF/Linux/Resources/" + resourceFiles[i], editorAppFolder+"/" + resourceFiles[i]);
  62. }
  63. console.log("\n\nAtomic Editor build to " + editorAppFolder + "\n\n");
  64. complete();
  65. }, {
  66. printStdout: true
  67. });
  68. });
  69. });