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