Reputation: 45
We can check support for specific compiler flags in autoconf
using:
AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
These checks are returning true but clang
doesn't support them.
AX_CHECK_COMPILE_FLAG([-Woverride-init])
AX_CHECK_COMPILE_FLAG([-Wformat-truncation])
How to check support compile flag in autoconf
for clang
?
I change my compiler by
export CC=/usr/bin/clang-6.0
export CXX=/usr/bin/clang++-6.0
and if echo into script $CC
and $CXX
, all is ok.
Upvotes: 3
Views: 2146
Reputation:
If you use clang -Wsome-invalid-option -xc /dev/null
, you'll see that clang emits a warning about an unknown option -Wsome-invalid-option
. The docs for AX_CHECK_COMPILE_FLAG
state that warnings are ignored.
You need to use argument 4 of the macro to include -Werror
:
AX_CHECK_COMPILE_FLAG([-Woverride-init], , , [-Werror])
This check also generates a cache variable, in case you need to override it:
ax_cv_cflags__Werror__Woverride_init
If it's set to yes
, then the compiler supports the flag, else it does not support the flag. You can use this for other flags as well:
AX_CHECK_COMPILE_FLAG([-Wformat-truncation], , , [-Werror])
AS_VAR_IF([ax_cv_cflags__Werror__Wformat_truncation], [yes],
,
[AC_FATAL([-Wformat-truncation not supported])])
The generic form is ax_cv_cflags_{EXTRA}_{FLAG}
for C. Obviously if you're going to use AS_VAR_IF
to check the cache variable, however, you may as well use the second and/or third macro arguments as well, and you can use AC_FATAL
if the compilation flag is required:
AX_CHECK_COMPILE_FLAG([-Wformat-truncation],
,
[AC_FATAL([-Wformat-truncation is required])],
[-Werror])
Upvotes: 8