Skip to content

Commit 1731513

Browse files
authored
Makefile refactoring. (#106)
These changes are factored out of #89. NFC.
1 parent b80771e commit 1731513

File tree

1 file changed

+67
-53
lines changed

1 file changed

+67
-53
lines changed

Makefile

+67-53
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ clean:
2020

2121
build/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 \
@@ -58,8 +58,9 @@ build/wasi-libc.BUILT: build/llvm.BUILT
5858
touch build/wasi-libc.BUILT
5959

6060
build/compiler-rt.BUILT: build/llvm.BUILT
61+
# Do the build, and install it.
6162
mkdir -p build/compiler-rt
62-
cd build/compiler-rt; cmake -G Ninja \
63+
cmake -B build/compiler-rt -G Ninja \
6364
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
6465
-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR)/wasi-sdk.cmake \
6566
-DCOMPILER_RT_BAREMETAL_BUILD=On \
@@ -76,67 +77,80 @@ build/compiler-rt.BUILT: build/llvm.BUILT
7677
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
7778
$(LLVM_PROJ_DIR)/compiler-rt/lib/builtins
7879
ninja $(NINJA_FLAGS) -v -C build/compiler-rt install
80+
# Install clang-provided headers.
7981
cp -R $(ROOT_DIR)/build/llvm/lib/clang $(PREFIX)/lib/
8082
touch build/compiler-rt.BUILT
8183

84+
# Flags for libcxx.
85+
LIBCXX_CMAKE_FLAGS = \
86+
-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR)/wasi-sdk.cmake \
87+
-DLLVM_CONFIG_PATH=$(ROOT_DIR)/build/llvm/bin/llvm-config \
88+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
89+
-DLIBCXX_ENABLE_THREADS:BOOL=OFF \
90+
-DLIBCXX_HAS_PTHREAD_API:BOOL=OFF \
91+
-DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
92+
-DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
93+
-DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF \
94+
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
95+
-DLIBCXX_ENABLE_SHARED:BOOL=OFF \
96+
-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
97+
-DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
98+
-DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
99+
-DLIBCXX_CXX_ABI=libcxxabi \
100+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(LLVM_PROJ_DIR)/libcxxabi/include \
101+
-DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \
102+
-DLIBCXX_ABI_VERSION=2 \
103+
-DWASI_SDK_PREFIX=$(PREFIX) \
104+
--debug-trycompile
105+
82106
build/libcxx.BUILT: build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUILT
107+
# Do the build.
83108
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
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 $(NINJA_FLAGS) -v -C build/libcxx
115+
# Do the install.
108116
ninja $(NINJA_FLAGS) -v -C build/libcxx install
109117
touch build/libcxx.BUILT
110118

119+
# Flags for libcxxabi.
120+
LIBCXXABI_CMAKE_FLAGS = \
121+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
122+
-DCMAKE_CXX_COMPILER_WORKS=ON \
123+
-DCMAKE_C_COMPILER_WORKS=ON \
124+
-DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
125+
-DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
126+
-DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
127+
-DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \
128+
-DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF \
129+
-DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
130+
-DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
131+
-DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
132+
$(if $(patsubst 8.%,,$(CLANG_VERSION)),-DLIBCXXABI_ENABLE_PIC:BOOL=OFF,) \
133+
-DCXX_SUPPORTS_CXX11=ON \
134+
-DLLVM_COMPILER_CHECKED=ON \
135+
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
136+
-DLIBCXXABI_LIBCXX_PATH=$(LLVM_PROJ_DIR)/libcxx \
137+
-DLIBCXXABI_LIBCXX_INCLUDES=$(PREFIX)/share/wasi-sysroot/include/c++/v1 \
138+
-DLLVM_CONFIG_PATH=$(ROOT_DIR)/build/llvm/bin/llvm-config \
139+
-DCMAKE_TOOLCHAIN_FILE=$(ROOT_DIR)/wasi-sdk.cmake \
140+
-DWASI_SDK_PREFIX=$(PREFIX) \
141+
-DUNIX:BOOL=ON \
142+
--debug-trycompile
143+
111144
build/libcxxabi.BUILT: build/libcxx.BUILT build/llvm.BUILT
145+
# Do the build.
112146
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
147+
cmake -B build/libcxxabi -G Ninja $(LIBCXXABI_CMAKE_FLAGS) \
148+
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP)" \
149+
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP)" \
150+
-DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \
151+
$(LLVM_PROJ_DIR)/libcxxabi
152+
ninja $(NINJA_FLAGS) -v -C build/libcxxabi
153+
# Do the install.
140154
ninja $(NINJA_FLAGS) -v -C build/libcxxabi install
141155
touch build/libcxxabi.BUILT
142156

0 commit comments

Comments
 (0)