-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsetup.sh
64 lines (52 loc) · 2.46 KB
/
setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# We start off creating our docker image with a share directory so we can rsync the test-suite build files.
cd
mkdir share
sudo docker run --privileged --interactive --tty --name ubuntu-llvm-test \
--mount type=bind,source=`pwd`/share,target=/mnt/share ubuntu:focal /bin/bash
GCC_VERS=10
apt update
apt install cmake ninja-build clang clang-format lldb lld gcc g++ vim cargo htop tmux git curl \
python3-distutils expect net-tools di tig wget netcat rsync \
build-essential crossbuild-essential-arm64 libgcc-s1-arm64-cross \
libstdc++-$GCC_VERS-dev-arm64-cross libstdc++6-arm64-cross \
libgcc1-arm64-cross libgcc-$GCC_VERS-dev-arm64-cross
cd
mkdir -p sysroots/aarch64-linux-gnu/usr
mkdir llvm-project-build
mkdir llvm-test-suite-build
mkdir toolchain
pushd .
cd sysroots/aarch64-linux-gnu/usr
cp -r -v -L /usr/aarch64-linux-gnu/include /usr/aarch64-linux-gnu/lib .
cd lib
cp -r -v -L /usr/lib/gcc-cross/aarch64-linux-gnu/$GCC_VERS/*gcc* .
cp -r -v -L /usr/lib/gcc-cross/aarch64-linux-gnu/$GCC_VERS/*crt* .
cp -r -v -L /usr/lib/gcc-cross/aarch64-linux-gnu/$GCC_VERS/libsupc++.a .
cp -r -v -L /usr/lib/gcc-cross/aarch64-linux-gnu/$GCC_VERS/libstdc++* .
cd ../../
mkdir tmp
cd tmp
LIBCRYPT_URL="http://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxcrypt/"
curl $LIBCRYPT_URL 2>&1 | grep -oh "\"libcrypt-dev.*arm64.deb\"" | sort -nr | head -n1 | xargs -I% wget $LIBCRYPT_URL/%
dpkg-deb -R libcrypt-dev*arm64.deb .
rm -rf usr/share libcrypt-dev*arm64.deb DEBIAN
rsync -av usr ../
cd ..
rm -rf tmp
popd
git clone https://github.com/plotfi/llvm-rpi4.git
git clone http://github.com/llvm/llvm-project
git clone http://github.com/llvm/llvm-test-suite
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_LLD=ON \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_ASM_COMPILER=clang -DCMAKE_INSTALL_PREFIX=./toolchain \
-DLLVM_INSTALL_ROOT=./toolchain \
-C./llvm-rpi4/llvm-rpi4.cmake \
-S./llvm-project/llvm \
-B./llvm-project-build
ninja -C./llvm-project-build
ninja -C./llvm-project-build install
cmake -B./llvm-test-suite-build -DLLVM_INSTALL_ROOT=`pwd`/toolchain/ -DRPI4_SYSROOT=`pwd`/sysroots/aarch64-linux-gnu \
-C./llvm-rpi4/llvm-test-suite-rpi4.cmake -C./llvm-test-suite/cmake/caches/O3.cmake ./llvm-test-suite
make -j16 -C./llvm-test-suite-build VERBOSE=1
rsync -av llvm-test-suite-build /mnt/share