@@ -54,11 +54,12 @@ build/llvm.BUILT:
54
54
build/wasi-libc.BUILT : build/llvm.BUILT
55
55
$(MAKE ) -C $(ROOT_DIR ) /src/wasi-libc \
56
56
WASM_CC=$(PREFIX ) /bin/clang \
57
- SYSROOT=$(PREFIX ) /share/wasi-sysroot
57
+ SYSROOT=$(PREFIX ) /share/wasi-sysroot \
58
+ CLANG_VERSION=$(CLANG_VERSION )
58
59
touch build/wasi-libc.BUILT
59
60
60
61
build/compiler-rt.BUILT : build/llvm.BUILT
61
- # Do the build, and install it.
62
+ # Do the conventional build, and install it.
62
63
mkdir -p build/compiler-rt
63
64
cmake -B build/compiler-rt -G Ninja \
64
65
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
@@ -70,7 +71,7 @@ build/compiler-rt.BUILT: build/llvm.BUILT
70
71
-DCOMPILER_RT_ENABLE_IOS=OFF \
71
72
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=On \
72
73
-DWASI_SDK_PREFIX=$(PREFIX ) \
73
- -DCMAKE_C_FLAGS=" -O1 $( DEBUG_PREFIX_MAP) " \
74
+ -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
74
75
-DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
75
76
-DCOMPILER_RT_OS_DIR=wasi \
76
77
-DCMAKE_INSTALL_PREFIX=$(PREFIX ) /lib/clang/$(CLANG_VERSION ) / \
@@ -81,7 +82,7 @@ build/compiler-rt.BUILT: build/llvm.BUILT
81
82
cp -R $(ROOT_DIR ) /build/llvm/lib/clang $(PREFIX ) /lib/
82
83
touch build/compiler-rt.BUILT
83
84
84
- # Flags for libcxx.
85
+ # Flags common to both the non-LTO and LTO builds of libcxx.
85
86
LIBCXX_CMAKE_FLAGS = \
86
87
-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
87
88
-DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
@@ -104,19 +105,28 @@ LIBCXX_CMAKE_FLAGS = \
104
105
--debug-trycompile
105
106
106
107
build/libcxx.BUILT : build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUILT
107
- # Do the build.
108
+ # Do the conventional build.
108
109
mkdir -p build/libcxx
109
110
cmake -B build/libcxx -G Ninja $(LIBCXX_CMAKE_FLAGS ) \
110
111
-DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
111
112
-DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
112
113
-DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \
113
114
$(LLVM_PROJ_DIR ) /libcxx
114
115
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
115
124
# Do the install.
116
125
ninja $(NINJA_FLAGS ) -v -C build/libcxx install
126
+ ninja $(NINJA_FLAGS ) -v -C build/libcxx.llvm-lto install
117
127
touch build/libcxx.BUILT
118
128
119
- # Flags for libcxxabi.
129
+ # Flags common to both the non-LTO and LTO builds of libcxxabi.
120
130
LIBCXXABI_CMAKE_FLAGS = \
121
131
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
122
132
-DCMAKE_CXX_COMPILER_WORKS=ON \
@@ -142,16 +152,25 @@ LIBCXXABI_CMAKE_FLAGS = \
142
152
--debug-trycompile
143
153
144
154
build/libcxxabi.BUILT : build/libcxx.BUILT build/llvm.BUILT
145
- # Do the build.
155
+ # Do the conventional build.
146
156
mkdir -p build/libcxxabi
147
157
cmake -B build/libcxxabi -G Ninja $(LIBCXXABI_CMAKE_FLAGS ) \
148
158
-DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
149
159
-DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
150
160
-DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
151
161
$(LLVM_PROJ_DIR ) /libcxxabi
152
162
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
153
171
# Do the install.
154
172
ninja $(NINJA_FLAGS ) -v -C build/libcxxabi install
173
+ ninja $(NINJA_FLAGS ) -v -C build/libcxxabi.llvm-lto install
155
174
touch build/libcxxabi.BUILT
156
175
157
176
build/config.BUILT :
0 commit comments