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:
1 parent
2377f1a839
commit
ea3ff51d2c
1 file changed
+50
-40
+50
-40
@@ -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
|
||||
|
||||
Reference in new issue
Block a user