aboutsummaryrefslogtreecommitdiffstats
path: root/ci/get-binary-toolchains
blob: 429cd1c5c0edbccfab2d64ba71dab76719bba33a (plain)
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
#!/bin/bash
set -u -e

BASENAME=arm-gnu-toolchain
VER=${VER:-13.2.Rel1}
HOST_ARCH=${HOST_ARCH:-$(uname -m)}

# Use the standard kas container locations if nothing is passed into the script
DOWNLOAD_DIR="${1:-/builds/persist/downloads/}"
TOOLCHAIN_DIR="${2:-/builds/persist//toolchains/}"
TOOLCHAIN_LINK_DIR="${3:-build/toolchains/}"

# These should be already created by .gitlab-ci.yml, but do here if run outside of that env
mkdir -p $DOWNLOAD_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR

download() {
	TRIPLE=$1
	URL=https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/$BASENAME-$VER-$HOST_ARCH-$TRIPLE.tar.xz
	wget -P $DOWNLOAD_DIR -nc $URL
}

if [ $HOST_ARCH = "aarch64" ]; then
	# AArch64 Linux hosted cross compilers

	# AArch32 target with hard float
	download arm-none-linux-gnueabihf
elif [ $HOST_ARCH = "x86_64" ]; then
	# x86_64 Linux hosted cross compilers

	# AArch32 target with hard float
	download arm-none-linux-gnueabihf

	# AArch64 GNU/Linux target
	download aarch64-none-linux-gnu
else
	echo "ERROR - Unknown build arch of $HOST_ARCH"
	exit 1
fi

for i in arm aarch64; do
	if [ ! -d $TOOLCHAIN_DIR/$BASENAME-$VER-$HOST_ARCH-$i-none-linux-gnu*/ ]; then
		if [ ! -f $DOWNLOAD_DIR/$BASENAME-$VER-$HOST_ARCH-$i-none-linux-gnu*.tar.xz ]; then
			continue
		fi

		tar -C $TOOLCHAIN_DIR -axvf $DOWNLOAD_DIR/$BASENAME-$VER-$HOST_ARCH-$i-none-linux-gnu*.tar.xz
	fi

	# Setup a link for the toolchain to use local to the building machine (e.g., not in a shared location)
	ln -s $TOOLCHAIN_DIR/$BASENAME-$VER-$HOST_ARCH-$i-none-linux-gnu* $TOOLCHAIN_LINK_DIR/$i
done