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