X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/82443642d255cc2fd61644cf3fef2c9622bed245..5215919366833a0a37bb321189ad9d22398ab260:/configure.ac diff --git a/configure.ac b/configure.ac index 4cc9ef91..83e20acb 100644 --- a/configure.ac +++ b/configure.ac @@ -72,6 +72,18 @@ if test "$enable_gcc_warnings" = yes; then -Wshadow -Wstrict-prototypes' warn_cxx='-Wnoexcept' AC_LANG_PUSH([C]) + # Clang supports many of GCC's -W options, but only issues warnings + # on the ones it does not recognize. In that case, gl_WARN_ADD + # thinks the option is supported, and unknown options are then added + # to CFLAGS. But then, when -Werror is added in the test suite for + # instance, the warning about the unknown option turns into an + # error. + # + # This should be addressed by gnulib's gl_WARN_ADD, but in the + # meanwhile, turn warnings about unknown options into errors in + # CFLAGS, and restore CFLAGS after the tests. + save_CFLAGS=$CFLAGS + gl_WARN_ADD([-Werror=unknown-warning-option], [CFLAGS]) for i in $warn_common $warn_c; do gl_WARN_ADD([$i], [WARN_CFLAGS]) @@ -80,24 +92,29 @@ if test "$enable_gcc_warnings" = yes; then # Warnings for the test suite only. gl_WARN_ADD([-Wundef], [WARN_CFLAGS_TEST]) gl_WARN_ADD([-pedantic], [WARN_CFLAGS_TEST]) + CFLAGS=$save_CFLAGS AC_LANG_POP([C]) AC_LANG_PUSH([C++]) + save_CXXFLAGS=$CXXFLAGS + gl_WARN_ADD([-Werror=unknown-warning-option], [CXXFLAGS]) for i in $warn_common $warn_cxx; do gl_WARN_ADD([$i], [WARN_CXXFLAGS]) done - gl_WARN_ADD([ -Wzero-as-null-pointer-constant], [WARN_CXXFLAGS], + gl_WARN_ADD([-Wzero-as-null-pointer-constant], [WARN_CXXFLAGS], [AC_LANG_PROGRAM([], [nullptr])]) gl_WARN_ADD([-Werror], [WERROR_CXXFLAGS]) # Warnings for the test suite only. gl_WARN_ADD([-Wundef], [WARN_CXXFLAGS_TEST]) gl_WARN_ADD([-pedantic], [WARN_CXXFLAGS_TEST]) + CXXFLAGS=$save_CXXFLAGS AC_LANG_POP([C++]) fi BISON_TEST_FOR_WORKING_C_COMPILER BISON_TEST_FOR_WORKING_CXX_COMPILER +BISON_C_COMPILER_POSIXLY_CORRECT AC_ARG_ENABLE([yacc], [AC_HELP_STRING([--disable-yacc], @@ -115,6 +132,7 @@ AC_SUBST([YACC_SCRIPT]) AC_SUBST([YACC_LIBRARY]) # Checks for programs. +AM_MISSING_PROG([DOT], [dot]) AC_PROG_LEX $LEX_IS_FLEX || AC_MSG_ERROR([Flex is required]) AC_PROG_YACC