From bb2cefe9bcf10996697310e6a9ee3d7265764f31 Mon Sep 17 00:00:00 2001 From: Jinny You Date: Mon, 17 Feb 2025 13:32:00 +0800 Subject: [PATCH] wasm: optimize binary size - Changed optimization flags to -Oz, reducing the binary size by 120KB. - Applied wasm-opt convergence as a post-process to ensure the minimum possible size with the given optimization flag. --- cross/wasm32.txt | 4 ++-- cross/wasm32_gl.txt | 4 ++-- cross/wasm32_sw.txt | 4 ++-- cross/wasm32_wg.txt | 4 ++-- wasm_build.sh | 1 + 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/cross/wasm32.txt b/cross/wasm32.txt index df51bac3..124a9c15 100644 --- a/cross/wasm32.txt +++ b/cross/wasm32.txt @@ -11,8 +11,8 @@ shared_module_suffix = 'js' exe_suffix = 'js' [built-in options] -cpp_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions'] -cpp_link_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS', '-sUSE_WEBGPU=1', '-sSTACK_SIZE=2MB', '-sMAX_WEBGL_VERSION=2', '-sFULL_ES3'] +cpp_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions'] +cpp_link_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS', '-sUSE_WEBGPU=1', '-sSTACK_SIZE=2MB', '-sMAX_WEBGL_VERSION=2', '-sFULL_ES3'] [host_machine] system = 'emscripten' diff --git a/cross/wasm32_gl.txt b/cross/wasm32_gl.txt index f07c82e1..e45d11af 100644 --- a/cross/wasm32_gl.txt +++ b/cross/wasm32_gl.txt @@ -11,8 +11,8 @@ shared_module_suffix = 'js' exe_suffix = 'js' [built-in options] -cpp_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions'] -cpp_link_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS', '-sMAX_WEBGL_VERSION=2', '-sFULL_ES3'] +cpp_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions'] +cpp_link_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS', '-sMAX_WEBGL_VERSION=2', '-sFULL_ES3'] [host_machine] system = 'emscripten' diff --git a/cross/wasm32_sw.txt b/cross/wasm32_sw.txt index bd2dfafd..2d7f2f6a 100644 --- a/cross/wasm32_sw.txt +++ b/cross/wasm32_sw.txt @@ -11,8 +11,8 @@ shared_module_suffix = 'js' exe_suffix = 'js' [built-in options] -cpp_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions'] -cpp_link_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS'] +cpp_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions'] +cpp_link_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS'] [host_machine] system = 'emscripten' diff --git a/cross/wasm32_wg.txt b/cross/wasm32_wg.txt index ea04ff17..942a57a7 100644 --- a/cross/wasm32_wg.txt +++ b/cross/wasm32_wg.txt @@ -11,8 +11,8 @@ shared_module_suffix = 'js' exe_suffix = 'js' [built-in options] -cpp_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions'] -cpp_link_args = ['-Wshift-negative-value', '-flto', '-Os', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS', '-sUSE_WEBGPU=1', '-sSTACK_SIZE=2MB'] +cpp_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions'] +cpp_link_args = ['-Wshift-negative-value', '-flto', '-Oz', '-fno-exceptions', '--bind', '-sWASM=1', '-sALLOW_MEMORY_GROWTH=1', '-sEXPORT_ES6=1', '-sFORCE_FILESYSTEM=1', '-sMODULARIZE=1', '-sEXPORTED_RUNTIME_METHODS=FS', '-sUSE_WEBGPU=1', '-sSTACK_SIZE=2MB'] [host_machine] system = 'emscripten' diff --git a/wasm_build.sh b/wasm_build.sh index 54be70e6..195436ec 100755 --- a/wasm_build.sh +++ b/wasm_build.sh @@ -27,4 +27,5 @@ if [ ! -d "./build_wasm" ]; then fi ninja -C build_wasm/ +wasm-opt build_wasm/src/bindings/wasm/thorvg-wasm.wasm -Oz --converge -all -o build_wasm/src/bindings/wasm/thorvg-wasm.wasm ls -lrt build_wasm/src/bindings/wasm/*.{js,wasm}