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