]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/aclocal.m4
compare.cc (test01): Add using declarations.
[thirdparty/gcc.git] / libstdc++-v3 / aclocal.m4
CommitLineData
b2dad0e3
BK
1dnl aclocal.m4 generated automatically by aclocal 1.4
2
3dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
4dnl This file is free software; the Free Software Foundation
5dnl gives unlimited permission to copy and/or distribute it,
6dnl with or without modifications, as long as this notice is preserved.
7
8dnl This program is distributed in the hope that it will be useful,
9dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11dnl PARTICULAR PURPOSE.
12
13dnl
14dnl Initialize configure bits.
15dnl
16dnl Define OPTLEVEL='-O2' if new inlining code present.
17dnl
18dnl GLIBCPP_CONFIGURE
19AC_DEFUN(GLIBCPP_CONFIGURE, [
20 dnl Default to --enable-multilib
21 AC_ARG_ENABLE(multilib,
22 [ --enable-multilib build hella library versions (default)],
23 [case "${enableval}" in
24 yes) multilib=yes ;;
25 no) multilib=no ;;
26 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
27 esac], [multilib=yes])dnl
28
29 dnl We may get other options which we dont document:
30 dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
31 if test "[$]{srcdir}" = "."; then
32 if test "[$]{with_target_subdir}" != "."; then
33 glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
34 else
35 glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
36 fi
37 else
38 glibcpp_basedir="[$]{srcdir}/$1"
39 fi
40 AC_SUBST(glibcpp_basedir)
41
b2dad0e3
BK
42 AM_INIT_AUTOMAKE(libstdc++, 2.90.8)
43
28861379
BK
44 # Never versions of autoconf add an underscore to these functions.
45 # Prevent future problems ...
46 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
47 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
48 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
49 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
5780a46b
BK
50
51# AC_PROG_CC
52
b2dad0e3
BK
53# FIXME: We temporarily define our own version of AC_PROG_CC. This is
54# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
55# are probably using a cross compiler, which will not be able to fully
56# link an executable. This should really be fixed in autoconf
57# itself.
58
59AC_DEFUN(LIB_AC_PROG_CC,
60[AC_BEFORE([$0], [AC_PROG_CPP])dnl
61dnl Fool anybody using AC_PROG_CC.
62AC_PROVIDE([AC_PROG_CC])
63AC_CHECK_PROG(CC, gcc, gcc)
64if test -z "$CC"; then
65 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
66 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
67fi
68
69AC_PROG_CC_GNU
70
71if test $ac_cv_prog_gcc = yes; then
72 GCC=yes
73dnl Check whether -g works, even if CFLAGS is set, in case the package
74dnl plays around with CFLAGS (such as to build both debugging and
75dnl normal versions of a library), tasteless as that idea is.
76 ac_test_CFLAGS="${CFLAGS+set}"
77 ac_save_CFLAGS="$CFLAGS"
78 CFLAGS=
79 AC_PROG_CC_G
80 if test "$ac_test_CFLAGS" = set; then
81 CFLAGS="$ac_save_CFLAGS"
82 elif test $ac_cv_prog_cc_g = yes; then
83 CFLAGS="-g -O2"
84 else
85 CFLAGS="-O2"
86 fi
87else
88 GCC=
89 test "${CFLAGS+set}" = set || CFLAGS="-g"
90fi
91])
92
93LIB_AC_PROG_CC
94
5780a46b
BK
95# Can't just call these here as g++ requires libstc++ to be built....
96# AC_PROG_CXX
97
b2dad0e3
BK
98# Likewise for AC_PROG_CXX.
99AC_DEFUN(LIB_AC_PROG_CXX,
100[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
101dnl Fool anybody using AC_PROG_CXX.
102AC_PROVIDE([AC_PROG_CXX])
103AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
104test -z "$CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
105
106AC_PROG_CXX_GNU
107
108if test $ac_cv_prog_gxx = yes; then
109 GXX=yes
110dnl Check whether -g works, even if CXXFLAGS is set, in case the package
111dnl plays around with CXXFLAGS (such as to build both debugging and
112dnl normal versions of a library), tasteless as that idea is.
113 ac_test_CXXFLAGS="${CXXFLAGS+set}"
114 ac_save_CXXFLAGS="$CXXFLAGS"
115 CXXFLAGS=
116 AC_PROG_CXX_G
117 if test "$ac_test_CXXFLAGS" = set; then
118 CXXFLAGS="$ac_save_CXXFLAGS"
119 elif test $ac_cv_prog_cxx_g = yes; then
120 CXXFLAGS="-g -O2"
121 else
122 CXXFLAGS="-O2"
123 fi
124else
125 GXX=
126 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
127fi
128])
129
130LIB_AC_PROG_CXX
131
5780a46b
BK
132 AC_CHECK_TOOL(AS, as)
133 AC_CHECK_TOOL(AR, ar)
134 AC_CHECK_TOOL(RANLIB, ranlib, :)
135
136 AC_PROG_INSTALL
b2dad0e3 137
5780a46b 138 AM_MAINTAINER_MODE
b2dad0e3 139
5780a46b
BK
140 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
141 # at least currently, we never actually build a program, so we never
142 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
143 # fails, because we are probably configuring with a cross compiler
144 # which cant create executables. So we include AC_EXEEXT to keep
145 # automake happy, but we dont execute it, since we dont care about
146 # the result.
147 if false; then
148 AC_EXEEXT
149 fi
b2dad0e3 150
5780a46b
BK
151 # configure.host sets the following important variables
152 # glibcpp_cflags - host specific C compiler flags
153 # glibcpp_cxxflags - host specific C++ compiler flags
154 glibcpp_cflags=
155 glibcpp_cxxflags=
b2dad0e3 156
5780a46b
BK
157 . [$]{glibcpp_basedir}/configure.host
158
159 case [$]{glibcpp_basedir} in
160 /* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
161 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
162 esac
b2dad0e3 163
5780a46b
BK
164 GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
165 GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
166 AC_SUBST(GLIBCPP_CFLAGS)
167 AC_SUBST(GLIBCPP_CXXFLAGS)
b2dad0e3
BK
168])
169
170
171dnl
8bd636c5 172dnl Check to see if g++ can compile this library, and if so, if any version-
c470c17d
BK
173dnl specific precautions need to be taken.
174dnl
175dnl GLIBCPP_CHECK_COMPILER_VERSION
176AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
c470c17d
BK
177 # Sanity check that g++ is capable of dealing with v-3.
178 AC_MSG_CHECKING([for g++ that will successfully compile this code])
179 AC_EGREP_CPP([ok], [
180 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
181 ok
182 #endif
183 ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above"))
184 AC_MSG_RESULT($gpp_satisfactory)
185])
186
187
188dnl
189dnl Test for newer compiler features, or features that are present in newer
d3a12960
BK
190dnl compiler version but not older compiler versions should be placed
191dnl here.
b2dad0e3 192dnl
c470c17d
BK
193dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
194dnl
7f586614
BK
195dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
196dnl new inlining code or the new system_header pragma will die on -Werror.
197dnl Leave it out by default and use maint-mode to use it.
b2dad0e3 198dnl
c470c17d
BK
199dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
200dnl compiler supports it.
201dnl GLIBCPP_CHECK_COMPILER_FEATURES
202AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
a4e99046
PE
203 # All these tests are for C++; save the language and the compiler flags.
204 # The CXXFLAGS thing is suspicious, but based on similar bits
205 # found in GLIBCPP_CONFIGURE.
206 AC_LANG_SAVE
207 AC_LANG_CPLUSPLUS
208 ac_test_CXXFLAGS="${CXXFLAGS+set}"
209 ac_save_CXXFLAGS="$CXXFLAGS"
a4e99046 210
7f586614
BK
211 # Check for maintainer-mode bits.
212 if test x"$USE_MAINTAINER_MODE" = xno; then
213 WERROR=''
8bd636c5 214 else
7f586614 215 WERROR='-Werror'
8bd636c5
PE
216 fi
217
d3a12960
BK
218 # Check for more sophisticated diagnostic control.
219 AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
0517cb99 220 CXXFLAGS='-Werror -fdiagnostics-show-location=once'
a4e99046
PE
221 AC_TRY_COMPILE(, [int foo;
222 ], [ac_gabydiags=yes], [ac_gabydiags=no])
223 if test "$ac_test_CXXFLAGS" = set; then
224 CXXFLAGS="$ac_save_CXXFLAGS"
225 else
226 # this is the suspicious part
227 CXXFLAGS=''
228 fi
229 if test "$ac_gabydiags" = "yes"; then
c470c17d 230 WFMT_FLAGS='-fdiagnostics-show-location=once'
a4e99046
PE
231 fi
232 AC_MSG_RESULT($ac_gabydiags)
233
c470c17d
BK
234 # Check for -ffunction-sections -fdata-sections
235 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
0517cb99 236 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
c470c17d
BK
237 AC_TRY_COMPILE(, [int foo;
238 ], [ac_fdsections=yes], [ac_fdsections=no])
239 if test "$ac_test_CXXFLAGS" = set; then
240 CXXFLAGS="$ac_save_CXXFLAGS"
241 else
242 # this is the suspicious part
243 CXXFLAGS=''
244 fi
245 if test "$ac_fdsections" = "yes"; then
246 SECTION_FLAGS='-ffunction-sections -fdata-sections'
247 fi
248 AC_MSG_RESULT($ac_fdsections)
249
a4e99046 250 AC_LANG_RESTORE
8bd636c5 251 AC_SUBST(WERROR)
c470c17d
BK
252 AC_SUBST(WFMT_FLAGS)
253 AC_SUBST(SECTION_FLAGS)
b2dad0e3
BK
254])
255
c470c17d
BK
256
257dnl
421173e6
PE
258dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
259dnl the native linker is in use, all variables will be defined to something
260dnl safe (like an empty string).
261dnl
262dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
263dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
c470c17d 264dnl
c470c17d
BK
265dnl GLIBCPP_CHECK_LINKER_FEATURES
266AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
421173e6
PE
267 # If we're not using GNU ld, then there's no point in even trying these
268 # tests. Check for that first. We should have already tested for gld
269 # by now (in libtool), but require it now just to be safe...
a9117427
BK
270 SECTION_LDFLAGS=''
271 OPT_LDFLAGS=''
421173e6 272 AC_REQUIRE([AC_PROG_LD])
a9117427
BK
273 if test "$ac_cv_prog_gnu_ld" = "yes"; then
274 # GNU ld it is! Joy and bunny rabbits!
421173e6
PE
275
276 # All these tests are for C++; save the language and the compiler flags.
277 # Need to do this so that g++ won't try to link in libstdc++
278 ac_test_CFLAGS="${CFLAGS+set}"
279 ac_save_CFLAGS="$CFLAGS"
a9117427
BK
280# CFLAGS='-x c++ -Wl,--gc-sections'
281#XXX
282 CFLAGS=''
421173e6
PE
283
284 # Check for -Wl,--gc-sections
e466dc8a
BK
285 # XXX This test is broken at the moment, as symbols required for
286 # linking are now in libsupc++ (not built yet.....). In addition,
a9117427
BK
287 # this test has cored on solaris in the past. In addition,
288 # --gc-sections doesn't really work at the moment (keeps on discarding
289 # used sections, first .eh_frame and now some of the glibc sections for
290 # iconv). Bzzzzt. Thanks for playing, maybe next time.
421173e6
PE
291 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
292 AC_TRY_RUN([
293 int main(void)
294 {
a9117427
BK
295 try { throw 1; }
296 catch (...) { };
421173e6
PE
297 return 0;
298 }
e466dc8a 299 ], [ac_sectionLDflags=yes],[ac_sectionLFflags=no], [ac_sectionLDflags=yes])
421173e6
PE
300 if test "$ac_test_CFLAGS" = set; then
301 CFLAGS="$ac_save_CFLAGS"
302 else
303 # this is the suspicious part
304 CFLAGS=''
305 fi
306 if test "$ac_sectionLDflags" = "yes"; then
a9117427
BK
307# SECTION_LDFLAGS='-Wl,--gc-sections'
308#XXX
309 SECTION_LDFLAGS=''
421173e6
PE
310 fi
311 AC_MSG_RESULT($ac_sectionLDflags)
a9117427 312
421173e6 313 OPT_LDFLAGS='-Wl,-O1'
c470c17d 314
421173e6 315 fi
c470c17d 316 AC_SUBST(SECTION_LDFLAGS)
421173e6 317 AC_SUBST(OPT_LDFLAGS)
c470c17d
BK
318])
319
320
b2dad0e3 321dnl
11fc1858 322dnl Check to see if the (math function) argument passed is
38bd7296
BK
323dnl 1) declared when using the c++ compiler
324dnl 2) has "C" linkage
325dnl
326dnl Define HAVE_CARGF etc if "cargf" is declared and links
327dnl
328dnl argument 1 is name of function to check
329dnl
330dnl ASSUMES argument is a math function with ONE parameter
331dnl
332dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
333AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
38bd7296 334 AC_MSG_CHECKING([for $1 declaration])
421173e6
PE
335 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
336 AC_LANG_SAVE
337 AC_LANG_CPLUSPLUS
338 AC_TRY_COMPILE([#include <math.h>],
339 [ $1(0);],
340 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
341 AC_LANG_RESTORE
342 ])
343 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
344 if test x$glibcpp_cv_func_$1_use = x"yes"; then
38bd7296
BK
345 AC_CHECK_FUNCS($1)
346 fi
347])
348
349
350dnl
11fc1858 351dnl Check to see if the (math function) argument passed is
38bd7296
BK
352dnl 1) declared when using the c++ compiler
353dnl 2) has "C" linkage
354dnl
355dnl Define HAVE_CARGF etc if "cargf" is declared and links
356dnl
357dnl argument 1 is name of function to check
358dnl
359dnl ASSUMES argument is a math function with TWO parameters
360dnl
361dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
362AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
38bd7296 363 AC_MSG_CHECKING([for $1 declaration])
421173e6
PE
364 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
365 AC_LANG_SAVE
366 AC_LANG_CPLUSPLUS
367 AC_TRY_COMPILE([#include <math.h>],
368 [ $1(0, 0);],
369 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
370 AC_LANG_RESTORE
371 ])
372 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
373 if test x$glibcpp_cv_func_$1_use = x"yes"; then
38bd7296
BK
374 AC_CHECK_FUNCS($1)
375 fi
376])
377
378
379dnl
11fc1858 380dnl Check to see if the (math function) argument passed is
38bd7296
BK
381dnl 1) declared when using the c++ compiler
382dnl 2) has "C" linkage
383dnl
384dnl Define HAVE_CARGF etc if "cargf" is declared and links
385dnl
386dnl argument 1 is name of function to check
387dnl
388dnl ASSUMES argument is a math function with THREE parameters
389dnl
390dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
391AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
38bd7296 392 AC_MSG_CHECKING([for $1 declaration])
421173e6
PE
393 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
394 AC_LANG_SAVE
395 AC_LANG_CPLUSPLUS
396 AC_TRY_COMPILE([#include <math.h>],
397 [ $1(0, 0, 0);],
398 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
399 AC_LANG_RESTORE
400 ])
401 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
402 if test x$glibcpp_cv_func_$1_use = x"yes"; then
38bd7296
BK
403 AC_CHECK_FUNCS($1)
404 fi
405])
406
407
11fc1858
BK
408dnl
409dnl Because the builtins are picky picky picky about the arguments they take,
410dnl do an explict linkage tests here.
411dnl Check to see if the (math function) argument passed is
412dnl 1) declared when using the c++ compiler
413dnl 2) has "C" linkage
414dnl
415dnl Define HAVE_CARGF etc if "cargf" is declared and links
416dnl
417dnl argument 1 is name of function to check
418dnl
419dnl ASSUMES argument is a math function with ONE parameter
420dnl
421dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
422AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
11fc1858 423 AC_MSG_CHECKING([for $1 declaration])
421173e6
PE
424 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
425 AC_LANG_SAVE
426 AC_LANG_CPLUSPLUS
427 AC_TRY_COMPILE([#include <math.h>],
428 [ $1(0);],
429 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
430 AC_LANG_RESTORE
431 ])
432 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
433 if test x$glibcpp_cv_func_$1_use = x"yes"; then
11fc1858 434 AC_MSG_CHECKING([for $1 linkage])
421173e6 435 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
11fc1858 436 AC_TRY_LINK([#include <math.h>],
421173e6
PE
437 [ $1(0);],
438 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
439 ])
440 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
441 if test x$glibcpp_cv_func_$1_link = x"yes"; then
11fc1858
BK
442 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
443 AC_DEFINE_UNQUOTED(${ac_tr_func})
444 fi
445 fi
446])
447
448
449dnl
450dnl Check to see what builtin math functions are supported
451dnl
452dnl check for __builtin_abs
453dnl check for __builtin_fabsf
454dnl check for __builtin_fabs
455dnl check for __builtin_fabl
456dnl check for __builtin_labs
457dnl check for __builtin_sqrtf
458dnl check for __builtin_sqrtl
459dnl check for __builtin_fsqrt
460dnl check for __builtin_sinf
461dnl check for __builtin_sin
462dnl check for __builtin_sinl
463dnl check for __builtin_cosf
464dnl check for __builtin_cos
465dnl check for __builtin_cosl
466dnl
467dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
468AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
469 dnl Test for builtin math functions.
470 dnl These are made in gcc/c-common.c
471 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
472 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
473 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
474 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
475 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
476
477 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
478 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt)
479 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
480
481 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
482 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
483 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
484
485 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
486 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
487 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
488
489 dnl There is, without a doubt, a more elegant way to have these
490 dnl names exported so that they won't be stripped out of acconfig.h by
491 dnl autoheader. I leave this as an exercise to somebody less frustrated
492 dnl than I.... please email the libstdc++ list if you can figure out a
493 dnl more elegant approach (see autoconf/acgen.m4 and specifically
494 dnl AC_CHECK_FUNC for things to steal.)
495 dummyvar=no
496 if test x$dummyvar = x"yes"; then
497 AC_DEFINE(HAVE___BUILTIN_ABS)
498 AC_DEFINE(HAVE___BUILTIN_LABS)
499 AC_DEFINE(HAVE___BUILTIN_COS)
500 AC_DEFINE(HAVE___BUILTIN_COSF)
501 AC_DEFINE(HAVE___BUILTIN_COSL)
502 AC_DEFINE(HAVE___BUILTIN_FABS)
503 AC_DEFINE(HAVE___BUILTIN_FABSF)
504 AC_DEFINE(HAVE___BUILTIN_FABSL)
505 AC_DEFINE(HAVE___BUILTIN_SIN)
506 AC_DEFINE(HAVE___BUILTIN_SINF)
507 AC_DEFINE(HAVE___BUILTIN_SINL)
508 AC_DEFINE(HAVE___BUILTIN_FSQRT)
509 AC_DEFINE(HAVE___BUILTIN_SQRTF)
510 AC_DEFINE(HAVE___BUILTIN_SQRTL)
511 fi
512])
513
514
2f103494
BK
515dnl
516dnl Check to see what the underlying c library or math library is like.
38bd7296
BK
517dnl These checks need to do two things:
518dnl 1) make sure the name is declared when using the c++ compiler
519dnl 2) make sure the name has "C" linkage
520dnl This might seem like overkill but experience has shown that it's not...
2f103494
BK
521dnl
522dnl Define HAVE_CARGF etc if "cargf" is found.
523dnl
524dnl GLIBCPP_CHECK_MATH_SUPPORT
525AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
38bd7296
BK
526 ac_test_CXXFLAGS="${CXXFLAGS+set}"
527 ac_save_CXXFLAGS="$CXXFLAGS"
4f76382d 528 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
aac350aa
BK
529
530 dnl Check libm
2f103494 531 AC_CHECK_LIB(m, sin, libm="-lm")
38bd7296 532 ac_save_LIBS="$LIBS"
2f103494
BK
533 LIBS="$LIBS $libm"
534
38bd7296
BK
535 dnl Although not math functions, needed and for some reason checked here.
536 AC_CHECK_FUNCS(strtof strtold)
537
538 dnl Check to see if certain C math functions exist.
539 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
540 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
541 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
542 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
543 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
544 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
545 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
546
547 dnl Check to see if basic C math functions have float versions.
548 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
549 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
550 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosf)
551 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinf)
552 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanf)
553 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
554 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceilf)
555 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosf)
556 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshf)
557 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
558 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
559 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorf)
560 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
561 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
562 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
563 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
564 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
565 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
566 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
567 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinf)
568 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhf)
569 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
570 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanf)
571 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhf)
572 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
573 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
574
575 dnl Check to see if basic C math functions have long double versions.
576 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
577 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
11fc1858 578 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
38bd7296
BK
579 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosl)
580 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinl)
581 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanl)
582 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
583 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceill)
584 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosl)
585 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshl)
586 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
587 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
588 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorl)
589 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
590 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
591 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
592 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
593 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
594 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
595 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
11fc1858 596 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinl)
38bd7296
BK
597 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhl)
598 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
599 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanl)
600 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhl)
601 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
602 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
603
604 dnl Some runtimes have these functions with a preceding underscore. Please
605 dnl keep this sync'd with the one above. And if you add any new symbol,
606 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
607 dnl Check to see if certain C math functions exist.
38bd7296
BK
608 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinf)
609 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnan)
610 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finite)
611 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysign)
612 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincos)
613 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fpclass)
614 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_qfpclass)
615
616 dnl Check to see if basic C math functions have float versions.
617 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanf)
618 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinff)
619 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosf)
620 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinf)
621 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanf)
622 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2f)
623 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceilf)
624 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosf)
625 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshf)
626 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expf)
627 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsf)
628 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorf)
629 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodf)
630 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpf)
631 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpf)
632 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logf)
633 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10f)
634 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modff)
635 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powf)
636 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinf)
637 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhf)
638 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtf)
639 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanf)
640 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhf)
641 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosf)
642 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitef)
643
644 dnl Check to see if basic C math functions have long double versions.
645 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanl)
646 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinfl)
11fc1858 647 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysignl)
38bd7296
BK
648 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosl)
649 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinl)
650 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanl)
651 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2l)
652 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceill)
653 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosl)
654 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshl)
655 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expl)
656 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsl)
657 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorl)
658 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodl)
659 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpl)
660 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpl)
661 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logl)
662 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10l)
663 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modfl)
664 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powl)
11fc1858 665 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinl)
38bd7296
BK
666 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhl)
667 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtl)
668 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanl)
669 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhl)
670 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosl)
671 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitel)
672
673 LIBS="$ac_save_LIBS"
674 CXXFLAGS="$ac_save_CXXFLAGS"
2f103494
BK
675])
676
677
678dnl
679dnl Check to see if there is native support for complex
680dnl
681dnl Don't compile bits in math/* if native support exits.
682dnl
683dnl Define USE_COMPLEX_LONG_DOUBLE etc if "cargf" is found.
684dnl
685dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
686AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
687 dnl Check for complex versions of math functions of platform.
688 AC_CHECK_HEADERS([complex.h])
689 AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \
690 clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \
11fc1858
BK
691 ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf copysignf)
692
693 dnl Compile the long double complex functions only if the function
694 dnl provides the non-complex long double functions that are needed.
695 dnl Currently this includes copysignl and atan2l, which should be
696 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
697 USE_COMPLEX_LONG_DOUBLE=no
698 if test x$ac_cv_func_atan2l = x"yes" \
699 && test x$ac_cv_func_copysignl = x"yes"; then
700 USE_COMPLEX_LONG_DOUBLE=yes
701 AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \
702 csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l)
703 fi
704
2f103494
BK
705 AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
706])
707
54fa7415 708
e974e9cc
BK
709dnl Check to see what architecture we are compiling for. Also, if
710dnl architecture-specific flags are required for compilation, add them here.
b2dad0e3 711dnl
b2dad0e3
BK
712dnl GLIBCPP_CHECK_CPU
713AC_DEFUN(GLIBCPP_CHECK_CPU, [
e974e9cc
BK
714 AC_MSG_CHECKING([for cpu config directory])
715# Currently unused, but could be useful.
716# CPU_FLAGS=
5780a46b 717 case "${target_cpu}" in
b2dad0e3
BK
718 alpha*)
719 cpu_include_dir="config/cpu/alpha"
720 ;;
721 arm*)
722 cpu_include_dir="config/cpu/arm"
723 ;;
735bce7e
RH
724 ia64)
725 cpu_include_dir="config/cpu/ia64"
726 ;;
bf93f43b 727 i386)
b2dad0e3 728 cpu_include_dir="config/cpu/i386"
bf93f43b
BK
729 ;;
730 i486 | i586 | i686 | i786)
731 cpu_include_dir="config/cpu/i486"
b2dad0e3
BK
732 ;;
733 powerpc | rs6000)
734 cpu_include_dir="config/cpu/powerpc"
735 ;;
736 sparc64 | ultrasparc)
737 cpu_include_dir="config/cpu/sparc/sparc64"
738 ;;
739 sparc*)
740 cpu_include_dir="config/cpu/sparc/sparc32"
741 ;;
742 *)
743 cpu_include_dir="config/cpu/generic"
744 ;;
745 esac
746 AC_MSG_RESULT($cpu_include_dir)
b2dad0e3
BK
747])
748
749
e974e9cc
BK
750dnl Check to see what OS we are compiling for. Also, if os-specific flags
751dnl are required for compilation, add them here.
752dnl
753dnl GLIBCPP_CHECK_OS
754AC_DEFUN(GLIBCPP_CHECK_OS, [
755 AC_MSG_CHECKING([for os config directory])
756# Currently unused, but could be useful.
757# OS_FLAGS=
758 case "${target_os}" in
759 aix*)
760 os_include_dir="config/os/aix"
761 ;;
762 bsd* | freebsd*)
763 os_include_dir="config/os/bsd"
764 ;;
765 linux*)
766 os_include_dir="config/os/gnu-linux"
767 ;;
768 irix*)
769 os_include_dir="config/os/irix"
770 ;;
771 solaris2.5*)
772 os_include_dir="config/os/solaris/solaris2.5"
773 ;;
774 solaris2.6*)
775 os_include_dir="config/os/solaris/solaris2.6"
776 ;;
777 solaris2.7* | solaris2.8*)
778 os_include_dir="config/os/solaris/solaris2.7"
779 ;;
780 *)
781 os_include_dir="config/os/generic"
782 ;;
783 esac
784 AC_MSG_RESULT($os_include_dir)
1364053c 785 AC_LINK_FILES($os_include_dir/bits/os_defines.h, bits/os_defines.h)
e974e9cc
BK
786])
787
788
b2dad0e3
BK
789dnl
790dnl Check to see what the underlying c library's interface to ctype looks
791dnl like. Bits of locale rely on things like isspace, toupper, etc. This
792dnl stuff makes sure the right bits from the clibrary get called.
793dnl
794dnl Depending on what is found, select various configure/*/bits/ctype_base.h
795dnl Depending on what is found, select various configure/*/ctype.cc
796dnl
797dnl GLIBCPP_CHECK_CTYPE
798AC_DEFUN(GLIBCPP_CHECK_CTYPE, [
799 AC_CHECK_HEADER(ctype.h, [
800
801 dnl If doesn't match any specified, go with defaults.
802 ctype_default=yes
803
9a200b0a
PE
804 dnl Test for <ctype> functionality -- GNU/Linux
805 AC_MSG_CHECKING([<ctype> for GNU/Linux])
b2dad0e3
BK
806 AC_TRY_COMPILE([#include <ctype.h>],
807 [int
808 foo (int a)
809 { return _ISspace + _ISprint + _IScntrl + _ISupper + _ISlower + _ISalpha \
810 + _ISdigit + _ISpunct + _ISxdigit + _ISalnum + _ISgraph \
811 + __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}], \
812 ctype_linux=yes, ctype_linux=no)
813 AC_MSG_RESULT($ctype_linux)
814 if test $ctype_linux = "yes"; then
e974e9cc 815 ctype_include_dir="config/os/gnu-linux"
b2dad0e3
BK
816 ctype_default=no
817 fi
818
6ad50467 819 dnl Test for <ctype> functionality -- FreeBSD 4.0
65dd21b7 820 if test $ctype_default = "yes"; then
9a200b0a 821 AC_MSG_CHECKING([<ctype> for FreeBSD 4.0])
7b267e3e
BK
822 AC_TRY_COMPILE([#include <ctype.h>],
823 [int
824 foo (int a)
825 { return _CTYPE_S + _CTYPE_R + _CTYPE_C + _CTYPE_U + _CTYPE_L + _CTYPE_A \
826 + _CTYPE_D + _CTYPE_P + _CTYPE_X + _CTYPE_G ;}], \
827 ctype_bsd=yes, ctype_bsd=no)
828 AC_MSG_RESULT($ctype_bsd)
829 if test $ctype_bsd = "yes"; then
e974e9cc 830 ctype_include_dir="config/os/bsd"
6ad50467
BK
831 ctype_default=no
832 fi
65dd21b7 833 fi
6ad50467
BK
834
835 dnl Test for <ctype> functionality -- FreeBSD 3.4
65dd21b7 836 if test $ctype_default = "yes"; then
9a200b0a 837 AC_MSG_CHECKING([<ctype> for FreeBSD 3.4])
6ad50467
BK
838 AC_TRY_COMPILE([#include <ctype.h>],
839 [int
840 foo (int a)
841 { return _S + _R + _C + _U + _L + _A \
842 + _D + _P + _X + _G + __istype (a, 0);}], \
843 ctype_freebsd34=yes, ctype_freebsd34=no)
844 AC_MSG_RESULT($ctype_freebsd34)
845 if test $ctype_freebsd34 = "yes"; then
e974e9cc 846 ctype_include_dir="config/os/bsd"
7b267e3e
BK
847 ctype_default=no
848 fi
65dd21b7 849 fi
7b267e3e 850
9a200b0a 851 dnl Test for <ctype> functionality -- Solaris 2.6 and up
b2dad0e3 852 if test $ctype_default = "yes"; then
9a200b0a 853 AC_MSG_CHECKING([<ctype> for Solaris 2.6,7,8])
b2dad0e3
BK
854 AC_TRY_COMPILE([#include <ctype.h>],
855 [int
856 foo (int a)
857 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
858 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
859 + __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}], \
860 ctype_solaris=yes, ctype_solaris=no)
861 AC_MSG_RESULT($ctype_solaris)
862
863 if test $ctype_solaris = "yes"; then
864 AC_MSG_CHECKING([ for version])
865 AC_LANG_CPLUSPLUS
866 AC_TRY_COMPILE([#include <ctype.h>],
867 [typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;],\
868 ctype_solaris26=yes, ctype_solaris26=no)
869 AC_LANG_C
870 if test $ctype_solaris26 = "yes"; then
e974e9cc 871 ctype_include_dir="config/os/solaris/solaris2.6"
9a200b0a 872 AC_MSG_RESULT([Solaris 2.6])
b2dad0e3
BK
873 ctype_default=no
874 else
e974e9cc 875 ctype_include_dir="config/os/solaris/solaris2.7"
9a200b0a 876 AC_MSG_RESULT([Solaris 7,8])
b2dad0e3
BK
877 ctype_default=no
878 fi
879 fi
880 fi
881
9a200b0a 882 dnl Test for <ctype> functionality -- Solaris 2.5.1
b2dad0e3 883 if test $ctype_default = "yes"; then
9a200b0a 884 AC_MSG_CHECKING([<ctype> for Solaris 2.5.1])
b2dad0e3
BK
885 AC_TRY_COMPILE([#include <ctype.h>],
886 [int
887 foo (int a)
888 { return _U + _L + _N + _S + _P + _C + _X + _B \
889 + __ctype[a];}], \
890 ctype_solaris25=yes, ctype_solaris25=no)
891 AC_MSG_RESULT($ctype_solaris25)
892 if test $ctype_solaris25 = "yes"; then
e974e9cc 893 ctype_include_dir="config/os/solaris/solaris2.5"
b2dad0e3
BK
894 ctype_default=no
895 fi
896 fi
897
9a200b0a 898 dnl Test for <ctype> functionality -- AIX
b2dad0e3 899 if test $ctype_default = "yes"; then
9a200b0a 900 AC_MSG_CHECKING([<ctype> for AIX])
b2dad0e3
BK
901 AC_TRY_COMPILE([#include <ctype.h>],
902 [int
903 foo (int a)
904 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
905 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
906 + _VALC('a') + _IS('c', 0);}], \
907 ctype_aix=yes, ctype_aix=no)
908 AC_MSG_RESULT($ctype_aix)
909 if test $ctype_aix = "yes"; then
e974e9cc 910 ctype_include_dir="config/os/aix"
b2dad0e3
BK
911 ctype_default=no
912 fi
913 fi
914
915 dnl Test for <ctype> functionality -- newlib
916 if test $ctype_default = "yes"; then
9a200b0a 917 AC_MSG_CHECKING([<ctype> for newlib])
b2dad0e3
BK
918 AC_TRY_COMPILE([#include <ctype.h>],
919 [int
920 foo (int a)
921 { return _U + _L + _N + _S + _P + _C + _X + _B \
922 + _ctype_[a];}], \
923 ctype_newlib=yes, ctype_newlib=no)
924 AC_MSG_RESULT($ctype_newlib)
925 if test $ctype_newlib = "yes"; then
926 ctype_include_dir="config/newlib"
927 ctype_default=no
928 fi
929 fi
930
931 if test $ctype_default = "yes"; then
e974e9cc 932 ctype_include_dir="config/os/generic"
b2dad0e3
BK
933 AC_MSG_WARN("Using default ctype headers.")
934 fi
e974e9cc
BK
935
936 AC_LINK_FILES($ctype_include_dir/bits/ctype_base.h, bits/ctype_base.h)
937 AC_LINK_FILES($ctype_include_dir/bits/ctype_inline.h, bits/ctype_inline.h)
938 AC_LINK_FILES($ctype_include_dir/bits/ctype_noninline.h, \
939 bits/ctype_noninline.h)
b2dad0e3
BK
940 ])
941])
942
943
b2dad0e3
BK
944dnl
945dnl Check to see if this target can enable the wchar_t parts of libstdc++.
946dnl
947dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
948dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
b2dad0e3
BK
949dnl
950dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
951AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
3840fa2a
BK
952
953 dnl Sanity check for existence of ISO C9X headers for extended encoding.
954 AC_CHECK_HEADER(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
955 AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
956
957 dnl Only continue checking if the ISO C9X headers exist.
958 if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then
959
960 dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
961 AC_MSG_CHECKING([for mbstate_t])
962 AC_TRY_COMPILE([#include <wchar.h>],
963 [mbstate_t teststate;],
964 use_native_mbstatet=yes, use_native_mbstatet=no)
965 AC_MSG_RESULT($use_native_mbstatet)
966 if test x"$use_native_mbstatet" = xno; then
967 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
968 fi
b2dad0e3 969
3840fa2a
BK
970 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
971 dnl numeric_limits can instantiate type_traits<wchar_t>
972 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
973 AC_TRY_COMPILE([#include <wchar.h>],
974 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
975 has_wchar_minmax=yes, has_wchar_minmax=no)
976 AC_MSG_RESULT($has_wchar_minmax)
b2dad0e3 977
3840fa2a
BK
978 dnl Test wchar.h for WEOF, which is what we use to determine whether
979 dnl to specialize for char_traits<wchar_t> or not.
980 AC_MSG_CHECKING([for WEOF])
981 AC_TRY_COMPILE([
982 #include <wchar.h>
983 #include <stddef.h>],
984 [wint_t i = WEOF;],
985 has_weof=yes, has_weof=no)
986 AC_MSG_RESULT($has_weof)
987
988 dnl Tests for wide character functions used in char_traits<wchar_t>.
ae658d47
BK
989 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset \
990 wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
3840fa2a
BK
991
992 AC_MSG_CHECKING([for ISO C9X wchar_t support])
ae658d47
BK
993 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
994 && test x"$ac_wfuncs" = xyes; then
3840fa2a
BK
995 ac_isoC9X_wchar_t=yes
996 else
997 ac_isoC9X_wchar_t=no
998 fi
999 AC_MSG_RESULT($ac_isoC9X_wchar_t)
1000
1001 dnl Use iconv for wchar_t to char conversions. As such, check for
1002 dnl X/Open Portability Guide, version 2 features (XPG2).
1003 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
ae658d47
BK
1004 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
1005 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
1006 ac_XPG2funcs=yes, ac_XPG2funcs=no)
3840fa2a
BK
1007
1008 AC_MSG_CHECKING([for XPG2 wchar_t support])
ae658d47
BK
1009 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
1010 && test x"$ac_XPG2funcs" = xyes; then
3840fa2a
BK
1011 ac_XPG2_wchar_t=yes
1012 else
1013 ac_XPG2_wchar_t=no
1014 fi
1015 AC_MSG_RESULT($ac_XPG2_wchar_t)
1016
1017 dnl At the moment, only enable wchar_t specializations if all the
1018 dnl above support is present.
1019 AC_MSG_CHECKING([for enabled wchar_t specializations])
ae658d47
BK
1020 if test x"$ac_isoC9X_wchar_t" = xyes \
1021 && test x"$ac_XPG2_wchar_t" = xyes; then
3840fa2a
BK
1022 libinst_wstring_la="libinst-wstring.la"
1023 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
1024 AC_MSG_RESULT("yes")
1025 else
1026 libinst_wstring_la=""
1027 AC_MSG_RESULT("no")
1028 fi
1029 AC_SUBST(libinst_wstring_la)
1030
b2dad0e3 1031 else
3840fa2a
BK
1032 AC_MSG_WARN([<wchar.h> not found])
1033 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
b2dad0e3 1034 fi
b2dad0e3
BK
1035])
1036
1037
1038dnl
1039dnl Check to see if this version of GNU C++ is afflicted by bugs in
1040dnl __complex__ float support.
1041dnl
1042dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
1043dnl
2f103494
BK
1044dnl Check to see if this version of GNU C++ is afflicted by bugs in
1045dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
1046dnl gcc-2.95.x when using the library, unless we define the default copy
1047dnl ctor in the specializations of complex<>.
1048dnl
1049dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
1050dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT
1051AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [
b2dad0e3 1052 AC_REQUIRE([AC_PROG_CXX])
2f103494
BK
1053
1054 AC_MSG_CHECKING([for GNU C++ __complex__ support])
1055 AC_CACHE_VAL(glibcpp_cv_complex, [
1056 AC_LANG_SAVE
1057 AC_LANG_CPLUSPLUS
1058 AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
1059 dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
1060 [ dcomplex x; f(x); ],
1061 glibcpp_cv_complex=ok,
1062 glibcpp_cv_complex=buggy
1063 )
1064 AC_LANG_RESTORE
1065 ])
1066 AC_MSG_RESULT($glibcpp_cv_complex)
1067 if test $glibcpp_cv_complex = buggy; then
1068 AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
1069 fi
1070
b2dad0e3
BK
1071 AC_MSG_CHECKING([for GNU C++ __complex__ float support])
1072 AC_CACHE_VAL(glibcpp_cv_float_complex, [
1073 AC_LANG_SAVE
1074 AC_LANG_CPLUSPLUS
1075 rm -f conftest.h
1076 cat > conftest.h <<EOB
1077 //
1078 // Check for buggy __complex__ that causes ICE in most versions of egcs
1079 // and gcc-2.95.x on certain platforms (eg., x86-win32).
1080 //
1081 // See http://egcs.cygnus.com/ml/gcc-bugs/1999-07/msg00845.html for
1082 // more info on the bug itself.
1083 //
1084 struct
1085 float_complex
1086 {
1087 __complex__ float m_value;
1088 float_complex (float = 0.0f, float = 0.0f);
1089 float_complex (__complex__ float val) : m_value (val) {}
1090 float_complex foo (const float_complex &val)
1091 { return float_complex (~val.m_value); }
1092 };
1093EOB
1094 AC_TRY_COMPILE([#include "conftest.h"], ,
1095 glibcpp_cv_float_complex=ok,
1096 glibcpp_cv_float_complex=buggy
1097 )
1098 AC_LANG_RESTORE
1099 ])
1100 AC_MSG_RESULT($glibcpp_cv_float_complex)
1101 if test $glibcpp_cv_float_complex = buggy; then
1102 AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
1103 fi
1104])
1105
1106
b2dad0e3 1107dnl
8bd636c5 1108dnl Check for special debugging mode; not for production use.
b2dad0e3
BK
1109dnl
1110dnl GLIBCPP_ENABLE_DEBUG
1111dnl --enable-debug sets '-ggdb -O0'.
1112dnl --disable-debug sets '-g' and whatever optimization options the
1113dnl compiler can handle.
7f586614 1114dnl + --enable-maintainer-mode automatically defaults this to on.
b2dad0e3
BK
1115dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
1116dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
1117dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1118dnl defaults to `no'.
1119AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
1120define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
1121AC_ARG_ENABLE(debug,
1122changequote(<<, >>)dnl
1123<< --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
1124changequote([, ])dnl
5780a46b 1125[case "${enableval}" in
b2dad0e3
BK
1126 yes) enable_debug=yes ;;
1127 no) enable_debug=no ;;
1128 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
1129 esac],
1130enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
5780a46b 1131
b2dad0e3 1132dnl Option parsed, now set things appropriately
5780a46b 1133case "${enable_debug}" in
cde28f0d 1134 yes)
c470c17d 1135 DEBUG_FLAGS='-O0 -ggdb'
cde28f0d 1136 ;;
f3b004d8 1137 no)
c470c17d 1138 DEBUG_FLAGS='-g'
f3b004d8 1139 ;;
b2dad0e3 1140esac
c470c17d 1141AC_SUBST(DEBUG_FLAGS)
b2dad0e3
BK
1142])
1143
1144
dcfa0bc8
PE
1145dnl
1146dnl Check for "unusual" flags to pass to the compiler while building.
1147dnl
1148dnl GLIBCPP_ENABLE_CXX_FLAGS
1149dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
1150dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
1151dnl Somehow this same set of flags must be passed when [re]building
1152dnl libgcc.
1153dnl --disable-cxx-flags passes nothing.
32a4595e
PE
1154dnl + See http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00131.html
1155dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00284.html
1156dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00035.html
dcfa0bc8 1157dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
32a4595e
PE
1158dnl If "default flags" is an empty string (or "none"), the effect is
1159dnl the same as --disable or --enable=no.
dcfa0bc8
PE
1160AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
1161define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1162AC_ARG_ENABLE(cxx-flags,
1163changequote(<<, >>)dnl
1164<< --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
1165 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
1166changequote([, ])dnl
1167[case "x$enableval" in
5780a46b
BK
1168 xyes)
1169 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1170 xno|x)
1171 enable_cxx_flags='' ;;
1172 *)
1173 enable_cxx_flags="$enableval" ;;
dcfa0bc8 1174 esac],
5780a46b
BK
1175enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
1176
32a4595e 1177dnl Thinko on my part during design. This kludge is the workaround.
5780a46b
BK
1178if test "$enable_cxx_flags" = "none"; then
1179 enable_cxx_flags='';
1180fi
1181
32a4595e
PE
1182dnl Run through flags (either default or command-line) and set anything
1183dnl extra (e.g., #defines) that must accompany particular g++ options.
dcfa0bc8
PE
1184if test -n "$enable_cxx_flags"; then
1185 for f in $enable_cxx_flags; do
1186 case "$f" in
991a40fc 1187 -fhonor-std) ;;
dcfa0bc8
PE
1188 -*) ;;
1189 *) # and we're trying to pass /what/ exactly?
1190 AC_MSG_ERROR([compiler flags start with a -]) ;;
1191 esac
1192 done
1193fi
1194EXTRA_CXX_FLAGS="$enable_cxx_flags"
1195AC_SUBST(EXTRA_CXX_FLAGS)
1196])
1197
1198
b2dad0e3 1199dnl
8bd636c5 1200dnl Check for which I/O library to use: libio, or something specific.
b2dad0e3
BK
1201dnl
1202dnl GLIBCPP_ENABLE_CSTDIO
1203dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
1204dnl
1205dnl default is libio
1206dnl
1207AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1208 AC_MSG_CHECKING([for cstdio to use])
1209 AC_ARG_ENABLE(cstdio,
1fd2f510
BK
1210 [ --enable-cstdio enable GNU libio for target io package. (default)
1211 --enable-cstdio=LIB use LIB target-speific io package.],
b2dad0e3
BK
1212 if test x$enable_cstdio = xno; then
1213 enable_cstdio=libio
1214 fi,
1215 enable_cstdio=libio)
1216
1217 enable_cstdio_flag=$enable_cstdio
1218
1219 dnl Check if a valid thread package
1220 case x${enable_cstdio_flag} in
dd75251f
BK
1221 xlibio | x | xno | xnone | xyes)
1222 # default
1223 CSTDIO_H=config/c_io_libio.h
1224 CSTDIO_CC=config/c_io_libio.cc
1225 AC_MSG_RESULT(libio)
1226
1227 # see if we are on a system with libio native (ie, linux)
1228 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1229
1230 # Need to check and see what version of glibc is being used. If
1231 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1232 # compile most of libio for linux systems.
1233 if test x$has_libio = x"yes"; then
1234 case "$target" in
1235 *-*-linux*)
1236 AC_MSG_CHECKING([for glibc version >= 2.2])
1237 AC_EGREP_CPP([ok], [
47f634cb 1238 #include <features.h>
dd75251f
BK
1239 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1240 ok
1241 #endif
1242 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1243 AC_MSG_RESULT($glibc_satisfactory)
1244 ;;
1245 esac
1246
f133a43e
BK
1247 # XXX at the moment, admit defeat and force the recompilation
1248 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1249 glibc_satisfactory=no
1250
dd75251f 1251 if test x$glibc_satisfactory = x"yes"; then
dd75251f
BK
1252 need_libio=no
1253 need_xtra_libio=no
1254 need_wlibio=no
1255 else
dd75251f
BK
1256 need_libio=yes
1257 need_xtra_libio=yes
1258 # bkoz XXX need to add checks to enable this
1259 need_wlibio=yes
1260 fi
1261
1262 # Using libio, but <libio.h> doesn't exist on the target system. . .
1263 else
dd75251f
BK
1264 need_libio=yes
1265 need_xtra_libio=no
1266 # bkoz XXX need to add checks to enable this
1267 need_wlibio=no
1268 fi
1269 ;;
1270
1271 xwince)
1272 CSTDIO_H=config/c_io_wince.h
1273 CSTDIO_CC=config/c_io_wince.cc
1274 AC_MSG_RESULT(wince)
1275
1276 need_libio=no
dd75251f
BK
1277 ;;
1278 *)
1279 echo "$enable_cstdio is an unknown io package" 1>&2
1280 exit 1
1281 ;;
b2dad0e3 1282 esac
c4561450
BK
1283 AC_LINK_FILES($CSTDIO_H, bits/c++io.h)
1284 AC_LINK_FILES($CSTDIO_CC, src/c++io.cc)
8901ac21
BK
1285
1286 # 2000-08-04 bkoz hack
1287 CCODECVT_C=config/c_io_libio_codecvt.c
1288 AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c)
1289 # 2000-08-04 bkoz hack
1290
b2dad0e3 1291 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
dd75251f 1292 AM_CONDITIONAL(GLIBCPP_NEED_XTRA_LIBIO, test "$need_xtra_libio" = yes)
20427c6b 1293 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
b2dad0e3
BK
1294])
1295
1296
1297dnl
8bd636c5 1298dnl Check for which threading library to use.
b2dad0e3
BK
1299dnl
1300dnl GLIBCPP_ENABLE_THREADS
1301dnl --enable-threads=posix sets config/threads-posix.h et. al.
1302dnl
1303dnl default is no threads
1304dnl
1305AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1306 dnl Note this comes from the gcc/config.in and libjava/config.in
1307 dnl Efforts should be made to keep this in sync.
1308 AC_MSG_CHECKING([for threads package to use])
1309 AC_ARG_ENABLE(threads,
1310 [ --enable-threads enable thread usage for target GCC.
1fd2f510 1311 --enable-threads=LIB use LIB thread package for target GCC.],
b2dad0e3
BK
1312 if test x$enable_threads = xno; then
1313 enable_threads=''
1314 fi,
1315 enable_threads='')
1316
1317 enable_threads_flag=$enable_threads
1318
1319 dnl Check if a valid thread package
1320 case x${enable_threads_flag} in
1321 x | xno | xnone)
1322 # No threads
1323 target_thread_file='single'
1324 ;;
1325 xyes)
1326 # default
1327 target_thread_file=''
1328 ;;
1329 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
1330 xsolaris | xwin32 | xdce | xvxworks)
1331 target_thread_file=$enable_threads_flag
1332 ;;
1333 *)
1334 echo "$enable_threads is an unknown thread package" 1>&2
1335 exit 1
1336 ;;
1337 esac
1338
1339 dnl Check for thread package actually supported in libstdc++
e974e9cc 1340 THREADH=
b2dad0e3
BK
1341 case "$target_thread_file" in
1342 no | none | single)
e974e9cc 1343 THREADH=threads-no.h
b2dad0e3
BK
1344 ;;
1345 posix | pthreads)
e974e9cc 1346 THREADH=threads-posix.h
b2dad0e3
BK
1347 ;;
1348 decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
1349 AC_MSG_ERROR(thread package $THREADS not yet supported)
1350 ;;
1351 *)
1352 AC_MSG_ERROR($THREADS is an unknown thread package)
1353 ;;
1354 esac
e974e9cc 1355 AC_MSG_RESULT($THREADH)
b2dad0e3 1356
c4561450 1357 AC_LINK_FILES(config/$THREADH, bits/c++threads.h)
b2dad0e3
BK
1358])
1359
1360
e974e9cc
BK
1361dnl Enable atomic locking
1362dnl GLIBCPP_ENABLE_ATOMICITY
1363AC_DEFUN(GLIBCPP_ENABLE_ATOMICITY, [
1364 AC_MSG_CHECKING([for atomicity.h])
1365 case "$target" in
1366 *-*-linux*)
1367 ATOMICITYH=$cpu_include_dir
1368 ;;
1369 *-*-aix*)
1370 ATOMICITYH=$os_include_dir
1371 ;;
1372 *)
1373 echo "$enable_threads is an unknown thread package" 1>&2
1374 exit 1
1375 ;;
1376 esac
1377 AC_MSG_RESULT($ATOMICITYH/bits/atomicity.h)
1378 AC_LINK_FILES($ATOMICITYH/bits/atomicity.h, bits/atomicity.h)
1379])
1380
1381
b2dad0e3 1382dnl
8bd636c5 1383dnl Check for template specializations for the 'long long' type extension.
b2dad0e3
BK
1384dnl
1385dnl GLIBCPP_ENABLE_LONG_LONG
1386dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1387dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1388dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1389dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1390dnl defaults to `no'.
0137be2d 1391dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
b2dad0e3
BK
1392dnl
1393dnl GLIBCPP_ENABLE_LONG_LONG
1394AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1395 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
209fe19b 1396
b2dad0e3
BK
1397 AC_ARG_ENABLE(long-long,
1398 changequote(<<, >>)dnl
d0d88ce3 1399 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
b2dad0e3
BK
1400 changequote([, ])dnl
1401 [case "$enableval" in
1402 yes) enable_long_long=yes ;;
1403 no) enable_long_long=no ;;
1404 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1405 esac],
1406 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
209fe19b
BK
1407
1408 # Check for the existance of functions used if long long is enabled.
1409 AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
1410 AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
1411
3840fa2a 1412 AC_MSG_CHECKING([for enabled long long])
209fe19b 1413 if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
3840fa2a
BK
1414 enable_long_long=no;
1415 fi;
d0d88ce3 1416 AC_MSG_RESULT($enable_long_long)
3840fa2a 1417
b2dad0e3
BK
1418 dnl Option parsed, now set things appropriately
1419 case "$enable_long_long" in
1420 yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1421 ;;
1422 esac
1423])
1424
1425
9fedcfd5
BK
1426dnl
1427dnl Check for template specializations for the 'long double' type extension.
1428dnl
1429dnl GLIBCPP_ENABLE_LONG_DOUBLE
1430dnl --enable-long-long defines _GLIBCPP_USE_LONG_DOUBLE
1431dnl --disable-long-long leaves _GLIBCPP_USE_LONG_DOUBLE undefined
1432dnl + Usage: GLIBCPP_ENABLE_LONG_DOUBLE[(DEFAULT)]
1433dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1434dnl defaults to `no'.
1435dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1436dnl
1437dnl GLIBCPP_ENABLE_LONG_DOUBLE
1438AC_DEFUN(GLIBCPP_ENABLE_LONG_DOUBLE, [dnl
1439 define([GLIBCPP_ENABLE_LONG_DOUBLE_DEFAULT], ifelse($1, yes, yes, no))dnl
1440
1441 AC_ARG_ENABLE(long-double,
1442 changequote(<<, >>)dnl
1443 <<--enable-long-double turns on 'long double' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1444 changequote([, ])dnl
1445 [case "$enableval" in
1446 yes) enable_long_double=yes ;;
1447 no) enable_long_double=no ;;
1448 *) AC_MSG_ERROR([Unknown argument to enable/disable long double]) ;;
1449 esac],
1450 enable_long_double=GLIBCPP_ENABLE_LONG_DOUBLE_DEFAULT)dnl
1451
1452 # Check for the existance of functions used if long double is enabled.
1453 AC_CHECK_FUNC(cosl,,ac_cosl=no)
1454 AC_CHECK_FUNC(sinl,,ac_sinl=no)
1455
1456 AC_MSG_CHECKING([for enabled long double])
1457 if test x"$ac_cosl" = xno || test x"$ac_sinl" = xno; then
1458 enable_long_double=no;
1459 fi;
1460 AC_MSG_RESULT($enable_long_double)
1461
1462 dnl Option parsed, now set things appropriately
1463 case "$enable_long_double" in
1464 yes) AC_DEFINE(_GLIBCPP_USE_LONG_DOUBLE)
1465 ;;
1466 esac
1467])
1468
1469
99246c90 1470dnl
8bd636c5 1471dnl Check for whether or not to do shadowed C headers.
99246c90
PE
1472dnl
1473dnl GLIBCPP_ENABLE_SHADOW
d0d88ce3
BK
1474dnl --enable-cshadow-headers [does stuff].
1475dnl --disable-cshadow-headers [does not do stuff].
99246c90
PE
1476dnl + This will eventually need to be on by default.
1477dnl + Usage: GLIBCPP_ENABLE_SHADOW[(DEFAULT)]
1478dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1479dnl defaults to `no'.
1480AC_DEFUN(GLIBCPP_ENABLE_SHADOW, [dnl
1481define([GLIBCPP_ENABLE_SHADOW_DEFAULT], ifelse($1, yes, yes, no))dnl
d0d88ce3
BK
1482AC_MSG_CHECKING([for enabled cshadow headers])
1483AC_ARG_ENABLE(cshadow-headers,
99246c90 1484changequote(<<, >>)dnl
d0d88ce3
BK
1485<< --enable-cshadow-headers construct "shadowed" C header files for
1486 g++ [default=>>GLIBCPP_ENABLE_SHADOW_DEFAULT],
5780a46b
BK
1487changequote([, ])
1488 [case "$enableval" in
1489 yes) enable_cshadow_headers=yes
d0d88ce3 1490 ;;
5780a46b 1491 no) enable_cshadow_headers=no
d0d88ce3 1492 ;;
5780a46b 1493 *) AC_MSG_ERROR([Unknown argument to enable/disable shadowed C headers])
d0d88ce3 1494 ;;
5780a46b
BK
1495 esac],
1496 enable_cshadow_headers=GLIBCPP_ENABLE_SHADOW_DEFAULT)
1497 AC_MSG_RESULT($enable_cshadow_headers)
1498
1499 dnl Option parsed, now set things appropriately
0517cb99 1500 dnl NB: these things may be duplicated in c++config.h as well.
5780a46b 1501 case "$enable_cshadow_headers" in
99246c90 1502 yes)
e466dc8a
BK
1503 CSHADOW_FLAGS="-fno-builtin"
1504 C_INCLUDE_DIR='$(top_srcdir)/include/c_std'
0517cb99 1505 AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
99246c90
PE
1506 ;;
1507 no)
e466dc8a
BK
1508 CSHADOW_FLAGS=""
1509 C_INCLUDE_DIR='$(top_srcdir)/include/c'
99246c90 1510 ;;
5780a46b 1511 esac
5b80666b 1512
e466dc8a
BK
1513 AC_SUBST(CSHADOW_FLAGS)
1514 AC_SUBST(C_INCLUDE_DIR)
5780a46b 1515 AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cshadow_headers" = yes)
99246c90 1516])
b2dad0e3 1517
e466dc8a
BK
1518dnl
1519dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1520dnl
1521dnl GLIBCPP_INCLUDE_DIR
1522dnl C_INCLUDE_DIR
1523dnl TOPLEVEL_INCLUDES
1524dnl LIBMATH_INCLUDES
1525dnl LIBSUPCXX_INCLUDES
1526dnl LIBIO_INCLUDES
1527dnl CSHADOW_INCLUDES
1528dnl
1529dnl GLIBCPP_EXPORT_INCLUDE
1530AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1531 # Root level of the include sources.
1532 GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include'
1533
1534 # Can either use include/c or include/c_std to grab "C" headers. This
1535 # variable is set to the include directory currently in use.
1536 # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_SHADOW
1537
1538 # Passed down for cross compilers, canadian crosses.
1539 TOPLEVEL_INCLUDES='-I$(includedir)'
1540
1541 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1542
1543 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1544
1545 #if GLIBCPP_NEED_LIBIO
1546 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1547 #else
1548 #LIBIO_INCLUDES='-I$(top_srcdir)/libio'
1549 #endif
1550
1551 #if GLIBCPP_USE_CSHADOW
1552 # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
1553 # -I$(top_blddir)/cshadow'
1554 #else
1555 CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
1556 #endif
1557
1558 # Now, export this to all the little Makefiles....
1559 AC_SUBST(GLIBCPP_INCLUDE_DIR)
1560 AC_SUBST(TOPLEVEL_INCLUDES)
1561 AC_SUBST(LIBMATH_INCLUDES)
1562 AC_SUBST(LIBSUPCXX_INCLUDES)
1563 AC_SUBST(LIBIO_INCLUDES)
1564 AC_SUBST(CSHADOW_INCLUDES)
1565])
1566
1567
1568dnl
1569dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1570dnl
1571AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1572 # Optimization flags that are probably a good idea for thrill-seekers. Just
1573 # uncomment the lines below and make, everything else is ready to go...
1574 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1575 OPTIMIZE_CXXFLAGS=
1576 AC_SUBST(OPTIMIZE_CXXFLAGS)
1577
1578 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1579 AC_SUBST(WARN_FLAGS)
1580])
1581
b2dad0e3 1582
af9fe0d1
BK
1583# Check whether LC_MESSAGES is available in <locale.h>.
1584# Ulrich Drepper <drepper@cygnus.com>, 1995.
1585#
1586# This file file be copied and used freely without restrictions. It can
1587# be used in projects which are not available under the GNU Public License
1588# but which still want to provide support for the GNU gettext functionality.
1589# Please note that the actual code is *not* freely available.
1590
1591# serial 1
1592
1593AC_DEFUN(AC_LC_MESSAGES,
1594 [if test $ac_cv_header_locale_h = yes; then
1595 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
1596 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1597 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
1598 if test $ac_cv_val_LC_MESSAGES = yes; then
1599 AC_DEFINE(HAVE_LC_MESSAGES)
1600 fi
1601 fi])
1602
1603
1604# Check for functions in math library.
1605# Ulrich Drepper <drepper@cygnus.com>, 1998.
1606#
1607# This file can be copied and used freely without restrictions. It can
1608# be used in projects which are not available under the GNU Public License
1609# but which still want to provide support for the GNU gettext functionality.
1610# Please note that the actual code is *not* freely available.
1611
1612# serial 1
1613
1614dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1615AC_DEFUN(AC_REPLACE_MATHFUNCS,
1616[AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])
1617AC_SUBST(LIBMATHOBJS)dnl
1618])
1619
1620
1621# Check for string functions.
1622# Ulrich Drepper <drepper@cygnus.com>, 1998.
1623#
1624# This file can be copied and used freely without restrictions. It can
1625# be used in projects which are not available under the GNU Public License
1626# but which still want to provide support for the GNU gettext functionality.
1627# Please note that the actual code is *not* freely available.
1628
1629# serial 1
1630
1631dnl AC_REPLACE_STRINGFUNCS(FUNCTION...)
1632AC_DEFUN(AC_REPLACE_STRINGFUNCS,
1633[AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
1634AC_SUBST(LIBSTRINGOBJS)dnl
1635])
b2dad0e3 1636
29bd52c8
PE
1637
1638dnl This macro searches for a GNU version of make. If a match is found, the
1639dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
99b51359 1640dnl set to "#". This is useful for including a special features in a Makefile,
29bd52c8
PE
1641dnl which cannot be handled by other versions of make. The variable
1642dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1643dnl the empty string otherwise.
1644dnl
1645dnl Here is an example of its use:
1646dnl
1647dnl Makefile.in might contain:
1648dnl
1649dnl # A failsafe way of putting a dependency rule into a makefile
1650dnl $(DEPEND):
1651dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1652dnl
1653dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1654dnl @ifGNUmake@ include $(DEPEND)
1655dnl @ifGNUmake@ endif
1656dnl
1657dnl Then configure.in would normally contain:
1658dnl
1659dnl CHECK_GNU_MAKE()
1660dnl AC_OUTPUT(Makefile)
1661dnl
1662dnl Then perhaps to cause gnu make to override any other make, we could do
1663dnl something like this (note that GNU make always looks for GNUmakefile first):
1664dnl
1665dnl if ! test x$_cv_gnu_make_command = x ; then
1666dnl mv Makefile GNUmakefile
1667dnl echo .DEFAULT: > Makefile ;
1668dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1669dnl fi
1670dnl
1671dnl Then, if any (well almost any) other make is called, and GNU make also
1672dnl exists, then the other make wraps the GNU make.
1673dnl
1674dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
421173e6 1675dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
29bd52c8
PE
1676dnl
1677dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1678dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
79f5e38e
BC
1679dnl #### conditional's subshell (" --version" is not a command), using a
1680dnl #### different option to grep(1).
29bd52c8
PE
1681dnl #### -pme
1682AC_DEFUN(
1683 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
1684 _cv_gnu_make_command='' ;
1685dnl Search all the common names for GNU make
1686 for a in "${MAKE:-make}" make gmake gnumake ; do
5219f162 1687 if ( $a --version 2> /dev/null | grep -c GNU )
79f5e38e 1688 then
29bd52c8
PE
1689 _cv_gnu_make_command=$a ;
1690 break;
1691 fi
1692 done ;
1693 ) ;
1694dnl If there was a GNU version, then set @ifGNUmake@ to the empty
1695dnl string, '#' otherwise
1696 if test "x$_cv_gnu_make_command" != "x" ; then
1697 ifGNUmake='' ;
1698 else
1699 ifGNUmake='#' ;
1700 fi
1701 AC_SUBST(ifGNUmake)
1702])
1703
3df64633
AO
1704sinclude(../libtool.m4)
1705dnl The lines below arrange for aclocal not to bring an installed
1706dnl libtool.m4 into aclocal.m4, while still arranging for automake to
1707dnl add a definition of LIBTOOL to Makefile.in.
1708ifelse(,,,[AC_SUBST(LIBTOOL)
1709AC_DEFUN([AM_PROG_LIBTOOL])
1710AC_DEFUN([AC_LIBTOOL_DLOPEN])
1711AC_DEFUN([AC_PROG_LD])
1712])
7f586614 1713
9a200b0a 1714
b2dad0e3
BK
1715# Do all the work for Automake. This macro actually does too much --
1716# some checks are only needed if your package does certain things.
1717# But this isn't really a big deal.
1718
1719# serial 1
1720
1721dnl Usage:
1722dnl AM_INIT_AUTOMAKE(package,version, [no-define])
1723
1724AC_DEFUN(AM_INIT_AUTOMAKE,
1725[AC_REQUIRE([AC_PROG_INSTALL])
1726PACKAGE=[$1]
1727AC_SUBST(PACKAGE)
1728VERSION=[$2]
1729AC_SUBST(VERSION)
1730dnl test to see if srcdir already configured
1731if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
1732 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
1733fi
1734ifelse([$3],,
1735AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
1736AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
1737AC_REQUIRE([AM_SANITY_CHECK])
1738AC_REQUIRE([AC_ARG_PROGRAM])
1739dnl FIXME This is truly gross.
1740missing_dir=`cd $ac_aux_dir && pwd`
1741AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
1742AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
1743AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
1744AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
1745AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
1746AC_REQUIRE([AC_PROG_MAKE_SET])])
1747
1748#
1749# Check to make sure that the build environment is sane.
1750#
1751
1752AC_DEFUN(AM_SANITY_CHECK,
1753[AC_MSG_CHECKING([whether build environment is sane])
1754# Just in case
1755sleep 1
1756echo timestamp > conftestfile
1757# Do `set' in a subshell so we don't clobber the current shell's
1758# arguments. Must try -L first in case configure is actually a
1759# symlink; some systems play weird games with the mod time of symlinks
1760# (eg FreeBSD returns the mod time of the symlink's containing
1761# directory).
1762if (
1763 set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
1764 if test "[$]*" = "X"; then
1765 # -L didn't work.
1766 set X `ls -t $srcdir/configure conftestfile`
1767 fi
1768 if test "[$]*" != "X $srcdir/configure conftestfile" \
1769 && test "[$]*" != "X conftestfile $srcdir/configure"; then
1770
1771 # If neither matched, then we have a broken ls. This can happen
1772 # if, for instance, CONFIG_SHELL is bash and it inherits a
1773 # broken ls alias from the environment. This has actually
1774 # happened. Such a system could not be considered "sane".
1775 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
1776alias in your environment])
1777 fi
1778
1779 test "[$]2" = conftestfile
1780 )
1781then
1782 # Ok.
1783 :
1784else
1785 AC_MSG_ERROR([newly created file is older than distributed files!
1786Check your system clock])
1787fi
1788rm -f conftest*
1789AC_MSG_RESULT(yes)])
1790
1791dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
1792dnl The program must properly implement --version.
1793AC_DEFUN(AM_MISSING_PROG,
1794[AC_MSG_CHECKING(for working $2)
1795# Run test in a subshell; some versions of sh will print an error if
1796# an executable is not found, even if stderr is redirected.
1797# Redirect stdin to placate older versions of autoconf. Sigh.
1798if ($2 --version) < /dev/null > /dev/null 2>&1; then
1799 $1=$2
1800 AC_MSG_RESULT(found)
1801else
1802 $1="$3/missing $2"
1803 AC_MSG_RESULT(missing)
1804fi
1805AC_SUBST($1)])
1806
1807# Add --enable-maintainer-mode option to configure.
1808# From Jim Meyering
1809
1810# serial 1
1811
1812AC_DEFUN(AM_MAINTAINER_MODE,
1813[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
1814 dnl maintainer-mode is disabled by default
1815 AC_ARG_ENABLE(maintainer-mode,
1816[ --enable-maintainer-mode enable make rules and dependencies not useful
1817 (and sometimes confusing) to the casual installer],
1818 USE_MAINTAINER_MODE=$enableval,
1819 USE_MAINTAINER_MODE=no)
1820 AC_MSG_RESULT($USE_MAINTAINER_MODE)
1821 AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
1822 MAINT=$MAINTAINER_MODE_TRUE
1823 AC_SUBST(MAINT)dnl
1824]
1825)
1826
1827# Define a conditional.
1828
1829AC_DEFUN(AM_CONDITIONAL,
1830[AC_SUBST($1_TRUE)
1831AC_SUBST($1_FALSE)
1832if $2; then
1833 $1_TRUE=
1834 $1_FALSE='#'
1835else
1836 $1_TRUE='#'
1837 $1_FALSE=
1838fi])
1839
b2dad0e3
BK
1840# Like AC_CONFIG_HEADER, but automatically create stamp file.
1841
1842AC_DEFUN(AM_CONFIG_HEADER,
1843[AC_PREREQ([2.12])
1844AC_CONFIG_HEADER([$1])
1845dnl When config.status generates a header, we must update the stamp-h file.
1846dnl This file resides in the same directory as the config header
1847dnl that is generated. We must strip everything past the first ":",
1848dnl and everything past the last "/".
1849AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
1850ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
1851<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
1852<<am_indx=1
1853for am_file in <<$1>>; do
1854 case " <<$>>CONFIG_HEADERS " in
1855 *" <<$>>am_file "*<<)>>
1856 echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
1857 ;;
1858 esac
1859 am_indx=`expr "<<$>>am_indx" + 1`
1860done<<>>dnl>>)
1861changequote([,]))])
1862