diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-02-21 21:25:00 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-21 21:25:00 -0300 |
commit | d0973e645cc82ef643153f920dba5ee2586f08cb (patch) | |
tree | d255acd29efb644159a7bad2806a0cd1bd92f6e9 | |
parent | de0045cf1b0a5e20fbf74da192039d344ee8d0c7 (diff) | |
parent | 6e1828c9588eb731c4ec9dff9013d4db02d14975 (diff) |
Merge pull request #7863 from eska014/webbuild
Web builds: Zip automatically; Fix on Windows; Parallel wasm/asm.js builds
-rw-r--r-- | platform/javascript/SCsub | 2 | ||||
-rw-r--r-- | platform/javascript/detect.py | 40 |
2 files changed, 29 insertions, 13 deletions
diff --git a/platform/javascript/SCsub b/platform/javascript/SCsub index 7224557b55..bd7b0c304d 100644 --- a/platform/javascript/SCsub +++ b/platform/javascript/SCsub @@ -32,7 +32,7 @@ basename = "godot" + env["PROGSUFFIX"] # output file name without file extension # placeholder while leaving extension; also change `.html.mem` to just `.mem` fixup_html = env.Substfile(html_file, SUBST_DICT=[(basename, '$$GODOT_BASE'), ('.html.mem', '.mem')], SUBSTFILESUFFIX='.fixup.html') -zip_dir = env.Dir('#bin/js_zip') +zip_dir = env.Dir('#bin/.javascript_zip') zip_files = [] js_file = env.SideEffect(html_file.File(basename+'.js'), html_file) zip_files.append(env.InstallAs( diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index 7237298169..a8bdb0a4f9 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -12,8 +12,6 @@ def get_name(): def can_build(): - - import os return os.environ.has_key("EMSCRIPTEN_ROOT") @@ -35,23 +33,41 @@ def get_flags(): ] +def create(env): + # remove Windows' .exe suffix + return env.Clone(PROGSUFFIX='') + + +def escape_sources_backslashes(target, source, env, for_signature): + return [path.replace('\\','\\\\') for path in env.GetBuildPath(source)] + +def escape_target_backslashes(target, source, env, for_signature): + return env.GetBuildPath(target[0]).replace('\\','\\\\') + + def configure(env): env['ENV'] = os.environ - env.use_windows_spawn_fix('javascript') env.Append(CPPPATH=['#platform/javascript']) - em_path = os.environ["EMSCRIPTEN_ROOT"] - - env['ENV']['PATH'] = em_path + ":" + env['ENV']['PATH'] - env['CC'] = em_path + '/emcc' - env['CXX'] = em_path + '/em++' - env['LINK'] = em_path + '/emcc' - env['AR'] = em_path + '/emar' - env['RANLIB'] = em_path + '/emranlib' + env.PrependENVPath('PATH', os.environ['EMSCRIPTEN_ROOT']) + env['CC'] = 'emcc' + env['CXX'] = 'em++' + env['LINK'] = 'emcc' + env['RANLIB'] = 'emranlib' + # Emscripten's ar has issues with duplicate file names, so use cc + env['AR'] = 'emcc' + env['ARFLAGS'] = '-o' + if (os.name == 'nt'): + # use TempFileMunge on Windows since some commands get too long for + # cmd.exe even with spawn_fix + # need to escape backslashes for this + env['ESCAPED_SOURCES'] = escape_sources_backslashes + env['ESCAPED_TARGET'] = escape_target_backslashes + env['ARCOM'] = '${TEMPFILE("%s")}' % env['ARCOM'].replace('$SOURCES', '$ESCAPED_SOURCES').replace('$TARGET', '$ESCAPED_TARGET') env['OBJSUFFIX'] = '.bc' - env['LIBSUFFIX'] = '.a' + env['LIBSUFFIX'] = '.bc' if (env["target"] == "release"): env.Append(CCFLAGS=['-O2']) |