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
|
# ansi-c++.m4 serial 12
dnl Copyright (C) 2002-2003, 2005, 2010-2021 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 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_save_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_save_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])
])
|