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