diff --git a/tests-clang.yml b/tests-clang.yml index a3f9353..e27d3a3 100644 --- a/tests-clang.yml +++ b/tests-clang.yml @@ -23,9 +23,14 @@ # Required for fedora-flags: - annobin - redhat-rpm-config + # Required for toolchains: + - glibc-static + - libstdc++-static + - libcxx-static tests: - rhbz_1657544 - rhbz_1647130 - rhbz_1794936 - llvm-toolchain + - toolchains - fedora-flags diff --git a/toolchains/hello.c b/toolchains/hello.c new file mode 100644 index 0000000..f5c80a9 --- /dev/null +++ b/toolchains/hello.c @@ -0,0 +1,5 @@ +#include +int main(int argc, char **argv) { + printf("Hello World\n"); + return 0; +} diff --git a/toolchains/hello.cpp b/toolchains/hello.cpp new file mode 100644 index 0000000..bda4087 --- /dev/null +++ b/toolchains/hello.cpp @@ -0,0 +1,5 @@ +#include +int main(int argc, char **argv) { + std::cout << "Hello World\n"; + return 0; +} diff --git a/toolchains/runtest.sh b/toolchains/runtest.sh new file mode 100755 index 0000000..c452ddd --- /dev/null +++ b/toolchains/runtest.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +set pipefail + +status=0 + +test_toolchain() { + + toolchain=$@ + args="" + + while [ $# -gt 0 ]; do + case $1 in + clang) + compiler=$1 + src=hello.c + ;; + clang++) + compiler=$1 + src=hello.cpp + ;; + compiler-rt) + args="$args -rtlib=$1" + ;; + libc++) + args="$args -stdlib=$1" + ;; + lld) + args="$args -fuse-ld=$1" + ;; + *) + args="$args $1" + ;; + esac + shift + done + + cmd="$compiler $args $src" + rm -f a.out + echo "* $toolchain" + echo " command: $cmd" + if $cmd && ./a.out | grep -q 'Hello World'; then + echo " PASS" + else + echo " FAIL" + status=1 + fi +} + +for compiler in clang clang++; do + for rtlib in "" compiler-rt; do + for linker in "" lld; do + for cxxlib in "" libc++; do + if [ "$compiler" = "clang" -a -n "$cxxlib" ]; then + continue + fi + for args in "" -static; do + # Skip known failures + # TODO: Fix these + if [[ "$args" = "-static" && ( "$rtlib" = "compiler-rt" || "$cxxlib" = "libc++" ) ]]; then + continue + fi + test_toolchain $compiler $rtlib $linker $cxxlib $args + done + done + done + done +done + +exit $status