2020
2121build/llvm.BUILT :
2222	mkdir -p build/llvm
23- 	cd   build/llvm;  cmake  -G Ninja \ 
23+ 	cmake -B  build/llvm -G Ninja \ 
2424		-DCMAKE_BUILD_TYPE=MinSizeRel \ 
2525		-DCMAKE_INSTALL_PREFIX=$(PREFIX )  \ 
2626		-DLLVM_TARGETS_TO_BUILD=WebAssembly \ 
@@ -54,12 +54,14 @@ 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
62+ 	#  Do the conventional build, and install it.
6163	mkdir -p build/compiler-rt
62- 	cd   build/compiler-rt;  cmake  -G Ninja \ 
64+ 	cmake -B  build/compiler-rt -G Ninja \ 
6365		-DCMAKE_BUILD_TYPE=RelWithDebInfo \ 
6466		-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR ) /wasi-sdk.cmake \ 
6567		-DCOMPILER_RT_BAREMETAL_BUILD=On \ 
@@ -69,75 +71,110 @@ build/compiler-rt.BUILT: build/llvm.BUILT
6971		-DCOMPILER_RT_ENABLE_IOS=OFF \ 
7072		-DCOMPILER_RT_DEFAULT_TARGET_ONLY=On \ 
7173		-DWASI_SDK_PREFIX=$(PREFIX )  \ 
72- 		-DCMAKE_C_FLAGS=" -O1  $( DEBUG_PREFIX_MAP) " \ 
74+ 		-DCMAKE_C_FLAGS=" $( DEBUG_PREFIX_MAP) " \ 
7375		-DLLVM_CONFIG_PATH=$(ROOT_DIR ) /build/llvm/bin/llvm-config \ 
7476		-DCOMPILER_RT_OS_DIR=wasi \ 
7577		-DCMAKE_INSTALL_PREFIX=$(PREFIX ) /lib/clang/$(CLANG_VERSION ) / \ 
7678		-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ 
7779		$(LLVM_PROJ_DIR ) /compiler-rt/lib/builtins
7880	ninja $(NINJA_FLAGS )  -v -C build/compiler-rt install
81+ 	#  Install clang-provided headers.
7982	cp -R $(ROOT_DIR ) /build/llvm/lib/clang $(PREFIX ) /lib/
8083	touch build/compiler-rt.BUILT
8184
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+ 
82109build/libcxx.BUILT : build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUILT
110+ 	#  Do the conventional build.
83111	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.
108127	ninja $(NINJA_FLAGS) -v -C build/libcxx install
128+ 	ninja $(NINJA_FLAGS) -v -C build/libcxx.llvm-lto install
109129	touch build/libcxx.BUILT
110130
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+ 
111158build/libcxxabi.BUILT : build/libcxx.BUILT build/llvm.BUILT
159+ 	#  Do the conventional build.
112160	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) $( PREFIX) " \ 
136- 		-DCMAKE_CXX_FLAGS=" $( DEBUG_PREFIX_MAP) $( PREFIX) " \ 
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.
140176	ninja $(NINJA_FLAGS) -v -C build/libcxxabi install
177+ 	ninja $(NINJA_FLAGS) -v -C build/libcxxabi.llvm-lto install
141178	touch build/libcxxabi.BUILT
142179
143180build/config.BUILT :
0 commit comments