[Bazel] Support generating a secondary cache (#1405)

This is a working solution for generating a separate Emscripten cache.
Note that this requires an additional entry in the workspace as follows:
```starlark
load("@emsdk//:emscripten_cache.bzl", emsdk_emscripten_cache = "emscripten_cache")
emsdk_emscripten_cache()
```
When used like this, the default Emscripten cache will be used. However,
if the entry is as follows:
```starlark
load("@emsdk//:emscripten_cache.bzl", emsdk_emscripten_cache = "emscripten_cache")
emsdk_emscripten_cache(flags = ["--lto"])
```
Then embuilder will be called to build all system libraries and ports
(i.e., the `ALL` option to embuilder) with the LTO option enabled. This
can take awhile, so I have also made possible to specify which libraries
you want to build explicitly:
```starlark
load("@emsdk//:emscripten_cache.bzl", emsdk_emscripten_cache = "emscripten_cache")
emsdk_emscripten_cache(
    flags = ["--lto"],
    libraries = [
        "crtbegin",
        "libprintf_long_double-debug",
        "libstubs-debug",
        "libnoexit",
        "libc-debug",
        "libdlmalloc",
        "libcompiler_rt",
        "libc++-noexcept",
        "libc++abi-debug-noexcept",
        "libsockets"
    ]
)
```

Resolves #807, resolves #971, resolves #1099, resolves #1362, resolves
#1401
This commit is contained in:
Michael Allwright
2024-07-01 18:23:07 +02:00
committed by GitHub
parent 7fbd555dbe
commit 82d41a76d3
14 changed files with 199 additions and 3 deletions

View File

@@ -22,3 +22,9 @@ if (-not $?) { Exit $LastExitCode }
# Test use of the closure compiler
bazel build //:hello-embind-wasm --compilation_mode opt # release
if (-not $?) { Exit $LastExitCode }
Set-Location ..\test_secondary_lto_cache
bazel build //:hello-world-wasm
if (-not $?) { Exit $LastExitCode }

View File

@@ -30,3 +30,7 @@ bazel build //:hello-embind-wasm --compilation_mode dbg # debug
bazel build //:hello-embind-wasm --compilation_mode opt # release
# This function should not be minified if the externs file is loaded correctly.
grep "customJSFunctionToTestClosure" bazel-bin/hello-embind-wasm/hello-embind.js
cd ../test_secondary_lto_cache
bazel build //:hello-world-wasm

View File

@@ -24,3 +24,7 @@ bazel build //hello-world:hello-world-wasm-simd
cd test_external
bazel build //long_command_line:long_command_line_wasm
bazel build //:hello-world-wasm
cd ../test_secondary_lto_cache
bazel build //:hello-world-wasm