diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml index 5c07655bd..98170ac6d 100644 --- a/.github/workflows/emscripten.yml +++ b/.github/workflows/emscripten.yml @@ -194,6 +194,9 @@ jobs: -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \ + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \ + -DLLVM_ENABLE_LTO=Full \ ../llvm emmake ninja clang cling lld gtest_main else @@ -225,6 +228,9 @@ jobs: -DCLANG_BUILD_TOOLS=OFF \ -G Ninja \ -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \ + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \ + -DLLVM_ENABLE_LTO=Full \ ../llvm emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm fi @@ -295,6 +301,9 @@ jobs: -DLLVM_BUILD_TOOLS=OFF ` -DLLVM_ENABLE_LIBPFM=OFF ` -DCLANG_BUILD_TOOLS=OFF ` + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" ` + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" ` + -DLLVM_ENABLE_LTO=Full ` ..\llvm emmake make clang cling lld gtest_main } @@ -335,6 +344,9 @@ jobs: -DLLVM_BUILD_TOOLS=OFF ` -DLLVM_ENABLE_LIBPFM=OFF ` -DCLANG_BUILD_TOOLS=OFF ` + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" ` + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" ` + -DLLVM_ENABLE_LTO=Full ` -G Ninja ` ..\llvm emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm diff --git a/Emscripten-build-instructions.md b/Emscripten-build-instructions.md index e41912bcc..74d1d0a7a 100644 --- a/Emscripten-build-instructions.md +++ b/Emscripten-build-instructions.md @@ -99,6 +99,9 @@ emcmake cmake -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \ + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \ + -DLLVM_ENABLE_LTO=Full \ ../llvm emmake make libclang -j $(nproc --all) emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all) @@ -130,6 +133,9 @@ emcmake cmake -DCMAKE_BUILD_TYPE=Release ` -DLLVM_ENABLE_LIBPFM=OFF ` -DCLANG_BUILD_TOOLS=OFF ` -G Ninja ` + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" ` + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" ` + -DLLVM_ENABLE_LTO=Full ` ..\llvm emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm ``` diff --git a/docs/Emscripten-build-instructions.rst b/docs/Emscripten-build-instructions.rst index 573627382..987b10f7f 100644 --- a/docs/Emscripten-build-instructions.rst +++ b/docs/Emscripten-build-instructions.rst @@ -119,6 +119,9 @@ and osx -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" \ + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" \ + -DLLVM_ENABLE_LTO=Full \ ../llvm emmake make libclang -j $(nproc --all) emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all) @@ -150,6 +153,9 @@ or executing -DLLVM_ENABLE_LIBPFM=OFF ` -DCLANG_BUILD_TOOLS=OFF ` -G Ninja ` + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0" ` + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0" ` + -DLLVM_ENABLE_LTO=Full ` ..\llvm emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm diff --git a/lib/CppInterOp/CMakeLists.txt b/lib/CppInterOp/CMakeLists.txt index 142d4d5d9..5a4fa9f96 100644 --- a/lib/CppInterOp/CMakeLists.txt +++ b/lib/CppInterOp/CMakeLists.txt @@ -127,10 +127,16 @@ if(EMSCRIPTEN) set_target_properties(clangCppInterOp PROPERTIES NO_SONAME 1 ) + target_compile_options(clangCppInterOp + PRIVATE "SHELL: -Oz" + PRIVATE "SHELL: -flto" + ) target_link_options(clangCppInterOp PRIVATE "SHELL: -s WASM_BIGINT" PRIVATE "SHELL: -s SIDE_MODULE=1" PRIVATE "SHELL: ${SYMBOLS_LIST}" + PRIVATE "SHELL: -Oz" + PRIVATE "SHELL: -flto" ) else() target_link_options(clangCppInterOp diff --git a/lib/CppInterOp/exports.ld b/lib/CppInterOp/exports.ld index 49b7b0d83..e22490f2a 100644 --- a/lib/CppInterOp/exports.ld +++ b/lib/CppInterOp/exports.ld @@ -50,4 +50,5 @@ -Wl,--export=_ZNK5clang4Type14isFloatingTypeEv -Wl,--export=_ZNK5clang12FunctionDecl12getNumParamsEv -Wl,--export=__clang_Interpreter_SetValueNoAlloc --Wl,--export=__clang_Interpreter_SetValueWithAlloc \ No newline at end of file +-Wl,--export=__clang_Interpreter_SetValueWithAlloc +-Wl,--export=_ZN4llvm15SmallVectorBaseIjE8set_sizeEm \ No newline at end of file