diff --git a/build-compiler-rt.sh b/build-compiler-rt.sh index d7f3e3d..89c8d72 100755 --- a/build-compiler-rt.sh +++ b/build-compiler-rt.sh @@ -40,13 +40,16 @@ while [ $# -gt 0 ]; do elif [ "$1" = "--disable-cfguard" ]; then CFGUARD_CFLAGS= ENABLE_CFGUARD= + elif [ "$1" = "--native" ]; then + NATIVE=1 + SRC_DIR=.. else PREFIX="$1" fi shift done if [ -z "$PREFIX" ]; then - echo "$0 [--build-sanitizers] [--enable-cfguard|--disable-cfguard] dest" + echo "$0 [--build-sanitizers] [--enable-cfguard|--disable-cfguard] [--native] dest" exit 1 fi if [ -n "$SANITIZERS" ] && [ -n "$ENABLE_CFGUARD" ]; then @@ -59,8 +62,7 @@ export PATH="$PREFIX/bin:$PATH" : ${ARCHS:=${TOOLCHAIN_ARCHS-i686 x86_64 armv7 aarch64}} -ANY_ARCH=$(echo $ARCHS | awk '{print $1}') -CLANG_RESOURCE_DIR="$("$PREFIX/bin/$ANY_ARCH-w64-mingw32-clang" --print-resource-dir)" +CLANG_RESOURCE_DIR="$("$PREFIX/bin/clang" --print-resource-dir)" if [ ! -d llvm-project/compiler-rt ] || [ -n "$SYNC" ]; then CHECKOUT_ONLY=1 ./build-llvm.sh @@ -91,6 +93,34 @@ if [ -h "$CLANG_RESOURCE_DIR/include" ]; then INSTALL_PREFIX="$WORKDIR/install" fi +if [ -n "$NATIVE" ]; then + [ -z "$CLEAN" ] || rm -rf build-native + mkdir -p build-native + cd build-native + [ -n "$NO_RECONF" ] || rm -rf CMake* + cmake \ + ${CMAKE_GENERATOR+-G} "$CMAKE_GENERATOR" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="$CLANG_RESOURCE_DIR" \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DLLVM_CONFIG_PATH="" \ + -DCMAKE_FIND_ROOT_PATH=$PREFIX \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ + -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY \ + -DCOMPILER_RT_USE_LIBCXX=OFF \ + $SRC_DIR + cmake --build . ${CORES:+-j${CORES}} + cmake --install . --prefix "$INSTALL_PREFIX" + + if [ "$INSTALL_PREFIX" != "$CLANG_RESOURCE_DIR" ]; then + # symlink to system headers - skip copy + rm -rf "$INSTALL_PREFIX/include" + + cp -r "$INSTALL_PREFIX/." $CLANG_RESOURCE_DIR + fi + exit 0 +fi for arch in $ARCHS; do [ -z "$CLEAN" ] || rm -rf build-$arch$BUILD_SUFFIX