diff options
author | Sam Clegg <sbc@chromium.org> | 2022-01-18 17:53:31 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-19 01:53:31 +0000 |
commit | 59494a57abf7873e09fd4fba8e0413f649b64525 (patch) | |
tree | 390ba32a3c9e30382e3f898549f272d712cd9eed /src | |
parent | ed5aaa6d261e3692161106695f50e438d5fb6f5f (diff) | |
download | binaryen-59494a57abf7873e09fd4fba8e0413f649b64525.tar.gz binaryen-59494a57abf7873e09fd4fba8e0413f649b64525.tar.bz2 binaryen-59494a57abf7873e09fd4fba8e0413f649b64525.zip |
Add --no-emit-metadata option to wasm-emscripten-finalize (#4450)
This is useful for the case where we might want to finalize
without extracting metadata.
See: https://github.com/emscripten-core/emscripten/pull/15918
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/wasm-emscripten-finalize.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp index 392cf14a4..7f3e24e6a 100644 --- a/src/tools/wasm-emscripten-finalize.cpp +++ b/src/tools/wasm-emscripten-finalize.cpp @@ -47,6 +47,7 @@ int main(int argc, const char* argv[]) { std::string outputSourceMapUrl; std::string dataSegmentFile; bool emitBinary = true; + bool emitMetadata = true; bool debugInfo = false; bool DWARF = false; bool sideModule = false; @@ -94,6 +95,13 @@ int main(int argc, const char* argv[]) { WasmEmscriptenFinalizeOption, Options::Arguments::Zero, [&emitBinary](Options*, const std::string&) { emitBinary = false; }) + .add( + "--no-emit-metadata", + "-n", + "Skip the writing to emscripten metadata JSON to stdout.", + WasmEmscriptenFinalizeOption, + Options::Arguments::Zero, + [&emitMetadata](Options*, const std::string&) { emitMetadata = false; }) .add("--global-base", "", "The address at which static globals were placed", @@ -321,7 +329,10 @@ int main(int argc, const char* argv[]) { BYN_TRACE("generated metadata\n"); // Substantial changes to the wasm are done, enough to create the metadata. - std::string metadata = generator.generateEmscriptenMetadata(); + std::string metadata; + if (emitMetadata) { + metadata = generator.generateEmscriptenMetadata(); + } // Finally, separate out data segments if relevant (they may have been needed // for metadata). @@ -347,7 +358,7 @@ int main(int argc, const char* argv[]) { writer.setSourceMapUrl(outputSourceMapUrl); } writer.write(wasm, output); - if (!emitBinary) { + if (emitMetadata && !emitBinary) { output << "(;\n"; output << "--BEGIN METADATA --\n" << metadata << "-- END METADATA --\n"; output << ";)\n"; @@ -355,7 +366,7 @@ int main(int argc, const char* argv[]) { } // If we emit text then we emitted the metadata together with that text // earlier. Otherwise emit it to stdout. - if (emitBinary) { + if (emitMetadata && emitBinary) { std::cout << metadata; } return 0; |