On 2020-08-18 I encountered a weird interaction between gl_ANSI_CXX (used when the C++ compiler is optional) and AC_PROG_CXX (used when the C++ compiler is mandatory). I scratched my head against it. Zack Weinberg scratched his head against it. The difference is that Zack found the solution :-)
2020-12-07 Bruno Haible <br...@clisp.org> Correct interaction between gl_ANSI_CXX and AC_PROG_CXX. Suggested by Zack Weinberg in <https://savannah.gnu.org/support/?110294>. * m4/ansi-c++.m4 (gl_ANSI_CXX): Mark AC_PROG_CXX as provided. * modules/uchar-c++-tests: Revert the workaround from 2020-08-18. diff --git a/m4/ansi-c++.m4 b/m4/ansi-c++.m4 index f93c324..1b81996 100644 --- a/m4/ansi-c++.m4 +++ b/m4/ansi-c++.m4 @@ -1,4 +1,4 @@ -# ansi-c++.m4 serial 11 +# ansi-c++.m4 serial 12 dnl Copyright (C) 2002-2003, 2005, 2010-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -145,4 +145,8 @@ EOF AC_DEFUN([gl_ANSI_CXX], [ gl_PROG_ANSI_CXX([CXX], [ANSICXX]) + dnl This line is needed in order to avoid trouble with Autoconf. It makes + dnl sure that Autoconf does not insert expansions of AC_PROG_CXX at random + dnl places. See <https://savannah.gnu.org/support/?110294>. + m4_provide([AC_PROG_CXX]) ]) diff --git a/modules/uchar-c++-tests b/modules/uchar-c++-tests index 351bdff..2cbc331 100644 --- a/modules/uchar-c++-tests +++ b/modules/uchar-c++-tests @@ -16,16 +16,15 @@ if test "$CXX" != no; then dnl have the <cuchar> header file from C++11. AC_CACHE_CHECK([whether the C++ compiler has <cuchar>], [gl_cv_cxxheader_cuchar], - [dnl We can't use AC_LANG_PUSH([C++]) and AC_LANG_POP([C++]) here, due to - dnl an autoconf bug <https://savannah.gnu.org/support/?110294>. - echo '#include <cuchar>' > conftest.cpp - gl_command="$CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp" - if AC_TRY_EVAL([gl_command]); then - gl_cv_cxxheader_cuchar=yes - else - gl_cv_cxxheader_cuchar=no - fi - rm -fr conftest* + [AC_LANG_PUSH([C++]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <cuchar>]], + [[]]) + ], + [gl_cv_cxxheader_cuchar=yes], + [gl_cv_cxxheader_cuchar=no]) + AC_LANG_POP([C++]) ]) else gl_cv_cxxheader_cuchar=no