20
20
21
21
build/llvm.BUILT :
22
22
mkdir -p build/llvm
23
- cd build/llvm; cmake -G Ninja \
23
+ cmake -B build/llvm -G Ninja \
24
24
-DCMAKE_BUILD_TYPE=MinSizeRel \
25
25
-DCMAKE_INSTALL_PREFIX=$(PREFIX ) \
26
26
-DLLVM_TARGETS_TO_BUILD=WebAssembly \
@@ -54,12 +54,14 @@ 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
62
+ # Do the conventional build, and install it.
61
63
mkdir -p build/compiler-rt
62
- cd build/compiler-rt; cmake -G Ninja \
64
+ cmake -B build/compiler-rt -G Ninja \
63
65
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
64
66
-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
65
67
-DCOMPILER_RT_BAREMETAL_BUILD=On \
@@ -69,75 +71,110 @@ build/compiler-rt.BUILT: build/llvm.BUILT
69
71
-DCOMPILER_RT_ENABLE_IOS=OFF \
70
72
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=On \
71
73
-DWASI_SDK_PREFIX=$(PREFIX ) \
72
- -DCMAKE_C_FLAGS=" -O1 $( DEBUG_PREFIX_MAP) " \
74
+ -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
73
75
-DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
74
76
-DCOMPILER_RT_OS_DIR=wasi \
75
77
-DCMAKE_INSTALL_PREFIX=$(PREFIX ) /lib/clang/$(CLANG_VERSION ) / \
76
78
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
77
79
$(LLVM_PROJ_DIR ) /compiler-rt/lib/builtins
78
80
ninja $(NINJA_FLAGS ) -v -C build/compiler-rt install
81
+ # Install clang-provided headers.
79
82
cp -R $(ROOT_DIR ) /build/llvm/lib/clang $(PREFIX ) /lib/
80
83
touch build/compiler-rt.BUILT
81
84
85
+ # Flags common to both the non-LTO and LTO builds of libcxx.
86
+ LIBCXX_CMAKE_FLAGS = \
87
+ -DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
88
+ -DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
89
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
90
+ -DLIBCXX_ENABLE_THREADS:BOOL=OFF \
91
+ -DLIBCXX_HAS_PTHREAD_API:BOOL=OFF \
92
+ -DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
93
+ -DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
94
+ -DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF \
95
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
96
+ -DLIBCXX_ENABLE_SHARED:BOOL=OFF \
97
+ -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
98
+ -DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
99
+ -DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
100
+ -DLIBCXX_CXX_ABI=libcxxabi \
101
+ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(LLVM_PROJ_DIR ) /libcxxabi/include \
102
+ -DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \
103
+ -DLIBCXX_ABI_VERSION=2 \
104
+ -DWASI_SDK_PREFIX=$(PREFIX ) \
105
+ -DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP ) " \
106
+ -DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP ) " \
107
+ --debug-trycompile
108
+
82
109
build/libcxx.BUILT : build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUILT
110
+ # Do the conventional build.
83
111
mkdir -p build/libcxx
84
- cd build/libcxx; cmake -G Ninja \
85
- -DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
86
- -DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
87
- -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
88
- -DLIBCXX_ENABLE_THREADS:BOOL=OFF \
89
- -DLIBCXX_HAS_PTHREAD_API:BOOL=OFF \
90
- -DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
91
- -DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
92
- -DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF \
93
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
94
- -DLIBCXX_ENABLE_SHARED:BOOL=OFF \
95
- -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
96
- -DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
97
- -DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
98
- -DLIBCXX_CXX_ABI=libcxxabi \
99
- -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(LLVM_PROJ_DIR ) /libcxxabi/include \
100
- -DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \
101
- -DLIBCXX_ABI_VERSION=2 \
102
- -DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \
103
- -DWASI_SDK_PREFIX=$(PREFIX ) \
104
- -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
105
- -DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
106
- --debug-trycompile \
107
- $(LLVM_PROJ_DIR ) /libcxx
112
+ cmake -B build/libcxx -G Ninja $(LIBCXX_CMAKE_FLAGS ) \
113
+ -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
114
+ -DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
115
+ -DLIBCXX_LIBDIR_SUFFIX =/wasm32-wasi \
116
+ $(LLVM_PROJ_DIR ) /libcxx
117
+ ninja $(NINJA_FLAGS) -v -C build/libcxx
118
+ # Now build the same thing but with LTO enabled.
119
+ mkdir -p build/libcxx.llvm-lto
120
+ cmake -B build/libcxx.llvm-lto -G Ninja $(LIBCXX_CMAKE_FLAGS) \
121
+ -DCMAKE_C_FLAGS="-flto $(DEBUG_PREFIX_MAP)" \
122
+ -DCMAKE_CXX_FLAGS="-flto $(DEBUG_PREFIX_MAP)" \
123
+ -DLIBCXX_LIBDIR_SUFFIX =/wasm32-wasi/llvm-lto/$(CLANG_VERSION ) \
124
+ $(LLVM_PROJ_DIR ) /libcxx
125
+ ninja $(NINJA_FLAGS) -v -C build/libcxx.llvm-lto
126
+ # Do the install.
108
127
ninja $(NINJA_FLAGS) -v -C build/libcxx install
128
+ ninja $(NINJA_FLAGS) -v -C build/libcxx.llvm-lto install
109
129
touch build/libcxx.BUILT
110
130
131
+ # Flags common to both the non-LTO and LTO builds of libcxxabi.
132
+ LIBCXXABI_CMAKE_FLAGS = \
133
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
134
+ -DCMAKE_CXX_COMPILER_WORKS=ON \
135
+ -DCMAKE_C_COMPILER_WORKS=ON \
136
+ -DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
137
+ -DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
138
+ -DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
139
+ -DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \
140
+ -DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF \
141
+ -DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
142
+ -DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
143
+ -DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
144
+ $(if $(patsubst 8.% ,,$(CLANG_VERSION ) ) ,-DLIBCXXABI_ENABLE_PIC:BOOL=OFF,) \
145
+ -DCXX_SUPPORTS_CXX11=ON \
146
+ -DLLVM_COMPILER_CHECKED=ON \
147
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
148
+ -DLIBCXXABI_LIBCXX_PATH=$(LLVM_PROJ_DIR ) /libcxx \
149
+ -DLIBCXXABI_LIBCXX_INCLUDES=$(PREFIX ) /share/wasi-sysroot/include/c++/v1 \
150
+ -DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
151
+ -DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
152
+ -DWASI_SDK_PREFIX=$(PREFIX ) \
153
+ -DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP ) -I$(PREFIX ) /share/wasi-sysroot/include" \
154
+ -DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP ) -I$(PREFIX ) /share/wasi-sysroot/include/c++/v1" \
155
+ -DUNIX:BOOL=ON \
156
+ --debug-trycompile
157
+
111
158
build/libcxxabi.BUILT : build/libcxx.BUILT build/llvm.BUILT
159
+ # Do the conventional build.
112
160
mkdir -p build/libcxxabi
113
- cd build/libcxxabi; cmake -G Ninja \
114
- -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
115
- -DCMAKE_CXX_COMPILER_WORKS=ON \
116
- -DCMAKE_C_COMPILER_WORKS=ON \
117
- -DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
118
- -DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
119
- -DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
120
- -DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \
121
- -DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF \
122
- -DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
123
- -DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
124
- -DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
125
- $(if $(patsubst 8.% ,,$(CLANG_VERSION ) ) ,-DLIBCXXABI_ENABLE_PIC:BOOL=OFF,) \
126
- -DCXX_SUPPORTS_CXX11=ON \
127
- -DLLVM_COMPILER_CHECKED=ON \
128
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
129
- -DLIBCXXABI_LIBCXX_PATH=$(LLVM_PROJ_DIR ) /libcxx \
130
- -DLIBCXXABI_LIBCXX_INCLUDES=$(PREFIX ) /share/wasi-sysroot/include/c++/v1 \
131
- -DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \
132
- -DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \
133
- -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
134
- -DWASI_SDK_PREFIX=$(PREFIX ) \
135
- -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) -I$( PREFIX) /share/wasi-sysroot/include" \
136
- -DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) -I$( PREFIX) /share/wasi-sysroot/include/c++/v1" \
137
- -DUNIX:BOOL=ON \
138
- --debug-trycompile \
139
- $(LLVM_PROJ_DIR ) /libcxxabi
161
+ cmake -B build/libcxxabi -G Ninja $(LIBCXXABI_CMAKE_FLAGS ) \
162
+ -DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \
163
+ -DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) " \
164
+ -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
165
+ $(LLVM_PROJ_DIR ) /libcxxabi
166
+ ninja $(NINJA_FLAGS ) -v -C build/libcxxabi
167
+ # Now build the same thing but with LTO enabled.
168
+ mkdir -p build/libcxxabi.llvm-lto
169
+ cmake -B build/libcxxabi.llvm-lto -G Ninja $(LIBCXXABI_CMAKE_FLAGS ) \
170
+ -DCMAKE_C_FLAGS=" -flto $( DEBUG_PREFIX_MAP) " \
171
+ -DCMAKE_CXX_FLAGS=" -flto $( DEBUG_PREFIX_MAP) " \
172
+ -DLIBCXXABI_LIBDIR_SUFFIX =/wasm32-wasi/llvm-lto/$(CLANG_VERSION ) \
173
+ $(LLVM_PROJ_DIR ) /libcxxabi
174
+ ninja $(NINJA_FLAGS) -v -C build/libcxxabi.llvm-lto
175
+ # Do the install.
140
176
ninja $(NINJA_FLAGS) -v -C build/libcxxabi install
177
+ ninja $(NINJA_FLAGS) -v -C build/libcxxabi.llvm-lto install
141
178
touch build/libcxxabi.BUILT
142
179
143
180
build/config.BUILT :
0 commit comments