diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2023-10-15 12:01:45 +0200 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2023-10-15 13:12:49 +0200 |
commit | 18bfa133ab3b6687fd742076cfd20ad7784d058d (patch) | |
tree | 09ae2612b54fa2dd7d535860bf07945e7d4e7557 /tools/web.py | |
parent | c4d3f019dab87aff7b36acc5071e1c9adf76f6dd (diff) | |
download | redot-cpp-18bfa133ab3b6687fd742076cfd20ad7784d058d.tar.gz |
[SCons] Rename javascript tool to web
And clean it up a bit.
Diffstat (limited to 'tools/web.py')
-rw-r--r-- | tools/web.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/web.py b/tools/web.py new file mode 100644 index 0000000..a4620c3 --- /dev/null +++ b/tools/web.py @@ -0,0 +1,44 @@ +import os +from SCons.Util import WhereIs + + +def exists(env): + return WhereIs("emcc") is not None + + +def generate(env): + if env["arch"] not in ("wasm32"): + print("Only wasm32 supported on web. Exiting.") + env.Exit(1) + + # Emscripten toolchain + env["CC"] = "emcc" + env["CXX"] = "em++" + env["AR"] = "emar" + env["RANLIB"] = "emranlib" + + # Use TempFileMunge since some AR invocations are too long for cmd.exe. + # Use POSIX-style paths, required with TempFileMunge. + env["ARCOM_POSIX"] = env["ARCOM"].replace("$TARGET", "$TARGET.posix").replace("$SOURCES", "$SOURCES.posix") + env["ARCOM"] = "${TEMPFILE(ARCOM_POSIX)}" + + # All intermediate files are just object files. + env["OBJSUFFIX"] = ".o" + env["SHOBJSUFFIX"] = ".o" + + # Static libraries clang-style. + env["LIBPREFIX"] = "lib" + env["LIBSUFFIX"] = ".a" + + # Shared library as wasm. + env["SHLIBSUFFIX"] = ".wasm" + + # Thread support (via SharedArrayBuffer). + env.Append(CCFLAGS=["-s", "USE_PTHREADS=1"]) + env.Append(LINKFLAGS=["-s", "USE_PTHREADS=1"]) + + # Build as side module (shared library). + env.Append(CPPFLAGS=["-s", "SIDE_MODULE=1"]) + env.Append(LINKFLAGS=["-s", "SIDE_MODULE=1"]) + + env.Append(CPPDEFINES=["WEB_ENABLED", "UNIX_ENABLED"]) |