diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2020-08-20 22:01:19 +0100 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2020-08-20 22:09:17 +0100 |
commit | 98c69e6f8c0996531013f6d7ee4a87af6e9d097c (patch) | |
tree | 213b523316d2e98b6798a39456e28bebe8224695 | |
parent | 2d4165492e66a78fffa6a3dee7dccbf9e5e41755 (diff) | |
download | klibc-maint-98c69e6f8c0996531013f6d7ee4a87af6e9d097c.tar.gz |
test-many-klibc: Add tests using LLVM tools (clang and ld.lld)
These still mostly fail, but it's now possible to build for most
architectures and run static executables for some.
-rwxr-xr-x | test-many-klibcs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/test-many-klibcs b/test-many-klibcs index aa3ac5a..da5fab1 100755 --- a/test-many-klibcs +++ b/test-many-klibcs @@ -1,7 +1,8 @@ #!/bin/bash -eu # This requires: -# * Cross-toolchains (gcc-$toolsarch) +# * Native and cross GNU toolchain (gcc, gcc-$toolsarch) +# * LLVM toolchain (clang, lld) # * QEMU user-space static binaries (qemu-user-static) # * rsync # * sudo @@ -22,6 +23,23 @@ build_gnu() { || return } +build_llvm() { + echo "I: Using $(clang --version | head -1)" + echo "I: Using $(ld.lld --version | head -1)" + + mkdir -p "build/llvm-$toolsarch" + echo "I: Generating kernel UAPI headers for ARCH=$kernelarch" + make -C ../linux "ARCH=$kernelarch" \ + "INSTALL_HDR_PATH=$PWD/build/llvm-$toolsarch/linux" headers_install \ + || return + echo "I: Building with ARCH=$arch CROSS_COMPILE=$toolsarch- CC='clang -target $toolsarch' HOSTCC=clang LD=ld.lld $makeflags" + make -C "build/llvm-$toolsarch" -f "$PWD/../klibc/Makefile" -j"$nproc" \ + "ARCH=$arch" "CROSS_COMPILE=$toolsarch-" "KBUILD_SRC=$PWD/../klibc" \ + "CC=clang -target $toolsarch" "HOSTCC=clang" "LD=ld.lld" \ + $makeflags all test \ + || return +} + do_install() { # Set up a tmpfs in case the current filesystem is mounted nodev mkdir -p install @@ -237,27 +255,41 @@ process alpha alpha gnu alpha-linux-gnu alpha #process arm arm gnu arm-linux-gnu arm process arm arm gnu arm-linux-gnueabi arm "CONFIG_AEABI=y" process arm arm gnu arm-linux-gnueabihf arm "CONFIG_AEABI=y CPU_ARCH=armv7-a CPU_TUNE=cortex-a8 CONFIG_KLIBC_THUMB=y" +process arm arm llvm arm-linux-gnueabihf arm "CONFIG_AEABI=y CPU_ARCH=armv7-a CPU_TUNE=cortex-a8 CONFIG_KLIBC_THUMB=y" process arm64 arm64 gnu aarch64-linux-gnu aarch64 +process arm64 arm64 llvm aarch64-linux-gnu aarch64 process i386 x86 gnu i686-linux-gnu i386 +process i386 x86 llvm i686-linux-gnu i386 # ia64 cross-compiler is currently missing in Debian, as is QEMU support. #process ia64 ia64 gnu ia64-linux-gnu ??? process m68k m68k gnu m68k-linux-gnu m68k process mips mips gnu mips-linux-gnu mips +process mips mips llvm mips-linux-gnu mips process mips64 mips gnu mips64-linux-gnuabi64 mips64 +process mips64 mips llvm mips64-linux-gnuabi64 mips64 process mips mips gnu mipsel-linux-gnu mipsel +process mips mips llvm mipsel-linux-gnu mipsel process mips64 mips gnu mips64el-linux-gnuabi64 mips64el +process mips64 mips llvm mips64el-linux-gnuabi64 mips64el process parisc parisc gnu hppa-linux-gnu hppa process ppc powerpc gnu powerpc-linux-gnu ppc +process ppc powerpc llvm powerpc-linux-gnu ppc process ppc64 powerpc gnu powerpc64-linux-gnu ppc64 +process ppc64 powerpc llvm powerpc64-linux-gnu ppc64 process ppc64 powerpc gnu powerpc64le-linux-gnu ppc64le +process ppc64 powerpc llvm powerpc64le-linux-gnu ppc64le process riscv64 riscv gnu riscv64-linux-gnu riscv64 +process riscv64 riscv llvm riscv64-linux-gnu riscv64 # 32-bit s390 is no longer supported in Debian. #process s390 s390 gnu s390-linux-gnu s390 process s390x s390 gnu s390x-linux-gnu s390x +process s390x s390 llvm s390x-linux-gnu s390x process sh sh gnu sh4-linux-gnu sh4 # 32-bit sparc is no longer supported in Debian. #process sparc sparc gnu sparc-linux-gnu sparc process sparc64 sparc gnu sparc64-linux-gnu sparc64 +process sparc64 sparc llvm sparc64-linux-gnu sparc64 process x86_64 x86 gnu x86_64-linux-gnu x86_64 +process x86_64 x86 llvm x86_64-linux-gnu x86_64 echo "I: $0 finished at $(date)" |