Skip to content

Commit bbac349

Browse files
authored
[compiler-rt] Install libc++ and libc++abi in build_symbolizer.sh (#123104)
This ensures that the directory layout of the libc++/libc++abi matches exactly what we would get on a real installation. Currently the build directory happens to match the install directory layout, but this will no longer be true in the future.
1 parent 4f48abf commit bbac349

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

compiler-rt/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ cd $BUILD_DIR
5555

5656
ZLIB_BUILD=${BUILD_DIR}/zlib
5757
LIBCXX_BUILD=${BUILD_DIR}/libcxx
58+
LIBCXX_INSTALL=${BUILD_DIR}/libcxx-install
5859
LLVM_BUILD=${BUILD_DIR}/llvm
5960
SYMBOLIZER_BUILD=${BUILD_DIR}/symbolizer
6061

@@ -87,11 +88,12 @@ make -j libz.a
8788

8889
# Build and install libcxxabi and libcxx.
8990
if [[ ! -f ${LLVM_BUILD}/build.ninja ]]; then
90-
rm -rf ${LIBCXX_BUILD}
91-
mkdir -p ${LIBCXX_BUILD}
91+
rm -rf "${LIBCXX_BUILD}" "${LIBCXX_INSTALL}"
92+
mkdir -p ${LIBCXX_BUILD} ${LIBCXX_INSTALL}
9293
cd ${LIBCXX_BUILD}
9394
LIBCXX_FLAGS="${FLAGS} -Wno-macro-redefined"
9495
cmake -GNinja \
96+
-DCMAKE_INSTALL_PREFIX="${LIBCXX_INSTALL}" \
9597
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
9698
-DCMAKE_BUILD_TYPE=Release \
9799
-DCMAKE_C_COMPILER_WORKS=ON \
@@ -114,11 +116,11 @@ if [[ ! -f ${LLVM_BUILD}/build.ninja ]]; then
114116
$LLVM_SRC/../runtimes
115117
fi
116118
cd ${LIBCXX_BUILD}
117-
ninja cxx cxxabi
119+
ninja cxx cxxabi && ninja install-cxx install-cxxabi
118120

119121
FLAGS="${FLAGS} -fno-rtti -fno-exceptions"
120122
LLVM_CFLAGS="${FLAGS} -Wno-global-constructors"
121-
LLVM_CXXFLAGS="${LLVM_CFLAGS} -nostdinc++ -I${ZLIB_BUILD} -isystem ${LIBCXX_BUILD}/include -isystem ${LIBCXX_BUILD}/include/c++/v1"
123+
LLVM_CXXFLAGS="${LLVM_CFLAGS} -nostdinc++ -I${ZLIB_BUILD} -isystem ${LIBCXX_INSTALL}/include -isystem ${LIBCXX_INSTALL}/include/c++/v1"
122124

123125
# Build LLVM.
124126
if [[ ! -f ${LLVM_BUILD}/build.ninja ]]; then
@@ -134,7 +136,7 @@ if [[ ! -f ${LLVM_BUILD}/build.ninja ]]; then
134136
-DLLVM_ENABLE_LIBCXX=ON \
135137
-DCMAKE_C_FLAGS_RELEASE="${LLVM_CFLAGS}" \
136138
-DCMAKE_CXX_FLAGS_RELEASE="${LLVM_CXXFLAGS}" \
137-
-DCMAKE_EXE_LINKER_FLAGS="$LINKFLAGS -stdlib=libc++ -L${LIBCXX_BUILD}/lib" \
139+
-DCMAKE_EXE_LINKER_FLAGS="$LINKFLAGS -stdlib=libc++ -L${LIBCXX_INSTALL}/lib" \
138140
-DLLVM_TABLEGEN=$TBLGEN \
139141
-DLLVM_INCLUDE_TESTS=OFF \
140142
-DLLVM_ENABLE_ZLIB=ON \
@@ -163,7 +165,7 @@ SYMBOLIZER_API_LIST+=,__sanitizer_symbolize_demangle
163165
SYMBOLIZER_API_LIST+=,__sanitizer_symbolize_set_demangle
164166
SYMBOLIZER_API_LIST+=,__sanitizer_symbolize_set_inline_frames
165167

166-
LIBCXX_ARCHIVE_DIR=$(dirname $(find $LIBCXX_BUILD -name libc++.a | head -n1))
168+
LIBCXX_ARCHIVE_DIR=$(dirname $(find $LIBCXX_INSTALL -name libc++.a | head -n1))
167169

168170
# Merge all the object files together and copy the resulting library back.
169171
$LINK $LIBCXX_ARCHIVE_DIR/libc++.a \

0 commit comments

Comments
 (0)