From de7331a0759815a4e1d5e736aa84e80ef9cd04a0 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 30 Jan 2013 15:52:34 +0100 Subject: [PATCH] build: avoid clang's colored diagnostics in the test suite The syncline tests, which try to recognize compiler diagnostics, are confused by escapes for colors. * configure.ac (warn_tests): New, to factor the warnings for both C and C++ tests. Add -fno-color-diagnostics to it. * tests/local.at (AT_TEST_TABLES_AND_PARSE): Do not remove glue together compiler flags. Conflicts: configure.ac --- configure.ac | 24 +++++++++++++++++++----- tests/local.at | 4 ++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index e6403f4b..bf1847bf 100644 --- a/configure.ac +++ b/configure.ac @@ -84,6 +84,13 @@ if test "$enable_gcc_warnings" = yes; then -Wformat -Wpointer-arith -Wwrite-strings' warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes' warn_cxx='-Wnoexcept' + # Warnings for the test suite only. + # + # -fno-color-diagnostics: Clang's use of colors in the error + # messages is confusing the tests looking at the compiler's output + # (e.g., synclines.at). + warn_tests='-Wundef -pedantic -fno-color-diagnostics' + 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 @@ -111,12 +118,13 @@ if test "$enable_gcc_warnings" = yes; then AS_VAR_APPEND([WARN_CFLAGS], [" $WARN_CFLAGS_TEST"]) # Warnings for the test suite only. - gl_WARN_ADD([-Wundef], [WARN_CFLAGS_TEST]) - gl_WARN_ADD([-pedantic], [WARN_CFLAGS_TEST]) + for i in $warn_tests; + do + gl_WARN_ADD([$i], [WARN_CFLAGS_TEST]) + done CFLAGS=$save_CFLAGS AC_LANG_POP([C]) - AC_LANG_PUSH([C++]) save_CXXFLAGS=$CXXFLAGS gl_WARN_ADD([-Werror=unknown-warning-option], [CXXFLAGS]) @@ -128,8 +136,14 @@ if test "$enable_gcc_warnings" = yes; then [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]) + for i in $warn_tests; + do + gl_WARN_ADD([$i], [WARN_CXXFLAGS_TEST]) + done + # Clang++ 3.2+ reject C code generated by Flex. + gl_WARN_ADD([-Wno-null-conversion], [WARN_NO_NULL_CONVERSION_CXXFLAGS]) + # Variants break strict aliasing analysis. + gl_WARN_ADD([-fno-strict-aliasing], [NO_STRICT_ALIAS_CXXFLAGS]) CXXFLAGS=$save_CXXFLAGS AC_LANG_POP([C++]) fi diff --git a/tests/local.at b/tests/local.at index 68a7ecaa..be24f902 100644 --- a/tests/local.at +++ b/tests/local.at @@ -889,8 +889,8 @@ $9 # There is no "" around `wc` since some indent the result. m4_bmatch([$4], [%define lr.type canonical-lr], [if test 32767 -lt `wc -l < input.c`; then - CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'` - CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'` + CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'` + CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'` fi]) AT_COMPILE([[input]]) -- 2.45.2