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.
This commit is contained in:
Martin Storsjö committed 2020-10-23 12:22:13 +03:00
1 parent 2377f1a839
commit ea3ff51d2c
1 file changed
+50 -40
+50 -40
View File
@@ -125,46 +125,8 @@ build_all() {
done
cd ..
cd libcxxabi
for arch in $ARCHS; do
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
mkdir -p build-$arch-$type
cd build-$arch-$type
if [ "$type" = "shared" ]; then
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_BUILDING_LIBRARY= -U_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS"
else
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS"
fi
cmake \
${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
-DCMAKE_CXX_COMPILER=$arch-w64-mingw32-clang++ \
-DCMAKE_CROSSCOMPILING=TRUE \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_C_COMPILER_WORKS=TRUE \
-DCMAKE_CXX_COMPILER_WORKS=TRUE \
-DLLVM_PATH="$LLVM_PATH" \
-DLLVM_COMPILER_CHECKED=TRUE \
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
-DLIBCXXABI_USE_COMPILER_RT=ON \
-DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
-DLIBCXXABI_ENABLE_THREADS=ON \
-DLIBCXXABI_TARGET_TRIPLE=$arch-w64-mingw32 \
-DLIBCXXABI_ENABLE_SHARED=OFF \
-DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include \
-DLIBCXXABI_LIBDIR_SUFFIX="" \
-DLIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS=OFF \
-DCXX_SUPPORTS_CXX_STD=TRUE \
-DCMAKE_CXX_FLAGS="$LIBCXXABI_VISIBILITY_FLAGS -D_LIBCPP_HAS_THREAD_API_WIN32" \
..
$BUILDCMD ${CORES+-j$CORES}
cd ..
done
cd ..
# Configure, but don't build, libcxx, so that libcxxabi has
# proper headers to refer to
cd libcxx
for arch in $ARCHS; do
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
@@ -212,6 +174,54 @@ build_all() {
-DCMAKE_SHARED_LINKER_FLAGS="-lunwind" \
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=FALSE \
..
$BUILDCMD ${CORES+-j$CORES} generate-cxx-headers
cd ..
done
cd ..
cd libcxxabi
for arch in $ARCHS; do
[ -z "$CLEAN" ] || rm -rf build-$arch-$type
mkdir -p build-$arch-$type
cd build-$arch-$type
if [ "$type" = "shared" ]; then
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_BUILDING_LIBRARY= -U_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS"
else
LIBCXXABI_VISIBILITY_FLAGS="-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS"
fi
cmake \
${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
-DCMAKE_C_COMPILER=$arch-w64-mingw32-clang \
-DCMAKE_CXX_COMPILER=$arch-w64-mingw32-clang++ \
-DCMAKE_CROSSCOMPILING=TRUE \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_C_COMPILER_WORKS=TRUE \
-DCMAKE_CXX_COMPILER_WORKS=TRUE \
-DLLVM_PATH="$LLVM_PATH" \
-DLLVM_COMPILER_CHECKED=TRUE \
-DCMAKE_AR="$PREFIX/bin/llvm-ar" \
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
-DLIBCXXABI_USE_COMPILER_RT=ON \
-DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
-DLIBCXXABI_ENABLE_THREADS=ON \
-DLIBCXXABI_TARGET_TRIPLE=$arch-w64-mingw32 \
-DLIBCXXABI_ENABLE_SHARED=OFF \
-DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/build-$arch-$type/include/c++/v1 \
-DLIBCXXABI_LIBDIR_SUFFIX="" \
-DLIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS=OFF \
-DCXX_SUPPORTS_CXX_STD=TRUE \
-DCMAKE_CXX_FLAGS="$LIBCXXABI_VISIBILITY_FLAGS -D_LIBCPP_HAS_THREAD_API_WIN32" \
..
$BUILDCMD ${CORES+-j$CORES}
cd ..
done
cd ..
cd libcxx
for arch in $ARCHS; do
cd build-$arch-$type
$BUILDCMD ${CORES+-j$CORES}
$BUILDCMD install
if [ "$type" = "shared" ]; then