Skip to content

Commit a507720

Browse files
committed
build-libcxx: Build libunwind+libcxxabi+libcxx with one single cmake build
This simplifies their interdependencies quite a bit.
1 parent 671c408 commit a507720

File tree

1 file changed

+6
-66
lines changed

1 file changed

+6
-66
lines changed

build-libcxx.sh

Lines changed: 6 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ cd llvm-project
5353

5454
LLVM_PATH="$(pwd)/llvm"
5555

56+
cd runtimes
57+
5658
if [ -n "$(which ninja)" ]; then
5759
CMAKE_GENERATOR="Ninja"
5860
NINJA=1
@@ -74,15 +76,16 @@ fi
7476

7577
build_all() {
7678
type="$1"
79+
CMAKEFLAGS=""
7780
if [ "$type" = "shared" ]; then
7881
SHARED=TRUE
7982
STATIC=FALSE
83+
CMAKEFLAGS="$CMAKEFLAGS -DLIBCXXABI_USE_LLVM_UNWINDER=ON"
8084
else
8185
SHARED=FALSE
8286
STATIC=TRUE
8387
fi
8488

85-
cd libunwind
8689
for arch in $ARCHS; do
8790
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
8891
mkdir -p build-$arch-$type
@@ -100,38 +103,12 @@ build_all() {
100103
-DLLVM_PATH="$LLVM_PATH" \
101104
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
102105
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
106+
-DLLVM_ENABLE_RUNTIMES="libunwind;libcxxabi;libcxx" \
103107
-DLIBUNWIND_USE_COMPILER_RT=TRUE \
104108
-DLIBUNWIND_ENABLE_THREADS=TRUE \
105109
-DLIBUNWIND_ENABLE_SHARED=$SHARED \
106110
-DLIBUNWIND_ENABLE_STATIC=$STATIC \
107111
-DLIBUNWIND_ENABLE_CROSS_UNWINDING=FALSE \
108-
..
109-
$BUILDCMD ${CORES+-j$CORES}
110-
$BUILDCMD install
111-
cd ..
112-
done
113-
cd ..
114-
115-
# Configure, but don't build, libcxx, so that libcxxabi has
116-
# proper headers to refer to
117-
cd libcxx
118-
for arch in $ARCHS; do
119-
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
120-
mkdir -p build-$arch-$type
121-
cd build-$arch-$type
122-
cmake \
123-
${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \
124-
-DCMAKE_BUILD_TYPE=Release \
125-
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
126-
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
127-
-DCMAKE_CXX_COMPILER=$arch-w64-mingw32-clang++ \
128-
-DCMAKE_CROSSCOMPILING=TRUE \
129-
-DCMAKE_SYSTEM_NAME=Windows \
130-
-DCMAKE_C_COMPILER_WORKS=TRUE \
131-
-DCMAKE_CXX_COMPILER_WORKS=TRUE \
132-
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
133-
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
134-
-DLLVM_PATH="$LLVM_PATH" \
135112
-DLIBCXX_USE_COMPILER_RT=ON \
136113
-DLIBCXX_INSTALL_HEADERS=ON \
137114
-DLIBCXX_ENABLE_EXCEPTIONS=ON \
@@ -143,54 +120,18 @@ build_all() {
143120
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \
144121
-DLIBCXX_ENABLE_NEW_DELETE_DEFINITIONS=OFF \
145122
-DLIBCXX_CXX_ABI=libcxxabi \
146-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=../../libcxxabi/include \
147-
-DLIBCXX_CXX_ABI_LIBRARY_PATH=../../libcxxabi/build-$arch-$type/lib \
148123
-DLIBCXX_LIBDIR_SUFFIX="" \
149124
-DLIBCXX_INCLUDE_TESTS=FALSE \
150-
-DCMAKE_SHARED_LINKER_FLAGS="-lunwind" \
151125
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=FALSE \
152-
..
153-
$BUILDCMD ${CORES+-j$CORES} generate-cxx-headers
154-
cd ..
155-
done
156-
cd ..
157-
158-
cd libcxxabi
159-
for arch in $ARCHS; do
160-
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
161-
mkdir -p build-$arch-$type
162-
cd build-$arch-$type
163-
cmake \
164-
${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \
165-
-DCMAKE_BUILD_TYPE=Release \
166-
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
167-
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
168-
-DCMAKE_CXX_COMPILER=$arch-w64-mingw32-clang++ \
169-
-DCMAKE_CROSSCOMPILING=TRUE \
170-
-DCMAKE_SYSTEM_NAME=Windows \
171-
-DCMAKE_C_COMPILER_WORKS=TRUE \
172-
-DCMAKE_CXX_COMPILER_WORKS=TRUE \
173-
-DLLVM_PATH="$LLVM_PATH" \
174-
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
175-
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
176126
-DLIBCXXABI_USE_COMPILER_RT=ON \
177127
-DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
178128
-DLIBCXXABI_ENABLE_THREADS=ON \
179129
-DLIBCXXABI_ENABLE_SHARED=OFF \
180-
-DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/build-$arch-$type/include/c++/v1 \
181130
-DLIBCXXABI_LIBDIR_SUFFIX="" \
182131
-DLIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS=ON \
183-
-DLIBCXX_ENABLE_SHARED=$SHARED \
184-
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \
132+
$CMAKEFLAGS \
185133
..
186-
$BUILDCMD ${CORES+-j$CORES}
187-
cd ..
188-
done
189-
cd ..
190134

191-
cd libcxx
192-
for arch in $ARCHS; do
193-
cd build-$arch-$type
194135
$BUILDCMD ${CORES+-j$CORES}
195136
$BUILDCMD install
196137
if [ "$type" = "shared" ]; then
@@ -204,7 +145,6 @@ build_all() {
204145
fi
205146
cd ..
206147
done
207-
cd ..
208148
}
209149

210150
# Build shared first and static afterwards; the headers for static linking also

0 commit comments

Comments
 (0)