@@ -54,11 +54,12 @@ build/llvm.BUILT:
5454build/wasi-libc.BUILT : build/llvm.BUILT
5555 $(MAKE ) -C $(ROOT_DIR ) /src/wasi-libc \
5656 WASM_CC=$(PREFIX ) /bin/clang \
57- SYSROOT=$(PREFIX ) /share/wasi-sysroot
57+ SYSROOT=$(PREFIX ) /share/wasi-sysroot \
58+ CLANG_VERSION=$(CLANG_VERSION )
5859 touch build/wasi-libc.BUILT
5960
6061build/compiler-rt.BUILT : build/llvm.BUILT
61- # Do the build, and install it.
62+ # Do the conventional build, and install it.
6263 mkdir -p build/compiler-rt
6364 cmake -B build/compiler-rt -G Ninja \
6465 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
@@ -70,7 +71,7 @@ build/compiler-rt.BUILT: build/llvm.BUILT
7071 -DCOMPILER_RT_ENABLE_IOS=OFF \
7172 -DCOMPILER_RT_DEFAULT_TARGET_ONLY=On \
7273 -DWASI_SDK_PREFIX=$(PREFIX ) \
73- -DCMAKE_C_FLAGS=" -O1 $( DEBUG_PREFIX_MAP) " \
74+ -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
7475 -DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
7576 -DCOMPILER_RT_OS_DIR=wasi \
7677 -DCMAKE_INSTALL_PREFIX=$(PREFIX ) /lib/clang/$(CLANG_VERSION ) / \
@@ -81,7 +82,7 @@ build/compiler-rt.BUILT: build/llvm.BUILT
8182 cp -R $(ROOT_DIR ) /build/llvm/lib/clang $(PREFIX ) /lib/
8283 touch build/compiler-rt.BUILT
8384
84- # Flags for libcxx.
85+ # Flags common to both the non-LTO and LTO builds of libcxx.
8586LIBCXX_CMAKE_FLAGS = \
8687 -DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
8788 -DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
@@ -104,19 +105,28 @@ LIBCXX_CMAKE_FLAGS = \
104105 --debug-trycompile
105106
106107build/libcxx.BUILT : build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUILT
107- # Do the build.
108+ # Do the conventional build.
108109 mkdir -p build/libcxx
109110 cmake -B build/libcxx -G Ninja $(LIBCXX_CMAKE_FLAGS ) \
110111 -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
111112 -DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
112113 -DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \
113114 $(LLVM_PROJ_DIR ) /libcxx
114115 ninja $(NINJA_FLAGS ) -v -C build/libcxx
116+ # Now build the same thing but with LTO enabled.
117+ mkdir -p build/libcxx.llvm-lto
118+ cmake -B build/libcxx.llvm-lto -G Ninja $(LIBCXX_CMAKE_FLAGS ) \
119+ -DCMAKE_C_FLAGS=" -flto $( DEBUG_PREFIX_MAP) " \
120+ -DCMAKE_CXX_FLAGS=" -flto $( DEBUG_PREFIX_MAP) " \
121+ -DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi/llvm-lto/$(CLANG_VERSION ) \
122+ $(LLVM_PROJ_DIR ) /libcxx
123+ ninja $(NINJA_FLAGS ) -v -C build/libcxx.llvm-lto
115124 # Do the install.
116125 ninja $(NINJA_FLAGS ) -v -C build/libcxx install
126+ ninja $(NINJA_FLAGS ) -v -C build/libcxx.llvm-lto install
117127 touch build/libcxx.BUILT
118128
119- # Flags for libcxxabi.
129+ # Flags common to both the non-LTO and LTO builds of libcxxabi.
120130LIBCXXABI_CMAKE_FLAGS = \
121131 -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
122132 -DCMAKE_CXX_COMPILER_WORKS=ON \
@@ -142,16 +152,25 @@ LIBCXXABI_CMAKE_FLAGS = \
142152 --debug-trycompile
143153
144154build/libcxxabi.BUILT : build/libcxx.BUILT build/llvm.BUILT
145- # Do the build.
155+ # Do the conventional build.
146156 mkdir -p build/libcxxabi
147157 cmake -B build/libcxxabi -G Ninja $(LIBCXXABI_CMAKE_FLAGS ) \
148158 -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
149159 -DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
150160 -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
151161 $(LLVM_PROJ_DIR ) /libcxxabi
152162 ninja $(NINJA_FLAGS ) -v -C build/libcxxabi
163+ # Now build the same thing but with LTO enabled.
164+ mkdir -p build/libcxxabi.llvm-lto
165+ cmake -B build/libcxxabi.llvm-lto -G Ninja $(LIBCXXABI_CMAKE_FLAGS ) \
166+ -DCMAKE_C_FLAGS=" -flto $( DEBUG_PREFIX_MAP) " \
167+ -DCMAKE_CXX_FLAGS=" -flto $( DEBUG_PREFIX_MAP) " \
168+ -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi/llvm-lto/$(CLANG_VERSION ) \
169+ $(LLVM_PROJ_DIR ) /libcxxabi
170+ ninja $(NINJA_FLAGS ) -v -C build/libcxxabi.llvm-lto
153171 # Do the install.
154172 ninja $(NINJA_FLAGS ) -v -C build/libcxxabi install
173+ ninja $(NINJA_FLAGS ) -v -C build/libcxxabi.llvm-lto install
155174 touch build/libcxxabi.BUILT
156175
157176build/config.BUILT :
0 commit comments