SCsub 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python
  2. Import("env")
  3. javascript_files = [
  4. "audio_driver_javascript.cpp",
  5. "http_client_javascript.cpp",
  6. "javascript_eval.cpp",
  7. "javascript_main.cpp",
  8. "os_javascript.cpp",
  9. ]
  10. build_targets = ["#bin/godot${PROGSUFFIX}.js", "#bin/godot${PROGSUFFIX}.wasm"]
  11. if env["threads_enabled"]:
  12. build_targets.append("#bin/godot${PROGSUFFIX}.worker.js")
  13. build = env.add_program(build_targets, javascript_files)
  14. js_libraries = [
  15. "native/http_request.js",
  16. "native/library_godot_audio.js",
  17. ]
  18. for lib in js_libraries:
  19. env.Append(LINKFLAGS=["--js-library", env.File(lib).path])
  20. env.Depends(build, js_libraries)
  21. js_pre = [
  22. "native/id_handler.js",
  23. "native/utils.js",
  24. ]
  25. for js in js_pre:
  26. env.Append(LINKFLAGS=["--pre-js", env.File(js).path])
  27. env.Depends(build, js_pre)
  28. engine = [
  29. "engine/preloader.js",
  30. "engine/utils.js",
  31. "engine/engine.js",
  32. ]
  33. externs = [env.File("#platform/javascript/engine/externs.js")]
  34. js_engine = env.CreateEngineFile("#bin/godot${PROGSUFFIX}.engine.js", engine, externs)
  35. env.Depends(js_engine, externs)
  36. wrap_list = [
  37. build[0],
  38. js_engine,
  39. ]
  40. js_wrapped = env.Textfile("#bin/godot", [env.File(f) for f in wrap_list], TEXTFILESUFFIX="${PROGSUFFIX}.wrapped.js")
  41. zip_dir = env.Dir("#bin/.javascript_zip")
  42. binary_name = "godot.tools" if env["tools"] else "godot"
  43. out_files = [
  44. zip_dir.File(binary_name + ".js"),
  45. zip_dir.File(binary_name + ".wasm"),
  46. zip_dir.File(binary_name + ".html"),
  47. ]
  48. html_file = "#misc/dist/html/full-size.html"
  49. in_files = [js_wrapped, build[1], html_file]
  50. if env["threads_enabled"]:
  51. in_files.append(build[2])
  52. out_files.append(zip_dir.File(binary_name + ".worker.js"))
  53. zip_files = env.InstallAs(out_files, in_files)
  54. env.Zip(
  55. "#bin/godot",
  56. zip_files,
  57. ZIPROOT=zip_dir,
  58. ZIPSUFFIX="${PROGSUFFIX}${ZIPSUFFIX}",
  59. ZIPCOMSTR="Archiving $SOURCES as $TARGET",
  60. )