MINOR: build: force CC to set a return code when probing options
gcc returns non zero code if an option is not supported (tested
from 6.5 to 10.2).
$ gcc -Wfoobar -E -xc - -o /dev/null < /dev/null > /dev/null 2>&1 ; echo $?
1
clang always return 0 if an option in not recognized unless
-Werror is also passed, preventing a correct probing of options
supported by the compiler (tested with clang 6.0.1 to 11.1.0).
$ clang -Wfoobar -E -xc - -o /dev/null < /dev/null > /dev/null 2>&1 ; echo $?
0
$ clang -Werror -Wfoobar -E -xc - -o /dev/null < /dev/null > /dev/null 2>&1 ; echo $?
1
Please note today this is not visible since clang 11 exit with SIGABRT
or with return code 1 on older version due to bad file descriptor from
file descriptor handling
$ clang -Wfoobar -E -xc - -o /dev/null < /dev/null 2>&0 ; echo $?
Aborted (core dumped)
134
$ clang -Wfoobar -E -xc - -o /dev/null < /dev/null ; echo $?
warning: unknown warning option '-Wfoobar'; did you mean '-Wformat'? [-Wunknown-warning-option]
1 warning generated.
0
$ clang-11 -Werror -Wfoobar -E -xc - -o /dev/null < /dev/null ; echo $?
error: unknown warning option '-Wfoobar'; did you mean '-Wformat'? [-Werror,-Wunknown-warning-option]
1
This specific issue is being tracked with clang upstream in https://bugs.llvm.org/show_bug.cgi?id=49463
1 file changed