Check out llvm sources using the new llvm git monorepo

This updates compiler-rt, libunwind, libcxxabi and libcxx to a newer
version, matching the compiler.

This will be the official, canonical repo in the future.

For the non-dev Dockerfile build, this means that all the llvm based
subprojects need to be built in one RUN to avoid storing the llvm
checkout in the docker layers.
This commit is contained in:
Martin Storsjö committed 2019-09-12 13:14:19 +03:00
1 parent 51da9d154c
commit 0f9d9f1986
5 files changed
+34 -105

No files matched your search

+15 -39
View File
@@ -31,46 +31,21 @@ PREFIX="$(cd "$PREFIX" && pwd)"
: ${CORES:=$(sysctl -n hw.ncpu 2>/dev/null)}
: ${CORES:=4}
if [ ! -d llvm ]; then
if [ ! -d llvm-project ]; then
# When cloning master and checking out a pinned old hash, we can't use --depth=1.
git clone -b master https://github.com/llvm-mirror/llvm.git
cd llvm/tools
git clone -b master https://github.com/llvm-mirror/clang.git
git clone -b master https://github.com/llvm-mirror/lld.git
cd ..
set +e
# Do the git-svn rebase to populate git-svn information, to make
# "clang --version" produce SVN based version numbers.
# This is optional - don't error out here if git-svn is unavailable.
git svn init https://llvm.org/svn/llvm-project/llvm/trunk
git config svn-remote.svn.fetch :refs/remotes/origin/master
git svn rebase -l
cd tools/clang
git svn init https://llvm.org/svn/llvm-project/cfe/trunk
git config svn-remote.svn.fetch :refs/remotes/origin/master
git svn rebase -l
cd ../lld
git svn init https://llvm.org/svn/llvm-project/lld/trunk
git config svn-remote.svn.fetch :refs/remotes/origin/master
git svn rebase -l
cd ../../..
set -e
git clone -b master https://github.com/llvm/llvm-project.git
CHECKOUT=1
fi
if [ -n "$SYNC" ] || [ -n "$CHECKOUT" ]; then
cd llvm
cd llvm-project
[ -z "$SYNC" ] || git fetch
git checkout 66495492c0af53c4597cace26c50f0dce44033fc
cd tools/clang
[ -z "$SYNC" ] || git fetch
git checkout 6fddf7789c74ae74d695dd571024915ad319db1b
cd ../lld
[ -z "$SYNC" ] || git fetch
git checkout 1e90cb9d20d4fcdb5d1448853370e969035d8014
cd ../../..
git checkout e698958ad8031e0f17202e06f5de53989852bb66
cd ..
fi
[ -z "$CHECKOUT_ONLY" ] || exit 0
if [ -n "$(which ninja)" ]; then
CMAKE_GENERATOR="Ninja"
NINJA=1
@@ -86,12 +61,12 @@ fi
if [ -n "$HOST" ]; then
find_native_tools() {
if [ -d llvm/build/bin ]; then
echo $(pwd)/llvm/build/bin
elif [ -d llvm/build-asserts/bin ]; then
echo $(pwd)/llvm/build-asserts/bin
elif [ -d llvm/build-noasserts/bin ]; then
echo $(pwd)/llvm/build-noasserts/bin
if [ -d llvm-project/llvm/build/bin ]; then
echo $(pwd)/llvm-project/llvm/build/bin
elif [ -d llvm-project/llvm/build-asserts/bin ]; then
echo $(pwd)/llvm-project/llvm/build-asserts/bin
elif [ -d llvm-project/llvm/build-noasserts/bin ]; then
echo $(pwd)/llvm-project/llvm/build-noasserts/bin
elif [ -n "$(which llvm-tblgen)" ]; then
echo $(dirname $(which llvm-tblgen))
fi
@@ -130,7 +105,7 @@ if [ -n "$FULL_LLVM" ]; then
TOOLCHAIN_ONLY=OFF
fi
cd llvm
cd llvm-project/llvm
mkdir -p $BUILDDIR
cd $BUILDDIR
cmake \
@@ -138,6 +113,7 @@ cmake \
-DCMAKE_INSTALL_PREFIX="$PREFIX" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=$ASSERTS \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
-DLLVM_TARGETS_TO_BUILD="ARM;AArch64;X86" \
-DLLVM_INSTALL_TOOLCHAIN_ONLY=$TOOLCHAIN_ONLY \
-DLLVM_TOOLCHAIN_TOOLS="llvm-ar;llvm-ranlib;llvm-objdump;llvm-rc;llvm-cvtres;llvm-nm;llvm-strings;llvm-readobj;llvm-dlltool;llvm-pdbutil;llvm-objcopy;llvm-strip;llvm-cov;llvm-profdata;llvm-addr2line" \