Branch
Hash :
7b089321
Author :
Date :
2025-01-01T09:24:36
maint: run 'make update-copyright'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
# ansi-c++.m4
# serial 13
dnl Copyright (C) 2002-2003, 2005, 2010-2025 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This file is offered as-is, without any warranty.
dnl From Bruno Haible.
# Sets CXX_CHOICE to 'yes' or 'no', depending on the preferred use of C++.
# The default is 'yes'. If the configure.ac contains a definition of the
# macro gl_CXX_CHOICE_DEFAULT_NO, then the default is 'no'. In both cases,
# the user can change the value by passing the option --disable-cxx or
# --enable-cxx, respectively.
AC_DEFUN([gl_CXX_CHOICE],
[
AC_MSG_CHECKING([whether to use C++])
dnl Plus signs are supported in AC_ARG_ENABLE starting with autoconf-2.66.
m4_version_prereq([2.66],
[m4_ifdef([gl_CXX_CHOICE_DEFAULT_NO],
[AC_ARG_ENABLE([c++],
[ --enable-c++ also build C++ sources],
[CXX_CHOICE="$enableval"],
[CXX_CHOICE=no])],
[AC_ARG_ENABLE([c++],
[ --disable-c++ do not build C++ sources],
[CXX_CHOICE="$enableval"],
[CXX_CHOICE=yes])])],
[m4_ifdef([gl_CXX_CHOICE_DEFAULT_NO],
[AC_ARG_ENABLE([cxx],
[ --enable-cxx also build C++ sources],
[CXX_CHOICE="$enableval"],
[CXX_CHOICE=no])],
[AC_ARG_ENABLE([cxx],
[ --disable-cxx do not build C++ sources],
[CXX_CHOICE="$enableval"],
[CXX_CHOICE=yes])])])
AC_MSG_RESULT([$CXX_CHOICE])
AC_SUBST([CXX_CHOICE])
])
# gl_PROG_ANSI_CXX([ANSICXX_VARIABLE], [ANSICXX_CONDITIONAL])
# Sets ANSICXX_VARIABLE to the name of a sufficiently ANSI C++ compliant
# compiler, or to "no" if none is found.
# Defines the Automake condition ANSICXX_CONDITIONAL to true if such a compiler
# was found, or to false if not.
AC_DEFUN([gl_PROG_ANSI_CXX],
[
AC_REQUIRE([gl_CXX_CHOICE])
m4_if([$1], [CXX], [],
[gl_saved_CXX="$CXX"])
if test "$CXX_CHOICE" = no; then
CXX=no
fi
if test -z "$CXX"; then
if test -n "$CCC"; then
CXX="$CCC"
else
AC_CHECK_TOOLS([CXX],
[g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC],
[:])
fi
fi
if test "$CXX" != no; then
dnl Use a modified version of AC_PROG_CXX_WORKS that does not exit
dnl upon failure.
AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works])
AC_LANG_PUSH([C++])
AC_ARG_VAR([CXX], [C++ compiler command])
AC_ARG_VAR([CXXFLAGS], [C++ compiler flags])
echo 'int main () { return 0; }' > conftest.$ac_ext
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
gl_cv_prog_ansicxx_works=yes
if (./conftest; exit) 2>/dev/null; then
gl_cv_prog_ansicxx_cross=no
else
gl_cv_prog_ansicxx_cross=yes
fi
else
gl_cv_prog_ansicxx_works=no
fi
rm -fr conftest*
AC_LANG_POP([C++])
AC_MSG_RESULT([$gl_cv_prog_ansicxx_works])
if test $gl_cv_prog_ansicxx_works = no; then
CXX=no
else
dnl Test for namespaces.
dnl We don't bother supporting pre-ANSI-C++ compilers.
AC_MSG_CHECKING([whether the C++ compiler supports namespaces])
AC_LANG_PUSH([C++])
cat <<EOF > conftest.$ac_ext
#include <iostream>
namespace test { using namespace std; }
std::ostream* ptr;
int main () { return 0; }
EOF
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
gl_cv_prog_ansicxx_namespaces=yes
else
gl_cv_prog_ansicxx_namespaces=no
fi
rm -fr conftest*
AC_LANG_POP([C++])
AC_MSG_RESULT([$gl_cv_prog_ansicxx_namespaces])
if test $gl_cv_prog_ansicxx_namespaces = no; then
CXX=no
fi
fi
fi
m4_if([$1], [CXX], [],
[$1="$CXX"
CXX="$gl_saved_CXX"])
AC_SUBST([$1])
AM_CONDITIONAL([$2], [test "$$1" != no])
if test "$$1" != no; then
dnl This macro invocation resolves an automake error:
dnl /usr/local/share/automake-1.11/am/depend2.am: am__fastdepCXX does not appear in AM_CONDITIONAL
dnl /usr/local/share/automake-1.11/am/depend2.am: The usual way to define 'am__fastdepCXX' is to add 'AC_PROG_CXX'
dnl /usr/local/share/automake-1.11/am/depend2.am: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
_AM_DEPENDENCIES([CXX])
dnl Determine a good default for the CXXFLAGS variable.
AC_LANG_PUSH([C++])
_AC_LANG_COMPILER_GNU
if test $ac_compiler_gnu = yes; then
GXX=yes
else
GXX=
fi
_AC_PROG_CXX_G
AC_LANG_POP([C++])
else
AM_CONDITIONAL([am__fastdepCXX], [false])
fi
])
# gl_ANSI_CXX
# Sets CXX to the name of a sufficiently ANSI C++ compliant compiler, or to
# "no" if none is found.
# Defines the Automake condition ANSICXX to true if such a compiler was found,
# or to false if not.
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])
])