Files
llvm-mingw/build-llvm.sh
T
Martin Storsjö 86d8400cae Update llvm/clang/lld to a version from today
This allows using GNU binutils strip and objcopy on executables with
dwarf debug info linked by lld.

This also improves clang's handling of detecting known libraries
that override default libraries to link.
2018-07-25 00:56:40 +03:00

70 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
set -e
if [ $# -lt 1 ]; then
echo $0 dest
exit 1
fi
PREFIX="$1"
: ${CORES:=4}
if [ ! -d llvm ]; then
# When cloning master and checking out a pinned old hash, we can't use --depth=1.
# Do the git-svn rebase to populate git-svn information, to make
# "clang --version" produce SVN based version numbers.
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 ..
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 ../../..
CHECKOUT=1
fi
if [ -n "$SYNC" ] || [ -n "$CHECKOUT" ]; then
cd llvm
[ -z "$SYNC" ] || git fetch
git checkout b79cc9e7eb39c60a1f51e185490ea177252687e0
cd tools/clang
[ -z "$SYNC" ] || git fetch
git checkout 561a0afd9c46b4ca38b09ee5a4b8115394cd4917
cd ../lld
[ -z "$SYNC" ] || git fetch
git checkout 7002cf666988fabf24198f8608c2f79277b5b96a
cd ../../..
fi
if [ "$(which ninja)" != "" ]; then
CMAKE_GENERATOR="-G Ninja"
NINJA=1
fi
cd llvm
mkdir -p build
cd build
cmake \
$CMAKE_GENERATOR \
-DCMAKE_INSTALL_PREFIX="$PREFIX" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_TARGETS_TO_BUILD="ARM;AArch64;X86" \
..
if [ -n "$NINJA" ]; then
ninja install/strip
else
make -j$CORES install/strip
fi