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