2 dnl Initialize configure bits.
4 dnl Define OPTLEVEL='-O2' if new inlining code present.
7 AC_DEFUN(GLIBCPP_CONFIGURE, [
8 dnl Default to --enable-multilib
9 AC_ARG_ENABLE(multilib,
10 [ --enable-multilib build hella library versions (default)],
11 [case "${enableval}" in
14 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
15 esac], [multilib=yes])dnl
17 dnl We may get other options which we dont document:
18 dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
19 if test "[$]{srcdir}" = "."; then
20 if test "[$]{with_target_subdir}" != "."; then
21 glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
23 glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
26 glibcpp_basedir="[$]{srcdir}/$1"
28 AC_SUBST(glibcpp_basedir)
30 AM_INIT_AUTOMAKE(libstdc++, 2.90.8)
32 # Never versions of autoconf add an underscore to these functions.
33 # Prevent future problems ...
34 ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
35 ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
36 ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
37 ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
41 # FIXME: We temporarily define our own version of AC_PROG_CC. This is
42 # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
43 # are probably using a cross compiler, which will not be able to fully
44 # link an executable. This should really be fixed in autoconf
47 AC_DEFUN(LIB_AC_PROG_CC,
48 [AC_BEFORE([$0], [AC_PROG_CPP])dnl
49 dnl Fool anybody using AC_PROG_CC.
50 AC_PROVIDE([AC_PROG_CC])
51 AC_CHECK_PROG(CC, gcc, gcc)
52 if test -z "$CC"; then
53 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
54 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
59 if test $ac_cv_prog_gcc = yes; then
61 dnl Check whether -g works, even if CFLAGS is set, in case the package
62 dnl plays around with CFLAGS (such as to build both debugging and
63 dnl normal versions of a library), tasteless as that idea is.
64 ac_test_CFLAGS="${CFLAGS+set}"
65 ac_save_CFLAGS="$CFLAGS"
68 if test "$ac_test_CFLAGS" = set; then
69 CFLAGS="$ac_save_CFLAGS"
70 elif test $ac_cv_prog_cc_g = yes; then
77 test "${CFLAGS+set}" = set || CFLAGS="-g"
83 # Can't just call these here as g++ requires libstc++ to be built....
86 # Likewise for AC_PROG_CXX.
87 AC_DEFUN(LIB_AC_PROG_CXX,
88 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
89 dnl Fool anybody using AC_PROG_CXX.
90 AC_PROVIDE([AC_PROG_CXX])
91 # Use CXX_libstdcxx so that we do not cause CXX to be cached with the
92 # flags that come in CXX while configuring libstdc++. They're different
93 # from those used for all other target libraries.
94 AC_CHECK_PROGS(CXX_libstdcxx, "$CXX" "$CCC" c++ g++ gcc CC cxx cc++, gcc)
97 test -z "$CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
101 if test $ac_cv_prog_gxx = yes; then
103 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
104 dnl plays around with CXXFLAGS (such as to build both debugging and
105 dnl normal versions of a library), tasteless as that idea is.
106 ac_test_CXXFLAGS="${CXXFLAGS+set}"
107 ac_save_CXXFLAGS="$CXXFLAGS"
110 if test "$ac_test_CXXFLAGS" = set; then
111 CXXFLAGS="$ac_save_CXXFLAGS"
112 elif test $ac_cv_prog_cxx_g = yes; then
119 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
125 AC_CHECK_TOOL(AS, as)
126 AC_CHECK_TOOL(AR, ar)
127 AC_CHECK_TOOL(RANLIB, ranlib, :)
133 # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
134 # at least currently, we never actually build a program, so we never
135 # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
136 # fails, because we are probably configuring with a cross compiler
137 # which cant create executables. So we include AC_EXEEXT to keep
138 # automake happy, but we dont execute it, since we dont care about
144 # configure.host sets the following important variables
145 # glibcpp_cflags - host specific C compiler flags
146 # glibcpp_cxxflags - host specific C++ compiler flags
150 . [$]{glibcpp_basedir}/configure.host
152 case [$]{glibcpp_basedir} in
153 /* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
154 *) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
157 GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
158 GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
159 AC_SUBST(GLIBCPP_CFLAGS)
160 AC_SUBST(GLIBCPP_CXXFLAGS)
165 dnl Check to see if g++ can compile this library, and if so, if any version-
166 dnl specific precautions need to be taken.
168 dnl GLIBCPP_CHECK_COMPILER_VERSION
169 AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
170 # Sanity check that g++ is capable of dealing with v-3.
171 AC_MSG_CHECKING([for g++ that will successfully compile this code])
173 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
176 ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to gcc-2.95 or above]))
177 AC_MSG_RESULT($gpp_satisfactory)
182 dnl Test for newer compiler features, or features that are present in newer
183 dnl compiler version but not older compiler versions should be placed
186 dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
188 dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
189 dnl new inlining code or the new system_header pragma will die on -Werror.
190 dnl Leave it out by default and use maint-mode to use it.
192 dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
193 dnl compiler supports it.
194 dnl GLIBCPP_CHECK_COMPILER_FEATURES
195 AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
196 # All these tests are for C++; save the language and the compiler flags.
197 # The CXXFLAGS thing is suspicious, but based on similar bits
198 # found in GLIBCPP_CONFIGURE.
201 ac_test_CXXFLAGS="${CXXFLAGS+set}"
202 ac_save_CXXFLAGS="$CXXFLAGS"
204 # Check for maintainer-mode bits.
205 if test x"$USE_MAINTAINER_MODE" = xno; then
211 # Check for more sophisticated diagnostic control.
212 AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
213 CXXFLAGS='-Werror -fdiagnostics-show-location=once'
214 AC_TRY_COMPILE(, [int foo;
215 ], [ac_gabydiags=yes], [ac_gabydiags=no])
216 if test "$ac_test_CXXFLAGS" = set; then
217 CXXFLAGS="$ac_save_CXXFLAGS"
219 # this is the suspicious part
222 if test "$ac_gabydiags" = "yes"; then
223 WFMT_FLAGS='-fdiagnostics-show-location=once'
225 AC_MSG_RESULT($ac_gabydiags)
227 # Check for -ffunction-sections -fdata-sections
228 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
229 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
230 AC_TRY_COMPILE(, [int foo;
231 ], [ac_fdsections=yes], [ac_fdsections=no])
232 if test "$ac_test_CXXFLAGS" = set; then
233 CXXFLAGS="$ac_save_CXXFLAGS"
235 # this is the suspicious part
238 if test "$ac_fdsections" = "yes"; then
239 SECTION_FLAGS='-ffunction-sections -fdata-sections'
241 AC_MSG_RESULT($ac_fdsections)
246 AC_SUBST(SECTION_FLAGS)
251 dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
252 dnl the native linker is in use, all variables will be defined to something
253 dnl safe (like an empty string).
255 dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible.
256 dnl Define OPT_LDFLAGS='-Wl,-O1' if possible.
258 dnl GLIBCPP_CHECK_LINKER_FEATURES
259 AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
260 # If we're not using GNU ld, then there's no point in even trying these
261 # tests. Check for that first. We should have already tested for gld
262 # by now (in libtool), but require it now just to be safe...
265 AC_REQUIRE([AC_PROG_LD])
268 if test "$ac_cv_prog_gnu_ld" = "broken"; then
269 # GNU ld it is! Joy and bunny rabbits!
271 # All these tests are for C++; save the language and the compiler flags.
272 # Need to do this so that g++ won't try to link in libstdc++
273 ac_test_CFLAGS="${CFLAGS+set}"
274 ac_save_CFLAGS="$CFLAGS"
275 CFLAGS='-x c++ -Wl,--gc-sections'
277 # Check for -Wl,--gc-sections
278 # XXX This test is broken at the moment, as symbols required for
279 # linking are now in libsupc++ (not built yet.....). In addition,
280 # this test has cored on solaris in the past. In addition,
281 # --gc-sections doesn't really work at the moment (keeps on discarding
282 # used sections, first .eh_frame and now some of the glibc sections for
283 # iconv). Bzzzzt. Thanks for playing, maybe next time.
284 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
292 ], [ac_sectionLDflags=yes],[ac_sectionLFflags=no], [ac_sectionLDflags=yes])
293 if test "$ac_test_CFLAGS" = set; then
294 CFLAGS="$ac_save_CFLAGS"
296 # this is the suspicious part
299 if test "$ac_sectionLDflags" = "yes"; then
300 SECTION_LDFLAGS='-Wl,--gc-sections'
302 AC_MSG_RESULT($ac_sectionLDflags)
305 # Set linker optimization flags.
306 if test "$ac_cv_prog_gnu_ld" = "yes"; then
307 OPT_LDFLAGS='-Wl,-O1'
310 AC_SUBST(SECTION_LDFLAGS)
311 AC_SUBST(OPT_LDFLAGS)
316 dnl Check to see if the (math function) argument passed is
317 dnl 1) declared when using the c++ compiler
318 dnl 2) has "C" linkage
320 dnl Define HAVE_CARGF etc if "cargf" is declared and links
322 dnl argument 1 is name of function to check
324 dnl ASSUMES argument is a math function with ONE parameter
326 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
327 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
328 AC_MSG_CHECKING([for $1 declaration])
329 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
332 AC_TRY_COMPILE([#include <math.h>],
334 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
337 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
338 if test x$glibcpp_cv_func_$1_use = x"yes"; then
345 dnl Check to see if the (math function) argument passed is
346 dnl 1) declared when using the c++ compiler
347 dnl 2) has "C" linkage
349 dnl Define HAVE_CARGF etc if "cargf" is declared and links
351 dnl argument 1 is name of function to check
353 dnl ASSUMES argument is a math function with TWO parameters
355 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
356 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
357 AC_MSG_CHECKING([for $1 declaration])
358 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
361 AC_TRY_COMPILE([#include <math.h>],
363 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
366 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
367 if test x$glibcpp_cv_func_$1_use = x"yes"; then
374 dnl Check to see if the (math function) argument passed is
375 dnl 1) declared when using the c++ compiler
376 dnl 2) has "C" linkage
378 dnl Define HAVE_CARGF etc if "cargf" is declared and links
380 dnl argument 1 is name of function to check
382 dnl ASSUMES argument is a math function with THREE parameters
384 dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
385 AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
386 AC_MSG_CHECKING([for $1 declaration])
387 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
390 AC_TRY_COMPILE([#include <math.h>],
392 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
395 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
396 if test x$glibcpp_cv_func_$1_use = x"yes"; then
403 dnl Check to see if the (stdlib function) argument passed is
404 dnl 1) declared when using the c++ compiler
405 dnl 2) has "C" linkage
407 dnl Define HAVE_STRTOLD if "strtold" is declared and links
408 dnl Define HAVE_STRTOF if "strtof" is declared and links
410 dnl argument 1 is name of function to check
412 dnl ASSUMES argument is a math function with TWO parameters
414 dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
415 AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
416 AC_MSG_CHECKING([for $1 declaration])
417 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
420 AC_TRY_COMPILE([#include <stdlib.h>],
422 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
425 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
426 if test x$glibcpp_cv_func_$1_use = x"yes"; then
433 dnl Because the builtins are picky picky picky about the arguments they take,
434 dnl do an explict linkage tests here.
435 dnl Check to see if the (math function) argument passed is
436 dnl 1) declared when using the c++ compiler
437 dnl 2) has "C" linkage
439 dnl Define HAVE_CARGF etc if "cargf" is declared and links
441 dnl argument 1 is name of function to check
443 dnl ASSUMES argument is a math function with ONE parameter
445 dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
446 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
447 AC_MSG_CHECKING([for $1 declaration])
448 AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
451 AC_TRY_COMPILE([#include <math.h>],
453 [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
456 AC_MSG_RESULT($glibcpp_cv_func_$1_use)
457 if test x$glibcpp_cv_func_$1_use = x"yes"; then
458 AC_MSG_CHECKING([for $1 linkage])
459 AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
460 AC_TRY_LINK([#include <math.h>],
462 [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
464 AC_MSG_RESULT($glibcpp_cv_func_$1_link)
465 if test x$glibcpp_cv_func_$1_link = x"yes"; then
466 ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
467 AC_DEFINE_UNQUOTED(${ac_tr_func})
474 dnl Check to see what builtin math functions are supported
476 dnl check for __builtin_abs
477 dnl check for __builtin_fabsf
478 dnl check for __builtin_fabs
479 dnl check for __builtin_fabl
480 dnl check for __builtin_labs
481 dnl check for __builtin_sqrtf
482 dnl check for __builtin_sqrtl
483 dnl check for __builtin_fsqrt
484 dnl check for __builtin_sinf
485 dnl check for __builtin_sin
486 dnl check for __builtin_sinl
487 dnl check for __builtin_cosf
488 dnl check for __builtin_cos
489 dnl check for __builtin_cosl
491 dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
492 AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
493 dnl Test for builtin math functions.
494 dnl These are made in gcc/c-common.c
495 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
496 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
497 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
498 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
499 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
501 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
502 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt)
503 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
505 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
506 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
507 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
509 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
510 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
511 GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
513 dnl There is, without a doubt, a more elegant way to have these
514 dnl names exported so that they won't be stripped out of acconfig.h by
515 dnl autoheader. I leave this as an exercise to somebody less frustrated
516 dnl than I.... please email the libstdc++ list if you can figure out a
517 dnl more elegant approach (see autoconf/acgen.m4 and specifically
518 dnl AC_CHECK_FUNC for things to steal.)
520 if test x$dummyvar = x"yes"; then
521 AC_DEFINE(HAVE___BUILTIN_ABS)
522 AC_DEFINE(HAVE___BUILTIN_LABS)
523 AC_DEFINE(HAVE___BUILTIN_COS)
524 AC_DEFINE(HAVE___BUILTIN_COSF)
525 AC_DEFINE(HAVE___BUILTIN_COSL)
526 AC_DEFINE(HAVE___BUILTIN_FABS)
527 AC_DEFINE(HAVE___BUILTIN_FABSF)
528 AC_DEFINE(HAVE___BUILTIN_FABSL)
529 AC_DEFINE(HAVE___BUILTIN_SIN)
530 AC_DEFINE(HAVE___BUILTIN_SINF)
531 AC_DEFINE(HAVE___BUILTIN_SINL)
532 AC_DEFINE(HAVE___BUILTIN_FSQRT)
533 AC_DEFINE(HAVE___BUILTIN_SQRTF)
534 AC_DEFINE(HAVE___BUILTIN_SQRTL)
540 dnl Check to see what the underlying c library
541 dnl These checks need to do two things:
542 dnl 1) make sure the name is declared when using the c++ compiler
543 dnl 2) make sure the name has "C" linkage
544 dnl This might seem like overkill but experience has shown that it's not...
546 dnl Define HAVE_STRTOF etc if "strtof" is found.
547 dnl Define HAVE_STRTOLD etc if "strtold" is found.
549 dnl GLIBCPP_CHECK_STDLIB_SUPPORT
550 AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
551 ac_test_CXXFLAGS="${CXXFLAGS+set}"
552 ac_save_CXXFLAGS="$CXXFLAGS"
553 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
555 AC_CHECK_FUNCS(strtof)
556 GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
558 CXXFLAGS="$ac_save_CXXFLAGS"
563 dnl Check to see what the underlying c library or math library is like.
564 dnl These checks need to do two things:
565 dnl 1) make sure the name is declared when using the c++ compiler
566 dnl 2) make sure the name has "C" linkage
567 dnl This might seem like overkill but experience has shown that it's not...
569 dnl Define HAVE_CARGF etc if "cargf" is found.
571 dnl GLIBCPP_CHECK_MATH_SUPPORT
572 AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
573 ac_test_CXXFLAGS="${CXXFLAGS+set}"
574 ac_save_CXXFLAGS="$CXXFLAGS"
575 CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
578 AC_CHECK_LIB(m, sin, libm="-lm")
582 dnl Check to see if certain C math functions exist.
583 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
584 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
585 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
586 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
587 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
588 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
589 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
591 dnl Check to see if basic C math functions have float versions.
592 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
593 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
594 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosf)
595 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinf)
596 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanf)
597 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
598 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceilf)
599 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosf)
600 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshf)
601 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
602 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
603 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorf)
604 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
605 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
606 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
607 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
608 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
609 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
610 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
611 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinf)
612 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhf)
613 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
614 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanf)
615 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhf)
616 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
617 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
619 dnl Check to see if basic C math functions have long double versions.
620 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
621 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
622 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
623 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosl)
624 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinl)
625 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanl)
626 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
627 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceill)
628 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosl)
629 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshl)
630 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
631 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
632 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorl)
633 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
634 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
635 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
636 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
637 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
638 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
639 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
640 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinl)
641 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhl)
642 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
643 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanl)
644 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhl)
645 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
646 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
648 dnl Some runtimes have these functions with a preceding underscore. Please
649 dnl keep this sync'd with the one above. And if you add any new symbol,
650 dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
651 dnl Check to see if certain C math functions exist.
652 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinf)
653 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnan)
654 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finite)
655 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysign)
656 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincos)
657 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fpclass)
658 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_qfpclass)
660 dnl Check to see if basic C math functions have float versions.
661 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanf)
662 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinff)
663 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosf)
664 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinf)
665 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanf)
666 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2f)
667 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceilf)
668 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosf)
669 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshf)
670 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expf)
671 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsf)
672 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorf)
673 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodf)
674 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpf)
675 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpf)
676 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logf)
677 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10f)
678 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modff)
679 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powf)
680 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinf)
681 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhf)
682 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtf)
683 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanf)
684 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhf)
685 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosf)
686 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitef)
688 dnl Check to see if basic C math functions have long double versions.
689 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanl)
690 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinfl)
691 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysignl)
692 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosl)
693 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinl)
694 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanl)
695 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2l)
696 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceill)
697 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosl)
698 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshl)
699 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expl)
700 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsl)
701 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorl)
702 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodl)
703 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpl)
704 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpl)
705 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logl)
706 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10l)
707 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modfl)
708 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powl)
709 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinl)
710 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhl)
711 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtl)
712 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanl)
713 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhl)
714 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosl)
715 GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitel)
718 CXXFLAGS="$ac_save_CXXFLAGS"
723 dnl Check to see if there is native support for complex
725 dnl Don't compile bits in math/* if native support exits.
727 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found.
729 dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
730 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
731 dnl Check for complex versions of math functions of platform.
732 AC_CHECK_HEADERS([complex.h])
733 AC_CHECK_LIB(m, main)
734 AC_REPLACE_MATHFUNCS(cabs cabsf ccos ccosf ccosh ccoshf cexp cexpf \
735 c_log c_logf clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt \
736 csqrtf ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf \
739 dnl Compile the long double complex functions only if the function
740 dnl provides the non-complex long double functions that are needed.
741 dnl Currently this includes copysignl and atan2l, which should be
742 dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
743 USE_COMPLEX_LONG_DOUBLE=no
744 if test x$ac_cv_func_atan2l = x"yes" \
745 && test x$ac_cv_func_copysignl = x"yes"; then
746 USE_COMPLEX_LONG_DOUBLE=yes
747 AC_REPLACE_MATHFUNCS(cabsl ccoshl ccosl cexpl cpowl csinhl csinl \
748 csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l)
751 AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
755 dnl Check to see what architecture we are compiling for. Also, if
756 dnl architecture-specific flags are required for compilation, add them here.
758 dnl GLIBCPP_CHECK_CPU
759 AC_DEFUN(GLIBCPP_CHECK_CPU, [
760 AC_MSG_CHECKING([for cpu config directory])
761 # Currently unused, but could be useful.
763 case "${target_cpu}" in
765 cpu_include_dir="config/cpu/alpha"
768 cpu_include_dir="config/cpu/arm"
771 cpu_include_dir="config/cpu/ia64"
774 cpu_include_dir="config/cpu/i386"
776 i486 | i586 | i686 | i786)
777 cpu_include_dir="config/cpu/i486"
780 cpu_include_dir="config/cpu/powerpc"
782 sparc64 | ultrasparc)
783 cpu_include_dir="config/cpu/sparc/sparc64"
786 cpu_include_dir="config/cpu/sparc/sparc32"
789 cpu_include_dir="config/cpu/generic"
792 AC_MSG_RESULT($cpu_include_dir)
796 dnl Check to see what OS we are compiling for. Also, if os-specific flags
797 dnl are required for compilation, add them here.
800 AC_DEFUN(GLIBCPP_CHECK_OS, [
801 AC_MSG_CHECKING([for OS config directory])
802 # Currently unused, but could be useful.
804 case "${target_os}" in
805 aix4.[[3456789]]* | aix[[56789]]*)
806 os_include_dir="config/os/aix"
809 enable_threads='posix'
817 os_include_dir="config/os/aix"
820 os_include_dir="config/os/bsd"
823 os_include_dir="config/os/gnu-linux"
826 os_include_dir="config/os/irix"
829 os_include_dir="config/os/solaris/solaris2.5"
832 os_include_dir="config/os/solaris/solaris2.6"
834 solaris2.7* | solaris2.8*)
835 os_include_dir="config/os/solaris/solaris2.7"
838 os_include_dir="config/os/generic"
841 AC_MSG_RESULT($os_include_dir)
842 AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h)
847 dnl Check to see what the underlying c library's interface to ctype looks
848 dnl like. Bits of locale rely on things like isspace, toupper, etc. This
849 dnl stuff makes sure the right bits from the clibrary get called.
851 dnl Depending on what is found, select various configure/*/bits/ctype_base.h
852 dnl Depending on what is found, select various configure/*/ctype.cc
854 dnl GLIBCPP_CHECK_CTYPE_SUPPORT
855 AC_DEFUN(GLIBCPP_CHECK_CTYPE_SUPPORT, [
856 AC_CHECK_HEADER(ctype.h, [
858 dnl If doesn't match any specified, go with defaults.
861 dnl Test for <ctype> functionality -- GNU/Linux
862 AC_MSG_CHECKING([<ctype> for GNU/Linux])
863 AC_TRY_COMPILE([#include <ctype.h>],
866 { return _ISspace + _ISprint + _IScntrl + _ISupper + _ISlower + _ISalpha \
867 + _ISdigit + _ISpunct + _ISxdigit + _ISalnum + _ISgraph \
868 + __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}], \
869 ctype_linux=yes, ctype_linux=no)
870 AC_MSG_RESULT($ctype_linux)
871 if test $ctype_linux = "yes"; then
872 ctype_include_dir="config/os/gnu-linux"
876 dnl Test for <ctype> functionality -- FreeBSD 4.0
877 if test $ctype_default = "yes"; then
878 AC_MSG_CHECKING([<ctype> for FreeBSD 4.0])
879 AC_TRY_COMPILE([#include <ctype.h>],
882 { return _CTYPE_S + _CTYPE_R + _CTYPE_C + _CTYPE_U + _CTYPE_L + _CTYPE_A \
883 + _CTYPE_D + _CTYPE_P + _CTYPE_X + _CTYPE_G ;}], \
884 ctype_bsd=yes, ctype_bsd=no)
885 AC_MSG_RESULT($ctype_bsd)
886 if test $ctype_bsd = "yes"; then
887 ctype_include_dir="config/os/bsd"
892 dnl Test for <ctype> functionality -- FreeBSD 3.4
893 if test $ctype_default = "yes"; then
894 AC_MSG_CHECKING([<ctype> for FreeBSD 3.4])
895 AC_TRY_COMPILE([#include <ctype.h>],
898 { return _S + _R + _C + _U + _L + _A \
899 + _D + _P + _X + _G + __istype (a, 0);}], \
900 ctype_freebsd34=yes, ctype_freebsd34=no)
901 AC_MSG_RESULT($ctype_freebsd34)
902 if test $ctype_freebsd34 = "yes"; then
903 ctype_include_dir="config/os/bsd"
908 dnl Test for <ctype> functionality -- Solaris 2.6 and up
909 if test $ctype_default = "yes"; then
910 AC_MSG_CHECKING([<ctype> for Solaris 2.6,7,8])
911 AC_TRY_COMPILE([#include <ctype.h>],
914 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
915 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
916 + __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}], \
917 ctype_solaris=yes, ctype_solaris=no)
918 AC_MSG_RESULT($ctype_solaris)
920 if test $ctype_solaris = "yes"; then
921 AC_MSG_CHECKING([ for version])
923 AC_TRY_COMPILE([#include <ctype.h>],
924 [typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;],\
925 ctype_solaris26=yes, ctype_solaris26=no)
927 if test $ctype_solaris26 = "yes"; then
928 ctype_include_dir="config/os/solaris/solaris2.6"
929 AC_MSG_RESULT([Solaris 2.6])
932 ctype_include_dir="config/os/solaris/solaris2.7"
933 AC_MSG_RESULT([Solaris 7,8])
939 dnl Test for <ctype> functionality -- Solaris 2.5.1
940 if test $ctype_default = "yes"; then
941 AC_MSG_CHECKING([<ctype> for Solaris 2.5.1])
942 AC_TRY_COMPILE([#include <ctype.h>],
945 { return _U + _L + _N + _S + _P + _C + _X + _B \
947 ctype_solaris25=yes, ctype_solaris25=no)
948 AC_MSG_RESULT($ctype_solaris25)
949 if test $ctype_solaris25 = "yes"; then
950 ctype_include_dir="config/os/solaris/solaris2.5"
955 dnl Test for <ctype> functionality -- AIX
956 if test $ctype_default = "yes"; then
957 AC_MSG_CHECKING([<ctype> for AIX])
958 AC_TRY_COMPILE([#include <ctype.h>],
961 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
962 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
963 + _VALC('a') + _IS('c', 0);}], \
964 ctype_aix=yes, ctype_aix=no)
965 AC_MSG_RESULT($ctype_aix)
966 if test $ctype_aix = "yes"; then
967 ctype_include_dir="config/os/aix"
972 dnl Test for <ctype> functionality -- IRIX
973 if test $ctype_default ="yes"; then
974 AC_MSG_CHECKING([<ctype> for IRIX])
975 AC_TRY_COMPILE([#include <ctype.h>],
978 { return _U + _L + _N + _S + _P + _C + _B + _X + \
979 _A + _PR + _G + _BL;}], \
980 ctype_irix=yes, ctype_irix=no)
981 AC_MSG_RESULT($ctype_irix)
982 if test $ctype_irix = "yes"; then
983 ctype_include_dir="config/os/irix"
988 dnl Test for <ctype> functionality -- newlib
989 if test $ctype_default = "yes"; then
990 AC_MSG_CHECKING([<ctype> for newlib])
991 AC_TRY_COMPILE([#include <ctype.h>],
994 { return _U + _L + _N + _S + _P + _C + _X + _B \
996 ctype_newlib=yes, ctype_newlib=no)
997 AC_MSG_RESULT($ctype_newlib)
998 if test $ctype_newlib = "yes"; then
999 ctype_include_dir="config/newlib"
1004 if test $ctype_default = "yes"; then
1005 ctype_include_dir="config/os/generic"
1006 AC_MSG_WARN("Using default ctype headers.")
1009 AC_LINK_FILES($ctype_include_dir/bits/ctype_base.h,
1010 include/bits/ctype_base.h)
1011 AC_LINK_FILES($ctype_include_dir/bits/ctype_inline.h,
1012 include/bits/ctype_inline.h)
1013 AC_LINK_FILES($ctype_include_dir/bits/ctype_noninline.h, \
1014 include/bits/ctype_noninline.h)
1020 dnl Check to see if this target can enable the wchar_t parts of libstdc++.
1021 dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
1022 dnl must have been previously checked.)
1024 dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
1025 dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
1027 dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
1028 AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
1029 if test x$enable_c_mbchar != xno; then
1031 dnl Sanity check for existence of ISO C9X headers for extended encoding.
1032 AC_CHECK_HEADER(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
1033 AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
1035 dnl Only continue checking if the ISO C9X headers exist.
1036 if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then
1038 dnl Test wchar.h for mbstate_t, which is needed for char_traits
1040 AC_MSG_CHECKING([for mbstate_t])
1041 AC_TRY_COMPILE([#include <wchar.h>],
1042 [mbstate_t teststate;],
1043 use_native_mbstatet=yes, use_native_mbstatet=no)
1044 AC_MSG_RESULT($use_native_mbstatet)
1045 if test x"$use_native_mbstatet" = xno; then
1046 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
1049 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
1050 dnl numeric_limits can instantiate type_traits<wchar_t>
1051 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
1052 AC_TRY_COMPILE([#include <wchar.h>],
1053 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
1054 has_wchar_minmax=yes, has_wchar_minmax=no)
1055 AC_MSG_RESULT($has_wchar_minmax)
1057 dnl Test wchar.h for WEOF, which is what we use to determine whether
1058 dnl to specialize for char_traits<wchar_t> or not.
1059 AC_MSG_CHECKING([for WEOF])
1062 #include <stddef.h>],
1064 has_weof=yes, has_weof=no)
1065 AC_MSG_RESULT($has_weof)
1067 dnl Tests for wide character functions used in char_traits<wchar_t>.
1068 AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset \
1069 wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
1071 AC_MSG_CHECKING([for ISO C9X wchar_t support])
1072 if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
1073 && test x"$ac_wfuncs" = xyes; then
1074 ac_isoC9X_wchar_t=yes
1076 ac_isoC9X_wchar_t=no
1078 AC_MSG_RESULT($ac_isoC9X_wchar_t)
1080 dnl Use iconv for wchar_t to char conversions. As such, check for
1081 dnl X/Open Portability Guide, version 2 features (XPG2).
1082 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
1083 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
1084 AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
1085 ac_XPG2funcs=yes, ac_XPG2funcs=no)
1087 AC_MSG_CHECKING([for XPG2 wchar_t support])
1088 if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
1089 && test x"$ac_XPG2funcs" = xyes; then
1094 AC_MSG_RESULT($ac_XPG2_wchar_t)
1096 dnl At the moment, only enable wchar_t specializations if all the
1097 dnl above support is present.
1098 AC_MSG_CHECKING([for enabled wchar_t specializations])
1099 if test x"$ac_isoC9X_wchar_t" = xyes \
1100 && test x"$ac_XPG2_wchar_t" = xyes; then
1101 libinst_wstring_la="libinst-wstring.la"
1102 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
1103 AC_MSG_RESULT("yes")
1105 libinst_wstring_la=""
1108 AC_SUBST(libinst_wstring_la)
1111 AC_MSG_WARN([<wchar.h> not found])
1112 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
1116 dnl Wide characters disabled by the user. Maybe print a warning?
1123 dnl Check to see if this version of GNU C++ is afflicted by bugs in
1124 dnl __complex__ float support.
1126 dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
1128 dnl Check to see if this version of GNU C++ is afflicted by bugs in
1129 dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
1130 dnl gcc-2.95.x when using the library, unless we define the default copy
1131 dnl ctor in the specializations of complex<>.
1133 dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
1134 dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT
1135 AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [
1136 AC_REQUIRE([AC_PROG_CXX])
1138 AC_MSG_CHECKING([for GNU C++ __complex__ support])
1139 AC_CACHE_VAL(glibcpp_cv_complex, [
1142 AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
1143 dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
1144 [ dcomplex x; f(x); ],
1145 glibcpp_cv_complex=ok,
1146 glibcpp_cv_complex=buggy
1150 AC_MSG_RESULT($glibcpp_cv_complex)
1151 if test $glibcpp_cv_complex = buggy; then
1152 AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
1155 AC_MSG_CHECKING([for GNU C++ __complex__ float support])
1156 AC_CACHE_VAL(glibcpp_cv_float_complex, [
1160 cat > conftest.h <<EOB
1162 // Check for buggy __complex__ that causes ICE in most versions of egcs
1163 // and gcc-2.95.x on certain platforms (eg., x86-win32).
1165 // See http://gcc.gnu.org/ml/gcc-bugs/1999-07n/msg00845.html for
1166 // more info on the bug itself.
1171 __complex__ float m_value;
1172 float_complex (float = 0.0f, float = 0.0f);
1173 float_complex (__complex__ float val) : m_value (val) {}
1174 float_complex foo (const float_complex &val)
1175 { return float_complex (~val.m_value); }
1178 AC_TRY_COMPILE([#include "conftest.h"], ,
1179 glibcpp_cv_float_complex=ok,
1180 glibcpp_cv_float_complex=buggy
1184 AC_MSG_RESULT($glibcpp_cv_float_complex)
1185 if test $glibcpp_cv_float_complex = buggy; then
1186 AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
1192 dnl Check for special debugging mode; not for production use.
1194 dnl GLIBCPP_ENABLE_DEBUG
1195 dnl --enable-debug sets '-ggdb3 -O0'.
1196 dnl --disable-debug sets '-g' and whatever optimization options the
1197 dnl compiler can handle.
1198 dnl + --enable-maintainer-mode automatically defaults this to on.
1199 dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
1200 dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
1201 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1202 dnl defaults to `no'.
1203 AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
1204 define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
1205 AC_ARG_ENABLE(debug,
1206 changequote(<<, >>)dnl
1207 << --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
1208 changequote([, ])dnl
1209 [case "${enableval}" in
1210 yes) enable_debug=yes ;;
1211 no) enable_debug=no ;;
1212 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
1214 enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
1216 dnl Option parsed, now set things appropriately
1217 case "${enable_debug}" in
1219 DEBUG_FLAGS='-O0 -ggdb3'
1225 AC_SUBST(DEBUG_FLAGS)
1230 dnl Check for "unusual" flags to pass to the compiler while building.
1232 dnl GLIBCPP_ENABLE_CXX_FLAGS
1233 dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
1234 dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
1235 dnl Somehow this same set of flags must be passed when [re]building
1237 dnl --disable-cxx-flags passes nothing.
1238 dnl + See http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00131.html
1239 dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00284.html
1240 dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00035.html
1241 dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
1242 dnl If "default flags" is an empty string (or "none"), the effect is
1243 dnl the same as --disable or --enable=no.
1244 AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
1245 define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
1246 AC_ARG_ENABLE(cxx-flags,
1247 changequote(<<, >>)dnl
1248 << --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
1249 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
1250 changequote([, ])dnl
1251 [case "x$enableval" in
1253 AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
1255 enable_cxx_flags='' ;;
1257 enable_cxx_flags="$enableval" ;;
1259 enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')
1261 dnl Thinko on my part during design. This kludge is the workaround.
1262 if test "$enable_cxx_flags" = "none"; then
1263 enable_cxx_flags='';
1266 dnl Run through flags (either default or command-line) and set anything
1267 dnl extra (e.g., #defines) that must accompany particular g++ options.
1268 if test -n "$enable_cxx_flags"; then
1269 for f in $enable_cxx_flags; do
1273 *) # and we're trying to pass /what/ exactly?
1274 AC_MSG_ERROR([compiler flags start with a -]) ;;
1278 EXTRA_CXX_FLAGS="$enable_cxx_flags"
1279 AC_SUBST(EXTRA_CXX_FLAGS)
1284 dnl Check for which I/O library to use: libio, or something specific.
1286 dnl GLIBCPP_ENABLE_CSTDIO
1287 dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
1289 dnl default is libio
1291 AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
1292 AC_MSG_CHECKING([for cstdio to use])
1293 AC_ARG_ENABLE(cstdio,
1294 [ --enable-cstdio enable GNU libio for target io package. (default)
1295 --enable-cstdio=LIB use LIB target-speific io package.],
1296 if test x$enable_cstdio = xno; then
1299 enable_cstdio=libio)
1301 enable_cstdio_flag=$enable_cstdio
1303 dnl Check if a valid I/O package
1304 case x${enable_cstdio_flag} in
1305 xlibio | x | xno | xnone | xyes)
1307 CSTDIO_H=config/c_io_libio.h
1308 CSTDIO_CC=config/c_io_libio.cc
1309 AC_MSG_RESULT(libio)
1311 # see if we are on a system with libio native (ie, linux)
1312 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
1314 # Need to check and see what version of glibc is being used. If
1315 # it's not glibc-2.2 or higher, then we'll need to go ahead and
1316 # compile most of libio for linux systems.
1317 if test x$has_libio = x"yes"; then
1320 AC_MSG_CHECKING([for glibc version >= 2.2])
1321 AC_EGREP_CPP([ok], [
1322 #include <features.h>
1323 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
1326 ], glibc_satisfactory=yes, glibc_satisfactory=no)
1327 AC_MSG_RESULT($glibc_satisfactory)
1331 # XXX at the moment, admit defeat and force the recompilation
1332 # XXX of glibc even on glibc-2.2 systems, because libio is not synched.
1333 glibc_satisfactory=no
1335 if test x$glibc_satisfactory = x"yes"; then
1340 # bkoz XXX need to add checks to enable this
1341 # pme XXX here's a first pass at such a check
1342 if test x$enable_c_mbchar != xno; then
1350 # Using libio, but <libio.h> doesn't exist on the target system. . .
1352 # bkoz XXX need to add checks to enable this
1353 # pme XXX here's a first pass at such a check
1354 if test x$enable_c_mbchar != xno; then
1362 CSTDIO_H=config/c_io_stdio.h
1363 CSTDIO_CC=config/c_io_stdio.cc
1364 AC_MSG_RESULT(stdio)
1369 echo "$enable_cstdio is an unknown io package" 1>&2
1373 AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h)
1374 AC_LINK_FILES($CSTDIO_CC, src/c++io.cc)
1376 # 2000-08-04 bkoz hack
1377 CCODECVT_C=config/c_io_libio_codecvt.c
1378 AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c)
1379 # 2000-08-04 bkoz hack
1381 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
1382 AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
1387 dnl Check for which threading library to use.
1389 dnl GLIBCPP_ENABLE_THREADS
1390 dnl --enable-threads=posix sets config/threads-posix.h et. al.
1392 dnl Default is no threads, which also disables _IO_MTSAFE_IO in
1393 dnl libio. Any actual thread package will enable it.
1395 AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
1396 dnl Note this comes from the gcc/config.in and libjava/config.in
1397 dnl Efforts should be made to keep this in sync.
1398 AC_MSG_CHECKING([for threads package to use])
1399 AC_ARG_ENABLE(threads,
1400 [ --enable-threads enable thread usage for target GCC.
1401 --enable-threads=LIB use LIB thread package for target GCC.],
1402 if test x$enable_threads = xno; then
1407 enable_threads_flag=$enable_threads
1409 dnl Check if a valid thread package
1410 case x${enable_threads_flag} in
1413 target_thread_file='single'
1417 target_thread_file=''
1419 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
1420 xsolaris | xwin32 | xdce | xvxworks)
1421 target_thread_file=$enable_threads_flag
1424 echo "$enable_threads is an unknown thread package" 1>&2
1429 dnl Check for thread package actually supported in libstdc++
1431 case "$target_thread_file" in
1433 THREADH=threads-no.h
1436 THREADH=threads-posix.h
1438 decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
1439 AC_MSG_ERROR(thread package $THREADS not yet supported)
1442 AC_MSG_ERROR($THREADS is an unknown thread package)
1445 AC_MSG_RESULT($THREADH)
1447 AC_LINK_FILES(config/$THREADH, include/bits/c++threads.h)
1448 if test $THREADH != threads-no.h; then
1449 AC_DEFINE(_GLIBCPP_USE_THREADS)
1454 dnl Enable atomic locking
1455 dnl GLIBCPP_ENABLE_ATOMICITY
1456 AC_DEFUN(GLIBCPP_ENABLE_ATOMICITY, [
1457 AC_MSG_CHECKING([for atomicity.h])
1459 *-*-linux* | sparc*-*-*)
1460 ATOMICITYH=$cpu_include_dir
1462 *-*-aix* | *-*-irix*)
1463 ATOMICITYH=$os_include_dir
1466 # bit of overkill on this text...
1467 AC_MSG_ERROR([Atomic locking requested, but $enable_threads is an unknown thread package and atomic operations are not present in the CPU])
1470 AC_MSG_RESULT($ATOMICITYH/bits/atomicity.h)
1471 AC_LINK_FILES($ATOMICITYH/bits/atomicity.h, include/bits/atomicity.h)
1476 dnl Check for template specializations for the 'long long' type extension.
1478 dnl GLIBCPP_ENABLE_LONG_LONG
1479 dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
1480 dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
1481 dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
1482 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1483 dnl defaults to `no'.
1484 dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
1486 dnl GLIBCPP_ENABLE_LONG_LONG
1487 AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
1488 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
1490 AC_ARG_ENABLE(long-long,
1491 changequote(<<, >>)dnl
1492 <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
1493 changequote([, ])dnl
1494 [case "$enableval" in
1495 yes) enable_long_long=yes ;;
1496 no) enable_long_long=no ;;
1497 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
1499 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
1501 # Check for the existance of functions used if long long is enabled.
1502 AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
1503 AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
1505 AC_MSG_CHECKING([for enabled long long])
1506 if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
1507 enable_long_long=no;
1509 AC_MSG_RESULT($enable_long_long)
1511 dnl Option parsed, now set things appropriately
1512 if test x"$enable_long_long" = xyes; then
1513 AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
1519 dnl Check for whether or not to do shadowed C headers.
1521 dnl GLIBCPP_ENABLE_SHADOW
1522 dnl --enable-cshadow-headers [does stuff].
1523 dnl --disable-cshadow-headers [does not do stuff].
1524 dnl + This will eventually need to be on by default.
1525 dnl + Usage: GLIBCPP_ENABLE_SHADOW[(DEFAULT)]
1526 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1527 dnl defaults to `no'.
1528 AC_DEFUN(GLIBCPP_ENABLE_SHADOW, [dnl
1529 define([GLIBCPP_ENABLE_SHADOW_DEFAULT], ifelse($1, yes, yes, no))dnl
1530 AC_MSG_CHECKING([for enabled cshadow headers])
1531 AC_ARG_ENABLE(cshadow-headers,
1532 changequote(<<, >>)dnl
1533 << --enable-cshadow-headers construct "shadowed" C header files for
1534 g++ [default=>>GLIBCPP_ENABLE_SHADOW_DEFAULT],
1536 [case "$enableval" in
1537 yes) enable_cshadow_headers=yes
1539 no) enable_cshadow_headers=no
1541 *) AC_MSG_ERROR([Unknown argument to enable/disable shadowed C headers])
1544 enable_cshadow_headers=GLIBCPP_ENABLE_SHADOW_DEFAULT)
1545 AC_MSG_RESULT($enable_cshadow_headers)
1547 dnl Option parsed, now set things appropriately
1548 dnl NB: these things may be duplicated in c++config.h as well.
1549 case "$enable_cshadow_headers" in
1551 CSHADOW_FLAGS="-fno-builtin"
1552 C_INCLUDE_DIR='${top_srcdir}/include/c_std'
1553 AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
1557 C_INCLUDE_DIR='${top_srcdir}/include/c'
1561 AC_SUBST(CSHADOW_FLAGS)
1562 AC_SUBST(C_INCLUDE_DIR)
1563 AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cshadow_headers" = yes)
1568 dnl Check for wide character support. Has the same effect as the option
1569 dnl in gcc's configure, but in a form that autoconf can mess with.
1571 dnl GLIBCPP_ENABLE_C_MBCHAR
1572 dnl --enable-c-mbchar requests all the wchar_t stuff.
1573 dnl --disable-c-mbchar doesn't.
1574 dnl + Usage: GLIBCPP_ENABLE_C_MBCHAR[(DEFAULT)]
1575 dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
1576 dnl defaults to `no'.
1577 AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [dnl
1578 define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))dnl
1579 AC_ARG_ENABLE(c-mbchar,
1580 changequote(<<, >>)dnl
1581 << --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
1582 changequote([, ])dnl
1583 [case "$enableval" in
1584 yes) enable_c_mbchar=yes ;;
1585 no) enable_c_mbchar=no ;;
1586 *) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
1588 enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)dnl
1589 dnl Option parsed, now other scripts can test enable_c_mbchar for yes/no.
1594 dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
1596 dnl GLIBCPP_INCLUDE_DIR
1598 dnl TOPLEVEL_INCLUDES
1599 dnl LIBMATH_INCLUDES
1600 dnl LIBSUPCXX_INCLUDES
1602 dnl CSHADOW_INCLUDES
1604 dnl GLIBCPP_EXPORT_INCLUDE
1605 AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
1606 # Root level of the include sources.
1607 GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include'
1609 # Can either use include/c or include/c_std to grab "C" headers. This
1610 # variable is set to the include directory currently in use.
1611 # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_SHADOW
1613 # Passed down for cross compilers, canadian crosses.
1614 TOPLEVEL_INCLUDES='-I$(includedir)'
1616 LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
1618 LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
1620 #if GLIBCPP_NEED_LIBIO
1621 LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
1623 #LIBIO_INCLUDES='-I$(top_srcdir)/libio'
1626 #if GLIBCPP_USE_CSHADOW
1627 # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
1628 # -I$(top_blddir)/cshadow'
1630 CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
1633 # Now, export this to all the little Makefiles....
1634 AC_SUBST(GLIBCPP_INCLUDE_DIR)
1635 AC_SUBST(TOPLEVEL_INCLUDES)
1636 AC_SUBST(LIBMATH_INCLUDES)
1637 AC_SUBST(LIBSUPCXX_INCLUDES)
1638 AC_SUBST(LIBIO_INCLUDES)
1639 AC_SUBST(CSHADOW_INCLUDES)
1644 dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
1646 AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
1647 # Optimization flags that are probably a good idea for thrill-seekers. Just
1648 # uncomment the lines below and make, everything else is ready to go...
1649 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
1651 AC_SUBST(OPTIMIZE_CXXFLAGS)
1653 WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
1654 AC_SUBST(WARN_FLAGS)
1658 # Check whether LC_MESSAGES is available in <locale.h>.
1659 # Ulrich Drepper <drepper@cygnus.com>, 1995.
1661 # This file file be copied and used freely without restrictions. It can
1662 # be used in projects which are not available under the GNU Public License
1663 # but which still want to provide support for the GNU gettext functionality.
1664 # Please note that the actual code is *not* freely available.
1668 AC_DEFUN(AC_LC_MESSAGES,
1669 [if test $ac_cv_header_locale_h = yes; then
1670 AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
1671 [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
1672 ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
1673 if test $ac_cv_val_LC_MESSAGES = yes; then
1674 AC_DEFINE(HAVE_LC_MESSAGES)
1679 # Check for functions in math library.
1680 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1682 # This file can be copied and used freely without restrictions. It can
1683 # be used in projects which are not available under the GNU Public License
1684 # but which still want to provide support for the GNU gettext functionality.
1685 # Please note that the actual code is *not* freely available.
1689 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
1690 AC_DEFUN(AC_REPLACE_MATHFUNCS,
1691 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])
1692 AC_SUBST(LIBMATHOBJS)dnl
1696 # Check for string functions.
1697 # Ulrich Drepper <drepper@cygnus.com>, 1998.
1699 # This file can be copied and used freely without restrictions. It can
1700 # be used in projects which are not available under the GNU Public License
1701 # but which still want to provide support for the GNU gettext functionality.
1702 # Please note that the actual code is *not* freely available.
1706 dnl AC_REPLACE_STRINGFUNCS(FUNCTION...)
1707 AC_DEFUN(AC_REPLACE_STRINGFUNCS,
1708 [AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
1709 AC_SUBST(LIBSTRINGOBJS)dnl
1713 dnl This macro searches for a GNU version of make. If a match is found, the
1714 dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
1715 dnl set to "#". This is useful for including a special features in a Makefile,
1716 dnl which cannot be handled by other versions of make. The variable
1717 dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists,
1718 dnl the empty string otherwise.
1720 dnl Here is an example of its use:
1722 dnl Makefile.in might contain:
1724 dnl # A failsafe way of putting a dependency rule into a makefile
1726 dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND)
1728 dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
1729 dnl @ifGNUmake@ include $(DEPEND)
1730 dnl @ifGNUmake@ endif
1732 dnl Then configure.in would normally contain:
1734 dnl CHECK_GNU_MAKE()
1735 dnl AC_OUTPUT(Makefile)
1737 dnl Then perhaps to cause gnu make to override any other make, we could do
1738 dnl something like this (note that GNU make always looks for GNUmakefile first):
1740 dnl if ! test x$_cv_gnu_make_command = x ; then
1741 dnl mv Makefile GNUmakefile
1742 dnl echo .DEFAULT: > Makefile ;
1743 dnl echo \ $_cv_gnu_make_command \$@ >> Makefile;
1746 dnl Then, if any (well almost any) other make is called, and GNU make also
1747 dnl exists, then the other make wraps the GNU make.
1749 dnl @author John Darrington <j.darrington@elvis.murdoch.edu.au>
1750 dnl @version 1.1 #### replaced Id string now that Id is for lib-v3; pme
1752 dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending
1753 dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the
1754 dnl #### conditional's subshell (" --version" is not a command), using a
1755 dnl #### different option to grep(1).
1758 GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
1759 _cv_gnu_make_command='' ;
1760 dnl Search all the common names for GNU make
1761 for a in "${MAKE:-make}" make gmake gnumake ; do
1762 if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
1764 _cv_gnu_make_command=$a ;
1769 dnl If there was a GNU version, then set @ifGNUmake@ to the empty
1770 dnl string, '#' otherwise
1771 if test "x$_cv_gnu_make_command" != "x" ; then
1779 sinclude(../libtool.m4)
1780 dnl The lines below arrange for aclocal not to bring an installed
1781 dnl libtool.m4 into aclocal.m4, while still arranging for automake to
1782 dnl add a definition of LIBTOOL to Makefile.in.
1783 ifelse(,,,[AC_SUBST(LIBTOOL)
1784 AC_DEFUN([AM_PROG_LIBTOOL])
1785 AC_DEFUN([AC_LIBTOOL_DLOPEN])
1786 AC_DEFUN([AC_PROG_LD])