Files
Roger Pau Monne 6325f70e77 automation: add clang and lld 8 tests to gitlab
Using clang and lld 8 requires installing the packages from the
official llvm apt repositories, so modify the Debian Docker files for
stretch and unstable to add the llvm repo and install clang and lld
from it.

Also add some jobs to test building Xen with clang 8 and lld.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Doug Goldstein <cardoe@cardoe.com>
2019-06-11 11:06:52 +01:00

66 lines
1.7 KiB
Python
Executable File

#!/bin/bash -ex
$CC --version
# Express the compiler version as an integer. e.g. GCC 4.9.2 => 0x040902
cc-ver()
{
$CC -dumpversion | awk -F. '{ printf "0x%02x%02x%02x", $1, $2, $3 }'
}
# random config or default config
if [[ "${RANDCONFIG}" == "y" ]]; then
make -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
else
make -C xen defconfig
fi
# build up our configure options
cfgargs=()
cfgargs+=("--enable-docs")
if [[ "${CC}" == "clang"* ]]; then
# SeaBIOS cannot be built with clang
cfgargs+=("--with-system-seabios=/usr/share/seabios/bios.bin")
# iPXE cannot be built with clang
cfgargs+=("--with-system-ipxe=/usr/lib/ipxe/ipxe.pxe")
# newlib cannot be built with clang so we cannot build stubdoms
cfgargs+=("--disable-stubdom")
fi
# Qemu requires Python 2.7 or later
if python -c "import sys; res = sys.version_info < (2, 7); exit(not(res))"; then
cfgargs+=("--with-system-qemu=/bin/false")
fi
# SeaBIOS requires GCC 4.6 or later
if [[ "${CC}" == "gcc" && `cc-ver` -lt 0x040600 ]]; then
cfgargs+=("--with-system-seabios=/bin/false")
fi
./configure "${cfgargs[@]}"
make -j$(nproc) dist
# Extract artifacts to avoid getting rewritten by customised builds
cp xen/.config xen-config
mkdir binaries
if [[ "${XEN_TARGET_ARCH}" == "x86_64" ]]; then
cp xen/xen binaries/xen
fi
# Build all the configs we care about
case ${XEN_TARGET_ARCH} in
x86_64) arch=x86 ;;
*) exit 0 ;;
esac
cfg_dir="automation/configs/${arch}"
for cfg in `ls ${cfg_dir}`; do
echo "Building $cfg"
make -j$(nproc) -C xen clean
rm -f xen/.config
make -C xen KBUILD_DEFCONFIG=../../../../${cfg_dir}/${cfg} XEN_CONFIG_EXPERT=y defconfig
make -j$(nproc) -C xen XEN_CONFIG_EXPERT=y
done