Skip to content

Commit ea3ff51

Browse files
committed
build-libcxx: Configure libcxx and generate headers before building libcxxabi
This fixes building with the latest versions, where the headers strictly need __config_site to be available.
1 parent 2377f1a commit ea3ff51

File tree

1 file changed

+50
-40
lines changed

1 file changed

+50
-40
lines changed

build-libcxx.sh

Lines changed: 50 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -125,46 +125,8 @@ build_all() {
125125
done
126126
cd ..
127127

128-
cd libcxxabi
129-
for arch in $ARCHS; do
130-
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
131-
mkdir -p build-$arch-$type
132-
cd build-$arch-$type
133-
if [ "$type" = "shared" ]; then
134-
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_BUILDING_LIBRARY= -U_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS"
135-
else
136-
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS"
137-
fi
138-
cmake \
139-
${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \
140-
-DCMAKE_BUILD_TYPE=Release \
141-
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
142-
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
143-
-DCMAKE_CXX_COMPILER=$arch-w64-mingw32-clang++ \
144-
-DCMAKE_CROSSCOMPILING=TRUE \
145-
-DCMAKE_SYSTEM_NAME=Windows \
146-
-DCMAKE_C_COMPILER_WORKS=TRUE \
147-
-DCMAKE_CXX_COMPILER_WORKS=TRUE \
148-
-DLLVM_PATH="$LLVM_PATH" \
149-
-DLLVM_COMPILER_CHECKED=TRUE \
150-
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
151-
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
152-
-DLIBCXXABI_USE_COMPILER_RT=ON \
153-
-DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
154-
-DLIBCXXABI_ENABLE_THREADS=ON \
155-
-DLIBCXXABI_TARGET_TRIPLE=$arch-w64-mingw32 \
156-
-DLIBCXXABI_ENABLE_SHARED=OFF \
157-
-DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include \
158-
-DLIBCXXABI_LIBDIR_SUFFIX="" \
159-
-DLIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS=OFF \
160-
-DCXX_SUPPORTS_CXX_STD=TRUE \
161-
-DCMAKE_CXX_FLAGS="$LIBCXXABI_VISIBILITY_FLAGS -D_LIBCPP_HAS_THREAD_API_WIN32" \
162-
..
163-
$BUILDCMD ${CORES+-j$CORES}
164-
cd ..
165-
done
166-
cd ..
167-
128+
# Configure, but don't build, libcxx, so that libcxxabi has
129+
# proper headers to refer to
168130
cd libcxx
169131
for arch in $ARCHS; do
170132
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
@@ -212,6 +174,54 @@ build_all() {
212174
-DCMAKE_SHARED_LINKER_FLAGS="-lunwind" \
213175
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=FALSE \
214176
..
177+
$BUILDCMD ${CORES+-j$CORES} generate-cxx-headers
178+
cd ..
179+
done
180+
cd ..
181+
182+
cd libcxxabi
183+
for arch in $ARCHS; do
184+
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
185+
mkdir -p build-$arch-$type
186+
cd build-$arch-$type
187+
if [ "$type" = "shared" ]; then
188+
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_BUILDING_LIBRARY= -U_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS"
189+
else
190+
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS"
191+
fi
192+
cmake \
193+
${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \
194+
-DCMAKE_BUILD_TYPE=Release \
195+
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
196+
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
197+
-DCMAKE_CXX_COMPILER=$arch-w64-mingw32-clang++ \
198+
-DCMAKE_CROSSCOMPILING=TRUE \
199+
-DCMAKE_SYSTEM_NAME=Windows \
200+
-DCMAKE_C_COMPILER_WORKS=TRUE \
201+
-DCMAKE_CXX_COMPILER_WORKS=TRUE \
202+
-DLLVM_PATH="$LLVM_PATH" \
203+
-DLLVM_COMPILER_CHECKED=TRUE \
204+
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
205+
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
206+
-DLIBCXXABI_USE_COMPILER_RT=ON \
207+
-DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
208+
-DLIBCXXABI_ENABLE_THREADS=ON \
209+
-DLIBCXXABI_TARGET_TRIPLE=$arch-w64-mingw32 \
210+
-DLIBCXXABI_ENABLE_SHARED=OFF \
211+
-DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/build-$arch-$type/include/c++/v1 \
212+
-DLIBCXXABI_LIBDIR_SUFFIX="" \
213+
-DLIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS=OFF \
214+
-DCXX_SUPPORTS_CXX_STD=TRUE \
215+
-DCMAKE_CXX_FLAGS="$LIBCXXABI_VISIBILITY_FLAGS -D_LIBCPP_HAS_THREAD_API_WIN32" \
216+
..
217+
$BUILDCMD ${CORES+-j$CORES}
218+
cd ..
219+
done
220+
cd ..
221+
222+
cd libcxx
223+
for arch in $ARCHS; do
224+
cd build-$arch-$type
215225
$BUILDCMD ${CORES+-j$CORES}
216226
$BUILDCMD install
217227
if [ "$type" = "shared" ]; then

0 commit comments

Comments
 (0)