Merge pull request #337 from libexpat/qa-sh-classify-compiler

qa.sh: Auto-detect QA_COMPILER
This commit is contained in:
Sebastian Pipping 2019-09-05 12:35:05 +02:00 committed by GitHub
commit 0310b5d3fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 10 deletions

View file

@ -17,7 +17,7 @@ env:
- MODE=cmake-oos
- MODE=cppcheck
- MODE=distcheck
- MODE=qa-sh QA_COMPILER=clang CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address
- MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address
matrix:
include:
@ -26,17 +26,17 @@ matrix:
- os: linux
env: MODE=cmake-oos CMAKE_ARGS="-DEXPAT_ATTR_INFO=ON -DEXPAT_BUILD_FUZZERS=ON -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
- os: linux
env: MODE=qa-sh QA_COMPILER=clang CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_ATTR_INFO=ON
env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CMAKE_ARGS=-DEXPAT_ATTR_INFO=ON
- os: linux
env: MODE=qa-sh QA_COMPILER=clang CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=memory
env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=memory
- os: linux
env: MODE=qa-sh QA_COMPILER=clang CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=undefined
env: MODE=qa-sh CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=undefined
- os: linux
env: MODE=qa-sh QA_COMPILER=gcc CC=gcc CXX=g++ LD=ld QA_PROCESSOR=gcov
env: MODE=qa-sh CC=gcc CXX=g++ LD=ld QA_PROCESSOR=gcov
- os: linux
env: MODE=qa-sh QA_COMPILER=gcc CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ LD=i686-w64-mingw32-ld QA_PROCESSOR=gcov CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Windows -DWIN32=ON -DMINGW=ON -DEXPAT_ATTR_INFO=ON"
env: MODE=qa-sh CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ LD=i686-w64-mingw32-ld QA_PROCESSOR=gcov CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Windows -DWIN32=ON -DMINGW=ON -DEXPAT_ATTR_INFO=ON"
- os: linux
env: MODE=qa-sh QA_COMPILER=gcc CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ LD=i686-w64-mingw32-ld QA_PROCESSOR=gcov CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Windows -DWIN32=ON -DMINGW=ON -DEXPAT_ATTR_INFO=ON -DEXPAT_UNICODE=ON -DEXPAT_UNICODE_WCHAR_T=ON"
env: MODE=qa-sh CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ LD=i686-w64-mingw32-ld QA_PROCESSOR=gcov CMAKE_ARGS="-DCMAKE_SYSTEM_NAME=Windows -DWIN32=ON -DMINGW=ON -DEXPAT_ATTR_INFO=ON -DEXPAT_UNICODE=ON -DEXPAT_UNICODE_WCHAR_T=ON"
addons:
homebrew:

View file

@ -188,7 +188,7 @@ run() {
dump_config() {
cat <<EOF
Configuration:
QA_COMPILER=${QA_COMPILER}
QA_COMPILER=${QA_COMPILER} # auto-detected from \$CC and \$CXX
QA_PROCESSOR=${QA_PROCESSOR} # GCC only
QA_SANITIZER=${QA_SANITIZER} # Clang only
@ -208,8 +208,17 @@ EOF
}
classify_compiler() {
local i
for i in "${CC:-}" "${CXX:-}"; do
[[ "$i" =~ clang ]] && { echo clang ; return ; }
done
echo gcc
}
process_config() {
case "${QA_COMPILER:=gcc}" in
case "${QA_COMPILER:=$(classify_compiler)}" in
clang|gcc) ;;
*) usage; exit 1 ;;
esac
@ -242,7 +251,7 @@ Usage:
$ ./qa.sh [ARG ..]
Environment variables
QA_COMPILER=(clang|gcc) # default: gcc
QA_COMPILER=(clang|gcc) # default: auto-detected
QA_PROCESSOR=(egypt|gcov) # default: gcov
QA_SANITIZER=(address|memory|undefined) # default: address