Skip to content

Commit ba6ed4c

Browse files
committed
Use Oz and flto flags to reduce Emscripten shared library size
1 parent 98e07e7 commit ba6ed4c

File tree

5 files changed

+32
-1
lines changed

5 files changed

+32
-1
lines changed

.github/workflows/emscripten.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,9 @@ jobs:
194194
-DLLVM_ENABLE_LIBPFM=OFF \
195195
-DCLANG_BUILD_TOOLS=OFF \
196196
-DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \
197+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \
198+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \
199+
-DLLVM_ENABLE_LTO=Full \
197200
../llvm
198201
emmake ninja clang cling lld gtest_main
199202
else
@@ -225,6 +228,9 @@ jobs:
225228
-DCLANG_BUILD_TOOLS=OFF \
226229
-G Ninja \
227230
-DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \
231+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \
232+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \
233+
-DLLVM_ENABLE_LTO=Full \
228234
../llvm
229235
emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm
230236
fi
@@ -295,6 +301,9 @@ jobs:
295301
-DLLVM_BUILD_TOOLS=OFF `
296302
-DLLVM_ENABLE_LIBPFM=OFF `
297303
-DCLANG_BUILD_TOOLS=OFF `
304+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" `
305+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" `
306+
-DLLVM_ENABLE_LTO=Full `
298307
..\llvm
299308
emmake make clang cling lld gtest_main
300309
}
@@ -335,6 +344,9 @@ jobs:
335344
-DLLVM_BUILD_TOOLS=OFF `
336345
-DLLVM_ENABLE_LIBPFM=OFF `
337346
-DCLANG_BUILD_TOOLS=OFF `
347+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" `
348+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" `
349+
-DLLVM_ENABLE_LTO=Full `
338350
-G Ninja `
339351
..\llvm
340352
emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm

Emscripten-build-instructions.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ emcmake cmake -DCMAKE_BUILD_TYPE=Release \
9999
-DLLVM_ENABLE_LIBPFM=OFF \
100100
-DCLANG_BUILD_TOOLS=OFF \
101101
-DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \
102+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \
103+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \
104+
-DLLVM_ENABLE_LTO=Full \
102105
../llvm
103106
emmake make libclang -j $(nproc --all)
104107
emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all)
@@ -130,6 +133,9 @@ emcmake cmake -DCMAKE_BUILD_TYPE=Release `
130133
-DLLVM_ENABLE_LIBPFM=OFF `
131134
-DCLANG_BUILD_TOOLS=OFF `
132135
-G Ninja `
136+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" `
137+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" `
138+
-DLLVM_ENABLE_LTO=Full `
133139
..\llvm
134140
emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm
135141
```

docs/Emscripten-build-instructions.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ and osx
119119
-DLLVM_ENABLE_LIBPFM=OFF \
120120
-DCLANG_BUILD_TOOLS=OFF \
121121
-DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \
122+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \
123+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \
124+
-DLLVM_ENABLE_LTO=Full \
122125
../llvm
123126
emmake make libclang -j $(nproc --all)
124127
emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all)
@@ -150,6 +153,9 @@ or executing
150153
-DLLVM_ENABLE_LIBPFM=OFF `
151154
-DCLANG_BUILD_TOOLS=OFF `
152155
-G Ninja `
156+
-DCMAKE_C_FLAGS_RELEASE="-Oz -g0" `
157+
-DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" `
158+
-DLLVM_ENABLE_LTO=Full `
153159
..\llvm
154160
emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm
155161

lib/CppInterOp/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,16 @@ if(EMSCRIPTEN)
127127
set_target_properties(clangCppInterOp
128128
PROPERTIES NO_SONAME 1
129129
)
130+
target_compile_options(clangCppInterOp
131+
PRIVATE "SHELL: -Oz"
132+
PRIVATE "SHELL: -flto"
133+
)
130134
target_link_options(clangCppInterOp
131135
PRIVATE "SHELL: -s WASM_BIGINT"
132136
PRIVATE "SHELL: -s SIDE_MODULE=1"
133137
PRIVATE "SHELL: ${SYMBOLS_LIST}"
138+
PRIVATE "SHELL: -Oz"
139+
PRIVATE "SHELL: -flto"
134140
)
135141
else()
136142
target_link_options(clangCppInterOp

lib/CppInterOp/exports.ld

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@
5050
-Wl,--export=_ZNK5clang4Type14isFloatingTypeEv
5151
-Wl,--export=_ZNK5clang12FunctionDecl12getNumParamsEv
5252
-Wl,--export=__clang_Interpreter_SetValueNoAlloc
53-
-Wl,--export=__clang_Interpreter_SetValueWithAlloc
53+
-Wl,--export=__clang_Interpreter_SetValueWithAlloc
54+
-Wl,--export=_ZN4llvm15SmallVectorBaseIjE8set_sizeEm

0 commit comments

Comments
 (0)