nut-debian/m4/ax_c_pragmas.m4
2022-07-10 09:23:45 +02:00

984 lines
48 KiB
Plaintext

dnl Check for current compiler support of specific pragmas we use,
dnl e.g. diagnostics management to keep warnings quiet sometimes
AC_DEFUN([AX_C_PRAGMAS], [
if test -z "${nut_have_ax_c_pragmas_seen}"; then
nut_have_ax_c_pragmas_seen="yes"
CFLAGS_SAVED="${CFLAGS}"
CXXFLAGS_SAVED="${CXXFLAGS}"
dnl ### To be sure, bolt the language
AC_LANG_PUSH([C])
dnl # This is expected to fail builds with unknown pragma names on GCC or CLANG at least
AS_IF([test "${CLANG}" = "yes"],
[CFLAGS="${CFLAGS_SAVED} -Werror=pragmas -Werror=unknown-pragmas -Werror=unknown-warning-option"
CXXFLAGS="${CXXFLAGS_SAVED} -Werror=pragmas -Werror=unknown-pragmas -Werror=unknown-warning-option"],
[AS_IF([test "${GCC}" = "yes"],
dnl ### Despite the docs, this dies with lack of (apparently) support for
dnl ### -Wunknown-warning(-options) on all GCC versions I tried (v5-v10)
dnl ### [CFLAGS="${CFLAGS_SAVED} -Werror=pragmas -Werror=unknown-warning"],
[CFLAGS="${CFLAGS_SAVED} -Wall -Wextra -Werror"
CXXFLAGS="${CXXFLAGS_SAVED} -Wall -Wextra -Werror"],
[CFLAGS="${CFLAGS_SAVED} -Wall -Wextra -Werror"
CXXFLAGS="${CXXFLAGS_SAVED} -Wall -Wextra -Werror"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic push and pop (outside functions)],
[ax_cv__pragma__gcc__diags_push_pop_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#pragma GCC diagnostic push
#pragma GCC diagnostic pop
]], [])],
[ax_cv__pragma__gcc__diags_push_pop_besidefunc=yes],
[ax_cv__pragma__gcc__diags_push_pop_besidefunc=no]
)]
)
AC_CACHE_CHECK([for pragma clang diagnostic push and pop (outside functions)],
[ax_cv__pragma__clang__diags_push_pop_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#ifdef __clang__
#endif
#pragma clang diagnostic push
#pragma clang diagnostic pop
]], [])],
[ax_cv__pragma__clang__diags_push_pop_besidefunc=yes],
[ax_cv__pragma__clang__diags_push_pop_besidefunc=no]
)]
)
dnl # Currently our code uses these pragmas as close to lines that cause
dnl # questions from linters as possible. GCC before 4.5 did not allow
dnl # for diag pragmas inside function bodies, but also did not complain
dnl # about messy code as new compilers do. For completeness, we support
dnl # the possibility of defining larger-scoped pragmas around whole
dnl # function bodies. In practice, we don't currently do that so in
dnl # most cases the shorter names (without _INSIDEFUNC) are used with
dnl # that implied meaning.
AC_CACHE_CHECK([for pragma GCC diagnostic push and pop (inside functions)],
[ax_cv__pragma__gcc__diags_push_pop_insidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic push
#pragma GCC diagnostic pop
}
]], [])],
[ax_cv__pragma__gcc__diags_push_pop_insidefunc=yes],
[ax_cv__pragma__gcc__diags_push_pop_insidefunc=no]
)]
)
AC_CACHE_CHECK([for pragma clang diagnostic push and pop (inside functions)],
[ax_cv__pragma__clang__diags_push_pop_insidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#ifdef __clang__
#endif
#pragma clang diagnostic push
#pragma clang diagnostic pop
}
]], [])],
[ax_cv__pragma__clang__diags_push_pop_insidefunc=yes],
[ax_cv__pragma__clang__diags_push_pop_insidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop_insidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_PUSH_POP_INSIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic push and pop inside function bodies])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_PUSH_POP_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic push and pop outside function bodies])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop_besidefunc" = "yes" && test "$ax_cv__pragma__gcc__diags_push_pop_insidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_PUSH_POP], 1, [define if your compiler has #pragma GCC diagnostic push and pop])
])
AS_IF([test "$ax_cv__pragma__clang__diags_push_pop_insidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_CLANG_DIAGNOSTIC_PUSH_POP_INSIDEFUNC], 1, [define if your compiler has #pragma clang diagnostic push and pop inside function bodies])
])
AS_IF([test "$ax_cv__pragma__clang__diags_push_pop_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_CLANG_DIAGNOSTIC_PUSH_POP_BESIDEFUNC], 1, [define if your compiler has #pragma clang diagnostic push and pop outside function bodies])
])
AS_IF([test "$ax_cv__pragma__clang__diags_push_pop_besidefunc" = "yes" && test "$ax_cv__pragma__clang__diags_push_pop_insidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_CLANG_DIAGNOSTIC_PUSH_POP], 1, [define if your compiler has #pragma clang diagnostic push and pop])
])
dnl Test for some clang-specific pragma support: primarily useful for older
dnl clang (3.x) releases, so polluting NUT codebase only when unavoidable.
dnl In most cases, GCC pragmas are usable by both; in a few others, direct
dnl use of `#ifdef __clang__` suffices.
AS_IF([test "${CLANG}" = "yes"], [
AC_CACHE_CHECK([for pragma CLANG diagnostic ignored "-Wunreachable-code-return"],
[ax_cv__pragma__clang__diags_ignored_unreachable_code_return],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma clang diagnostic ignored "-Wunreachable-code-return"
}
]], [])],
[ax_cv__pragma__clang__diags_ignored_unreachable_code_return=yes],
[ax_cv__pragma__clang__diags_ignored_unreachable_code_return=no]
)]
)
AS_IF([test "$ax_cv__pragma__clang__diags_ignored_unreachable_code_return" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_CLANG_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_RETURN], 1, [define if your compiler has #pragma clang diagnostic ignored "-Wunreachable-code-return"])
])
AC_CACHE_CHECK([for pragma CLANG diagnostic ignored "-Wunreachable-code-return" (outside functions)],
[ax_cv__pragma__clang__diags_ignored_unreachable_code_return_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma clang diagnostic ignored "-Wunreachable-code-return"]], [])],
[ax_cv__pragma__clang__diags_ignored_unreachable_code_return_besidefunc=yes],
[ax_cv__pragma__clang__diags_ignored_unreachable_code_return_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__clang__diags_ignored_unreachable_code_return_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_CLANG_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_RETURN_BESIDEFUNC], 1, [define if your compiler has #pragma clang diagnostic ignored "-Wunreachable-code-return" (outside functions)])
])
]) dnl Special pragma support testing for clang
dnl Test common pragmas for GCC (and compatible) compilers
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunused-function"],
[ax_cv__pragma__gcc__diags_ignored_unused_function],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wunused-function"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_unused_function=yes],
[ax_cv__pragma__gcc__diags_ignored_unused_function=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unused_function" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNUSED_FUNCTION], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunused-function"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-nonliteral"],
[ax_cv__pragma__gcc__diags_ignored_format_nonliteral],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_nonliteral=yes],
[ax_cv__pragma__gcc__diags_ignored_format_nonliteral=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_nonliteral" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_NONLITERAL], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-nonliteral"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-nonliteral" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_format_nonliteral_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wformat-nonliteral"]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_nonliteral_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_format_nonliteral_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_nonliteral_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_NONLITERAL_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-nonliteral" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-security"],
[ax_cv__pragma__gcc__diags_ignored_format_security],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wformat-security"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_security=yes],
[ax_cv__pragma__gcc__diags_ignored_format_security=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_security" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_SECURITY], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-security"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-security" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_format_security_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wformat-security"]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_security_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_format_security_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_security_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_SECURITY_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-security" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-truncation"],
[ax_cv__pragma__gcc__diags_ignored_format_truncation],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wformat-truncation"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_truncation=yes],
[ax_cv__pragma__gcc__diags_ignored_format_truncation=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_truncation" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_TRUNCATION], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-truncation"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-truncation" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_format_truncation_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wformat-truncation"]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_truncation_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_format_truncation_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_truncation_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_TRUNCATION_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-truncation" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wstringop-truncation"],
[ax_cv__pragma__gcc__diags_ignored_stringop_truncation],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wstringop-truncation"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_stringop_truncation=yes],
[ax_cv__pragma__gcc__diags_ignored_stringop_truncation=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_stringop_truncation" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_STRINGOP_TRUNCATION], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wstringop-truncation"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wstringop-truncation" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_stringop_truncation_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wstringop-truncation"]], [])],
[ax_cv__pragma__gcc__diags_ignored_stringop_truncation_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_stringop_truncation_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_stringop_truncation_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_STRINGOP_TRUNCATION_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wstringop-truncation" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtype-limits"],
[ax_cv__pragma__gcc__diags_ignored_type_limits],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wtype-limits"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_type_limits=yes],
[ax_cv__pragma__gcc__diags_ignored_type_limits=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_type_limits" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TYPE_LIMITS], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtype-limits"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtype-limits" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_type_limits_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wtype-limits"]], [])],
[ax_cv__pragma__gcc__diags_ignored_type_limits_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_type_limits_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_type_limits_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TYPE_LIMITS_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtype-limits" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Warray-bounds"],
[ax_cv__pragma__gcc__diags_ignored_array_bounds],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Warray-bounds"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_array_bounds=yes],
[ax_cv__pragma__gcc__diags_ignored_array_bounds=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_array_bounds" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_ARRAY_BOUNDS], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Warray-bounds"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Warray-bounds" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_array_bounds_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Warray-bounds"]], [])],
[ax_cv__pragma__gcc__diags_ignored_array_bounds_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_array_bounds_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_array_bounds_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_ARRAY_BOUNDS_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Warray-bounds" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-type-limit-compare"],
[ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wtautological-type-limit-compare"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_TYPE_LIMIT_COMPARE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-type-limit-compare"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-type-limit-compare" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wtautological-type-limit-compare"]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_type_limit_compare_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_TYPE_LIMIT_COMPARE_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-type-limit-compare" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare"],
[ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_CONSTANT_OUT_OF_RANGE_COMPARE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare"]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_constant_out_of_range_compare_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_CONSTANT_OUT_OF_RANGE_COMPARE_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-unsigned-zero-compare"],
[ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wtautological-unsigned-zero-compare"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_UNSIGNED_ZERO_COMPARE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-unsigned-zero-compare"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-unsigned-zero-compare" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wtautological-unsigned-zero-compare"]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_unsigned_zero_compare_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_UNSIGNED_ZERO_COMPARE_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-unsigned-zero-compare" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-compare"],
[ax_cv__pragma__gcc__diags_ignored_tautological_compare],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wtautological-compare"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_compare=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_compare=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_compare" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_COMPARE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-compare"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wtautological-compare" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_tautological_compare_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wtautological-compare"]], [])],
[ax_cv__pragma__gcc__diags_ignored_tautological_compare_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_tautological_compare_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_tautological_compare_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_TAUTOLOGICAL_COMPARE_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wtautological-compare" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wsign-compare"],
[ax_cv__pragma__gcc__diags_ignored_sign_compare],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wsign-compare"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_sign_compare=yes],
[ax_cv__pragma__gcc__diags_ignored_sign_compare=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_sign_compare" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_SIGN_COMPARE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wsign-compare"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wsign-compare" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_sign_compare_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wsign-compare"]], [])],
[ax_cv__pragma__gcc__diags_ignored_sign_compare_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_sign_compare_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_sign_compare_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_SIGN_COMPARE_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wsign-compare" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wsign-conversion"],
[ax_cv__pragma__gcc__diags_ignored_sign_conversion],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wsign-conversion"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_sign_conversion=yes],
[ax_cv__pragma__gcc__diags_ignored_sign_conversion=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_sign_conversion" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_SIGN_CONVERSION], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wsign-conversion"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wsign-conversion" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_sign_conversion_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wsign-conversion"]], [])],
[ax_cv__pragma__gcc__diags_ignored_sign_conversion_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_sign_conversion_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_sign_conversion_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_SIGN_CONVERSION_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wsign-conversion" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code-break"],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_break],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wunreachable-code-break"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_break=yes],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_break=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_break" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_BREAK], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code-break"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code-break" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_break_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wunreachable-code-break"]], [])],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_break_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_break_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_break_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_BREAK_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code-break" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code-return"],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_return],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wunreachable-code-return"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_return=yes],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_return=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_return" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_RETURN], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code-return"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code-return" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_return_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wunreachable-code-return"]], [])],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_return_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_return_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_return_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_RETURN_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code-return" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code"],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wunreachable-code"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code=yes],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wunreachable-code" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wunreachable-code"]], [])],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_unreachable_code_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wunreachable-code" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-overflow"],
[ax_cv__pragma__gcc__diags_ignored_format_overflow],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wformat-overflow"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_overflow=yes],
[ax_cv__pragma__gcc__diags_ignored_format_overflow=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_overflow" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_OVERFLOW], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-overflow"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wformat-overflow" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_format_overflow_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wformat-overflow"]], [])],
[ax_cv__pragma__gcc__diags_ignored_format_overflow_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_format_overflow_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_overflow_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_FORMAT_OVERFLOW_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wformat-overflow" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wcovered-switch-default"],
[ax_cv__pragma__gcc__diags_ignored_covered_switch_default],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wcovered-switch-default"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_covered_switch_default=yes],
[ax_cv__pragma__gcc__diags_ignored_covered_switch_default=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_covered_switch_default" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_COVERED_SWITCH_DEFAULT], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wcovered-switch-default"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wcovered-switch-default" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_covered_switch_default_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wcovered-switch-default"]], [])],
[ax_cv__pragma__gcc__diags_ignored_covered_switch_default_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_covered_switch_default_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_covered_switch_default_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_COVERED_SWITCH_DEFAULT_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wcovered-switch-default" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wextra-semi-stmt"],
[ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wextra-semi-stmt"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt=yes],
[ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_EXTRA_SEMI_STMT], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wextra-semi-stmt"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wextra-semi-stmt" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wextra-semi-stmt"]], [])],
[ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_extra_semi_stmt_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_EXTRA_SEMI_STMT_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wextra-semi-stmt" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wcast-align"],
[ax_cv__pragma__gcc__diags_ignored_cast_align],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wcast-align"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_cast_align=yes],
[ax_cv__pragma__gcc__diags_ignored_cast_align=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cast_align" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_CAST_ALIGN], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wcast-align"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wcast-align" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_cast_align_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wcast-align"]], [])],
[ax_cv__pragma__gcc__diags_ignored_cast_align_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_cast_align_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cast_align_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_CAST_ALIGN_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wcast-align" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wstrict-prototypes"],
[ax_cv__pragma__gcc__diags_ignored_strict_prototypes],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_strict_prototypes=yes],
[ax_cv__pragma__gcc__diags_ignored_strict_prototypes=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_strict_prototypes" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_STRICT_PROTOTYPES], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wstrict-prototypes"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wstrict-prototypes" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_strict_prototypes_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wstrict-prototypes"]], [])],
[ax_cv__pragma__gcc__diags_ignored_strict_prototypes_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_strict_prototypes_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_strict_prototypes_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_STRICT_PROTOTYPES_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wstrict-prototypes" (outside functions)])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wassign-enum"],
[ax_cv__pragma__gcc__diags_ignored_assign_enum],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wassign-enum"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_assign_enum=yes],
[ax_cv__pragma__gcc__diags_ignored_assign_enum=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_assign_enum" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_ASSIGN_ENUM], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wassign-enum"])
])
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-Wassign-enum" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_assign_enum_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wassign-enum"]], [])],
[ax_cv__pragma__gcc__diags_ignored_assign_enum_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_assign_enum_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_assign_enum_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_ASSIGN_ENUM_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wassign-enum" (outside functions)])
])
AC_LANG_POP([C])
dnl ### Series of tests for C++ specific pragmas
AC_LANG_PUSH([C++])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wc++98-compat-pedantic"],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wc++98-compat-pedantic"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic=yes],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_CXX98_COMPAT_PEDANTIC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wc++98-compat-pedantic"])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wc++98-compat-pedantic" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wc++98-compat-pedantic"]], [])],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_CXX98_COMPAT_PEDANTIC_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wc++98-compat-pedantic" (outside functions)])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wc++98-compat"],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wc++98-compat"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat=yes],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_CXX98_COMPAT], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wc++98-compat"])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wc++98-compat" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wc++98-compat"]], [])],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_cxx98_compat_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_CXX98_COMPAT_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wc++98-compat" (outside functions)])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wglobal-constructors"],
[ax_cv__pragma__gcc__diags_ignored_global_constructors],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wglobal-constructors"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_global_constructors=yes],
[ax_cv__pragma__gcc__diags_ignored_global_constructors=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_global_constructors" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_GLOBAL_CONSTRUCTORS], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wglobal-constructors"])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wglobal-constructors" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_global_constructors_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wglobal-constructors"]], [])],
[ax_cv__pragma__gcc__diags_ignored_global_constructors_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_global_constructors_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_global_constructors_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_GLOBAL_CONSTRUCTORS_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wglobal-constructors" (outside functions)])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wexit-time-destructors"],
[ax_cv__pragma__gcc__diags_ignored_exit_time_destructors],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-Wexit-time-destructors"
}
]], [])],
[ax_cv__pragma__gcc__diags_ignored_exit_time_destructors=yes],
[ax_cv__pragma__gcc__diags_ignored_exit_time_destructors=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_exit_time_destructors" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_EXIT_TIME_DESTRUCTORS], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wexit-time-destructors"])
])
AC_CACHE_CHECK([for C++ pragma GCC diagnostic ignored "-Wexit-time-destructors" (outside functions)],
[ax_cv__pragma__gcc__diags_ignored_exit_time_destructors_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-Wexit-time-destructors"]], [])],
[ax_cv__pragma__gcc__diags_ignored_exit_time_destructors_besidefunc=yes],
[ax_cv__pragma__gcc__diags_ignored_exit_time_destructors_besidefunc=no]
)]
)
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_exit_time_destructors_besidefunc" = "yes"],[
AC_DEFINE([HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_EXIT_TIME_DESTRUCTORS_BESIDEFUNC], 1, [define if your compiler has #pragma GCC diagnostic ignored "-Wexit-time-destructors" (outside functions)])
])
AC_LANG_POP([C++])
dnl # Meta-macros for simpler use-cases where we pick
dnl # equivalent-effect macros for different compiler versions
AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop_insidefunc" = "yes"],[
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_security" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_format_nonliteral" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_FORMAT_NONLITERAL], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wformat-nonliteral" or "-Wformat-security" and for push-pop support])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_truncation" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_stringop_truncation" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_FORMAT_TRUNCATION], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wformat-truncation" or "-Werror=stringop-truncation" and for push-pop support])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_break" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wunreachable-code(-break)" and for push-pop support])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_CXX98_COMPAT], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wc++98-compat(-pedantic)" and for push-pop support])
])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_push_pop_besidefunc" = "yes"],[
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_security" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_format_nonliteral" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_FORMAT_NONLITERAL_BESIDEFUNC], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wformat-nonliteral" or "-Wformat-security" and for push-pop support (outside function bodies)])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_format_truncation" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_stringop_truncation" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_FORMAT_TRUNCATION_BESIDEFUNC], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wformat-truncation" or "-Werror=stringop-truncation" and for push-pop support (outside function bodies)])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_unreachable_code_break" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_UNREACHABLE_CODE_BESIDEFUNC], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wunreachable-code(-break)" and for push-pop support (outside function bodies)])
])
AS_IF([test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat_pedantic" = "yes" || test "$ax_cv__pragma__gcc__diags_ignored_cxx98_compat" = "yes" ],[
AC_DEFINE([HAVE_PRAGMAS_FOR_GCC_DIAGNOSTIC_IGNORED_CXX98_COMPAT_BESIDEFUNC], 1, [define if your compiler has pragmas for GCC diagnostic ignored "-Wc++98-compat(-pedantic)" and for push-pop support (outside function bodies)])
])
])
dnl ### Sanity check if the CLI options actually work:
AC_CACHE_CHECK([for pragma BOGUSforTest],
[ax_cv__pragma__bogus],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma BOGUSforTest
}
]], [])],
[ax_cv__pragma__bogus=yes],
[ax_cv__pragma__bogus=no]
)]
)
AC_CACHE_CHECK([for pragma BOGUSforTest (outside functions)],
[ax_cv__pragma__bogus_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma BOGUSforTest]], [])],
[ax_cv__pragma__bogus_besidefunc=yes],
[ax_cv__pragma__bogus_besidefunc=no]
)]
)
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-WBOGUSforTest"],
[ax_cv__pragma__bogus_diag],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[void func(void) {
#pragma GCC diagnostic ignored "-WBOGUSforTest"
}
]], [])],
[ax_cv__pragma__bogus_diag=yes],
[ax_cv__pragma__bogus_diag=no]
)]
)
AC_CACHE_CHECK([for pragma GCC diagnostic ignored "-WBOGUSforTest" (outside functions)],
[ax_cv__pragma__bogus_diag_besidefunc],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#pragma GCC diagnostic ignored "-WBOGUSforTest"]], [])],
[ax_cv__pragma__bogus_diag_besidefunc=yes],
[ax_cv__pragma__bogus_diag_besidefunc=no]
)]
)
AS_IF([test "${ax_cv__pragma__bogus}" != "no"],
[AC_MSG_WARN([A bogus test that was expected to fail did not! ax_cv__pragma__bogus=$ax_cv__pragma__bogus (not 'no')])])
AS_IF([test "${ax_cv__pragma__bogus_besidefunc}" != "no"],
[AC_MSG_WARN([A bogus test that was expected to fail did not! ax_cv__pragma__bogus_besidefunc=$ax_cv__pragma__bogus_besidefunc (not 'no')])])
AS_IF([test "${ax_cv__pragma__bogus_diag}" != "no"],
[AC_MSG_WARN([A bogus test that was expected to fail did not! ax_cv__pragma__bogus_diag=$ax_cv__pragma__bogus_diag (not 'no')])])
AS_IF([test "${ax_cv__pragma__bogus_diag_besidefunc}" != "no"],
[AC_MSG_WARN([A bogus test that was expected to fail did not! ax_cv__pragma__bogus_diag_besidefunc=$ax_cv__pragma__bogus_diag_besidefunc (not 'no')])])
CFLAGS="${CFLAGS_SAVED}"
CXXFLAGS="${CXXFLAGS_SAVED}"
fi
])
AC_DEFUN([AX_C_PRINTF_STRING_NULL], [
if test -z "${nut_have_ax_c_printf_string_null_seen}"; then
nut_have_ax_c_printf_string_null_seen="yes"
AC_REQUIRE([AX_RUN_OR_LINK_IFELSE])dnl
dnl ### To be sure, bolt the language
AC_LANG_PUSH([C])
AC_CACHE_CHECK([for practical support to pritnf("%s", NULL)],
[ax_cv__printf_string_null],
[AX_RUN_OR_LINK_IFELSE(
[AC_LANG_PROGRAM([dnl
#include <stdio.h>
#include <strings.h>
], [dnl
char buf[128];
char *s = NULL;
int res = snprintf(buf, sizeof(buf), "%s", s);
buf[sizeof(buf)-1] = '\0';
if (res < 0) {
printf(stderr, "FAILED to snprintf() a NULL string argument");
exit 1;
}
if (buf[0] == '\0')
printf(stderr, "RETURNED empty string from snprintf() with a NULL string argument");
exit 0;
}
if (strcasestr(buf, 'null') == NULL)
printf(stderr, "RETURNED some string from snprintf() with a NULL string argument: '%s'", buf);
exit 0;
}
printf(stderr, "SUCCESS: RETURNED a string that contains something like 'null' from snprintf() with a NULL string argument: '%s'", buf);
exit 0;
])],
[ax_cv__printf_string_null=yes],
[ax_cv__printf_string_null=no]
)]
)
AS_IF([test "$ax_cv__printf_string_null" = "yes"],[
AC_DEFINE([HAVE_PRINTF_STRING_NULL], 1, [define if your libc can printf("%s", NULL) sanely])
])
AC_LANG_POP([C])
fi
])