re PR libstdc++/3066 (configure.in generates bad arguments for cross compiling libraries)
[gcc.git] / libstdc++-v3 / aclocal.m4
1 dnl aclocal.m4 generated automatically by aclocal 1.4-p6
2
3 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
4 dnl This file is free software; the Free Software Foundation
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
7
8 dnl This program is distributed in the hope that it will be useful,
9 dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10 dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 dnl PARTICULAR PURPOSE.
12
13 dnl
14 dnl Initialize basic configure bits, set toplevel_srcdir for Makefiles.
15 dnl
16 dnl GLIBCPP_TOPREL_CONFIGURE
17 AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
18 dnl Default to --enable-multilib (this is also passed by default
19 dnl from the ubercommon-top-level configure)
20 AC_ARG_ENABLE(multilib,
21 [ --enable-multilib build hella library versions (default)],
22 [case "${enableval}" in
23 yes) multilib=yes ;;
24 no) multilib=no ;;
25 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
26 esac], [multilib=yes])dnl
27
28 # When building with srcdir == objdir, links to the source files will
29 # be created in directories within the target_subdir. We have to
30 # adjust toplevel_srcdir accordingly, so that configure finds
31 # install-sh and other auxiliary files that live in the top-level
32 # source directory.
33 if test "${srcdir}" = "."; then
34 if test -z "${with_target_subdir}"; then
35 toprel=".."
36 else
37 if test "${with_target_subdir}" != "."; then
38 toprel="${with_multisrctop}../.."
39 else
40 toprel="${with_multisrctop}.."
41 fi
42 fi
43 else
44 toprel=".."
45 fi
46 AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
47 toplevel_srcdir=\${top_srcdir}/$toprel
48 AC_SUBST(toplevel_srcdir)
49 ])
50
51 dnl
52 dnl Initialize the rest of the library configury.
53 dnl
54 dnl GLIBCPP_CONFIGURE
55 AC_DEFUN(GLIBCPP_CONFIGURE, [
56 # Export build and source directories.
57 # These need to be absolute paths, yet at the same time need to
58 # canonicalize only relative paths, because then amd will not unmount
59 # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
60 glibcpp_builddir=`${PWDCMD-pwd}`
61 case $srcdir in
62 [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
63 *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
64 esac
65 AC_SUBST(glibcpp_builddir)
66 AC_SUBST(glibcpp_srcdir)
67
68 dnl This is here just to satisfy automake.
69 ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
70
71 AC_PROG_AWK
72 # Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.5x, can also
73 # be 'cp -p' if linking isn't available. Uncomment the next line to
74 # force a particular method.
75 #ac_cv_prog_LN_S='cp -p'
76 AC_PROG_LN_S
77
78 # We use these options to decide which functions to include.
79 AC_ARG_WITH(target-subdir,
80 [ --with-target-subdir=SUBDIR
81 configuring in a subdirectory])
82 AC_ARG_WITH(cross-host,
83 [ --with-cross-host=HOST configuring with a cross compiler])
84
85 AC_ARG_WITH(newlib,
86 [ --with-newlib Configuring with newlib])
87
88 glibcpp_basedir=$srcdir/$toprel/$1/libstdc++-v3
89 AC_SUBST(glibcpp_basedir)
90
91 # Never versions of autoconf add an underscore to these functions.
92 # Prevent future problems ...
93 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
94 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
95 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
96 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
97
98 # AC_PROG_CC
99 # FIXME: We temporarily define our own version of AC_PROG_CC. This is
100 # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
101 # are probably using a cross compiler, which will not be able to fully
102 # link an executable. This is addressed in later versions of autoconf.
103
104 AC_DEFUN(LIB_AC_PROG_CC,
105 [AC_BEFORE([$0], [AC_PROG_CPP])dnl
106 dnl Fool anybody using AC_PROG_CC.
107 AC_PROVIDE([AC_PROG_CC])
108 AC_CHECK_PROG(CC, gcc, gcc)
109 if test -z "$CC"; then
110 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
111 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
112 fi
113
114 AC_PROG_CC_GNU
115
116 if test $ac_cv_prog_gcc = yes; then
117 GCC=yes
118 dnl Check whether -g works, even if CFLAGS is set, in case the package
119 dnl plays around with CFLAGS (such as to build both debugging and
120 dnl normal versions of a library), tasteless as that idea is.
121 ac_test_CFLAGS="${CFLAGS+set}"
122 ac_save_CFLAGS="$CFLAGS"
123 CFLAGS=
124 AC_PROG_CC_G
125 if test "$ac_test_CFLAGS" = set; then
126 CFLAGS="$ac_save_CFLAGS"
127 elif test $ac_cv_prog_cc_g = yes; then
128 CFLAGS="-g -O2"
129 else
130 CFLAGS="-O2"
131 fi
132 else
133 GCC=
134 test "${CFLAGS+set}" = set || CFLAGS="-g"
135 fi
136 ])
137
138 LIB_AC_PROG_CC
139
140 # Likewise for AC_PROG_CXX. We can't just call it directly because g++
141 # will try to link in libstdc++.
142 AC_DEFUN(LIB_AC_PROG_CXX,
143 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
144 dnl Fool anybody using AC_PROG_CXX.
145 AC_PROVIDE([AC_PROG_CXX])
146 # Use glibcpp_CXX so that we do not cause CXX to be cached with the
147 # flags that come in CXX while configuring libstdc++. They're different
148 # from those used for all other target libraries. If CXX is set in
149 # the environment, respect that here.
150 glibcpp_CXX=$CXX
151 AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
152 AC_SUBST(glibcpp_CXX)
153 CXX=$glibcpp_CXX
154 test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
155
156 AC_PROG_CXX_GNU
157
158 if test $ac_cv_prog_gxx = yes; then
159 GXX=yes
160 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
161 dnl plays around with CXXFLAGS (such as to build both debugging and
162 dnl normal versions of a library), tasteless as that idea is.
163 ac_test_CXXFLAGS="${CXXFLAGS+set}"
164 ac_save_CXXFLAGS="$CXXFLAGS"
165 CXXFLAGS=
166 AC_PROG_CXX_G
167 if test "$ac_test_CXXFLAGS" = set; then
168 CXXFLAGS="$ac_save_CXXFLAGS"
169 elif test $ac_cv_prog_cxx_g = yes; then
170 CXXFLAGS="-g -O2"
171 else
172 CXXFLAGS="-O2"
173 fi
174 else
175 GXX=
176 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
177 fi
178 ])
179
180 LIB_AC_PROG_CXX
181
182 # For directory versioning (e.g., headers) and other variables.
183 AC_MSG_CHECKING([for GCC version number])
184 gcc_version=`$glibcpp_CXX -dumpversion`
185 AC_MSG_RESULT($gcc_version)
186
187 # For some reason, gettext needs this.
188 AC_ISC_POSIX
189
190 AC_CHECK_TOOL(AS, as)
191 AC_CHECK_TOOL(AR, ar)
192 AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
193 AC_PROG_INSTALL
194
195 AM_MAINTAINER_MODE
196
197 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
198 # at least currently, we never actually build a program, so we never
199 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
200 # fails, because we are probably configuring with a cross compiler
201 # which can't create executables. So we include AC_EXEEXT to keep
202 # automake happy, but we don't execute it, since we don't care about
203 # the result.
204 if false; then
205 # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
206 # to nothing, so nothing would remain between `then' and `fi' if it
207 # were not for the `:' below.
208 :
209 AC_EXEEXT
210 fi
211
212 case [$]{glibcpp_basedir} in
213 /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
214 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
215 esac
216
217 # Find platform-specific directories containing configuration info. In
218 # addition to possibly modifying the same flags, it also sets up symlinks.
219 GLIBCPP_CHECK_HOST
220 ])
221
222
223 dnl
224 dnl Check to see if g++ can compile this library, and if so, if any version-
225 dnl specific precautions need to be taken.
226 dnl
227 dnl GLIBCPP_CHECK_COMPILER_VERSION
228 AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
229 if test ! -f stamp-sanity-compiler; then
230 AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
231 AC_LANG_SAVE
232 AC_LANG_CPLUSPLUS
233 AC_TRY_COMPILE(, [
234 #if __GNUC__ < 3
235 not_ok
236 #endif
237 ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
238 AC_LANG_RESTORE
239 AC_MSG_RESULT($gpp_satisfactory)
240 touch stamp-sanity-compiler
241 fi
242 ])
243
244
245 dnl
246 dnl Tests for newer compiler features, or features that are present in newer
247 dnl compiler versions but not older compiler versions still in use, should
248 dnl be placed here.
249 dnl
250 dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
251 dnl new inlining code or the new system_header pragma will die on -Werror.
252 dnl Leave it out by default and use maint-mode to use it.
253 dnl
254 dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
255 dnl compiler supports it and the user has not requested debug mode.
256 dnl
257 dnl GLIBCPP_CHECK_COMPILER_FEATURES
258 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
259 # All these tests are for C++; save the language and the compiler flags.
260 # The CXXFLAGS thing is suspicious, but based on similar bits previously
261 # found in GLIBCPP_CONFIGURE.
262 AC_LANG_SAVE
263 AC_LANG_CPLUSPLUS
264 ac_test_CXXFLAGS="${CXXFLAGS+set}"
265 ac_save_CXXFLAGS="$CXXFLAGS"
266
267 # Check for maintainer-mode bits.
268 if test x"$USE_MAINTAINER_MODE" = xno; then
269 WERROR=''
270 else
271 WERROR='-Werror'
272 fi
273
274 # Check for -ffunction-sections -fdata-sections
275 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
276 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
277 AC_TRY_COMPILE(, [int foo;
278 ], [ac_fdsections=yes], [ac_fdsections=no])
279 if test "$ac_test_CXXFLAGS" = set; then
280 CXXFLAGS="$ac_save_CXXFLAGS"
281 else
282 # this is the suspicious part
283 CXXFLAGS=''
284 fi
285 if test x"$ac_fdsections" = x"yes"; then
286 SECTION_FLAGS='-ffunction-sections -fdata-sections'
287 fi
288 AC_MSG_RESULT($ac_fdsections)
289
290 AC_LANG_RESTORE
291 AC_SUBST(WERROR)
292 AC_SUBST(SECTION_FLAGS)
293 ])
294
295
296 dnl
297 dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
298 dnl the native linker is in use, all variables will be defined to something
299 dnl safe (like an empty string).
300 dnl
301 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
302 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
303 dnl Define LD, with_gnu_ld, and (possibly) glibcpp_gnu_ld_version as
304 dnl side-effects of testing.
305 dnl
306 dnl GLIBCPP_CHECK_LINKER_FEATURES
307 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
308 # If we're not using GNU ld, then there's no point in even trying these
309 # tests. Check for that first. We should have already tested for gld
310 # by now (in libtool), but require it now just to be safe...
311 test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
312 test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
313 AC_REQUIRE([AC_PROG_LD])
314
315 # The name set by libtool depends on the version of libtool. Shame on us
316 # for depending on an impl detail, but c'est la vie. Older versions used
317 # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
318 # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
319 # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
320 # set (hence we're using an older libtool), then set it.
321 if test x${with_gnu_ld+set} != xset; then
322 if test x${ac_cv_prog_gnu_ld+set} != xset; then
323 # We got through "ac_require(ac_prog_ld)" and still not set? Huh?
324 with_gnu_ld=no
325 else
326 with_gnu_ld=$ac_cv_prog_gnu_ld
327 fi
328 fi
329
330 # Start by getting the version number. I think the libtool test already
331 # does some of this, but throws away the result.
332 changequote(,)
333 ldver=`$LD --version 2>/dev/null | head -1 | \
334 sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
335 changequote([,])
336 glibcpp_gnu_ld_version=`echo $ldver | \
337 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
338
339 # Set --gc-sections.
340 if test "$with_gnu_ld" = "notbroken"; then
341 # GNU ld it is! Joy and bunny rabbits!
342
343 # All these tests are for C++; save the language and the compiler flags.
344 # Need to do this so that g++ won't try to link in libstdc++
345 ac_test_CFLAGS="${CFLAGS+set}"
346 ac_save_CFLAGS="$CFLAGS"
347 CFLAGS='-x c++ -Wl,--gc-sections'
348
349 # Check for -Wl,--gc-sections
350 # XXX This test is broken at the moment, as symbols required for
351 # linking are now in libsupc++ (not built yet.....). In addition,
352 # this test has cored on solaris in the past. In addition,
353 # --gc-sections doesn't really work at the moment (keeps on discarding
354 # used sections, first .eh_frame and now some of the glibc sections for
355 # iconv). Bzzzzt. Thanks for playing, maybe next time.
356 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
357 AC_TRY_RUN([
358 int main(void)
359 {
360 try { throw 1; }
361 catch (...) { };
362 return 0;
363 }
364 ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
365 if test "$ac_test_CFLAGS" = set; then
366 CFLAGS="$ac_save_CFLAGS"
367 else
368 # this is the suspicious part
369 CFLAGS=''
370 fi
371 if test "$ac_sectionLDflags" = "yes"; then
372 SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
373 fi
374 AC_MSG_RESULT($ac_sectionLDflags)
375 fi
376
377 # Set linker optimization flags.
378 if test x"$with_gnu_ld" = x"yes"; then
379 OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
380 fi
381
382 AC_SUBST(SECTION_LDFLAGS)
383 AC_SUBST(OPT_LDFLAGS)
384 ])
385
386
387 dnl
388 dnl Check to see if the (math function) argument passed is
389 dnl declared when using the c++ compiler
390 dnl ASSUMES argument is a math function with ONE parameter
391 dnl
392 dnl GLIBCPP_CHECK_MATH_DECL_1
393 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
394 AC_MSG_CHECKING([for $1 declaration])
395 if test x${glibcpp_cv_func_$1_use+set} != xset; then
396 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
397 AC_LANG_SAVE
398 AC_LANG_CPLUSPLUS
399 AC_TRY_COMPILE([#include <math.h>
400 #ifdef HAVE_IEEEFP_H
401 #include <ieeefp.h>
402 #endif
403 ],
404 [ $1(0);],
405 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
406 AC_LANG_RESTORE
407 ])
408 fi
409 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
410 ])
411
412 dnl
413 dnl Check to see if the (math function) argument passed is
414 dnl 1) declared when using the c++ compiler
415 dnl 2) has "C" linkage
416 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
417 dnl
418 dnl Define HAVE_CARGF etc if "cargf" is declared and links
419 dnl
420 dnl argument 1 is name of function to check
421 dnl
422 dnl ASSUMES argument is a math function with ONE parameter
423 dnl
424 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
425 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
426 GLIBCPP_CHECK_MATH_DECL_1($1)
427 if test x$glibcpp_cv_func_$1_use = x"yes"; then
428 AC_CHECK_FUNCS($1)
429 else
430 GLIBCPP_CHECK_MATH_DECL_1(_$1)
431 if test x$glibcpp_cv_func__$1_use = x"yes"; then
432 AC_CHECK_FUNCS(_$1)
433 fi
434 fi
435 ])
436
437
438 dnl
439 dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
440 dnl of functions at once. It's an all-or-nothing check -- either
441 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
442 dnl Doing it this way saves significant configure time.
443 AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
444 AC_MSG_CHECKING([for $1 functions])
445 AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
446 AC_LANG_SAVE
447 AC_LANG_CPLUSPLUS
448 AC_TRY_COMPILE([#include <math.h>],
449 [ `for x in $3; do echo "$x (0);"; done` ],
450 [glibcpp_cv_func_$2_use=yes],
451 [glibcpp_cv_func_$2_use=no])
452 AC_LANG_RESTORE])
453 AC_MSG_RESULT($glibcpp_cv_func_$2_use)
454 if test x$glibcpp_cv_func_$2_use = x"yes"; then
455 AC_CHECK_FUNCS($3)
456 fi
457 ])
458
459 dnl
460 dnl Check to see if the (math function) argument passed is
461 dnl declared when using the c++ compiler
462 dnl ASSUMES argument is a math function with TWO parameters
463 dnl
464 dnl GLIBCPP_CHECK_MATH_DECL_2
465 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
466 AC_MSG_CHECKING([for $1 declaration])
467 if test x${glibcpp_cv_func_$1_use+set} != xset; then
468 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
469 AC_LANG_SAVE
470 AC_LANG_CPLUSPLUS
471 AC_TRY_COMPILE([#include <math.h>],
472 [ $1(0, 0);],
473 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
474 AC_LANG_RESTORE
475 ])
476 fi
477 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
478 ])
479
480 dnl
481 dnl Check to see if the (math function) argument passed is
482 dnl 1) declared when using the c++ compiler
483 dnl 2) has "C" linkage
484 dnl
485 dnl Define HAVE_CARGF etc if "cargf" is declared and links
486 dnl
487 dnl argument 1 is name of function to check
488 dnl
489 dnl ASSUMES argument is a math function with TWO parameters
490 dnl
491 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
492 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
493 GLIBCPP_CHECK_MATH_DECL_2($1)
494 if test x$glibcpp_cv_func_$1_use = x"yes"; then
495 AC_CHECK_FUNCS($1)
496 else
497 GLIBCPP_CHECK_MATH_DECL_2(_$1)
498 if test x$glibcpp_cv_func__$1_use = x"yes"; then
499 AC_CHECK_FUNCS(_$1)
500 fi
501 fi
502 ])
503
504
505 dnl
506 dnl Check to see if the (math function) argument passed is
507 dnl declared when using the c++ compiler
508 dnl ASSUMES argument is a math function with THREE parameters
509 dnl
510 dnl GLIBCPP_CHECK_MATH_DECL_3
511 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
512 AC_MSG_CHECKING([for $1 declaration])
513 if test x${glibcpp_cv_func_$1_use+set} != xset; then
514 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
515 AC_LANG_SAVE
516 AC_LANG_CPLUSPLUS
517 AC_TRY_COMPILE([#include <math.h>],
518 [ $1(0, 0, 0);],
519 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
520 AC_LANG_RESTORE
521 ])
522 fi
523 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
524 ])
525
526 dnl
527 dnl Check to see if the (math function) argument passed is
528 dnl 1) declared when using the c++ compiler
529 dnl 2) has "C" linkage
530 dnl
531 dnl Define HAVE_CARGF etc if "cargf" is declared and links
532 dnl
533 dnl argument 1 is name of function to check
534 dnl
535 dnl ASSUMES argument is a math function with THREE parameters
536 dnl
537 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
538 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
539 GLIBCPP_CHECK_MATH_DECL_3($1)
540 if test x$glibcpp_cv_func_$1_use = x"yes"; then
541 AC_CHECK_FUNCS($1)
542 else
543 GLIBCPP_CHECK_MATH_DECL_3(_$1)
544 if test x$glibcpp_cv_func__$1_use = x"yes"; then
545 AC_CHECK_FUNCS(_$1)
546 fi
547 fi
548 ])
549
550
551 dnl
552 dnl Check to see if the (stdlib function) argument passed is
553 dnl 1) declared when using the c++ compiler
554 dnl 2) has "C" linkage
555 dnl
556 dnl argument 1 is name of function to check
557 dnl
558 dnl ASSUMES argument is a math function with TWO parameters
559 dnl
560 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
561 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
562 AC_MSG_CHECKING([for $1 declaration])
563 if test x${glibcpp_cv_func_$1_use+set} != xset; then
564 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
565 AC_LANG_SAVE
566 AC_LANG_CPLUSPLUS
567 AC_TRY_COMPILE([#include <stdlib.h>],
568 [ $1(0, 0);],
569 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
570 AC_LANG_RESTORE
571 ])
572 fi
573 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
574 if test x$glibcpp_cv_func_$1_use = x"yes"; then
575 AC_CHECK_FUNCS($1)
576 fi
577 ])
578
579
580 dnl
581 dnl Check to see if the (stdlib function) argument passed is
582 dnl 1) declared when using the c++ compiler
583 dnl 2) has "C" linkage
584 dnl
585 dnl argument 1 is name of function to check
586 dnl
587 dnl ASSUMES argument is a function with THREE parameters
588 dnl
589 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3
590 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
591 AC_MSG_CHECKING([for $1 declaration])
592 if test x${glibcpp_cv_func_$1_use+set} != xset; then
593 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
594 AC_LANG_SAVE
595 AC_LANG_CPLUSPLUS
596 AC_TRY_COMPILE([#include <stdlib.h>],
597 [ $1(0, 0, 0);],
598 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
599 AC_LANG_RESTORE
600 ])
601 fi
602 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
603 if test x$glibcpp_cv_func_$1_use = x"yes"; then
604 AC_CHECK_FUNCS($1)
605 fi
606 ])
607
608 dnl
609 dnl Because the builtins are picky picky picky about the arguments they take,
610 dnl do an explict linkage tests here.
611 dnl Check to see if the (math function) argument passed is
612 dnl 1) declared when using the c++ compiler
613 dnl 2) has "C" linkage
614 dnl
615 dnl Define HAVE_CARGF etc if "cargf" is declared and links
616 dnl
617 dnl argument 1 is name of function to check
618 dnl
619 dnl ASSUMES argument is a math function with ONE parameter
620 dnl
621 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
622 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
623 AC_MSG_CHECKING([for $1 declaration])
624 if test x${glibcpp_cv_func_$1_use+set} != xset; then
625 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
626 AC_LANG_SAVE
627 AC_LANG_CPLUSPLUS
628 AC_TRY_COMPILE([#include <math.h>],
629 [ $1(0);],
630 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
631 AC_LANG_RESTORE
632 ])
633 fi
634 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
635 if test x$glibcpp_cv_func_$1_use = x"yes"; then
636 AC_MSG_CHECKING([for $1 linkage])
637 if test x${glibcpp_cv_func_$1_link+set} != xset; then
638 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
639 AC_TRY_LINK([#include <math.h>],
640 [ $1(0);],
641 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
642 ])
643 fi
644 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
645 if test x$glibcpp_cv_func_$1_link = x"yes"; then
646 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
647 AC_DEFINE_UNQUOTED(${ac_tr_func})
648 fi
649 fi
650 ])
651
652
653 dnl
654 dnl Check to see what builtin math functions are supported
655 dnl
656 dnl check for __builtin_abs
657 dnl check for __builtin_fabsf
658 dnl check for __builtin_fabs
659 dnl check for __builtin_fabl
660 dnl check for __builtin_labs
661 dnl check for __builtin_sqrtf
662 dnl check for __builtin_sqrtl
663 dnl check for __builtin_sqrt
664 dnl check for __builtin_sinf
665 dnl check for __builtin_sin
666 dnl check for __builtin_sinl
667 dnl check for __builtin_cosf
668 dnl check for __builtin_cos
669 dnl check for __builtin_cosl
670 dnl
671 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
672 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
673 dnl Test for builtin math functions.
674 dnl These are made in gcc/c-common.c
675 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
676 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
677 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
678 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
679 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
680
681 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
682 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
683 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
684
685 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
686 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
687 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
688
689 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
690 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
691 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
692
693 dnl There is, without a doubt, a more elegant way to have these
694 dnl names exported so that they won't be stripped out of acconfig.h by
695 dnl autoheader. I leave this as an exercise to somebody less frustrated
696 dnl than I.... please email the libstdc++ list if you can figure out a
697 dnl more elegant approach (see autoconf/acgen.m4 and specifically
698 dnl AC_CHECK_FUNC for things to steal.)
699 dummyvar=no
700 if test x$dummyvar = x"yes"; then
701 AC_DEFINE(HAVE___BUILTIN_ABS)
702 AC_DEFINE(HAVE___BUILTIN_LABS)
703 AC_DEFINE(HAVE___BUILTIN_COS)
704 AC_DEFINE(HAVE___BUILTIN_COSF)
705 AC_DEFINE(HAVE___BUILTIN_COSL)
706 AC_DEFINE(HAVE___BUILTIN_FABS)
707 AC_DEFINE(HAVE___BUILTIN_FABSF)
708 AC_DEFINE(HAVE___BUILTIN_FABSL)
709 AC_DEFINE(HAVE___BUILTIN_SIN)
710 AC_DEFINE(HAVE___BUILTIN_SINF)
711 AC_DEFINE(HAVE___BUILTIN_SINL)
712 AC_DEFINE(HAVE___BUILTIN_SQRT)
713 AC_DEFINE(HAVE___BUILTIN_SQRTF)
714 AC_DEFINE(HAVE___BUILTIN_SQRTL)
715 fi
716 ])
717
718 dnl
719 dnl Check to see what the underlying c library is like
720 dnl These checks need to do two things:
721 dnl 1) make sure the name is declared when using the c++ compiler
722 dnl 2) make sure the name has "C" linkage
723 dnl This might seem like overkill but experience has shown that it's not...
724 dnl
725 dnl Define HAVE_STRTOLD if "strtold" is declared and links
726 dnl Define HAVE_STRTOF if "strtof" is declared and links
727 dnl Define HAVE_DRAND48 if "drand48" is declared and links
728 dnl
729 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
730 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
731 ac_test_CXXFLAGS="${CXXFLAGS+set}"
732 ac_save_CXXFLAGS="$CXXFLAGS"
733 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
734
735 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
736 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
737 AC_CHECK_FUNCS(drand48)
738
739 CXXFLAGS="$ac_save_CXXFLAGS"
740 ])
741
742 dnl
743 dnl Check to see what the underlying c library or math library is like.
744 dnl These checks need to do two things:
745 dnl 1) make sure the name is declared when using the c++ compiler
746 dnl 2) make sure the name has "C" linkage
747 dnl This might seem like overkill but experience has shown that it's not...
748 dnl
749 dnl Define HAVE_CARGF etc if "cargf" is found.
750 dnl
751 dnl GLIBCPP_CHECK_MATH_SUPPORT
752 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
753 ac_test_CXXFLAGS="${CXXFLAGS+set}"
754 ac_save_CXXFLAGS="$CXXFLAGS"
755 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
756
757 dnl Check libm
758 AC_CHECK_LIB(m, sin, libm="-lm")
759 ac_save_LIBS="$LIBS"
760 LIBS="$LIBS $libm"
761
762 dnl Check to see if certain C math functions exist.
763 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
764 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
765 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
766 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
767 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
768 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
769 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
770 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
771
772 dnl Check to see if basic C math functions have float versions.
773 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
774 float_trig,
775 acosf asinf atanf \
776 cosf sinf tanf \
777 coshf sinhf tanhf)
778 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
779 float_round,
780 ceilf floorf)
781 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
782 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
783 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
784 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
785 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
786 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
787 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
788 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
789 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
790 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
791 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
792 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
793 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
794 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
795 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
796 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
797
798 dnl Check to see if basic C math functions have long double versions.
799 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
800 long_double_trig,
801 acosl asinl atanl \
802 cosl sinl tanl \
803 coshl sinhl tanhl)
804 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
805 long_double_round,
806 ceill floorl)
807 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
808 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
809 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
810 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
811 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
812 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
813 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
814 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
815 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
816 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
817 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
818 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
819 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
820 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
821 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
822 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
823 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
824
825 dnl Some runtimes have these functions with a preceding underscore. Please
826 dnl keep this sync'd with the one above. And if you add any new symbol,
827 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
828 dnl Check to see if certain C math functions exist.
829
830 dnl Check to see if basic C math functions have float versions.
831 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
832 _float_trig,
833 _acosf _asinf _atanf \
834 _cosf _sinf _tanf \
835 _coshf _sinhf _tanhf)
836 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
837 _float_round,
838 _ceilf _floorf)
839
840 dnl Check to see if basic C math functions have long double versions.
841 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
842 _long_double_trig,
843 _acosl _asinl _atanl \
844 _cosl _sinl _tanl \
845 _coshl _sinhl _tanhl)
846 GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
847 _long_double_round,
848 _ceill _floorl)
849
850 LIBS="$ac_save_LIBS"
851 CXXFLAGS="$ac_save_CXXFLAGS"
852 ])
853
854
855 dnl
856 dnl Check to see if there is native support for complex
857 dnl
858 dnl Don't compile bits in math/* if native support exits.
859 dnl
860 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
861 dnl
862 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
863 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
864 dnl Check for complex versions of math functions of platform.
865 AC_CHECK_LIB(m, main)
866 AC_REPLACE_MATHFUNCS(nan copysignf)
867
868 dnl For __signbit to signbit conversions.
869 AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
870 AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
871
872 dnl Compile the long double complex functions only if the function
873 dnl provides the non-complex long double functions that are needed.
874 dnl Currently this includes copysignl, which should be
875 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
876 if test x$ac_cv_func_copysignl = x"yes"; then
877 AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
878 fi
879
880 if test -n "$LIBMATHOBJS"; then
881 need_libmath=yes
882 fi
883 AC_SUBST(LIBMATHOBJS)
884 AM_CONDITIONAL(GLIBCPP_BUILD_LIBMATH, test "$need_libmath" = yes)
885 ])
886
887
888 dnl Check to see what architecture and operating system we are compiling
889 dnl for. Also, if architecture- or OS-specific flags are required for
890 dnl compilation, pick them up here.
891 dnl
892 dnl GLIBCPP_CHECK_HOST
893 AC_DEFUN(GLIBCPP_CHECK_HOST, [
894 . [$]{glibcpp_basedir}/configure.host
895 AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
896 AC_MSG_RESULT(OS config directory is $os_include_dir)
897 ])
898
899
900 dnl
901 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
902 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
903 dnl must have been previously checked.)
904 dnl
905 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
906 dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
907 dnl
908 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
909 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
910 dnl Wide characters disabled by default.
911 enable_wchar_t=no
912
913 dnl Test wchar.h for mbstate_t, which is needed for char_traits and
914 dnl others even if wchar_t support is not on.
915 AC_MSG_CHECKING([for mbstate_t])
916 AC_TRY_COMPILE([#include <wchar.h>],
917 [mbstate_t teststate;],
918 have_mbstate_t=yes, have_mbstate_t=no)
919 AC_MSG_RESULT($have_mbstate_t)
920 if test x"$have_mbstate_t" = xyes; then
921 AC_DEFINE(HAVE_MBSTATE_T)
922 fi
923
924 dnl Sanity check for existence of ISO C99 headers for extended encoding.
925 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
926 AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
927
928 dnl Only continue checking if the ISO C99 headers exist and support is on.
929 if test x"$ac_has_wchar_h" = xyes &&
930 test x"$ac_has_wctype_h" = xyes &&
931 test x"$enable_c_mbchar" != xno; then
932
933 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
934 dnl numeric_limits can instantiate type_traits<wchar_t>
935 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
936 AC_TRY_COMPILE([#include <wchar.h>],
937 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
938 has_wchar_minmax=yes, has_wchar_minmax=no)
939 AC_MSG_RESULT($has_wchar_minmax)
940
941 dnl Test wchar.h for WEOF, which is what we use to determine whether
942 dnl to specialize for char_traits<wchar_t> or not.
943 AC_MSG_CHECKING([for WEOF])
944 AC_TRY_COMPILE([
945 #include <wchar.h>
946 #include <stddef.h>],
947 [wint_t i = WEOF;],
948 has_weof=yes, has_weof=no)
949 AC_MSG_RESULT($has_weof)
950
951 dnl Tests for wide character functions used in char_traits<wchar_t>.
952 ac_wfuncs=yes
953 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
954 ac_wfuncs=no)
955
956 dnl Checks for names injected into std:: by the c_std headers.
957 AC_CHECK_FUNCS(btowc wctob fgetwc fgetws fputwc fputws fwide \
958 fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \
959 vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
960 mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \
961 wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
962 wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr,, \
963 ac_wfuncs=no)
964
965 AC_MSG_CHECKING([for ISO C99 wchar_t support])
966 if test x"$has_weof" = xyes &&
967 test x"$has_wchar_minmax" = xyes &&
968 test x"$ac_wfuncs" = xyes; then
969 ac_isoC99_wchar_t=yes
970 else
971 ac_isoC99_wchar_t=no
972 fi
973 AC_MSG_RESULT($ac_isoC99_wchar_t)
974
975 dnl Use iconv for wchar_t to char conversions. As such, check for
976 dnl X/Open Portability Guide, version 2 features (XPG2).
977 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
978 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
979
980 dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
981 AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
982 ac_save_LIBS="$LIBS"
983 LIBS="$LIBS $libiconv"
984
985 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
986 ac_XPG2funcs=yes, ac_XPG2funcs=no)
987
988 LIBS="$ac_save_LIBS"
989
990 AC_MSG_CHECKING([for XPG2 wchar_t support])
991 if test x"$ac_has_iconv_h" = xyes &&
992 test x"$ac_has_langinfo_h" = xyes &&
993 test x"$ac_XPG2funcs" = xyes; then
994 ac_XPG2_wchar_t=yes
995 else
996 ac_XPG2_wchar_t=no
997 fi
998 AC_MSG_RESULT($ac_XPG2_wchar_t)
999
1000 dnl At the moment, only enable wchar_t specializations if all the
1001 dnl above support is present.
1002 if test x"$ac_isoC99_wchar_t" = xyes &&
1003 test x"$ac_XPG2_wchar_t" = xyes; then
1004 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
1005 enable_wchar_t=yes
1006 fi
1007 fi
1008 AC_MSG_CHECKING([for enabled wchar_t specializations])
1009 AC_MSG_RESULT($enable_wchar_t)
1010 AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)
1011 ])
1012
1013
1014 dnl
1015 dnl Check to see if debugging libraries are to be built.
1016 dnl
1017 dnl GLIBCPP_ENABLE_DEBUG
1018 dnl
1019 dnl --enable-debug
1020 dnl builds a separate set of debugging libraries in addition to the
1021 dnl normal (shared, static) libstdc++ binaries.
1022 dnl
1023 dnl --disable-debug
1024 dnl builds only one (non-debug) version of libstdc++.
1025 dnl
1026 dnl --enable-debug-flags=FLAGS
1027 dnl iff --enable-debug == yes, then use FLAGS to build the debug library.
1028 dnl
1029 dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
1030 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1031 dnl defaults to `no'.
1032 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
1033 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
1034 AC_ARG_ENABLE(debug,
1035 changequote(<<, >>)dnl
1036 << --enable-debug build extra debug library [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
1037 changequote([, ])dnl
1038 [case "${enableval}" in
1039 yes) enable_debug=yes ;;
1040 no) enable_debug=no ;;
1041 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
1042 esac],
1043 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
1044 AC_MSG_CHECKING([for additional debug build])
1045 AC_MSG_RESULT($enable_debug)
1046 AM_CONDITIONAL(GLIBCPP_BUILD_DEBUG, test "$enable_debug" = yes)
1047 ])
1048
1049
1050 dnl Check for explicit debug flags.
1051 dnl
1052 dnl GLIBCPP_ENABLE_DEBUG_FLAGS
1053 dnl
1054 dnl --enable-debug-flags='-O1'
1055 dnl is a general method for passing flags to be used when
1056 dnl building debug libraries with --enable-debug.
1057 dnl
1058 dnl --disable-debug-flags does nothing.
1059 dnl + Usage: GLIBCPP_ENABLE_DEBUG_FLAGS(default flags)
1060 dnl If "default flags" is an empty string (or "none"), the effect is
1061 dnl the same as --disable or --enable=no.
1062 AC_DEFUN(GLIBCPP_ENABLE_DEBUG_FLAGS, [dnl
1063 define([GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1064 AC_ARG_ENABLE(debug_flags,
1065 changequote(<<, >>)dnl
1066 << --enable-debug-flags=FLAGS pass compiler FLAGS when building debug
1067 library;[default=>>GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT],
1068 changequote([, ])dnl
1069 [case "${enableval}" in
1070 none) ;;
1071 -*) enable_debug_flags="${enableval}" ;;
1072 *) AC_MSG_ERROR([Unknown argument to extra debugging flags]) ;;
1073 esac],
1074 enable_debug_flags=GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT)dnl
1075
1076 dnl Option parsed, now set things appropriately
1077 case x"$enable_debug" in
1078 xyes)
1079 case "$enable_debug_flags" in
1080 none)
1081 DEBUG_FLAGS="-g3 -O0";;
1082 -*) #valid input
1083 DEBUG_FLAGS="${enableval}"
1084 esac
1085 ;;
1086 xno)
1087 DEBUG_FLAGS=""
1088 ;;
1089 esac
1090 AC_SUBST(DEBUG_FLAGS)
1091
1092 AC_MSG_CHECKING([for debug build flags])
1093 AC_MSG_RESULT($DEBUG_FLAGS)
1094 ])
1095
1096
1097 dnl
1098 dnl Check for "unusual" flags to pass to the compiler while building.
1099 dnl
1100 dnl GLIBCPP_ENABLE_CXX_FLAGS
1101 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
1102 dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
1103 dnl Somehow this same set of flags must be passed when [re]building
1104 dnl libgcc.
1105 dnl --disable-cxx-flags passes nothing.
1106 dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
1107 dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
1108 dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
1109 dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
1110 dnl If "default flags" is an empty string (or "none"), the effect is
1111 dnl the same as --disable or --enable=no.
1112 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
1113 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1114 AC_MSG_CHECKING([for extra compiler flags for building])
1115 AC_ARG_ENABLE(cxx_flags,
1116 changequote(<<, >>)dnl
1117 << --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
1118 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
1119 changequote([, ])dnl
1120 [case "x$enable_cxx_flags" in
1121 xyes)
1122 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1123 xno | xnone | x)
1124 enable_cxx_flags='' ;;
1125 *)
1126 enable_cxx_flags="$enableval" ;;
1127 esac],
1128 enable_cxx_flags=GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT)
1129
1130 dnl Run through flags (either default or command-line) and set anything
1131 dnl extra (e.g., #defines) that must accompany particular g++ options.
1132 if test -n "$enable_cxx_flags"; then
1133 for f in $enable_cxx_flags; do
1134 case "$f" in
1135 -fhonor-std) ;;
1136 -*) ;;
1137 *) # and we're trying to pass /what/ exactly?
1138 AC_MSG_ERROR([compiler flags start with a -]) ;;
1139 esac
1140 done
1141 fi
1142 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1143 AC_MSG_RESULT($EXTRA_CXX_FLAGS)
1144 AC_SUBST(EXTRA_CXX_FLAGS)
1145 ])
1146
1147
1148 dnl
1149 dnl Check for which locale library to use: gnu or generic.
1150 dnl
1151 dnl GLIBCPP_ENABLE_CLOCALE
1152 dnl --enable-clocale=gnu sets config/locale/c_locale_gnu.cc and friends
1153 dnl --enable-clocale=generic sets config/locale/c_locale_generic.cc and friends
1154 dnl
1155 dnl default is generic
1156 dnl
1157 AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
1158 AC_MSG_CHECKING([for clocale to use])
1159 AC_ARG_ENABLE(clocale,
1160 [ --enable-clocale enable model for target locale package.
1161 --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
1162 ],
1163 if test x$enable_clocale = xno; then
1164 enable_clocale=no
1165 fi,
1166 enable_clocale=no)
1167
1168 enable_clocale_flag=$enable_clocale
1169
1170 dnl Probe for locale support if no specific model is specified.
1171 dnl Default to "generic"
1172 if test x$enable_clocale_flag = xno; then
1173 case x${target_os} in
1174 xlinux* | xgnu*)
1175 AC_EGREP_CPP([_GLIBCPP_ok], [
1176 #include <features.h>
1177 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1178 _GLIBCPP_ok
1179 #endif
1180 ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
1181
1182 # Test for bugs early in glibc-2.2.x series
1183 if test x$enable_clocale_flag = xgnu; then
1184 AC_TRY_RUN([
1185 #define _GNU_SOURCE 1
1186 #include <locale.h>
1187 #include <string.h>
1188 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
1189 extern __typeof(newlocale) __newlocale;
1190 extern __typeof(duplocale) __duplocale;
1191 extern __typeof(strcoll_l) __strcoll_l;
1192 #endif
1193 int main()
1194 {
1195 const char __one[] = "Äuglein Augmen";
1196 const char __two[] = "Äuglein";
1197 int i;
1198 int j;
1199 __locale_t loc;
1200 __locale_t loc_dup;
1201 loc = __newlocale(1 << LC_ALL, "de_DE", 0);
1202 loc_dup = __duplocale(loc);
1203 i = __strcoll_l(__one, __two, loc);
1204 j = __strcoll_l(__one, __two, loc_dup);
1205 return 0;
1206 }
1207 ],
1208 [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
1209 [enable_clocale_flag=generic])
1210 fi
1211
1212 # ... at some point put __strxfrm_l tests in as well.
1213 ;;
1214 *)
1215 enable_clocale_flag=generic
1216 ;;
1217 esac
1218 fi
1219
1220 dnl Deal with gettext issues.
1221 AC_ARG_ENABLE(nls,
1222 [ --enable-nls use Native Language Support (default)],
1223 , enable_nls=yes)
1224 USE_NLS=no
1225
1226 dnl Set configure bits for specified locale package
1227 case x${enable_clocale_flag} in
1228 xgeneric)
1229 AC_MSG_RESULT(generic)
1230
1231 CLOCALE_H=config/locale/generic/c_locale.h
1232 CLOCALE_CC=config/locale/generic/c_locale.cc
1233 CCODECVT_H=config/locale/generic/codecvt_specializations.h
1234 CCODECVT_CC=config/locale/generic/codecvt_members.cc
1235 CCOLLATE_CC=config/locale/generic/collate_members.cc
1236 CCTYPE_CC=config/locale/generic/ctype_members.cc
1237 CMESSAGES_H=config/locale/generic/messages_members.h
1238 CMESSAGES_CC=config/locale/generic/messages_members.cc
1239 CMONEY_CC=config/locale/generic/monetary_members.cc
1240 CNUMERIC_CC=config/locale/generic/numeric_members.cc
1241 CTIME_H=config/locale/generic/time_members.h
1242 CTIME_CC=config/locale/generic/time_members.cc
1243 CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
1244 ;;
1245 xgnu)
1246 AC_MSG_RESULT(gnu)
1247
1248 # Declare intention to use gettext, and add support for specific
1249 # languages.
1250 # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
1251 ALL_LINGUAS="de fr"
1252
1253 # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
1254 AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
1255 if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
1256 USE_NLS=yes
1257 fi
1258 # Export the build objects.
1259 for ling in $ALL_LINGUAS; do \
1260 glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \
1261 glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \
1262 done
1263 AC_SUBST(glibcpp_MOFILES)
1264 AC_SUBST(glibcpp_POFILES)
1265
1266 CLOCALE_H=config/locale/gnu/c_locale.h
1267 CLOCALE_CC=config/locale/gnu/c_locale.cc
1268 CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1269 CCODECVT_CC=config/locale/gnu/codecvt_members.cc
1270 CCOLLATE_CC=config/locale/gnu/collate_members.cc
1271 CCTYPE_CC=config/locale/gnu/ctype_members.cc
1272 CMESSAGES_H=config/locale/gnu/messages_members.h
1273 CMESSAGES_CC=config/locale/gnu/messages_members.cc
1274 CMONEY_CC=config/locale/gnu/monetary_members.cc
1275 CNUMERIC_CC=config/locale/gnu/numeric_members.cc
1276 CTIME_H=config/locale/gnu/time_members.h
1277 CTIME_CC=config/locale/gnu/time_members.cc
1278 CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
1279 ;;
1280 xieee_1003.1-2001)
1281 AC_MSG_RESULT(IEEE 1003.1)
1282
1283 CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
1284 CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
1285 CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
1286 CCODECVT_CC=config/locale/generic/codecvt_members.cc
1287 CCOLLATE_CC=config/locale/generic/collate_members.cc
1288 CCTYPE_CC=config/locale/generic/ctype_members.cc
1289 CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
1290 CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
1291 CMONEY_CC=config/locale/generic/monetary_members.cc
1292 CNUMERIC_CC=config/locale/generic/numeric_members.cc
1293 CTIME_H=config/locale/generic/time_members.h
1294 CTIME_CC=config/locale/generic/time_members.cc
1295 CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
1296 ;;
1297 *)
1298 echo "$enable_clocale is an unknown locale package" 1>&2
1299 exit 1
1300 ;;
1301 esac
1302
1303 # This is where the testsuite looks for locale catalogs, using the
1304 # -DLOCALEDIR define during testsuite compilation.
1305 glibcpp_localedir=${glibcpp_builddir}/po/share/locale
1306 AC_SUBST(glibcpp_localedir)
1307
1308 # A standalone libintl (e.g., GNU libintl) may be in use.
1309 if test $USE_NLS = yes; then
1310 AC_CHECK_HEADERS([libintl.h], [], USE_NLS=no)
1311 AC_SEARCH_LIBS(gettext, intl, [], USE_NLS=no)
1312 fi
1313 if test $USE_NLS = yes; then
1314 AC_DEFINE(_GLIBCPP_USE_NLS)
1315 fi
1316
1317 AC_SUBST(USE_NLS)
1318 AC_SUBST(CLOCALE_H)
1319 AC_SUBST(CCODECVT_H)
1320 AC_SUBST(CMESSAGES_H)
1321 AC_SUBST(CCODECVT_CC)
1322 AC_SUBST(CCOLLATE_CC)
1323 AC_SUBST(CCTYPE_CC)
1324 AC_SUBST(CMESSAGES_CC)
1325 AC_SUBST(CMONEY_CC)
1326 AC_SUBST(CNUMERIC_CC)
1327 AC_SUBST(CTIME_H)
1328 AC_SUBST(CTIME_CC)
1329 AC_SUBST(CLOCALE_CC)
1330 AC_SUBST(CLOCALE_INTERNAL_H)
1331 ])
1332
1333
1334 dnl
1335 dnl Check for which I/O library to use: libio, or something specific.
1336 dnl
1337 dnl GLIBCPP_ENABLE_CSTDIO
1338 dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
1339 dnl
1340 dnl default is stdio
1341 dnl
1342 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1343 AC_MSG_CHECKING([for cstdio to use])
1344 AC_ARG_ENABLE(cstdio,
1345 [ --enable-cstdio enable stdio for target io package.
1346 --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
1347 ],
1348 if test x$enable_cstdio = xno; then
1349 enable_cstdio=stdio
1350 fi,
1351 enable_cstdio=stdio)
1352
1353 enable_cstdio_flag=$enable_cstdio
1354
1355 dnl Check if a valid I/O package
1356 case x${enable_cstdio_flag} in
1357 xlibio)
1358 CSTDIO_H=config/io/c_io_libio.h
1359 BASIC_FILE_H=config/io/basic_file_libio.h
1360 BASIC_FILE_CC=config/io/basic_file_libio.cc
1361 AC_MSG_RESULT(libio)
1362
1363 # see if we are on a system with libio native (ie, linux)
1364 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1365
1366 # Need to check and see what version of glibc is being used. If
1367 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1368 # compile most of libio for linux systems.
1369 if test x$has_libio = x"yes"; then
1370 case "$target" in
1371 *-*-linux*)
1372 AC_MSG_CHECKING([for glibc version >= 2.2])
1373 AC_EGREP_CPP([ok], [
1374 #include <features.h>
1375 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1376 ok
1377 #endif
1378 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1379 AC_MSG_RESULT($glibc_satisfactory)
1380 ;;
1381 esac
1382
1383 # XXX at the moment, admit defeat and force the recompilation
1384 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1385 glibc_satisfactory=no
1386
1387 if test x$glibc_satisfactory = x"yes"; then
1388 need_libio=no
1389 need_wlibio=no
1390 else
1391 need_libio=yes
1392 # bkoz XXX need to add checks to enable this
1393 # pme XXX here's a first pass at such a check
1394 if test x$enable_c_mbchar != xno; then
1395 need_wlibio=yes
1396 else
1397 need_wlibio=no
1398 fi
1399 fi
1400
1401 else
1402 # Using libio, but <libio.h> doesn't exist on the target system. . .
1403 need_libio=yes
1404 # bkoz XXX need to add checks to enable this
1405 # pme XXX here's a first pass at such a check
1406 if test x$enable_c_mbchar != xno; then
1407 need_wlibio=yes
1408 else
1409 need_wlibio=no
1410 fi
1411 fi
1412 ;;
1413 xstdio | x | xno | xnone | xyes)
1414 # default
1415 CSTDIO_H=config/io/c_io_stdio.h
1416 BASIC_FILE_H=config/io/basic_file_stdio.h
1417 BASIC_FILE_CC=config/io/basic_file_stdio.cc
1418 AC_MSG_RESULT(stdio)
1419
1420 # We're not using stdio.
1421 need_libio=no
1422 need_wlibio=no
1423 ;;
1424 *)
1425 echo "$enable_cstdio is an unknown io package" 1>&2
1426 exit 1
1427 ;;
1428 esac
1429 AC_SUBST(CSTDIO_H)
1430 AC_SUBST(BASIC_FILE_H)
1431 AC_SUBST(BASIC_FILE_CC)
1432
1433 # 2000-08-04 bkoz hack
1434 CCODECVT_C=config/io/c_io_libio_codecvt.c
1435 AC_SUBST(CCODECVT_C)
1436 # 2000-08-04 bkoz hack
1437
1438 AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
1439 test "$need_libio" = yes || test "$need_wlibio" = yes)
1440 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1441 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1442 if test "$need_libio" = yes || test "$need_wlibio" = yes; then
1443 libio_la=../libio/libio.la
1444 else
1445 libio_la=
1446 fi
1447 AC_SUBST(libio_la)
1448 ])
1449
1450
1451 dnl
1452 dnl Check to see if building and using a C++ precompiled header can be done.
1453 dnl
1454 dnl GLIBCPP_CHECK_PCH
1455 dnl
1456 dnl If it looks like it may work, flip bits on in include/Makefile.am
1457 dnl
1458 AC_DEFUN(GLIBCPP_CHECK_PCH, [
1459 ac_test_CXXFLAGS="${CXXFLAGS+set}"
1460 ac_save_CXXFLAGS="$CXXFLAGS"
1461 CXXFLAGS='-Werror -Winvalid-pch -Wno-deprecated -x c++-header'
1462
1463 AC_MSG_CHECKING([for compiler that seems to compile .gch files])
1464 if test x${glibcpp_pch_comp+set} != xset; then
1465 AC_CACHE_VAL(glibcpp_pch_comp, [
1466 AC_LANG_SAVE
1467 AC_LANG_CPLUSPLUS
1468 AC_TRY_COMPILE([#include <math.h>
1469 ],
1470 [ $1(0);],
1471 [glibcpp_pch_comp=yes], [glibcpp_pch_comp=no])
1472 AC_LANG_RESTORE
1473 ])
1474 fi
1475 AC_MSG_RESULT([$glibcpp_pch_comp])
1476
1477 CXXFLAGS="$ac_save_CXXFLAGS"
1478 AM_CONDITIONAL(GLIBCPP_BUILD_PCH, test "$glibcpp_pch_comp" = yes)
1479 ])
1480
1481 dnl
1482 dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
1483 dnl We must stage the required headers so that they will be installed
1484 dnl with the library (unlike libgcc, the STL implementation is provided
1485 dnl solely within headers). Since we must not inject random user-space
1486 dnl macro names into user-provided C++ code, we first stage into <file>-in
1487 dnl and process to <file> with an output command. The reason for a two-
1488 dnl stage process here is to correctly handle $srcdir!=$objdir without
1489 dnl having to write complex code (the sed commands to clean the macro
1490 dnl namespace are complex and fragile enough as it is). We must also
1491 dnl add a relative path so that -I- is supported properly.
1492 dnl
1493 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1494 AC_MSG_CHECKING([for thread model used by GCC])
1495 target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1496 AC_MSG_RESULT([$target_thread_file])
1497
1498 if test $target_thread_file != single; then
1499 AC_DEFINE(HAVE_GTHR_DEFAULT)
1500 AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
1501 fi
1502
1503 glibcpp_thread_h=gthr-$target_thread_file.h
1504 AC_SUBST(glibcpp_thread_h)
1505 ])
1506
1507
1508 dnl
1509 dnl Check for exception handling support. If an explicit enable/disable
1510 dnl sjlj exceptions is given, we don't have to detect. Otherwise the
1511 dnl target may or may not support call frame exceptions.
1512 dnl
1513 dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
1514 dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
1515 dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
1516 dnl
1517 dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
1518 dnl
1519 AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
1520 AC_MSG_CHECKING([for exception model to use])
1521 AC_LANG_SAVE
1522 AC_LANG_CPLUSPLUS
1523 AC_ARG_ENABLE(sjlj-exceptions,
1524 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
1525 [:],
1526 [dnl Botheration. Now we've got to detect the exception model.
1527 dnl Link tests against libgcc.a are problematic since -- at least
1528 dnl as of this writing -- we've not been given proper -L bits for
1529 dnl single-tree newlib and libgloss.
1530 dnl
1531 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
1532 dnl conftest files before we got a change to grep them first.
1533 cat > conftest.$ac_ext << EOF
1534 [#]line __oline__ "configure"
1535 struct S { ~S(); };
1536 void bar();
1537 void foo()
1538 {
1539 S s;
1540 bar();
1541 }
1542 EOF
1543 old_CXXFLAGS="$CXXFLAGS"
1544 CXXFLAGS=-S
1545 if AC_TRY_EVAL(ac_compile); then
1546 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
1547 enable_sjlj_exceptions=yes
1548 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
1549 enable_sjlj_exceptions=no
1550 fi
1551 fi
1552 CXXFLAGS="$old_CXXFLAGS"
1553 rm -f conftest*])
1554 if test x$enable_sjlj_exceptions = xyes; then
1555 AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
1556 [Define if the compiler is configured for setjmp/longjmp exceptions.])
1557 ac_exception_model_name=sjlj
1558 elif test x$enable_sjlj_exceptions = xno; then
1559 ac_exception_model_name="call frame"
1560 else
1561 AC_MSG_ERROR([unable to detect exception model])
1562 fi
1563 AC_LANG_RESTORE
1564 AC_MSG_RESULT($ac_exception_model_name)
1565 ])
1566
1567
1568 dnl
1569 dnl Check for libunwind exception handling support. If enabled then
1570 dnl we assume that the _Unwind_* functions that make up the Unwind ABI
1571 dnl (_Unwind_RaiseException, _Unwind_Resume, etc.) are defined by
1572 dnl libunwind instead of libgcc and that libstdc++ has a dependency
1573 dnl on libunwind as well as libgcc.
1574 dnl
1575 dnl GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
1576 dnl --enable-libunwind-exceptions forces the use of libunwind.
1577 dnl --disable-libunwind-exceptions assumes there is no libunwind.
1578 dnl
1579 dnl Define _GLIBCPP_LIBUNWIND_EXCEPTIONS if requested.
1580 dnl
1581 AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
1582 AC_MSG_CHECKING([for use of libunwind])
1583 AC_ARG_ENABLE(libunwind-exceptions,
1584 [ --enable-libunwind-exceptions force use of libunwind for exceptions],
1585 use_libunwind_exceptions=$enableval,
1586 use_libunwind_exceptions=no)
1587 AC_MSG_RESULT($use_libunwind_exceptions)
1588 dnl Option parsed, now set things appropriately
1589 if test x"$use_libunwind_exceptions" = xyes; then
1590 LIBUNWIND_FLAG="-lunwind"
1591 else
1592 LIBUNWIND_FLAG=""
1593 fi
1594 AC_SUBST(LIBUNWIND_FLAG)
1595 ])
1596
1597 dnl
1598 dnl Check for ISO/IEC 9899:1999 "C99" support.
1599 dnl
1600 dnl GLIBCPP_ENABLE_C99
1601 dnl --enable-c99 defines _GLIBCPP_USE_C99
1602 dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
1603 dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
1604 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1605 dnl defaults to `no'.
1606 dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
1607 dnl
1608 dnl GLIBCPP_ENABLE_C99
1609 AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
1610 define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
1611
1612 AC_ARG_ENABLE(c99,
1613 changequote(<<, >>)dnl
1614 <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
1615 changequote([, ])dnl
1616 [case "$enableval" in
1617 yes) enable_c99=yes ;;
1618 no) enable_c99=no ;;
1619 *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
1620 esac],
1621 enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
1622
1623 AC_LANG_SAVE
1624 AC_LANG_CPLUSPLUS
1625
1626 # Check for the existence of <math.h> functions used if C99 is enabled.
1627 ac_c99_math=yes;
1628 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
1629 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
1630 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
1631 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
1632 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
1633 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
1634 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
1635 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
1636 AC_TRY_COMPILE([#include <math.h>],
1637 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
1638 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
1639 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
1640 AC_TRY_COMPILE([#include <math.h>],
1641 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
1642 AC_TRY_COMPILE([#include <math.h>],
1643 [isunordered(0.0,0.0);],, [ac_c99_math=no])
1644 AC_MSG_RESULT($ac_c99_math)
1645
1646 # Check for the existence in <stdio.h> of vscanf, et. al.
1647 ac_c99_stdio=yes;
1648 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
1649 AC_TRY_COMPILE([#include <stdio.h>],
1650 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
1651 AC_TRY_COMPILE([#include <stdio.h>
1652 #include <stdarg.h>
1653 void foo(char* fmt, ...)
1654 {va_list args; va_start(args, fmt);
1655 vfscanf(stderr, "%i", args);}],
1656 [],, [ac_c99_stdio=no])
1657 AC_TRY_COMPILE([#include <stdio.h>
1658 #include <stdarg.h>
1659 void foo(char* fmt, ...)
1660 {va_list args; va_start(args, fmt);
1661 vscanf("%i", args);}],
1662 [],, [ac_c99_stdio=no])
1663 AC_TRY_COMPILE([#include <stdio.h>
1664 #include <stdarg.h>
1665 void foo(char* fmt, ...)
1666 {va_list args; va_start(args, fmt);
1667 vsnprintf(fmt, 0, "%i", args);}],
1668 [],, [ac_c99_stdio=no])
1669 AC_TRY_COMPILE([#include <stdio.h>
1670 #include <stdarg.h>
1671 void foo(char* fmt, ...)
1672 {va_list args; va_start(args, fmt);
1673 vsscanf(fmt, "%i", args);}],
1674 [],, [ac_c99_stdio=no])
1675 AC_MSG_RESULT($ac_c99_stdio)
1676
1677 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
1678 ac_c99_stdlib=yes;
1679 AC_MSG_CHECKING([for lldiv_t declaration])
1680 AC_CACHE_VAL(ac_c99_lldiv_t, [
1681 AC_TRY_COMPILE([#include <stdlib.h>],
1682 [ lldiv_t mydivt;],
1683 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
1684 ])
1685 AC_MSG_RESULT($ac_c99_lldiv_t)
1686
1687 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
1688 AC_TRY_COMPILE([#include <stdlib.h>],
1689 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
1690 AC_TRY_COMPILE([#include <stdlib.h>],
1691 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
1692 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
1693 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
1694 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
1695 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
1696 if test x"$ac_c99_lldiv_t" = x"no"; then
1697 ac_c99_stdlib=no;
1698 fi;
1699 AC_MSG_RESULT($ac_c99_stdlib)
1700
1701 # Check for the existence of <wchar.h> functions used if C99 is enabled.
1702 # XXX the wchar.h checks should be rolled into the general C99 bits.
1703 ac_c99_wchar=yes;
1704 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
1705 AC_TRY_COMPILE([#include <wchar.h>],
1706 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
1707 AC_TRY_COMPILE([#include <wchar.h>],
1708 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
1709 AC_TRY_COMPILE([#include <wchar.h>],
1710 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
1711 AC_MSG_RESULT($ac_c99_wchar)
1712
1713 AC_MSG_CHECKING([for enabled ISO C99 support])
1714 if test x"$ac_c99_math" = x"no" ||
1715 test x"$ac_c99_stdio" = x"no" ||
1716 test x"$ac_c99_stdlib" = x"no" ||
1717 test x"$ac_c99_wchar" = x"no"; then
1718 enable_c99=no;
1719 fi;
1720 AC_MSG_RESULT($enable_c99)
1721
1722 # Option parsed, now set things appropriately
1723 if test x"$enable_c99" = x"yes"; then
1724 AC_DEFINE(_GLIBCPP_USE_C99)
1725 fi
1726
1727 AC_LANG_RESTORE
1728 ])
1729
1730
1731 dnl
1732 dnl Check for template specializations for the 'long long' type extension.
1733 dnl The result determines only whether 'long long' I/O is enabled; things
1734 dnl like numeric_limits<> specializations are always available.
1735 dnl
1736 dnl GLIBCPP_ENABLE_LONG_LONG
1737 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1738 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1739 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1740 dnl Where DEFAULT is either `yes' or `no'. If omitted, it
1741 dnl defaults to `no'.
1742 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1743 dnl
1744 dnl GLIBCPP_ENABLE_LONG_LONG
1745 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1746 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1747
1748 AC_ARG_ENABLE(long-long,
1749 changequote(<<, >>)dnl
1750 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1751 changequote([, ])dnl
1752 [case "$enableval" in
1753 yes) enable_long_long=yes ;;
1754 no) enable_long_long=no ;;
1755 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1756 esac],
1757 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1758
1759 AC_LANG_SAVE
1760 AC_LANG_CPLUSPLUS
1761
1762 AC_MSG_CHECKING([for enabled long long I/O support])
1763 # iostreams require strtoll, strtoull to compile
1764 AC_TRY_COMPILE([#include <stdlib.h>],
1765 [char* tmp; strtoll("gnu", &tmp, 10);],,[enable_long_long=no])
1766 AC_TRY_COMPILE([#include <stdlib.h>],
1767 [char* tmp; strtoull("gnu", &tmp, 10);],,[enable_long_long=no])
1768
1769 # Option parsed, now set things appropriately
1770 if test x"$enable_long_long" = xyes; then
1771 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1772 fi
1773 AC_MSG_RESULT($enable_long_long)
1774
1775 AC_LANG_RESTORE
1776 ])
1777
1778
1779 dnl
1780 dnl Check for what type of C headers to use.
1781 dnl
1782 dnl GLIBCPP_ENABLE_CHEADERS
1783 dnl --enable-cheaders= [does stuff].
1784 dnl --disable-cheaders [does not do anything, really].
1785 dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
1786 dnl Where DEFAULT is either `c' or `c_std'.
1787 dnl If ommitted, it defaults to `c_std'.
1788 AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
1789 define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
1790 AC_MSG_CHECKING([for c header strategy to use])
1791 AC_ARG_ENABLE(cheaders,
1792 changequote(<<, >>)dnl
1793 << --enable-cheaders=MODEL construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
1794 changequote([, ])
1795 [case "$enableval" in
1796 c)
1797 enable_cheaders=c
1798 ;;
1799 c_std)
1800 enable_cheaders=c_std
1801 ;;
1802 *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
1803 ;;
1804 esac],
1805 enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
1806 AC_MSG_RESULT($enable_cheaders)
1807
1808 dnl Option parsed, now set things appropriately
1809 case "$enable_cheaders" in
1810 c_std)
1811 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
1812 ;;
1813 c)
1814 C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
1815 ;;
1816 esac
1817
1818 AC_SUBST(C_INCLUDE_DIR)
1819 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
1820 AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
1821 AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
1822 ])
1823
1824
1825 dnl
1826 dnl Check for wide character support. Has the same effect as the option
1827 dnl in gcc's configure, but in a form that autoconf can mess with.
1828 dnl
1829 dnl GLIBCPP_ENABLE_C_MBCHAR
1830 dnl --enable-c-mbchar requests all the wchar_t stuff.
1831 dnl --disable-c-mbchar doesn't.
1832 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1833 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1834 dnl defaults to `no'.
1835 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1836 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1837 AC_ARG_ENABLE(c-mbchar,
1838 changequote(<<, >>)dnl
1839 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1840 changequote([, ])dnl
1841 [case "$enableval" in
1842 yes) enable_c_mbchar=yes ;;
1843 no) enable_c_mbchar=no ;;
1844 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1845 esac],
1846 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1847 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1848 ])
1849
1850
1851 dnl
1852 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1853 dnl
1854 dnl TOPLEVEL_INCLUDES
1855 dnl LIBMATH_INCLUDES
1856 dnl LIBSUPCXX_INCLUDES
1857 dnl LIBIO_INCLUDES
1858 dnl
1859 dnl GLIBCPP_EXPORT_INCLUDES
1860 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1861 # Root level of the build directory include sources.
1862 GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
1863
1864 # Passed down for canadian crosses.
1865 if test x"$CANADIAN" = xyes; then
1866 TOPLEVEL_INCLUDES='-I$(includedir)'
1867 fi
1868
1869 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1870
1871 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1872
1873 if test x"$need_libio" = xyes; then
1874 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1875 AC_SUBST(LIBIO_INCLUDES)
1876 fi
1877
1878 # Now, export this to all the little Makefiles....
1879 AC_SUBST(GLIBCPP_INCLUDES)
1880 AC_SUBST(TOPLEVEL_INCLUDES)
1881 AC_SUBST(LIBMATH_INCLUDES)
1882 AC_SUBST(LIBSUPCXX_INCLUDES)
1883 ])
1884
1885
1886 dnl
1887 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1888 dnl
1889 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1890 # Optimization flags that are probably a good idea for thrill-seekers. Just
1891 # uncomment the lines below and make, everything else is ready to go...
1892 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1893 OPTIMIZE_CXXFLAGS=
1894 AC_SUBST(OPTIMIZE_CXXFLAGS)
1895
1896 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings'
1897 AC_SUBST(WARN_FLAGS)
1898 ])
1899
1900 dnl
1901 dnl GLIBCPP_EXPORT_INSTALL_INFO
1902 dnl calculates gxx_install_dir
1903 dnl exports glibcpp_toolexecdir
1904 dnl exports glibcpp_toolexeclibdir
1905 dnl exports glibcpp_prefixdir
1906 dnl
1907 dnl Assumes cross_compiling bits already done, and with_cross_host in
1908 dnl particular
1909 dnl
1910 dnl GLIBCPP_EXPORT_INSTALL_INFO
1911 AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
1912 # Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
1913 # exported correctly in GLIBCPP_CONFIGURE.
1914 glibcpp_toolexecdir=no
1915 glibcpp_toolexeclibdir=no
1916 glibcpp_prefixdir=${prefix}
1917
1918 # Process the option --with-gxx-include-dir=<path to include-files directory>
1919 AC_MSG_CHECKING([for --with-gxx-include-dir])
1920 AC_ARG_WITH(gxx-include-dir,
1921 [ --with-gxx-include-dir the installation directory for include files],
1922 [case "${withval}" in
1923 yes)
1924 AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
1925 gxx_include_dir=no
1926 ;;
1927 no)
1928 gxx_include_dir=no
1929 ;;
1930 *)
1931 gxx_include_dir=${withval}
1932 ;;
1933 esac], [gxx_include_dir=no])
1934 AC_MSG_RESULT($gxx_include_dir)
1935
1936 # Process the option "--enable-version-specific-runtime-libs"
1937 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
1938 AC_ARG_ENABLE(version-specific-runtime-libs,
1939 [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
1940 [case "$enableval" in
1941 yes) version_specific_libs=yes ;;
1942 no) version_specific_libs=no ;;
1943 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
1944 esac],
1945 version_specific_libs=no)dnl
1946 # Option set, now we can test it.
1947 AC_MSG_RESULT($version_specific_libs)
1948
1949 # Default case for install directory for include files.
1950 if test $version_specific_libs = no && test $gxx_include_dir = no; then
1951 gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
1952 fi
1953
1954 # Version-specific runtime libs processing.
1955 if test $version_specific_libs = yes; then
1956 # Need the gcc compiler version to know where to install libraries
1957 # and header files if --enable-version-specific-runtime-libs option
1958 # is selected.
1959 if test x"$gxx_include_dir" = x"no"; then
1960 gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
1961 fi
1962 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1963 glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
1964 fi
1965
1966 # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
1967 # Install a library built with a cross compiler in tooldir, not libdir.
1968 if test x"$glibcpp_toolexecdir" = x"no"; then
1969 if test -n "$with_cross_host" &&
1970 test x"$with_cross_host" != x"no"; then
1971 glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
1972 glibcpp_toolexeclibdir='$(toolexecdir)/lib'
1973 else
1974 glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
1975 glibcpp_toolexeclibdir='$(libdir)'
1976 fi
1977 multi_os_directory=`$CC -print-multi-os-directory`
1978 case $multi_os_directory in
1979 .) ;; # Avoid trailing /.
1980 *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
1981 esac
1982 fi
1983
1984 AC_MSG_CHECKING([for install location])
1985 AC_MSG_RESULT($gxx_include_dir)
1986
1987 AC_SUBST(glibcpp_prefixdir)
1988 AC_SUBST(gxx_include_dir)
1989 AC_SUBST(glibcpp_toolexecdir)
1990 AC_SUBST(glibcpp_toolexeclibdir)
1991 ])
1992
1993
1994 # Check for functions in math library.
1995 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1996 #
1997 # This file can be copied and used freely without restrictions. It can
1998 # be used in projects which are not available under the GNU Public License
1999 # but which still want to provide support for the GNU gettext functionality.
2000 # Please note that the actual code is *not* freely available.
2001
2002 # serial 1
2003
2004 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
2005 AC_DEFUN(AC_REPLACE_MATHFUNCS,
2006 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
2007
2008
2009 dnl This macro searches for a GNU version of make. If a match is found, the
2010 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
2011 dnl set to "#". This is useful for including a special features in a Makefile,
2012 dnl which cannot be handled by other versions of make. The variable
2013 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
2014 dnl the empty string otherwise.
2015 dnl
2016 dnl Here is an example of its use:
2017 dnl
2018 dnl Makefile.in might contain:
2019 dnl
2020 dnl # A failsafe way of putting a dependency rule into a makefile
2021 dnl $(DEPEND):
2022 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
2023 dnl
2024 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
2025 dnl @ifGNUmake@ include $(DEPEND)
2026 dnl @ifGNUmake@ endif
2027 dnl
2028 dnl Then configure.in would normally contain:
2029 dnl
2030 dnl CHECK_GNU_MAKE()
2031 dnl AC_OUTPUT(Makefile)
2032 dnl
2033 dnl Then perhaps to cause gnu make to override any other make, we could do
2034 dnl something like this (note that GNU make always looks for GNUmakefile first):
2035 dnl
2036 dnl if ! test x$_cv_gnu_make_command = x ; then
2037 dnl mv Makefile GNUmakefile
2038 dnl echo .DEFAULT: > Makefile ;
2039 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
2040 dnl fi
2041 dnl
2042 dnl Then, if any (well almost any) other make is called, and GNU make also
2043 dnl exists, then the other make wraps the GNU make.
2044 dnl
2045 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
2046 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
2047 dnl
2048 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
2049 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
2050 dnl #### conditional's subshell (" --version" is not a command), using a
2051 dnl #### different option to grep(1).
2052 dnl #### -pme
2053 dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
2054 dnl #### ${MAKE:-make}).
2055 dnl #### -msokolov
2056 AC_DEFUN(
2057 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
2058 _cv_gnu_make_command='' ;
2059 dnl Search all the common names for GNU make
2060 for a in "${MAKE-make}" make gmake gnumake ; do
2061 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
2062 then
2063 _cv_gnu_make_command=$a ;
2064 break;
2065 fi
2066 done ;
2067 ) ;
2068 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
2069 dnl string, '#' otherwise
2070 if test "x$_cv_gnu_make_command" != "x" ; then
2071 ifGNUmake='' ;
2072 else
2073 ifGNUmake='#' ;
2074 fi
2075 AC_SUBST(ifGNUmake)
2076 ])
2077
2078
2079 dnl Check for headers for, and arguments to, the setrlimit() function.
2080 dnl Used only in testsuite_hooks.h.
2081 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
2082 AC_TRY_COMPILE([#include <unistd.h>
2083 #include <sys/time.h>
2084 #include <sys/resource.h>
2085 ], [ int f = RLIMIT_$1 ; ],
2086 [glibcpp_mresult=1], [glibcpp_mresult=0])
2087 AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
2088 [Only used in build directory testsuite_hooks.h.])
2089 ])
2090 AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
2091 setrlimit_have_headers=yes
2092 AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
2093 [],
2094 setrlimit_have_headers=no)
2095 # If don't have the headers, then we can't run the tests now, and we
2096 # won't be seeing any of these during testsuite compilation.
2097 if test $setrlimit_have_headers = yes; then
2098 # Can't do these in a loop, else the resulting syntax is wrong.
2099 GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
2100 GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
2101 GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
2102 GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
2103
2104 # Check for rlimit, setrlimit.
2105 AC_CACHE_VAL(ac_setrlimit, [
2106 AC_TRY_COMPILE([#include <unistd.h>
2107 #include <sys/time.h>
2108 #include <sys/resource.h>
2109 ],
2110 [ struct rlimit r; setrlimit(0, &r);],
2111 [ac_setrlimit=yes], [ac_setrlimit=no])
2112 ])
2113 fi
2114
2115 AC_MSG_CHECKING([for testsuite memory limit support])
2116 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2117 ac_mem_limits=yes
2118 AC_DEFINE(_GLIBCPP_MEM_LIMITS)
2119 else
2120 ac_mem_limits=no
2121 fi
2122 AC_MSG_RESULT($ac_mem_limits)
2123 ])
2124
2125
2126 dnl
2127 dnl Does any necessary configuration of the testsuite directory. Generates
2128 dnl the testsuite_hooks.h header.
2129 dnl
2130 dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
2131 AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
2132 GLIBCPP_CHECK_SETRLIMIT
2133
2134 # Look for setenv, so that extended locale tests can be performed.
2135 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
2136
2137 # Export file names for ABI checking.
2138 baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
2139 AC_SUBST(baseline_file)
2140
2141 case "$target" in
2142 *-*-cygwin* ) enable_abi_check=no ;;
2143 * ) enable_abi_check=yes ;;
2144 esac
2145
2146 # Don't do ABI checking unless native.
2147 AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
2148 test x"$build" = x"$host" && test -z "$with_cross_host" \
2149 && test "$enable_abi_check" = yes )
2150 ])
2151
2152
2153 sinclude(../libtool.m4)
2154 dnl The lines below arrange for aclocal not to bring an installed
2155 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
2156 dnl add a definition of LIBTOOL to Makefile.in.
2157 ifelse(,,,[AC_SUBST(LIBTOOL)
2158 AC_DEFUN([AM_PROG_LIBTOOL])
2159 AC_DEFUN([AC_LIBTOOL_DLOPEN])
2160 AC_DEFUN([AC_PROG_LD])
2161 ])
2162
2163 dnl
2164 dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
2165 dnl
2166
2167 AC_DEFUN(GLIBCPP_CHECK_S_ISREG_OR_S_IFREG, [
2168 AC_CACHE_VAL(glibcpp_cv_S_ISREG, [
2169 AC_TRY_LINK([#include <sys/stat.h>],
2170 [struct stat buffer; fstat(0, &buffer); S_ISREG(buffer.st_mode); ],
2171 [glibcpp_cv_S_ISREG=yes],
2172 [glibcpp_cv_S_ISREG=no])
2173 ])
2174 AC_CACHE_VAL(glibcpp_cv_S_IFREG, [
2175 AC_TRY_LINK([#include <sys/stat.h>],
2176 [struct stat buffer; fstat(0, &buffer); S_IFREG & buffer.st_mode; ],
2177 [glibcpp_cv_S_IFREG=yes],
2178 [glibcpp_cv_S_IFREG=no])
2179 ])
2180 if test x$glibcpp_cv_S_ISREG = xyes; then
2181 AC_DEFINE(HAVE_S_ISREG)
2182 elif test x$glibcpp_cv_S_IFREG = xyes; then
2183 AC_DEFINE(HAVE_S_IFREG)
2184 fi
2185 ])
2186
2187 dnl
2188 dnl Check whether poll is available in <poll.h>.
2189 dnl
2190
2191 AC_DEFUN(GLIBCPP_CHECK_POLL, [
2192 AC_CACHE_VAL(glibcpp_cv_POLL, [
2193 AC_TRY_COMPILE([#include <poll.h>],
2194 [struct pollfd pfd[1]; pfd[0].events = POLLIN; poll(pfd, 1, 0); ],
2195 [glibcpp_cv_POLL=yes],
2196 [glibcpp_cv_POLL=no])
2197 ])
2198 if test x$glibcpp_cv_POLL = xyes; then
2199 AC_DEFINE(HAVE_POLL)
2200 fi
2201 ])
2202
2203 # Check whether LC_MESSAGES is available in <locale.h>.
2204 # Ulrich Drepper <drepper@cygnus.com>, 1995.
2205 #
2206 # This file file be copied and used freely without restrictions. It can
2207 # be used in projects which are not available under the GNU Public License
2208 # but which still want to provide support for the GNU gettext functionality.
2209 # Please note that the actual code is *not* freely available.
2210
2211 # serial 1
2212
2213 AC_DEFUN(AC_LC_MESSAGES, [
2214 AC_CHECK_HEADER(locale.h, [
2215 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
2216 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
2217 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
2218 if test $ac_cv_val_LC_MESSAGES = yes; then
2219 AC_DEFINE(HAVE_LC_MESSAGES)
2220 fi
2221 ])
2222 ])
2223
2224
2225 dnl
2226 dnl Check for whether the Boost-derived checks should be turned on.
2227 dnl
2228 dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
2229 dnl --enable-concept-checks turns them on.
2230 dnl --disable-concept-checks leaves them off.
2231 dnl + Usage: GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
2232 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2233 dnl defaults to `no'.
2234 AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
2235 define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
2236 AC_ARG_ENABLE(concept-checks,
2237 changequote(<<, >>)dnl
2238 << --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
2239 changequote([, ])dnl
2240 [case "$enableval" in
2241 yes) enable_concept_checks=yes ;;
2242 no) enable_concept_checks=no ;;
2243 *) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
2244 esac],
2245 enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
2246 dnl Option parsed, now set things appropriately
2247 if test x"$enable_concept_checks" = xyes; then
2248 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
2249 fi
2250 ])
2251
2252
2253 dnl
2254 dnl Add version tags to symbols in shared library (or not), additionally
2255 dnl marking other symbols as private/local (or not).
2256 dnl
2257 dnl GLIBCPP_ENABLE_SYMVERS
2258 dnl --enable-symvers=style adds a version script to the linker call when
2259 dnl creating the shared library. The choice of version script is
2260 dnl controlled by 'style'.
2261 dnl --disable-symvers does not.
2262 dnl + Usage: GLIBCPP_ENABLE_SYMVERS[(DEFAULT)]
2263 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
2264 dnl defaults to `no'. Passing `yes' tries to choose a default style
2265 dnl based on linker characteristics. Passing 'no' disables versioning.
2266 AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [dnl
2267 define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))dnl
2268 AC_ARG_ENABLE(symvers,
2269 changequote(<<, >>)dnl
2270 << --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
2271 changequote([, ])dnl
2272 [case "$enableval" in
2273 yes) enable_symvers=yes ;;
2274 no) enable_symvers=no ;;
2275 # other names here, just as sanity checks
2276 #gnu|sun|etcetera) enable_symvers=$enableval ;;
2277 gnu) enable_symvers=$enableval ;;
2278 *) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
2279 esac],
2280 enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)dnl
2281
2282 # If we never went through the GLIBCPP_CHECK_LINKER_FEATURES macro, then we
2283 # don't know enough about $LD to do tricks...
2284 if test x$enable_shared = xno ||
2285 test "x$LD" = x ||
2286 test x$glibcpp_gnu_ld_version = x; then
2287 enable_symvers=no
2288 fi
2289
2290 # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
2291 if test $enable_symvers != no; then
2292 AC_MSG_CHECKING([for shared libgcc])
2293 ac_save_CFLAGS="$CFLAGS"
2294 CFLAGS=' -lgcc_s'
2295 AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
2296 CFLAGS="$ac_save_CFLAGS"
2297 AC_MSG_RESULT($glibcpp_shared_libgcc)
2298 fi
2299
2300 # For GNU ld, we need at least this version. It's 2.12 in the same format
2301 # as the tested-for version. See GLIBCPP_CHECK_LINKER_FEATURES for more.
2302 glibcpp_min_gnu_ld_version=21200
2303
2304 # Check to see if unspecified "yes" value can win, given results
2305 # above.
2306 if test $enable_symvers = yes ; then
2307 if test $with_gnu_ld = yes &&
2308 test $glibcpp_shared_libgcc = yes ;
2309 then
2310 if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
2311 enable_symvers=gnu
2312 else
2313 ac_test_CFLAGS="${CFLAGS+set}"
2314 ac_save_CFLAGS="$CFLAGS"
2315 CFLAGS='-shared -Wl,--version-script,conftest.map'
2316 enable_symvers=no
2317 changequote(,)
2318 echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
2319 changequote([,])
2320 AC_TRY_LINK([int foo;],, enable_symvers=gnu)
2321 if test "$ac_test_CFLAGS" = set; then
2322 CFLAGS="$ac_save_CFLAGS"
2323 else
2324 # this is the suspicious part
2325 CFLAGS=''
2326 fi
2327 rm -f conftest.map
2328 fi
2329 else
2330 # just fail for now
2331 enable_symvers=no
2332 fi
2333 fi
2334
2335 dnl Everything parsed; figure out what file to use.
2336 case $enable_symvers in
2337 no)
2338 SYMVER_MAP=config/linker-map.dummy
2339 ;;
2340 gnu)
2341 SYMVER_MAP=config/linker-map.gnu
2342 AC_DEFINE(_GLIBCPP_SYMVER)
2343 ;;
2344 esac
2345
2346 AC_SUBST(SYMVER_MAP)
2347 AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
2348 AC_MSG_CHECKING([versioning on shared library symbols])
2349 AC_MSG_RESULT($enable_symvers)
2350 ])
2351
2352
2353 # isc-posix.m4 serial 2 (gettext-0.11.2)
2354 dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
2355 dnl This file is free software, distributed under the terms of the GNU
2356 dnl General Public License. As a special exception to the GNU General
2357 dnl Public License, this file may be distributed as part of a program
2358 dnl that contains a configuration script generated by Autoconf, under
2359 dnl the same distribution terms as the rest of that program.
2360
2361 # This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
2362
2363 # This test replaces the one in autoconf.
2364 # Currently this macro should have the same name as the autoconf macro
2365 # because gettext's gettext.m4 (distributed in the automake package)
2366 # still uses it. Otherwise, the use in gettext.m4 makes autoheader
2367 # give these diagnostics:
2368 # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
2369 # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
2370
2371 undefine([AC_ISC_POSIX])
2372
2373 AC_DEFUN([AC_ISC_POSIX],
2374 [
2375 dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
2376 AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
2377 ]
2378 )
2379
2380 # Add --enable-maintainer-mode option to configure.
2381 # From Jim Meyering
2382
2383 # serial 1
2384
2385 AC_DEFUN([AM_MAINTAINER_MODE],
2386 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2387 dnl maintainer-mode is disabled by default
2388 AC_ARG_ENABLE(maintainer-mode,
2389 [ --enable-maintainer-mode enable make rules and dependencies not useful
2390 (and sometimes confusing) to the casual installer],
2391 USE_MAINTAINER_MODE=$enableval,
2392 USE_MAINTAINER_MODE=no)
2393 AC_MSG_RESULT($USE_MAINTAINER_MODE)
2394 AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
2395 MAINT=$MAINTAINER_MODE_TRUE
2396 AC_SUBST(MAINT)dnl
2397 ]
2398 )
2399
2400 # Define a conditional.
2401
2402 AC_DEFUN([AM_CONDITIONAL],
2403 [AC_SUBST($1_TRUE)
2404 AC_SUBST($1_FALSE)
2405 if $2; then
2406 $1_TRUE=
2407 $1_FALSE='#'
2408 else
2409 $1_TRUE='#'
2410 $1_FALSE=
2411 fi])
2412
2413 # Do all the work for Automake. This macro actually does too much --
2414 # some checks are only needed if your package does certain things.
2415 # But this isn't really a big deal.
2416
2417 # serial 1
2418
2419 dnl Usage:
2420 dnl AM_INIT_AUTOMAKE(package,version, [no-define])
2421
2422 AC_DEFUN([AM_INIT_AUTOMAKE],
2423 [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
2424 AC_REQUIRE([AC_PROG_INSTALL])
2425 PACKAGE=[$1]
2426 AC_SUBST(PACKAGE)
2427 VERSION=[$2]
2428 AC_SUBST(VERSION)
2429 dnl test to see if srcdir already configured
2430 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
2431 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
2432 fi
2433 ifelse([$3],,
2434 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
2435 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
2436 AC_REQUIRE([AM_SANITY_CHECK])
2437 AC_REQUIRE([AC_ARG_PROGRAM])
2438 dnl FIXME This is truly gross.
2439 missing_dir=`cd $ac_aux_dir && pwd`
2440 AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
2441 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
2442 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
2443 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
2444 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
2445 AC_REQUIRE([AC_PROG_MAKE_SET])])
2446
2447 # Copyright 2002 Free Software Foundation, Inc.
2448
2449 # This program is free software; you can redistribute it and/or modify
2450 # it under the terms of the GNU General Public License as published by
2451 # the Free Software Foundation; either version 2, or (at your option)
2452 # any later version.
2453
2454 # This program is distributed in the hope that it will be useful,
2455 # but WITHOUT ANY WARRANTY; without even the implied warranty of
2456 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2457 # GNU General Public License for more details.
2458
2459 # You should have received a copy of the GNU General Public License
2460 # along with this program; if not, write to the Free Software
2461 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
2462
2463 # AM_AUTOMAKE_VERSION(VERSION)
2464 # ----------------------------
2465 # Automake X.Y traces this macro to ensure aclocal.m4 has been
2466 # generated from the m4 files accompanying Automake X.Y.
2467 AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
2468
2469 # AM_SET_CURRENT_AUTOMAKE_VERSION
2470 # -------------------------------
2471 # Call AM_AUTOMAKE_VERSION so it can be traced.
2472 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
2473 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
2474 [AM_AUTOMAKE_VERSION([1.4-p6])])
2475
2476 #
2477 # Check to make sure that the build environment is sane.
2478 #
2479
2480 AC_DEFUN([AM_SANITY_CHECK],
2481 [AC_MSG_CHECKING([whether build environment is sane])
2482 # Just in case
2483 sleep 1
2484 echo timestamp > conftestfile
2485 # Do `set' in a subshell so we don't clobber the current shell's
2486 # arguments. Must try -L first in case configure is actually a
2487 # symlink; some systems play weird games with the mod time of symlinks
2488 # (eg FreeBSD returns the mod time of the symlink's containing
2489 # directory).
2490 if (
2491 set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
2492 if test "[$]*" = "X"; then
2493 # -L didn't work.
2494 set X `ls -t $srcdir/configure conftestfile`
2495 fi
2496 if test "[$]*" != "X $srcdir/configure conftestfile" \
2497 && test "[$]*" != "X conftestfile $srcdir/configure"; then
2498
2499 # If neither matched, then we have a broken ls. This can happen
2500 # if, for instance, CONFIG_SHELL is bash and it inherits a
2501 # broken ls alias from the environment. This has actually
2502 # happened. Such a system could not be considered "sane".
2503 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
2504 alias in your environment])
2505 fi
2506
2507 test "[$]2" = conftestfile
2508 )
2509 then
2510 # Ok.
2511 :
2512 else
2513 AC_MSG_ERROR([newly created file is older than distributed files!
2514 Check your system clock])
2515 fi
2516 rm -f conftest*
2517 AC_MSG_RESULT(yes)])
2518
2519 dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
2520 dnl The program must properly implement --version.
2521 AC_DEFUN([AM_MISSING_PROG],
2522 [AC_MSG_CHECKING(for working $2)
2523 # Run test in a subshell; some versions of sh will print an error if
2524 # an executable is not found, even if stderr is redirected.
2525 # Redirect stdin to placate older versions of autoconf. Sigh.
2526 if ($2 --version) < /dev/null > /dev/null 2>&1; then
2527 $1=$2
2528 AC_MSG_RESULT(found)
2529 else
2530 $1="$3/missing $2"
2531 AC_MSG_RESULT(missing)
2532 fi
2533 AC_SUBST($1)])
2534
2535 # Like AC_CONFIG_HEADER, but automatically create stamp file.
2536
2537 AC_DEFUN([AM_CONFIG_HEADER],
2538 [AC_PREREQ([2.12])
2539 AC_CONFIG_HEADER([$1])
2540 dnl When config.status generates a header, we must update the stamp-h file.
2541 dnl This file resides in the same directory as the config header
2542 dnl that is generated. We must strip everything past the first ":",
2543 dnl and everything past the last "/".
2544 AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
2545 ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
2546 <<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
2547 <<am_indx=1
2548 for am_file in <<$1>>; do
2549 case " <<$>>CONFIG_HEADERS " in
2550 *" <<$>>am_file "*<<)>>
2551 echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
2552 ;;
2553 esac
2554 am_indx=`expr "<<$>>am_indx" + 1`
2555 done<<>>dnl>>)
2556 changequote([,]))])
2557