Skip to content

Commit

Permalink
Merge pull request #42561 from Faless/js/build_no_config
Browse files Browse the repository at this point in the history
[HTML5] Scons now expects "emcc" to be in PATH.
  • Loading branch information
akien-mga authored Oct 4, 2020
2 parents 2033bac + 7998745 commit 59e7a5a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 25 deletions.
8 changes: 3 additions & 5 deletions platform/javascript/detect.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os

from emscripten_helpers import parse_config, run_closure_compiler, create_engine_file
from emscripten_helpers import run_closure_compiler, create_engine_file
from SCons.Util import WhereIs


def is_active():
Expand All @@ -12,7 +13,7 @@ def get_name():


def can_build():
return "EM_CONFIG" in os.environ or os.path.exists(os.path.expanduser("~/.emscripten"))
return WhereIs("emcc") is not None


def get_opts():
Expand Down Expand Up @@ -100,9 +101,6 @@ def configure(env):
# Closure compiler extern and support for ecmascript specs (const, let, etc).
env["ENV"]["EMCC_CLOSURE_ARGS"] = "--language_in ECMASCRIPT6"

em_config = parse_config()
env.PrependENVPath("PATH", em_config["EMCC_ROOT"])

env["CC"] = "emcc"
env["CXX"] = "em++"
env["LINK"] = "emcc"
Expand Down
23 changes: 3 additions & 20 deletions platform/javascript/emscripten_helpers.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,11 @@
import os


def parse_config():
em_config_file = os.getenv("EM_CONFIG") or os.path.expanduser("~/.emscripten")
if not os.path.exists(em_config_file):
raise RuntimeError("Emscripten configuration file '%s' does not exist" % em_config_file)

normalized = {}
em_config = {}
with open(em_config_file) as f:
try:
# Emscripten configuration file is a Python file with simple assignments.
exec(f.read(), em_config)
except StandardError as e:
raise RuntimeError("Emscripten configuration file '%s' is invalid:\n%s" % (em_config_file, e))
normalized["EMCC_ROOT"] = em_config.get("EMSCRIPTEN_ROOT")
normalized["NODE_JS"] = em_config.get("NODE_JS")
normalized["CLOSURE_BIN"] = os.path.join(normalized["EMCC_ROOT"], "node_modules", ".bin", "google-closure-compiler")
return normalized
from SCons.Util import WhereIs


def run_closure_compiler(target, source, env, for_signature):
cfg = parse_config()
cmd = [cfg["NODE_JS"], cfg["CLOSURE_BIN"]]
closure_bin = os.path.join(os.path.dirname(WhereIs("emcc")), "node_modules", ".bin", "google-closure-compiler")
cmd = [WhereIs("node"), closure_bin]
cmd.extend(["--compilation_level", "ADVANCED_OPTIMIZATIONS"])
for f in env["JSEXTERNS"]:
cmd.extend(["--externs", f.get_abspath()])
Expand Down

0 comments on commit 59e7a5a

Please sign in to comment.