]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/aclocal.m4
cppinit.c (cpp_finish): Pop the final buffer without comment.
[thirdparty/gcc.git] / libstdc++-v3 / aclocal.m4
CommitLineData
b2dad0e3
BK
1dnl aclocal.m4 generated automatically by aclocal 1.4
2
e7140677 3dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
b2dad0e3
BK
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
b2dad0e3
BK
16dnl GLIBCPP_CONFIGURE
17AC_DEFUN(GLIBCPP_CONFIGURE, [
18 dnl Default to --enable-multilib
19 AC_ARG_ENABLE(multilib,
20 [ --enable-multilib build hella library versions (default)],
21 [case "${enableval}" in
22 yes) multilib=yes ;;
23 no) multilib=no ;;
24 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
25 esac], [multilib=yes])dnl
26
1de9b822 27 glibcpp_basedir=$srcdir/$toprel/$1/libstdc++-v3
b2dad0e3
BK
28 AC_SUBST(glibcpp_basedir)
29
dd48b185 30 AM_INIT_AUTOMAKE(libstdc++, 3.0.0)
b2dad0e3 31
28861379
BK
32 # Never versions of autoconf add an underscore to these functions.
33 # Prevent future problems ...
34 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
35 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
36 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
37 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
5780a46b
BK
38
39# AC_PROG_CC
40
b2dad0e3
BK
41# FIXME: We temporarily define our own version of AC_PROG_CC. This is
42# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
43# are probably using a cross compiler, which will not be able to fully
44# link an executable. This should really be fixed in autoconf
45# itself.
46
47AC_DEFUN(LIB_AC_PROG_CC,
48[AC_BEFORE([$0], [AC_PROG_CPP])dnl
49dnl Fool anybody using AC_PROG_CC.
50AC_PROVIDE([AC_PROG_CC])
51AC_CHECK_PROG(CC, gcc, gcc)
52if test -z "$CC"; then
53 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
54 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
55fi
56
57AC_PROG_CC_GNU
58
59if test $ac_cv_prog_gcc = yes; then
60 GCC=yes
61dnl Check whether -g works, even if CFLAGS is set, in case the package
62dnl plays around with CFLAGS (such as to build both debugging and
63dnl normal versions of a library), tasteless as that idea is.
64 ac_test_CFLAGS="${CFLAGS+set}"
65 ac_save_CFLAGS="$CFLAGS"
66 CFLAGS=
67 AC_PROG_CC_G
68 if test "$ac_test_CFLAGS" = set; then
69 CFLAGS="$ac_save_CFLAGS"
70 elif test $ac_cv_prog_cc_g = yes; then
71 CFLAGS="-g -O2"
72 else
73 CFLAGS="-O2"
74 fi
75else
76 GCC=
77 test "${CFLAGS+set}" = set || CFLAGS="-g"
78fi
79])
80
81LIB_AC_PROG_CC
82
5780a46b
BK
83# Can't just call these here as g++ requires libstc++ to be built....
84# AC_PROG_CXX
85
b2dad0e3
BK
86# Likewise for AC_PROG_CXX.
87AC_DEFUN(LIB_AC_PROG_CXX,
88[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
89dnl Fool anybody using AC_PROG_CXX.
90AC_PROVIDE([AC_PROG_CXX])
46840bcd 91# Use glibcpp_CXX so that we do not cause CXX to be cached with the
de9aefe0 92# flags that come in CXX while configuring libstdc++. They're different
bb4127f8
MM
93# from those used for all other target libraries. If CXX is set in
94# the environment, respect that here.
46840bcd
BK
95glibcpp_CXX=$CXX
96AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
97AC_SUBST(glibcpp_CXX)
337187ff 98CXX=$glibcpp_CXX
46840bcd 99test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
b2dad0e3
BK
100
101AC_PROG_CXX_GNU
102
103if test $ac_cv_prog_gxx = yes; then
104 GXX=yes
105dnl Check whether -g works, even if CXXFLAGS is set, in case the package
106dnl plays around with CXXFLAGS (such as to build both debugging and
107dnl normal versions of a library), tasteless as that idea is.
108 ac_test_CXXFLAGS="${CXXFLAGS+set}"
109 ac_save_CXXFLAGS="$CXXFLAGS"
110 CXXFLAGS=
111 AC_PROG_CXX_G
112 if test "$ac_test_CXXFLAGS" = set; then
113 CXXFLAGS="$ac_save_CXXFLAGS"
114 elif test $ac_cv_prog_cxx_g = yes; then
115 CXXFLAGS="-g -O2"
116 else
117 CXXFLAGS="-O2"
118 fi
119else
120 GXX=
121 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
122fi
123])
124
125LIB_AC_PROG_CXX
126
5780a46b
BK
127 AC_CHECK_TOOL(AS, as)
128 AC_CHECK_TOOL(AR, ar)
46840bcd 129 AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
5780a46b 130 AC_PROG_INSTALL
b2dad0e3 131
5780a46b 132 AM_MAINTAINER_MODE
b2dad0e3 133
5780a46b
BK
134 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
135 # at least currently, we never actually build a program, so we never
136 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
137 # fails, because we are probably configuring with a cross compiler
138 # which cant create executables. So we include AC_EXEEXT to keep
139 # automake happy, but we dont execute it, since we dont care about
140 # the result.
141 if false; then
61c71946
BK
142 # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
143 # to nothing, so nothing would remain between `then' and `fi' if it
144 # were not for the `:' below.
145 :
5780a46b
BK
146 AC_EXEEXT
147 fi
b2dad0e3 148
5780a46b
BK
149 . [$]{glibcpp_basedir}/configure.host
150
151 case [$]{glibcpp_basedir} in
6f87af20 152 /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
5780a46b
BK
153 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
154 esac
b2dad0e3 155
d0941a31 156 # This does for the target what configure.host does for the host. In
5e3cbe0b 157 # addition to possibly modifying the same flags, it also sets up symlinks.
d0941a31 158 GLIBCPP_CHECK_TARGET
b2dad0e3
BK
159])
160
161
162dnl
8bd636c5 163dnl Check to see if g++ can compile this library, and if so, if any version-
c470c17d
BK
164dnl specific precautions need to be taken.
165dnl
166dnl GLIBCPP_CHECK_COMPILER_VERSION
167AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
44382959
BK
168if test ! -f stamp-sanity-compiler; then
169 AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
170 AC_LANG_SAVE
171 AC_LANG_CPLUSPLUS
1d855e87
BK
172 AC_TRY_COMPILE(, [
173 #if __GNUC__ < 3
174 not_ok
c470c17d 175 #endif
6a163d7c 176 ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
44382959 177 AC_LANG_RESTORE
c470c17d 178 AC_MSG_RESULT($gpp_satisfactory)
44382959
BK
179 touch stamp-sanity-compiler
180fi
c470c17d
BK
181])
182
183
184dnl
52b55e7d
PE
185dnl Tests for newer compiler features, or features that are present in newer
186dnl compiler versions but not older compiler versions still in use, should
187dnl be placed here.
b2dad0e3 188dnl
7f586614
BK
189dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
190dnl new inlining code or the new system_header pragma will die on -Werror.
191dnl Leave it out by default and use maint-mode to use it.
b2dad0e3 192dnl
c470c17d 193dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
c21b6f87
PE
194dnl compiler supports it and the user has not requested debug mode.
195dnl
c470c17d
BK
196dnl GLIBCPP_CHECK_COMPILER_FEATURES
197AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
a4e99046 198 # All these tests are for C++; save the language and the compiler flags.
52b55e7d 199 # The CXXFLAGS thing is suspicious, but based on similar bits previously
a4e99046
PE
200 # found in GLIBCPP_CONFIGURE.
201 AC_LANG_SAVE
202 AC_LANG_CPLUSPLUS
203 ac_test_CXXFLAGS="${CXXFLAGS+set}"
204 ac_save_CXXFLAGS="$CXXFLAGS"
a4e99046 205
7f586614
BK
206 # Check for maintainer-mode bits.
207 if test x"$USE_MAINTAINER_MODE" = xno; then
208 WERROR=''
8bd636c5 209 else
7f586614 210 WERROR='-Werror'
8bd636c5
PE
211 fi
212
c470c17d
BK
213 # Check for -ffunction-sections -fdata-sections
214 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
0517cb99 215 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
c470c17d
BK
216 AC_TRY_COMPILE(, [int foo;
217 ], [ac_fdsections=yes], [ac_fdsections=no])
218 if test "$ac_test_CXXFLAGS" = set; then
219 CXXFLAGS="$ac_save_CXXFLAGS"
220 else
221 # this is the suspicious part
222 CXXFLAGS=''
223 fi
a0cb1aa7
PE
224 if test x"$ac_fdsections" = x"yes" &&
225 test x"$enable_debug" = x"no"; then
c470c17d
BK
226 SECTION_FLAGS='-ffunction-sections -fdata-sections'
227 fi
228 AC_MSG_RESULT($ac_fdsections)
229
a4e99046 230 AC_LANG_RESTORE
8bd636c5 231 AC_SUBST(WERROR)
c470c17d 232 AC_SUBST(SECTION_FLAGS)
b2dad0e3
BK
233])
234
c470c17d
BK
235
236dnl
421173e6
PE
237dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
238dnl the native linker is in use, all variables will be defined to something
239dnl safe (like an empty string).
240dnl
241dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
242dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
c470c17d 243dnl
c470c17d
BK
244dnl GLIBCPP_CHECK_LINKER_FEATURES
245AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
421173e6
PE
246 # If we're not using GNU ld, then there's no point in even trying these
247 # tests. Check for that first. We should have already tested for gld
248 # by now (in libtool), but require it now just to be safe...
a9117427
BK
249 SECTION_LDFLAGS=''
250 OPT_LDFLAGS=''
421173e6 251 AC_REQUIRE([AC_PROG_LD])
e7140677
BK
252
253 # Set --gc-sections.
f4c79fef 254 if test "$ac_cv_prog_gnu_ld" = "notbroken"; then
a9117427 255 # GNU ld it is! Joy and bunny rabbits!
421173e6
PE
256
257 # All these tests are for C++; save the language and the compiler flags.
258 # Need to do this so that g++ won't try to link in libstdc++
259 ac_test_CFLAGS="${CFLAGS+set}"
260 ac_save_CFLAGS="$CFLAGS"
e7140677 261 CFLAGS='-x c++ -Wl,--gc-sections'
421173e6
PE
262
263 # Check for -Wl,--gc-sections
e466dc8a
BK
264 # XXX This test is broken at the moment, as symbols required for
265 # linking are now in libsupc++ (not built yet.....). In addition,
a9117427
BK
266 # this test has cored on solaris in the past. In addition,
267 # --gc-sections doesn't really work at the moment (keeps on discarding
268 # used sections, first .eh_frame and now some of the glibc sections for
269 # iconv). Bzzzzt. Thanks for playing, maybe next time.
421173e6
PE
270 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
271 AC_TRY_RUN([
272 int main(void)
273 {
a9117427
BK
274 try { throw 1; }
275 catch (...) { };
421173e6
PE
276 return 0;
277 }
e466dc8a 278 ], [ac_sectionLDflags=yes],[ac_sectionLFflags=no], [ac_sectionLDflags=yes])
421173e6
PE
279 if test "$ac_test_CFLAGS" = set; then
280 CFLAGS="$ac_save_CFLAGS"
281 else
282 # this is the suspicious part
283 CFLAGS=''
284 fi
285 if test "$ac_sectionLDflags" = "yes"; then
e7140677 286 SECTION_LDFLAGS='-Wl,--gc-sections'
421173e6
PE
287 fi
288 AC_MSG_RESULT($ac_sectionLDflags)
e7140677 289 fi
a9117427 290
e7140677 291 # Set linker optimization flags.
a0cb1aa7
PE
292 if test x"$ac_cv_prog_gnu_ld" = x"yes" &&
293 test x"$enable_debug" = x"no"; then
421173e6 294 OPT_LDFLAGS='-Wl,-O1'
421173e6 295 fi
e7140677 296
c470c17d 297 AC_SUBST(SECTION_LDFLAGS)
421173e6 298 AC_SUBST(OPT_LDFLAGS)
c470c17d
BK
299])
300
301
b2dad0e3 302dnl
11fc1858 303dnl Check to see if the (math function) argument passed is
f8db4f20 304dnl declared when using the c++ compiler
38bd7296
BK
305dnl ASSUMES argument is a math function with ONE parameter
306dnl
f8db4f20
BK
307dnl GLIBCPP_CHECK_MATH_DECL_1
308AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
38bd7296 309 AC_MSG_CHECKING([for $1 declaration])
f84ef7fb
PE
310 if test x${glibcpp_cv_func_$1_use+set} != xset; then
311 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
312 AC_LANG_SAVE
313 AC_LANG_CPLUSPLUS
01a49191
RB
314 AC_TRY_COMPILE([#include <math.h>
315 #ifdef HAVE_IEEEFP_H
316 #include <ieeefp.h>
317 #endif
318 ],
f84ef7fb
PE
319 [ $1(0);],
320 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
321 AC_LANG_RESTORE
322 ])
323 fi
421173e6 324 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
f8db4f20
BK
325])
326
327dnl
328dnl Check to see if the (math function) argument passed is
329dnl 1) declared when using the c++ compiler
330dnl 2) has "C" linkage
331dnl 3) if not, see if 1) and 2) for argument prepended with '_'
332dnl
333dnl Define HAVE_CARGF etc if "cargf" is declared and links
334dnl
335dnl argument 1 is name of function to check
336dnl
337dnl ASSUMES argument is a math function with ONE parameter
338dnl
339dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
340AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
341 GLIBCPP_CHECK_MATH_DECL_1($1)
421173e6 342 if test x$glibcpp_cv_func_$1_use = x"yes"; then
38bd7296 343 AC_CHECK_FUNCS($1)
f8db4f20
BK
344 else
345 GLIBCPP_CHECK_MATH_DECL_1(_$1)
346 if test x$glibcpp_cv_func__$1_use = x"yes"; then
347 AC_CHECK_FUNCS(_$1)
a0cb1aa7 348 fi
38bd7296
BK
349 fi
350])
351
f8db4f20 352
20b11783
MM
353dnl
354dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
355dnl of functions at once. It's an all-or-nothing check -- either
9b8fd32c 356dnl HAVE_XYZ is defined for each of the functions, or for none of them.
20b11783
MM
357dnl Doing it this way saves significant configure time.
358AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
359 AC_MSG_CHECKING([for $1 functions])
360 AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
361 AC_LANG_SAVE
362 AC_LANG_CPLUSPLUS
363 AC_TRY_COMPILE([#include <math.h>],
364 [ `for x in $3; do echo "$x (0);"; done` ],
9b8fd32c
PE
365 [glibcpp_cv_func_$2_use=yes],
366 [glibcpp_cv_func_$2_use=no])
20b11783
MM
367 AC_LANG_RESTORE])
368 AC_MSG_RESULT($glibcpp_cv_func_$2_use)
369 if test x$glibcpp_cv_func_$2_use = x"yes"; then
370 AC_CHECK_FUNCS($3)
371 fi
372])
38bd7296
BK
373
374dnl
11fc1858 375dnl Check to see if the (math function) argument passed is
f8db4f20 376dnl declared when using the c++ compiler
52b55e7d 377dnl ASSUMES argument is a math function with TWO parameters
38bd7296 378dnl
f8db4f20
BK
379dnl GLIBCPP_CHECK_MATH_DECL_2
380AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
38bd7296 381 AC_MSG_CHECKING([for $1 declaration])
f84ef7fb
PE
382 if test x${glibcpp_cv_func_$1_use+set} != xset; then
383 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
384 AC_LANG_SAVE
385 AC_LANG_CPLUSPLUS
386 AC_TRY_COMPILE([#include <math.h>],
387 [ $1(0, 0);],
388 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
389 AC_LANG_RESTORE
390 ])
391 fi
421173e6 392 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
38bd7296
BK
393])
394
38bd7296 395dnl
11fc1858 396dnl Check to see if the (math function) argument passed is
38bd7296
BK
397dnl 1) declared when using the c++ compiler
398dnl 2) has "C" linkage
399dnl
400dnl Define HAVE_CARGF etc if "cargf" is declared and links
401dnl
402dnl argument 1 is name of function to check
403dnl
f8db4f20 404dnl ASSUMES argument is a math function with TWO parameters
38bd7296 405dnl
f8db4f20
BK
406dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
407AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
408 GLIBCPP_CHECK_MATH_DECL_2($1)
409 if test x$glibcpp_cv_func_$1_use = x"yes"; then
410 AC_CHECK_FUNCS($1)
411 else
412 GLIBCPP_CHECK_MATH_DECL_2(_$1)
413 if test x$glibcpp_cv_func__$1_use = x"yes"; then
414 AC_CHECK_FUNCS(_$1)
a0cb1aa7 415 fi
f8db4f20
BK
416 fi
417])
418
419
420dnl
421dnl Check to see if the (math function) argument passed is
422dnl declared when using the c++ compiler
52b55e7d 423dnl ASSUMES argument is a math function with THREE parameters
f8db4f20
BK
424dnl
425dnl GLIBCPP_CHECK_MATH_DECL_3
426AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
38bd7296 427 AC_MSG_CHECKING([for $1 declaration])
f84ef7fb
PE
428 if test x${glibcpp_cv_func_$1_use+set} != xset; then
429 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
430 AC_LANG_SAVE
431 AC_LANG_CPLUSPLUS
432 AC_TRY_COMPILE([#include <math.h>],
433 [ $1(0, 0, 0);],
434 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
435 AC_LANG_RESTORE
436 ])
437 fi
421173e6 438 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
f8db4f20
BK
439])
440
441dnl
442dnl Check to see if the (math function) argument passed is
443dnl 1) declared when using the c++ compiler
444dnl 2) has "C" linkage
445dnl
446dnl Define HAVE_CARGF etc if "cargf" is declared and links
447dnl
448dnl argument 1 is name of function to check
449dnl
450dnl ASSUMES argument is a math function with THREE parameters
451dnl
452dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
453AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
454 GLIBCPP_CHECK_MATH_DECL_3($1)
421173e6 455 if test x$glibcpp_cv_func_$1_use = x"yes"; then
38bd7296 456 AC_CHECK_FUNCS($1)
f8db4f20
BK
457 else
458 GLIBCPP_CHECK_MATH_DECL_3(_$1)
459 if test x$glibcpp_cv_func__$1_use = x"yes"; then
460 AC_CHECK_FUNCS(_$1)
a0cb1aa7 461 fi
38bd7296
BK
462 fi
463])
464
465
e7140677
BK
466dnl
467dnl Check to see if the (stdlib function) argument passed is
468dnl 1) declared when using the c++ compiler
469dnl 2) has "C" linkage
470dnl
e7140677
BK
471dnl argument 1 is name of function to check
472dnl
473dnl ASSUMES argument is a math function with TWO parameters
474dnl
475dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
476AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
477 AC_MSG_CHECKING([for $1 declaration])
f84ef7fb
PE
478 if test x${glibcpp_cv_func_$1_use+set} != xset; then
479 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
480 AC_LANG_SAVE
481 AC_LANG_CPLUSPLUS
482 AC_TRY_COMPILE([#include <stdlib.h>],
483 [ $1(0, 0);],
484 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
485 AC_LANG_RESTORE
486 ])
487 fi
e7140677
BK
488 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
489 if test x$glibcpp_cv_func_$1_use = x"yes"; then
490 AC_CHECK_FUNCS($1)
491 fi
492])
493
494
11fc1858
BK
495dnl
496dnl Because the builtins are picky picky picky about the arguments they take,
497dnl do an explict linkage tests here.
498dnl Check to see if the (math function) argument passed is
499dnl 1) declared when using the c++ compiler
500dnl 2) has "C" linkage
501dnl
502dnl Define HAVE_CARGF etc if "cargf" is declared and links
503dnl
504dnl argument 1 is name of function to check
505dnl
506dnl ASSUMES argument is a math function with ONE parameter
507dnl
508dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
509AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
11fc1858 510 AC_MSG_CHECKING([for $1 declaration])
f84ef7fb
PE
511 if test x${glibcpp_cv_func_$1_use+set} != xset; then
512 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
513 AC_LANG_SAVE
514 AC_LANG_CPLUSPLUS
515 AC_TRY_COMPILE([#include <math.h>],
516 [ $1(0);],
517 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
518 AC_LANG_RESTORE
519 ])
520 fi
421173e6
PE
521 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
522 if test x$glibcpp_cv_func_$1_use = x"yes"; then
11fc1858 523 AC_MSG_CHECKING([for $1 linkage])
f84ef7fb
PE
524 if test x${glibcpp_cv_func_$1_link+set} != xset; then
525 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
526 AC_TRY_LINK([#include <math.h>],
527 [ $1(0);],
528 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
529 ])
530 fi
421173e6
PE
531 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
532 if test x$glibcpp_cv_func_$1_link = x"yes"; then
11fc1858
BK
533 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
534 AC_DEFINE_UNQUOTED(${ac_tr_func})
535 fi
536 fi
537])
538
539
540dnl
541dnl Check to see what builtin math functions are supported
542dnl
543dnl check for __builtin_abs
544dnl check for __builtin_fabsf
545dnl check for __builtin_fabs
546dnl check for __builtin_fabl
547dnl check for __builtin_labs
548dnl check for __builtin_sqrtf
549dnl check for __builtin_sqrtl
550dnl check for __builtin_fsqrt
551dnl check for __builtin_sinf
552dnl check for __builtin_sin
553dnl check for __builtin_sinl
554dnl check for __builtin_cosf
555dnl check for __builtin_cos
556dnl check for __builtin_cosl
557dnl
558dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
559AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
560 dnl Test for builtin math functions.
561 dnl These are made in gcc/c-common.c
562 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
563 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
564 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
565 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
566 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
567
568 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
569 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt)
570 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
571
572 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
573 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
574 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
575
576 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
577 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
578 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
579
580 dnl There is, without a doubt, a more elegant way to have these
581 dnl names exported so that they won't be stripped out of acconfig.h by
582 dnl autoheader. I leave this as an exercise to somebody less frustrated
583 dnl than I.... please email the libstdc++ list if you can figure out a
584 dnl more elegant approach (see autoconf/acgen.m4 and specifically
585 dnl AC_CHECK_FUNC for things to steal.)
586 dummyvar=no
587 if test x$dummyvar = x"yes"; then
588 AC_DEFINE(HAVE___BUILTIN_ABS)
589 AC_DEFINE(HAVE___BUILTIN_LABS)
590 AC_DEFINE(HAVE___BUILTIN_COS)
591 AC_DEFINE(HAVE___BUILTIN_COSF)
592 AC_DEFINE(HAVE___BUILTIN_COSL)
593 AC_DEFINE(HAVE___BUILTIN_FABS)
594 AC_DEFINE(HAVE___BUILTIN_FABSF)
595 AC_DEFINE(HAVE___BUILTIN_FABSL)
596 AC_DEFINE(HAVE___BUILTIN_SIN)
597 AC_DEFINE(HAVE___BUILTIN_SINF)
598 AC_DEFINE(HAVE___BUILTIN_SINL)
599 AC_DEFINE(HAVE___BUILTIN_FSQRT)
600 AC_DEFINE(HAVE___BUILTIN_SQRTF)
601 AC_DEFINE(HAVE___BUILTIN_SQRTL)
602 fi
603])
604
605
e7140677
BK
606dnl
607dnl Check to see what the underlying c library
608dnl These checks need to do two things:
609dnl 1) make sure the name is declared when using the c++ compiler
610dnl 2) make sure the name has "C" linkage
611dnl This might seem like overkill but experience has shown that it's not...
612dnl
7cda84dc
BK
613dnl Define HAVE_STRTOLD if "strtold" is declared and links
614dnl Define HAVE_STRTOF if "strtof" is declared and links
615dnl Define HAVE_DRAND48 if "drand48" is declared and links
e7140677
BK
616dnl
617dnl GLIBCPP_CHECK_STDLIB_SUPPORT
618AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
619 ac_test_CXXFLAGS="${CXXFLAGS+set}"
620 ac_save_CXXFLAGS="$CXXFLAGS"
621 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
622
e7140677 623 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
7cda84dc 624 AC_CHECK_FUNCS(drand48)
e7140677
BK
625
626 CXXFLAGS="$ac_save_CXXFLAGS"
627])
628
629
2f103494
BK
630dnl
631dnl Check to see what the underlying c library or math library is like.
38bd7296
BK
632dnl These checks need to do two things:
633dnl 1) make sure the name is declared when using the c++ compiler
634dnl 2) make sure the name has "C" linkage
635dnl This might seem like overkill but experience has shown that it's not...
2f103494
BK
636dnl
637dnl Define HAVE_CARGF etc if "cargf" is found.
638dnl
639dnl GLIBCPP_CHECK_MATH_SUPPORT
640AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
38bd7296
BK
641 ac_test_CXXFLAGS="${CXXFLAGS+set}"
642 ac_save_CXXFLAGS="$CXXFLAGS"
4f76382d 643 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
aac350aa
BK
644
645 dnl Check libm
2f103494 646 AC_CHECK_LIB(m, sin, libm="-lm")
38bd7296 647 ac_save_LIBS="$LIBS"
2f103494
BK
648 LIBS="$LIBS $libm"
649
38bd7296
BK
650 dnl Check to see if certain C math functions exist.
651 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
652 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
653 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
654 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
655 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
656 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
657 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
d38cd8ae 658 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
38bd7296
BK
659
660 dnl Check to see if basic C math functions have float versions.
20b11783 661 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
9b8fd32c
PE
662 float_trig,
663 acosf asinf atanf \
20b11783 664 cosf sinf tanf \
9b8fd32c 665 coshf sinhf tanhf)
20b11783 666 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
9b8fd32c 667 float_round,
20b11783 668 ceilf floorf)
38bd7296
BK
669 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
670 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
d38cd8ae 671 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
38bd7296 672 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
38bd7296
BK
673 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
674 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
d38cd8ae 675 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
38bd7296
BK
676 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
677 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
678 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
679 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
680 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
38bd7296 681 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
38bd7296
BK
682 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
683 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
684
685 dnl Check to see if basic C math functions have long double versions.
20b11783 686 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
9b8fd32c
PE
687 long_double_trig,
688 acosl asinl atanl \
20b11783 689 cosl sinl tanl \
9b8fd32c 690 coshl sinhl tanhl)
20b11783 691 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
9b8fd32c 692 long_double_round,
20b11783 693 ceill floorl)
38bd7296
BK
694 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
695 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
11fc1858 696 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
38bd7296 697 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
38bd7296
BK
698 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
699 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
38bd7296
BK
700 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
701 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
d38cd8ae 702 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
38bd7296
BK
703 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
704 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
705 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
706 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
707 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
38bd7296 708 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
38bd7296
BK
709 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
710 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
711
712 dnl Some runtimes have these functions with a preceding underscore. Please
713 dnl keep this sync'd with the one above. And if you add any new symbol,
714 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
715 dnl Check to see if certain C math functions exist.
38bd7296
BK
716
717 dnl Check to see if basic C math functions have float versions.
20b11783 718 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
9b8fd32c
PE
719 _float_trig,
720 _acosf _asinf _atanf \
20b11783 721 _cosf _sinf _tanf \
9b8fd32c 722 _coshf _sinhf _tanhf)
20b11783 723 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
9b8fd32c 724 _float_round,
20b11783 725 _ceilf _floorf)
38bd7296
BK
726
727 dnl Check to see if basic C math functions have long double versions.
20b11783 728 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
9b8fd32c
PE
729 _long_double_trig,
730 _acosl _asinl _atanl \
20b11783 731 _cosl _sinl _tanl \
9b8fd32c 732 _coshl _sinhl _tanhl)
20b11783 733 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
9b8fd32c 734 _long_double_round,
20b11783 735 _ceill _floorl)
38bd7296
BK
736
737 LIBS="$ac_save_LIBS"
738 CXXFLAGS="$ac_save_CXXFLAGS"
2f103494
BK
739])
740
741
742dnl
743dnl Check to see if there is native support for complex
744dnl
745dnl Don't compile bits in math/* if native support exits.
746dnl
d38cd8ae 747dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
2f103494
BK
748dnl
749dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
750AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
751 dnl Check for complex versions of math functions of platform.
b4b2a487 752 AC_CHECK_LIB(m, main)
d38cd8ae 753 AC_REPLACE_MATHFUNCS(nan copysignf)
11fc1858
BK
754
755 dnl Compile the long double complex functions only if the function
756 dnl provides the non-complex long double functions that are needed.
d38cd8ae 757 dnl Currently this includes copysignl, which should be
11fc1858
BK
758 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
759 USE_COMPLEX_LONG_DOUBLE=no
d38cd8ae 760 if test x$ac_cv_func_copysignl = x"yes"; then
11fc1858 761 USE_COMPLEX_LONG_DOUBLE=yes
d38cd8ae 762 AC_REPLACE_MATHFUNCS(signbitl)
11fc1858
BK
763 fi
764
2f103494
BK
765 AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
766])
767
54fa7415 768
d0941a31
PE
769dnl Check to see what architecture and operating system we are compiling
770dnl for. Also, if architecture- or OS-specific flags are required for
771dnl compilation, pick them up here.
e974e9cc 772dnl
d0941a31
PE
773dnl GLIBCPP_CHECK_TARGET
774AC_DEFUN(GLIBCPP_CHECK_TARGET, [
775 . [$]{glibcpp_basedir}/configure.target
776 AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
777 AC_MSG_RESULT(OS config directory is $os_include_dir)
e974e9cc
BK
778])
779
780
b2dad0e3
BK
781dnl
782dnl Check to see if this target can enable the wchar_t parts of libstdc++.
8b8ab21c
BK
783dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
784dnl must have been previously checked.)
b2dad0e3
BK
785dnl
786dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
7b331228 787dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
b2dad0e3
BK
788dnl
789dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
790AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
7b331228
BK
791
792 dnl Test wchar.h for mbstate_t, which is needed for char_traits and
793 dnl others even if wchar_t support is not on.
794 AC_MSG_CHECKING([for mbstate_t])
795 AC_TRY_COMPILE([#include <wchar.h>],
796 [mbstate_t teststate;],
797 have_mbstate_t=yes, have_mbstate_t=no)
798 AC_MSG_RESULT($have_mbstate_t)
799 if test x"$have_mbstate_t" = xyes; then
800 AC_DEFINE(HAVE_MBSTATE_T)
801 fi
802
803 dnl Sanity check for existence of ISO C99 headers for extended encoding.
804 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
805 AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
b2dad0e3 806
7b331228 807 dnl Only continue checking if the ISO C99 headers exist and support is on.
a0cb1aa7
PE
808 if test x"$ac_has_wchar_h" = xyes &&
809 test x"$ac_has_wctype_h" = xyes &&
810 test x"$enable_c_mbchar" != xno; then
7b331228
BK
811
812 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
813 dnl numeric_limits can instantiate type_traits<wchar_t>
814 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
815 AC_TRY_COMPILE([#include <wchar.h>],
816 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
817 has_wchar_minmax=yes, has_wchar_minmax=no)
818 AC_MSG_RESULT($has_wchar_minmax)
8b8ab21c 819
7b331228
BK
820 dnl Test wchar.h for WEOF, which is what we use to determine whether
821 dnl to specialize for char_traits<wchar_t> or not.
822 AC_MSG_CHECKING([for WEOF])
823 AC_TRY_COMPILE([
824 #include <wchar.h>
825 #include <stddef.h>],
826 [wint_t i = WEOF;],
827 has_weof=yes, has_weof=no)
828 AC_MSG_RESULT($has_weof)
8b8ab21c 829
7b331228 830 dnl Tests for wide character functions used in char_traits<wchar_t>.
68fe6226
BK
831 ac_wfuncs=yes
832 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
833 ac_wfuncs=no)
8b8ab21c 834
68fe6226
BK
835 dnl Checks for names injected into std:: by the c_std headers.
836 AC_CHECK_FUNCS(btowc wctob fgetwc fgetwc fgetws fputwc fputws fwide \
837 fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \
838 vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
839 mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \
840 wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
841 wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr,, \
842 ac_wfuncs=no)
df7b1359 843
7b331228 844 AC_MSG_CHECKING([for ISO C99 wchar_t support])
a0cb1aa7
PE
845 if test x"$has_weof" = xyes &&
846 test x"$has_wchar_minmax" = xyes &&
847 test x"$ac_wfuncs" = xyes; then
7b331228
BK
848 ac_isoC99_wchar_t=yes
849 else
850 ac_isoC99_wchar_t=no
851 fi
852 AC_MSG_RESULT($ac_isoC99_wchar_t)
8b8ab21c 853
7b331228
BK
854 dnl Use iconv for wchar_t to char conversions. As such, check for
855 dnl X/Open Portability Guide, version 2 features (XPG2).
856 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
857 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
858
859 dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
860 AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
861 ac_save_LIBS="$LIBS"
862 LIBS="$LIBS $libiconv"
863
864 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
865 ac_XPG2funcs=yes, ac_XPG2funcs=no)
8b8ab21c 866
7b331228 867 LIBS="$ac_save_LIBS"
5b20f7a0 868
7b331228 869 AC_MSG_CHECKING([for XPG2 wchar_t support])
a0cb1aa7
PE
870 if test x"$ac_has_iconv_h" = xyes &&
871 test x"$ac_has_langinfo_h" = xyes &&
872 test x"$ac_XPG2funcs" = xyes; then
7b331228
BK
873 ac_XPG2_wchar_t=yes
874 else
875 ac_XPG2_wchar_t=no
876 fi
877 AC_MSG_RESULT($ac_XPG2_wchar_t)
b2dad0e3 878
7b331228
BK
879 dnl At the moment, only enable wchar_t specializations if all the
880 dnl above support is present.
881 AC_MSG_CHECKING([for enabled wchar_t specializations])
a0cb1aa7
PE
882 if test x"$ac_isoC99_wchar_t" = xyes &&
883 test x"$ac_XPG2_wchar_t" = xyes; then
7b331228
BK
884 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
885 AC_MSG_RESULT("yes")
3840fa2a 886 else
7b331228 887 AC_MSG_RESULT("no")
3840fa2a 888 fi
b2dad0e3 889 else
7b331228
BK
890 dnl Wide characters disabled by the user.
891 AC_MSG_WARN([wchar_t support disabled.])
b2dad0e3 892 fi
b2dad0e3
BK
893])
894
895
b2dad0e3 896dnl
8bd636c5 897dnl Check for special debugging mode; not for production use.
b2dad0e3
BK
898dnl
899dnl GLIBCPP_ENABLE_DEBUG
34791641 900dnl --enable-debug sets '-ggdb3 -O0'.
b2dad0e3
BK
901dnl --disable-debug sets '-g' and whatever optimization options the
902dnl compiler can handle.
7f586614 903dnl + --enable-maintainer-mode automatically defaults this to on.
b2dad0e3
BK
904dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
905dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
906dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
907dnl defaults to `no'.
908AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
909define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
910AC_ARG_ENABLE(debug,
911changequote(<<, >>)dnl
912<< --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
913changequote([, ])dnl
5780a46b 914[case "${enableval}" in
b2dad0e3
BK
915 yes) enable_debug=yes ;;
916 no) enable_debug=no ;;
917 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
918 esac],
919enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
5780a46b 920
b2dad0e3 921dnl Option parsed, now set things appropriately
5780a46b 922case "${enable_debug}" in
cde28f0d 923 yes)
34791641 924 DEBUG_FLAGS='-O0 -ggdb3'
6abd2230 925 ;;
f3b004d8 926 no)
8b8ab21c 927 DEBUG_FLAGS='-g'
f3b004d8 928 ;;
b2dad0e3 929esac
c470c17d 930AC_SUBST(DEBUG_FLAGS)
b2dad0e3
BK
931])
932
933
dcfa0bc8
PE
934dnl
935dnl Check for "unusual" flags to pass to the compiler while building.
936dnl
937dnl GLIBCPP_ENABLE_CXX_FLAGS
938dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
939dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
940dnl Somehow this same set of flags must be passed when [re]building
941dnl libgcc.
942dnl --disable-cxx-flags passes nothing.
a9ab8db1
JM
943dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
944dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
945dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
dcfa0bc8 946dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
32a4595e
PE
947dnl If "default flags" is an empty string (or "none"), the effect is
948dnl the same as --disable or --enable=no.
dcfa0bc8
PE
949AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
950define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
951AC_ARG_ENABLE(cxx-flags,
952changequote(<<, >>)dnl
953<< --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
954 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
955changequote([, ])dnl
956[case "x$enableval" in
5780a46b 957 xyes)
8b8ab21c 958 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
5780a46b 959 xno|x)
8b8ab21c 960 enable_cxx_flags='' ;;
5780a46b 961 *)
8b8ab21c 962 enable_cxx_flags="$enableval" ;;
dcfa0bc8 963 esac],
5780a46b
BK
964enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
965
32a4595e 966dnl Thinko on my part during design. This kludge is the workaround.
5780a46b
BK
967if test "$enable_cxx_flags" = "none"; then
968 enable_cxx_flags='';
969fi
970
32a4595e
PE
971dnl Run through flags (either default or command-line) and set anything
972dnl extra (e.g., #defines) that must accompany particular g++ options.
dcfa0bc8
PE
973if test -n "$enable_cxx_flags"; then
974 for f in $enable_cxx_flags; do
975 case "$f" in
991a40fc 976 -fhonor-std) ;;
dcfa0bc8
PE
977 -*) ;;
978 *) # and we're trying to pass /what/ exactly?
979 AC_MSG_ERROR([compiler flags start with a -]) ;;
980 esac
981 done
982fi
983EXTRA_CXX_FLAGS="$enable_cxx_flags"
984AC_SUBST(EXTRA_CXX_FLAGS)
985])
986
987
0214010c
BK
988dnl
989dnl Check for which locale library to use: gnu or generic.
990dnl
991dnl GLIBCPP_ENABLE_CLOCALE
992dnl --enable-clocale=gnu sets config/c_locale_gnu.cc and friends
993dnl --enable-clocale=generic sets config/c_locale_generic.cc and friends
994dnl
995dnl default is generic
996dnl
997AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
998 AC_MSG_CHECKING([for clocale to use])
999 AC_ARG_ENABLE(clocale,
572051a2
PE
1000 [ --enable-clocale enable model for target locale package.
1001 --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
0214010c
BK
1002 ],
1003 if test x$enable_clocale = xno; then
1004 enable_clocale=generic
1005 fi,
1006 enable_clocale=generic)
1007
1008 enable_clocale_flag=$enable_clocale
1009
1010 dnl Check if a valid locale package
1011 case x${enable_clocale_flag} in
1012 xgnu)
1013 CLOCALE_H=config/c_locale_gnu.h
1014 CLOCALE_CC=config/c_locale_gnu.cc
1015 AC_MSG_RESULT(gnu)
1016 ;;
1017 xgeneric)
1018 CLOCALE_H=config/c_locale_generic.h
1019 CLOCALE_CC=config/c_locale_generic.cc
1020 AC_MSG_RESULT(generic)
1021 ;;
1022 *)
1023 echo "$enable_clocale is an unknown locale package" 1>&2
1024 exit 1
1025 ;;
1026 esac
1027
4a9d5109 1028 AC_SUBST(CLOCALE_H)
0214010c
BK
1029 AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
1030])
1031
1032
b2dad0e3 1033dnl
8bd636c5 1034dnl Check for which I/O library to use: libio, or something specific.
b2dad0e3
BK
1035dnl
1036dnl GLIBCPP_ENABLE_CSTDIO
1037dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
1038dnl
8e2d9424 1039dnl default is stdio
b2dad0e3
BK
1040dnl
1041AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1042 AC_MSG_CHECKING([for cstdio to use])
1043 AC_ARG_ENABLE(cstdio,
572051a2
PE
1044 [ --enable-cstdio enable stdio for target io package.
1045 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
36e40658 1046 ],
b2dad0e3 1047 if test x$enable_cstdio = xno; then
8e2d9424 1048 enable_cstdio=stdio
b2dad0e3 1049 fi,
8e2d9424 1050 enable_cstdio=stdio)
b2dad0e3
BK
1051
1052 enable_cstdio_flag=$enable_cstdio
1053
8b8ab21c 1054 dnl Check if a valid I/O package
b2dad0e3 1055 case x${enable_cstdio_flag} in
e26cb7ab 1056 xlibio)
dd75251f 1057 CSTDIO_H=config/c_io_libio.h
c0a26060
BK
1058 BASIC_FILE_H=config/basic_file_libio.h
1059 BASIC_FILE_CC=config/basic_file_libio.cc
dd75251f
BK
1060 AC_MSG_RESULT(libio)
1061
1062 # see if we are on a system with libio native (ie, linux)
1063 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1064
1065 # Need to check and see what version of glibc is being used. If
1066 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1067 # compile most of libio for linux systems.
1068 if test x$has_libio = x"yes"; then
1069 case "$target" in
1070 *-*-linux*)
8b8ab21c
BK
1071 AC_MSG_CHECKING([for glibc version >= 2.2])
1072 AC_EGREP_CPP([ok], [
1073 #include <features.h>
1074 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1075 ok
1076 #endif
1077 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1078 AC_MSG_RESULT($glibc_satisfactory)
1079 ;;
dd75251f
BK
1080 esac
1081
8b8ab21c 1082 # XXX at the moment, admit defeat and force the recompilation
f133a43e 1083 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
8b8ab21c
BK
1084 glibc_satisfactory=no
1085
1086 if test x$glibc_satisfactory = x"yes"; then
1087 need_libio=no
8b8ab21c
BK
1088 need_wlibio=no
1089 else
1090 need_libio=yes
8b8ab21c
BK
1091 # bkoz XXX need to add checks to enable this
1092 # pme XXX here's a first pass at such a check
1093 if test x$enable_c_mbchar != xno; then
1094 need_wlibio=yes
1095 else
1096 need_wlibio=no
1097 fi
1098 fi
dd75251f 1099
dd75251f 1100 else
e7140677 1101 # Using libio, but <libio.h> doesn't exist on the target system. . .
8b8ab21c 1102 need_libio=yes
8b8ab21c
BK
1103 # bkoz XXX need to add checks to enable this
1104 # pme XXX here's a first pass at such a check
1105 if test x$enable_c_mbchar != xno; then
1106 need_wlibio=yes
1107 else
1108 need_wlibio=no
1109 fi
dd75251f
BK
1110 fi
1111 ;;
e26cb7ab
MM
1112 xstdio | x | xno | xnone | xyes)
1113 # default
9717c75c 1114 CSTDIO_H=config/c_io_stdio.h
c0a26060
BK
1115 BASIC_FILE_H=config/basic_file_stdio.h
1116 BASIC_FILE_CC=config/basic_file_stdio.cc
9717c75c
BK
1117 AC_MSG_RESULT(stdio)
1118
e26cb7ab 1119 # We're not using stdio.
dd75251f 1120 need_libio=no
e26cb7ab 1121 need_wlibio=no
dd75251f
BK
1122 ;;
1123 *)
1124 echo "$enable_cstdio is an unknown io package" 1>&2
1125 exit 1
1126 ;;
b2dad0e3 1127 esac
4a9d5109
SW
1128 AC_SUBST(CSTDIO_H)
1129 AC_SUBST(BASIC_FILE_H)
c0a26060 1130 AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc)
8901ac21
BK
1131
1132 # 2000-08-04 bkoz hack
1133 CCODECVT_C=config/c_io_libio_codecvt.c
4a9d5109 1134 AC_SUBST(CCODECVT_C)
8901ac21 1135 # 2000-08-04 bkoz hack
8b8ab21c 1136
85a011b0
PE
1137 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1138 test "$need_libio" = yes || test "$need_wlibio" = yes)
b2dad0e3 1139 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
20427c6b 1140 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
c4d3f801 1141 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
4c07386b 1142 libio_la=../libio/libio.la
c4d3f801 1143 else
4c07386b 1144 libio_la=
c4d3f801
MM
1145 fi
1146 AC_SUBST(libio_la)
b2dad0e3
BK
1147])
1148
1149
1150dnl
5e218033
LR
1151dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1152dnl We must stage the required headers so that they will be installed
1153dnl with the library (unlike libgcc, the STL implementation is provided
1154dnl solely within headers). Since we must not inject random user-space
1155dnl macro names into user-provided C++ code, we first stage into <file>-in
1156dnl and process to <file> with an output command. The reason for a two-
1157dnl stage process here is to correctly handle $srcdir!=$objdir without
1158dnl having to write complex code (the sed commands to clean the macro
3a5e0e62
LR
1159dnl namespace are complex and fragile enough as it is). We must also
1160dnl add a relative path so that -I- is supported properly.
b2dad0e3
BK
1161dnl
1162AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
ede74510
AO
1163 AC_MSG_CHECKING([for thread model used by GCC])
1164 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1165 AC_MSG_RESULT([$target_thread_file])
b2dad0e3 1166
5e218033
LR
1167 if test $target_thread_file != single; then
1168 AC_DEFINE(HAVE_GTHR_DEFAULT)
1169 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
8b8ab21c 1170 fi
4a9d5109
SW
1171
1172 glibcpp_thread_h=gthr-$target_thread_file.h
1173 AC_SUBST(glibcpp_thread_h)
b2dad0e3
BK
1174])
1175
1176
52a11cbf
RH
1177dnl
1178dnl Check for exception handling support. If an explicit enable/disable
1179dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1180dnl target may or may not support call frame exceptions.
1181dnl
1182dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1183dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1184dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1185dnl
1186dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1187dnl
1188AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1189 AC_MSG_CHECKING([for exception model to use])
1190 AC_LANG_SAVE
1191 AC_LANG_CPLUSPLUS
1192 AC_ARG_ENABLE(sjlj-exceptions,
1193 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1194 [:],
1195 [dnl Botheration. Now we've got to detect the exception model.
1196 dnl Link tests against libgcc.a are problematic since -- at least
1197 dnl as of this writing -- we've not been given proper -L bits for
1198 dnl single-tree newlib and libgloss.
1199 dnl
1200 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1201 dnl conftest files before we got a change to grep them first.
1202 cat > conftest.$ac_ext << EOF
1203[#]line __oline__ "configure"
1204struct S { ~S(); };
1205void bar();
1206void foo()
1207{
1208 S s;
1209 bar();
1210}
1211EOF
1212 old_CXXFLAGS="$CXXFLAGS"
1213 CXXFLAGS=-S
1214 if AC_TRY_EVAL(ac_compile); then
1215 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1216 enable_sjlj_exceptions=yes
1217 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1218 enable_sjlj_exceptions=no
1219 fi
1220 fi
1221 CXXFLAGS="$old_CXXFLAGS"
1222 rm -f conftest*])
1223 if test x$enable_sjlj_exceptions = xyes; then
1224 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
a0cb1aa7 1225 [Define if the compiler is configured for setjmp/longjmp exceptions.])
52a11cbf
RH
1226 ac_exception_model_name=sjlj
1227 elif test x$enable_sjlj_exceptions = xno; then
1228 ac_exception_model_name="call frame"
1229 else
1230 AC_MSG_ERROR([unable to detect exception model])
1231 fi
1232 AC_LANG_RESTORE
1233 AC_MSG_RESULT($ac_exception_model_name)
1234])
1235
1236
7cda84dc
BK
1237dnl
1238dnl Check for ISO/IEC 9899:1999 "C99" support.
1239dnl
1240dnl GLIBCPP_ENABLE_C99
1241dnl --enable-c99 defines _GLIBCPP_USE_C99
1242dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1243dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1244dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1245dnl defaults to `no'.
1246dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1247dnl
1248dnl GLIBCPP_ENABLE_C99
1249AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1250 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
209fe19b 1251
7cda84dc
BK
1252 AC_ARG_ENABLE(c99,
1253 changequote(<<, >>)dnl
1254 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1255 changequote([, ])dnl
1256 [case "$enableval" in
1257 yes) enable_c99=yes ;;
1258 no) enable_c99=no ;;
1259 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1260 esac],
1261 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1262
1263 AC_LANG_SAVE
1264 AC_LANG_CPLUSPLUS
209fe19b 1265
7cda84dc 1266 # Check for the existence of <math.h> functions used if C99 is enabled.
bd937d50 1267 ac_c99_math=yes;
54eb01be 1268 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
7cda84dc
BK
1269 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1270 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1271 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1272 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1273 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1274 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
337187ff
BK
1275 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1276 AC_TRY_COMPILE([#include <math.h>],
bd937d50 1277 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
337187ff
BK
1278 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1279 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1280 AC_TRY_COMPILE([#include <math.h>],
bd937d50 1281 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
337187ff 1282 AC_TRY_COMPILE([#include <math.h>],
bd937d50 1283 [isunordered(0.0,0.0);],, [ac_c99_math=no])
bd937d50 1284 AC_MSG_RESULT($ac_c99_math)
7cda84dc 1285
61c71946
BK
1286 # Check for the existence in <stdio.h> of vscanf, et. al.
1287 ac_c99_stdio=yes;
1288 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1289 AC_TRY_COMPILE([#include <stdio.h>],
1290 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1291 AC_TRY_COMPILE([#include <stdio.h>
1292 #include <stdarg.h>
1293 void foo(char* fmt, ...)
1294 {va_list args; va_start(args, fmt);
1295 vfscanf(stderr, "%i", args);}],
a0cb1aa7 1296 [],, [ac_c99_stdio=no])
61c71946
BK
1297 AC_TRY_COMPILE([#include <stdio.h>
1298 #include <stdarg.h>
1299 void foo(char* fmt, ...)
1300 {va_list args; va_start(args, fmt);
1301 vscanf("%i", args);}],
1302 [],, [ac_c99_stdio=no])
1303 AC_TRY_COMPILE([#include <stdio.h>
1304 #include <stdarg.h>
1305 void foo(char* fmt, ...)
1306 {va_list args; va_start(args, fmt);
1307 vsnprintf(fmt, 0, "%i", args);}],
1308 [],, [ac_c99_stdio=no])
1309 AC_TRY_COMPILE([#include <stdio.h>
1310 #include <stdarg.h>
1311 void foo(char* fmt, ...)
1312 {va_list args; va_start(args, fmt);
1313 vsscanf(fmt, "%i", args);}],
1314 [],, [ac_c99_stdio=no])
1315 AC_MSG_RESULT($ac_c99_stdio)
1316
7cda84dc 1317 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
bd937d50 1318 ac_c99_stdlib=yes;
f4c79fef 1319 AC_MSG_CHECKING([for lldiv_t declaration])
7cda84dc
BK
1320 AC_CACHE_VAL(ac_c99_lldiv_t, [
1321 AC_TRY_COMPILE([#include <stdlib.h>],
f4c79fef 1322 [ lldiv_t mydivt;],
7cda84dc 1323 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
f4c79fef 1324 ])
7cda84dc 1325 AC_MSG_RESULT($ac_c99_lldiv_t)
54eb01be
PE
1326
1327 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
61c71946
BK
1328 AC_TRY_COMPILE([#include <stdlib.h>],
1329 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1330 AC_TRY_COMPILE([#include <stdlib.h>],
1331 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
54eb01be
PE
1332 AC_TRY_COMPILE([#include <stdlib.h>],
1333 [char* tmp; strtoll("gnu", &tmp, 10);],, [ac_c99_stdlib=no])
1334 AC_TRY_COMPILE([#include <stdlib.h>],
1335 [char* tmp; strtoull("gnu", &tmp, 10);],, [ac_c99_stdlib=no])
1336 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1337 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1338 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
61c71946 1339 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
7cda84dc
BK
1340 if test x"$ac_c99_lldiv_t" = x"no"; then
1341 ac_c99_stdlib=no;
1342 fi;
bd937d50 1343 AC_MSG_RESULT($ac_c99_stdlib)
7cda84dc
BK
1344
1345 # Check for the existence of <wchar.h> functions used if C99 is enabled.
68fe6226 1346 # XXX the wchar.h checks should be rolled into the general C99 bits.
bd937d50 1347 ac_c99_wchar=yes;
68fe6226 1348 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
bd937d50
BK
1349 AC_TRY_COMPILE([#include <wchar.h>],
1350 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1351 AC_TRY_COMPILE([#include <wchar.h>],
1352 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1353 AC_TRY_COMPILE([#include <wchar.h>],
1354 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
bd937d50 1355 AC_MSG_RESULT($ac_c99_wchar)
f4c79fef 1356
7cda84dc 1357 AC_MSG_CHECKING([for enabled ISO C99 support])
a0cb1aa7
PE
1358 if test x"$ac_c99_math" = x"no" ||
1359 test x"$ac_c99_stdio" = x"no" ||
1360 test x"$ac_c99_stdlib" = x"no" ||
1361 test x"$ac_c99_wchar" = x"no"; then
7cda84dc 1362 enable_c99=no;
3840fa2a 1363 fi;
7cda84dc 1364 AC_MSG_RESULT($enable_c99)
3840fa2a 1365
f4c79fef 1366 # Option parsed, now set things appropriately
7cda84dc
BK
1367 if test x"$enable_c99" = x"yes"; then
1368 AC_DEFINE(_GLIBCPP_USE_C99)
dcc41852 1369 fi
4c07386b 1370
7cda84dc 1371 AC_LANG_RESTORE
b2dad0e3
BK
1372])
1373
1374
6c3a9f72
BK
1375dnl
1376dnl Check for template specializations for the 'long long' type extension.
1377dnl NB: Must check for C99 support before calling _GLIBCPP_ENABLE_LONG_LONG
1378dnl
1379dnl GLIBCPP_ENABLE_LONG_LONG
1380dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1381dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1382dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1383dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1384dnl defaults to `no'.
1385dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1386dnl
1387dnl GLIBCPP_ENABLE_LONG_LONG
1388AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1389 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1390
1391 AC_ARG_ENABLE(long-long,
1392 changequote(<<, >>)dnl
1393 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1394 changequote([, ])dnl
1395 [case "$enableval" in
1396 yes) enable_long_long=yes ;;
1397 no) enable_long_long=no ;;
1398 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1399 esac],
1400 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1401
1402 # iostreams require strtoll, strtoull to compile. If the
1403 # GLIBCPP_ENABLE_C99 tests found these, and if C99 support is enabled,
1404 # go ahead and allow long long to be used.
1405 if test x"$enable_c99" = x"no"; then
1406 enable_long_long=no;
1407 fi
1408
1409 # Option parsed, now set things appropriately
1410 AC_MSG_CHECKING([for enabled long long support])
1411 if test x"$enable_long_long" = xyes; then
1412 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1413 fi
1414 AC_MSG_RESULT($enable_long_long)
1415])
1416
1417
99246c90 1418dnl
e3123ab3
BK
1419dnl Check for what kind of C headers to use.
1420dnl
1421dnl GLIBCPP_ENABLE_CHEADERS
1422dnl --enable-cheaders= [does stuff].
1423dnl --disable-cheaders [does not do anything, really].
1424dnl + This will eventually need to be 'c_shadow' by default.
1425dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1426dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
1427dnl If ommitted, it defaults to `c_std'.
1428AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1429define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1430AC_MSG_CHECKING([for c header strategy to use])
1431AC_ARG_ENABLE(cheaders,
99246c90 1432changequote(<<, >>)dnl
572051a2 1433<< --enable-cheaders construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
5780a46b
BK
1434changequote([, ])
1435 [case "$enableval" in
e3123ab3 1436 c)
9b8fd32c 1437 enable_cheaders=c
8b8ab21c 1438 ;;
e3123ab3 1439 c_std)
9b8fd32c 1440 enable_cheaders=c_std
8b8ab21c 1441 ;;
e3123ab3 1442 c_shadow)
9b8fd32c 1443 enable_cheaders=c_shadow
e3123ab3
BK
1444 ;;
1445 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
8b8ab21c 1446 ;;
5780a46b 1447 esac],
e3123ab3
BK
1448 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1449 AC_MSG_RESULT($enable_cheaders)
5780a46b
BK
1450
1451 dnl Option parsed, now set things appropriately
e3123ab3
BK
1452 case "$enable_cheaders" in
1453 c_shadow)
8b8ab21c 1454 CSHADOW_FLAGS="-fno-builtin"
fb124b99 1455 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow'
0517cb99 1456 AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
8b8ab21c 1457 ;;
e3123ab3
BK
1458 c_std)
1459 CSHADOW_FLAGS=""
fb124b99 1460 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
e3123ab3
BK
1461 ;;
1462 c)
8b8ab21c 1463 CSHADOW_FLAGS=""
fb124b99 1464 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
99246c90 1465 ;;
5780a46b 1466 esac
5b80666b 1467
e466dc8a
BK
1468 AC_SUBST(CSHADOW_FLAGS)
1469 AC_SUBST(C_INCLUDE_DIR)
e3123ab3 1470 AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cheaders" = c_shadow)
99246c90 1471])
b2dad0e3 1472
8b8ab21c
BK
1473
1474dnl
1475dnl Check for wide character support. Has the same effect as the option
1476dnl in gcc's configure, but in a form that autoconf can mess with.
1477dnl
1478dnl GLIBCPP_ENABLE_C_MBCHAR
1479dnl --enable-c-mbchar requests all the wchar_t stuff.
1480dnl --disable-c-mbchar doesn't.
1481dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1482dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1483dnl defaults to `no'.
1484AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1485define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1486AC_ARG_ENABLE(c-mbchar,
1487changequote(<<, >>)dnl
1488<< --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1489changequote([, ])dnl
1490[case "$enableval" in
1491 yes) enable_c_mbchar=yes ;;
1492 no) enable_c_mbchar=no ;;
1493 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1494 esac],
1495enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1496dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1497])
1498
1499
e466dc8a
BK
1500dnl
1501dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1502dnl
e466dc8a
BK
1503dnl TOPLEVEL_INCLUDES
1504dnl LIBMATH_INCLUDES
1505dnl LIBSUPCXX_INCLUDES
1506dnl LIBIO_INCLUDES
1507dnl CSHADOW_INCLUDES
1508dnl
4a9d5109 1509dnl GLIBCPP_EXPORT_INCLUDES
e466dc8a 1510AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
4a9d5109
SW
1511 # Root level of the build directory include sources.
1512 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
e466dc8a 1513
9f935979 1514 # Passed down for canadian crosses.
4a9d5109 1515 if test x"$CANADIAN" = xyes; then
9f935979
BK
1516 TOPLEVEL_INCLUDES='-I$(includedir)'
1517 fi
e466dc8a
BK
1518
1519 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1520
1521 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1522
4a9d5109
SW
1523 if test x"$need_libio" = xyes; then
1524 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1525 AC_SUBST(LIBIO_INCLUDES)
1526 fi
e466dc8a
BK
1527
1528 # Now, export this to all the little Makefiles....
4a9d5109 1529 AC_SUBST(GLIBCPP_INCLUDES)
e466dc8a
BK
1530 AC_SUBST(TOPLEVEL_INCLUDES)
1531 AC_SUBST(LIBMATH_INCLUDES)
1532 AC_SUBST(LIBSUPCXX_INCLUDES)
e466dc8a
BK
1533])
1534
1535
1536dnl
1537dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1538dnl
1539AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1540 # Optimization flags that are probably a good idea for thrill-seekers. Just
1541 # uncomment the lines below and make, everything else is ready to go...
1542 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1543 OPTIMIZE_CXXFLAGS=
1544 AC_SUBST(OPTIMIZE_CXXFLAGS)
1545
1546 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1547 AC_SUBST(WARN_FLAGS)
1548])
1549
72ed2836 1550dnl
43ba4a58
BK
1551dnl GLIBCPP_EXPORT_INSTALL_INFO
1552dnl calculates gxx_install_dir
72ed2836
BK
1553dnl exports glibcpp_toolexecdir
1554dnl exports glibcpp_toolexeclibdir
572051a2
PE
1555dnl exports glibcpp_builddir
1556dnl exports glibcpp_srcdir
1557dnl exports glibcpp_prefixdir
72ed2836
BK
1558dnl
1559dnl Assumes cross_compiling bits already done, and with_cross_host in
1560dnl particular
43ba4a58 1561dnl
72ed2836 1562dnl GLIBCPP_EXPORT_INSTALL_INFO
43ba4a58
BK
1563AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1564
72ed2836
BK
1565glibcpp_toolexecdir=no
1566glibcpp_toolexeclibdir=no
1567
c6192d88 1568# Export build and source directories.
bd937d50
BK
1569# These need to be absolute paths, yet at the same time need to
1570# canonicalize only relative paths, because then amd will not unmount
1571# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
52a57250 1572glibcpp_builddir=`pwd`
bd937d50
BK
1573case $srcdir in
1574[\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
1575*) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
1576esac
1577glibcpp_prefixdir=${prefix}
c6192d88 1578
43ba4a58
BK
1579AC_MSG_CHECKING([for interface version number])
1580libstdcxx_interface=$INTERFACE
1581AC_MSG_RESULT($libstdcxx_interface)
1582
1583# Process the option --with-gxx-include-dir=<path to include-files directory>
1584AC_MSG_CHECKING([for --with-gxx-include-dir])
1585AC_ARG_WITH(gxx-include-dir,
572051a2 1586[ --with-gxx-include-dir the installation directory for include files],
43ba4a58
BK
1587[case "${withval}" in
1588 yes)
1589 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1590 gxx_include_dir=no
1591 ;;
1592 no)
1593 gxx_include_dir=no
1594 ;;
1595 *)
1596 gxx_include_dir=${withval}
1597 ;;
1598esac], [gxx_include_dir=no])
1599AC_MSG_RESULT($gxx_include_dir)
1600
1601# Process the option "--enable-version-specific-runtime-libs"
1602AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1603AC_ARG_ENABLE(version-specific-runtime-libs,
1604[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1605[ version_specific_libs=yes
1606# Need the gcc compiler version to know where to install libraries
1607# and header files if --enable-version-specific-runtime-libs option
1608# is selected.
1609changequote(,)dnl
72ed2836
BK
1610gcc_version_trigger=${srcdir}/../gcc/version.c
1611gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
1612gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
1613gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
1614glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
f34f2346 1615glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
43ba4a58 1616changequote([,])dnl
43ba4a58
BK
1617],version_specific_libs=no)
1618AC_MSG_RESULT($version_specific_libs)
1619
72ed2836 1620# Default case for install directory for include files.
43ba4a58 1621if test x"$version_specific_libs" = x"no" \
c53cf0fe 1622 && test x"$gxx_include_dir" = x"no"; then
72ed2836
BK
1623 gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
1624fi
1625
1626# Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1627# Install a library built with a cross compiler in tooldir, not libdir.
1628if test x"$glibcpp_toolexecdir" = x"no"; then
a0cb1aa7
PE
1629 if test -n "$with_cross_host" &&
1630 test x"$with_cross_host" != x"no"; then
72ed2836
BK
1631 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1632 glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
1633 else
1634 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1635 glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
1636 fi
43ba4a58 1637fi
72ed2836
BK
1638
1639AC_MSG_CHECKING([for install location])
43ba4a58 1640AC_MSG_RESULT($gxx_include_dir)
72ed2836 1641
c6192d88
BK
1642AC_SUBST(glibcpp_builddir)
1643AC_SUBST(glibcpp_srcdir)
1644AC_SUBST(glibcpp_prefixdir)
43ba4a58 1645AC_SUBST(gxx_include_dir)
72ed2836
BK
1646AC_SUBST(glibcpp_toolexecdir)
1647AC_SUBST(glibcpp_toolexeclibdir)
43ba4a58
BK
1648])
1649
1650
af9fe0d1
BK
1651# Check whether LC_MESSAGES is available in <locale.h>.
1652# Ulrich Drepper <drepper@cygnus.com>, 1995.
1653#
1654# This file file be copied and used freely without restrictions. It can
1655# be used in projects which are not available under the GNU Public License
1656# but which still want to provide support for the GNU gettext functionality.
1657# Please note that the actual code is *not* freely available.
1658
1659# serial 1
1660
819004bb
BK
1661AC_DEFUN(AC_LC_MESSAGES, [
1662 AC_CHECK_HEADER(locale.h, [
af9fe0d1
BK
1663 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
1664 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1665 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
1666 if test $ac_cv_val_LC_MESSAGES = yes; then
1667 AC_DEFINE(HAVE_LC_MESSAGES)
1668 fi
819004bb
BK
1669 ])
1670])
af9fe0d1
BK
1671
1672
1673# Check for functions in math library.
1674# Ulrich Drepper <drepper@cygnus.com>, 1998.
1675#
1676# This file can be copied and used freely without restrictions. It can
1677# be used in projects which are not available under the GNU Public License
1678# but which still want to provide support for the GNU gettext functionality.
1679# Please note that the actual code is *not* freely available.
1680
1681# serial 1
1682
1683dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1684AC_DEFUN(AC_REPLACE_MATHFUNCS,
1685[AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])
1686AC_SUBST(LIBMATHOBJS)dnl
1687])
1688
1689
1690# Check for string functions.
1691# Ulrich Drepper <drepper@cygnus.com>, 1998.
1692#
1693# This file can be copied and used freely without restrictions. It can
1694# be used in projects which are not available under the GNU Public License
1695# but which still want to provide support for the GNU gettext functionality.
1696# Please note that the actual code is *not* freely available.
1697
1698# serial 1
1699
1700dnl AC_REPLACE_STRINGFUNCS(FUNCTION...)
1701AC_DEFUN(AC_REPLACE_STRINGFUNCS,
1702[AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
1703AC_SUBST(LIBSTRINGOBJS)dnl
1704])
b2dad0e3 1705
29bd52c8
PE
1706
1707dnl This macro searches for a GNU version of make. If a match is found, the
1708dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
99b51359 1709dnl set to "#". This is useful for including a special features in a Makefile,
29bd52c8
PE
1710dnl which cannot be handled by other versions of make. The variable
1711dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1712dnl the empty string otherwise.
1713dnl
1714dnl Here is an example of its use:
1715dnl
1716dnl Makefile.in might contain:
1717dnl
1718dnl # A failsafe way of putting a dependency rule into a makefile
1719dnl $(DEPEND):
1720dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1721dnl
1722dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1723dnl @ifGNUmake@ include $(DEPEND)
1724dnl @ifGNUmake@ endif
1725dnl
1726dnl Then configure.in would normally contain:
1727dnl
1728dnl CHECK_GNU_MAKE()
1729dnl AC_OUTPUT(Makefile)
1730dnl
1731dnl Then perhaps to cause gnu make to override any other make, we could do
1732dnl something like this (note that GNU make always looks for GNUmakefile first):
1733dnl
1734dnl if ! test x$_cv_gnu_make_command = x ; then
1735dnl mv Makefile GNUmakefile
1736dnl echo .DEFAULT: > Makefile ;
1737dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1738dnl fi
1739dnl
1740dnl Then, if any (well almost any) other make is called, and GNU make also
1741dnl exists, then the other make wraps the GNU make.
1742dnl
1743dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
421173e6 1744dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
29bd52c8
PE
1745dnl
1746dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1747dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
79f5e38e
BC
1748dnl #### conditional's subshell (" --version" is not a command), using a
1749dnl #### different option to grep(1).
29bd52c8 1750dnl #### -pme
57d278be
MS
1751dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
1752dnl #### ${MAKE:-make}).
1753dnl #### -msokolov
29bd52c8
PE
1754AC_DEFUN(
1755 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
1756 _cv_gnu_make_command='' ;
1757dnl Search all the common names for GNU make
57d278be 1758 for a in "${MAKE-make}" make gmake gnumake ; do
626d8f0a 1759 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
79f5e38e 1760 then
29bd52c8
PE
1761 _cv_gnu_make_command=$a ;
1762 break;
1763 fi
1764 done ;
1765 ) ;
1766dnl If there was a GNU version, then set @ifGNUmake@ to the empty
1767dnl string, '#' otherwise
1768 if test "x$_cv_gnu_make_command" != "x" ; then
1769 ifGNUmake='' ;
1770 else
1771 ifGNUmake='#' ;
1772 fi
1773 AC_SUBST(ifGNUmake)
1774])
1775
fe413112
PE
1776
1777dnl Check for headers for, and arguments to, the setrlimit() function.
1778dnl Used only in testsuite_hooks.h.
1779AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
1780 AC_TRY_COMPILE([#include <sys/resource.h>
1781 #include <unistd.h>
1782 ], [ int f = RLIMIT_$1 ; ],
1783 [glibcpp_mresult=1], [glibcpp_mresult=0])
1784 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
1785 [Only used in build directory testsuite_hooks.h.])
1786])
1787AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
1788 setrlimit_have_needed_headers=yes
1789 AC_CHECK_HEADERS(sys/resource.h unistd.h,
1790 [],
1791 setrlimit_have_needed_headers=no)
1792 # If don't have the headers, then we can't run the tests now, and we
1793 # won't be seeing any of these during testsuite compilation.
1794 if test $setrlimit_have_needed_headers = yes; then
1795 # Can't do these in a loop, else the resulting syntax is wrong.
1796 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
1797 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
1798 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
1799 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
1800 fi
1801])
1802
1803
1804dnl
1805dnl Does any necessary configuration of the testsuite directory. Generates
1806dnl the testsuite_hooks.h header.
1807dnl
1808dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
1809AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
1810 GLIBCPP_CHECK_SETRLIMIT
1811])
1812
1813
3df64633
AO
1814sinclude(../libtool.m4)
1815dnl The lines below arrange for aclocal not to bring an installed
1816dnl libtool.m4 into aclocal.m4, while still arranging for automake to
1817dnl add a definition of LIBTOOL to Makefile.in.
1818ifelse(,,,[AC_SUBST(LIBTOOL)
1819AC_DEFUN([AM_PROG_LIBTOOL])
1820AC_DEFUN([AC_LIBTOOL_DLOPEN])
1821AC_DEFUN([AC_PROG_LD])
1822])
7f586614 1823
9a200b0a 1824
7cda84dc 1825
b2dad0e3
BK
1826# Do all the work for Automake. This macro actually does too much --
1827# some checks are only needed if your package does certain things.
1828# But this isn't really a big deal.
1829
1830# serial 1
1831
1832dnl Usage:
1833dnl AM_INIT_AUTOMAKE(package,version, [no-define])
1834
1835AC_DEFUN(AM_INIT_AUTOMAKE,
1836[AC_REQUIRE([AC_PROG_INSTALL])
1837PACKAGE=[$1]
1838AC_SUBST(PACKAGE)
1839VERSION=[$2]
1840AC_SUBST(VERSION)
1841dnl test to see if srcdir already configured
1842if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
1843 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
1844fi
1845ifelse([$3],,
1846AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
1847AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
1848AC_REQUIRE([AM_SANITY_CHECK])
1849AC_REQUIRE([AC_ARG_PROGRAM])
1850dnl FIXME This is truly gross.
1851missing_dir=`cd $ac_aux_dir && pwd`
1852AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
1853AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
1854AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
1855AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
1856AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
1857AC_REQUIRE([AC_PROG_MAKE_SET])])
1858
1859#
1860# Check to make sure that the build environment is sane.
1861#
1862
1863AC_DEFUN(AM_SANITY_CHECK,
1864[AC_MSG_CHECKING([whether build environment is sane])
1865# Just in case
1866sleep 1
1867echo timestamp > conftestfile
1868# Do `set' in a subshell so we don't clobber the current shell's
1869# arguments. Must try -L first in case configure is actually a
1870# symlink; some systems play weird games with the mod time of symlinks
1871# (eg FreeBSD returns the mod time of the symlink's containing
1872# directory).
1873if (
1874 set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
1875 if test "[$]*" = "X"; then
1876 # -L didn't work.
1877 set X `ls -t $srcdir/configure conftestfile`
1878 fi
1879 if test "[$]*" != "X $srcdir/configure conftestfile" \
1880 && test "[$]*" != "X conftestfile $srcdir/configure"; then
1881
1882 # If neither matched, then we have a broken ls. This can happen
1883 # if, for instance, CONFIG_SHELL is bash and it inherits a
1884 # broken ls alias from the environment. This has actually
1885 # happened. Such a system could not be considered "sane".
1886 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
1887alias in your environment])
1888 fi
1889
1890 test "[$]2" = conftestfile
1891 )
1892then
1893 # Ok.
1894 :
1895else
1896 AC_MSG_ERROR([newly created file is older than distributed files!
1897Check your system clock])
1898fi
1899rm -f conftest*
1900AC_MSG_RESULT(yes)])
1901
1902dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
1903dnl The program must properly implement --version.
1904AC_DEFUN(AM_MISSING_PROG,
1905[AC_MSG_CHECKING(for working $2)
1906# Run test in a subshell; some versions of sh will print an error if
1907# an executable is not found, even if stderr is redirected.
1908# Redirect stdin to placate older versions of autoconf. Sigh.
1909if ($2 --version) < /dev/null > /dev/null 2>&1; then
1910 $1=$2
1911 AC_MSG_RESULT(found)
1912else
1913 $1="$3/missing $2"
1914 AC_MSG_RESULT(missing)
1915fi
1916AC_SUBST($1)])
1917
1918# Add --enable-maintainer-mode option to configure.
1919# From Jim Meyering
1920
1921# serial 1
1922
1923AC_DEFUN(AM_MAINTAINER_MODE,
1924[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
1925 dnl maintainer-mode is disabled by default
1926 AC_ARG_ENABLE(maintainer-mode,
1927[ --enable-maintainer-mode enable make rules and dependencies not useful
1928 (and sometimes confusing) to the casual installer],
1929 USE_MAINTAINER_MODE=$enableval,
1930 USE_MAINTAINER_MODE=no)
1931 AC_MSG_RESULT($USE_MAINTAINER_MODE)
1932 AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
1933 MAINT=$MAINTAINER_MODE_TRUE
1934 AC_SUBST(MAINT)dnl
1935]
1936)
1937
1938# Define a conditional.
1939
1940AC_DEFUN(AM_CONDITIONAL,
1941[AC_SUBST($1_TRUE)
1942AC_SUBST($1_FALSE)
1943if $2; then
1944 $1_TRUE=
1945 $1_FALSE='#'
1946else
1947 $1_TRUE='#'
1948 $1_FALSE=
1949fi])
1950
b2dad0e3
BK
1951# Like AC_CONFIG_HEADER, but automatically create stamp file.
1952
1953AC_DEFUN(AM_CONFIG_HEADER,
1954[AC_PREREQ([2.12])
1955AC_CONFIG_HEADER([$1])
1956dnl When config.status generates a header, we must update the stamp-h file.
1957dnl This file resides in the same directory as the config header
1958dnl that is generated. We must strip everything past the first ":",
1959dnl and everything past the last "/".
1960AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
1961ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
1962<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
1963<<am_indx=1
1964for am_file in <<$1>>; do
1965 case " <<$>>CONFIG_HEADERS " in
1966 *" <<$>>am_file "*<<)>>
1967 echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
1968 ;;
1969 esac
1970 am_indx=`expr "<<$>>am_indx" + 1`
1971done<<>>dnl>>)
1972changequote([,]))])
1973