]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/acinclude.m4
configure.ac: Alphabetize --enable-checking list, add missing valgrind entry.
[thirdparty/gcc.git] / libstdc++-v3 / acinclude.m4
CommitLineData
ff66d28f 1
92eabea2
PE
2dnl
3dnl GLIBCXX_CONDITIONAL (NAME, SHELL-TEST)
4dnl
5dnl Exactly like AM_CONDITIONAL, but delays evaluation of the test until the
6dnl end of configure. This lets tested variables be reassigned, and the
7dnl conditional will depend on the final state of the variable. For a simple
8dnl example of why this is needed, see GLIBCXX_ENABLE_HOSTED.
9dnl
10m4_define([_m4_divert(glibcxx_diversion)], 8000)dnl
f214923c 11AC_DEFUN([GLIBCXX_CONDITIONAL], [dnl
92eabea2
PE
12 m4_divert_text([glibcxx_diversion],dnl
13 AM_CONDITIONAL([$1],[$2])
14 )dnl
15])dnl
f214923c 16AC_DEFUN([GLIBCXX_EVALUATE_CONDITIONALS], [m4_undivert([glibcxx_diversion])])dnl
92eabea2
PE
17
18
ff66d28f
PE
19dnl
20dnl Check to see what architecture and operating system we are compiling
21dnl for. Also, if architecture- or OS-specific flags are required for
22dnl compilation, pick them up here.
23dnl
f214923c 24AC_DEFUN([GLIBCXX_CHECK_HOST], [
ff66d28f 25 . $glibcxx_srcdir/configure.host
f214923c
BK
26 AC_MSG_NOTICE([CPU config directory is $cpu_include_dir])
27 AC_MSG_NOTICE([OS config directory is $os_include_dir])
ff66d28f
PE
28])
29
ff66d28f
PE
30dnl
31dnl Initialize the rest of the library configury. At this point we have
32dnl variables like $host.
aebb8c22 33dnl
ff66d28f
PE
34dnl Sets:
35dnl gcc_version (x.y.z format)
82ba99d5 36dnl SUBDIRS
ff66d28f
PE
37dnl Substs:
38dnl glibcxx_builddir (absolute path)
39dnl glibcxx_srcdir (absolute path)
40dnl toplevel_srcdir (absolute path)
41dnl with_cross_host
42dnl with_newlib
43dnl with_target_subdir
44dnl plus
45dnl - the variables in GLIBCXX_CHECK_HOST / configure.host
46dnl - default settings for all AM_CONFITIONAL test variables
47dnl - lots of tools, like CC and CXX
aebb8c22 48dnl
f214923c 49AC_DEFUN([GLIBCXX_CONFIGURE], [
82ba99d5
PE
50 # Keep these sync'd with the list in Makefile.am. The first provides an
51 # expandable list at autoconf time; the second provides an expandable list
52 # (i.e., shell variable) at configure time.
53 m4_define([glibcxx_SUBDIRS],[include libmath libsupc++ src po testsuite])
54 SUBDIRS='glibcxx_SUBDIRS'
55
d2caef2e
PE
56 # These need to be absolute paths, yet at the same time need to
57 # canonicalize only relative paths, because then amd will not unmount
58 # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
3d7c150e 59 glibcxx_builddir=`${PWDCMD-pwd}`
d2caef2e 60 case $srcdir in
ff66d28f
PE
61 [\\/$]* | ?:[\\/]*) glibcxx_srcdir=${srcdir} ;;
62 *) glibcxx_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
d2caef2e 63 esac
ff66d28f 64 toplevel_srcdir=${glibcxx_srcdir}/..
3d7c150e
BK
65 AC_SUBST(glibcxx_builddir)
66 AC_SUBST(glibcxx_srcdir)
ff66d28f 67 AC_SUBST(toplevel_srcdir)
d2caef2e 68
ff66d28f
PE
69 # We use these options to decide which functions to include. They are
70 # set from the top level.
71 AC_ARG_WITH([target-subdir],
72 AC_HELP_STRING([--with-target-subdir=SUBDIR],
73 [configuring in a subdirectory]))
74
75 AC_ARG_WITH([cross-host],
76 AC_HELP_STRING([--with-cross-host=HOST],
77 [configuring with a cross compiler]))
78
79 AC_ARG_WITH([newlib],
80 AC_HELP_STRING([--with-newlib],
81 [assume newlib as a system C library]))
82
ff66d28f
PE
83 # We're almost certainly being configured before anything else which uses
84 # C++, so all of our AC_PROG_* discoveries will be cached. It's vital that
85 # we not cache the value of CXX that we "discover" here, because it's set
86 # to something unique for us and libjava. Other target libraries need to
87 # find CXX for themselves. We yank the rug out from under the normal AC_*
88 # process by sneakily renaming the cache variable. This also lets us debug
89 # the value of "our" CXX in postmortems.
90 #
91 # We must also force CXX to /not/ be a precious variable, otherwise the
92 # wrong (non-multilib-adjusted) value will be used in multilibs. This
93 # little trick also affects CPPFLAGS, CXXFLAGS, and LDFLAGS. And as a side
94 # effect, CXXFLAGS is no longer automagically subst'd, so we have to do
f6dda651 95 # that ourselves. Un-preciousing AC_PROG_CC also affects CC and CFLAGS.
ff66d28f
PE
96 #
97 # -fno-builtin must be present here so that a non-conflicting form of
98 # std::exit can be guessed by AC_PROG_CXX, and used in later tests.
fbe057bb 99
ff66d28f
PE
100 m4_define([ac_cv_prog_CXX],[glibcxx_cv_prog_CXX])
101 m4_rename([_AC_ARG_VAR_PRECIOUS],[glibcxx_PRECIOUS])
102 m4_define([_AC_ARG_VAR_PRECIOUS],[])
103 save_CXXFLAGS="$CXXFLAGS"
104 CXXFLAGS="$CXXFLAGS -fno-builtin"
f6dda651 105 AC_PROG_CC
ff66d28f
PE
106 AC_PROG_CXX
107 CXXFLAGS="$save_CXXFLAGS"
108 m4_rename([glibcxx_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
f6dda651 109 AC_SUBST(CFLAGS)
ff66d28f 110 AC_SUBST(CXXFLAGS)
b2dad0e3 111
2f235b6d
PE
112 # For directory versioning (e.g., headers) and other variables.
113 AC_MSG_CHECKING([for GCC version number])
ff66d28f 114 gcc_version=`$CXX -dumpversion`
2f235b6d
PE
115 AC_MSG_RESULT($gcc_version)
116
ff66d28f
PE
117 # Will set LN_S to either 'ln -s', 'ln', or 'cp -p' (if linking isn't
118 # available). Uncomment the next line to force a particular method.
119 AC_PROG_LN_S
120 #LN_S='cp -p'
121
5780a46b
BK
122 AC_CHECK_TOOL(AS, as)
123 AC_CHECK_TOOL(AR, ar)
46840bcd 124 AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
b2dad0e3 125
5780a46b 126 AM_MAINTAINER_MODE
b2dad0e3 127
92eabea2
PE
128 # Set up safe default values for all subsequent AM_CONDITIONAL tests
129 # which are themselves conditionally expanded.
130 ## (Right now, this only matters for enable_wchar_t, but nothing prevents
131 ## other macros from doing the same. This should be automated.) -pme
16da539b
PE
132 need_libmath=no
133 enable_wchar_t=no
ff66d28f
PE
134 #enable_libstdcxx_debug=no
135 #enable_libstdcxx_pch=no
16da539b
PE
136 #enable_cheaders=c
137 #c_compatibility=no
c4c064e7 138 #enable_abi_check=no
16da539b 139 #enable_symvers=no
92eabea2 140 #enable_hosted_libstdcxx=yes
16da539b 141
ff66d28f
PE
142 # Find platform-specific directories containing configuration info.
143 # Also possibly modify flags used elsewhere, as needed by the platform.
3d7c150e 144 GLIBCXX_CHECK_HOST
b2dad0e3
BK
145])
146
147
ff66d28f 148m4_include([linkage.m4])
72730fdb 149m4_include([../config/no-executables.m4])
c470c17d
BK
150
151
152dnl
52b55e7d
PE
153dnl Tests for newer compiler features, or features that are present in newer
154dnl compiler versions but not older compiler versions still in use, should
155dnl be placed here.
b2dad0e3 156dnl
ff66d28f
PE
157dnl Defines:
158dnl WERROR='-Werror' if requested and possible; g++'s that lack the
159dnl new inlining code or the new system_header pragma will die on -Werror.
160dnl Leave it out by default and use maint-mode to use it.
161dnl SECTION_FLAGS='-ffunction-sections -fdata-sections' if
162dnl compiler supports it and the user has not requested debug mode.
c21b6f87 163dnl
f214923c 164AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [
a4e99046 165 # All these tests are for C++; save the language and the compiler flags.
52b55e7d 166 # The CXXFLAGS thing is suspicious, but based on similar bits previously
3d7c150e 167 # found in GLIBCXX_CONFIGURE.
a4e99046
PE
168 AC_LANG_SAVE
169 AC_LANG_CPLUSPLUS
170 ac_test_CXXFLAGS="${CXXFLAGS+set}"
171 ac_save_CXXFLAGS="$CXXFLAGS"
a4e99046 172
7f586614
BK
173 # Check for maintainer-mode bits.
174 if test x"$USE_MAINTAINER_MODE" = xno; then
175 WERROR=''
8bd636c5 176 else
7f586614 177 WERROR='-Werror'
8bd636c5
PE
178 fi
179
c470c17d
BK
180 # Check for -ffunction-sections -fdata-sections
181 AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
0517cb99 182 CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
ff66d28f 183 AC_TRY_COMPILE(, [int foo;], [ac_fdsections=yes], [ac_fdsections=no])
c470c17d
BK
184 if test "$ac_test_CXXFLAGS" = set; then
185 CXXFLAGS="$ac_save_CXXFLAGS"
186 else
187 # this is the suspicious part
188 CXXFLAGS=''
189 fi
6aa43d99 190 if test x"$ac_fdsections" = x"yes"; then
c470c17d
BK
191 SECTION_FLAGS='-ffunction-sections -fdata-sections'
192 fi
193 AC_MSG_RESULT($ac_fdsections)
194
a4e99046 195 AC_LANG_RESTORE
8bd636c5 196 AC_SUBST(WERROR)
c470c17d 197 AC_SUBST(SECTION_FLAGS)
b2dad0e3
BK
198])
199
c470c17d
BK
200
201dnl
421173e6
PE
202dnl If GNU ld is in use, check to see if tricky linker opts can be used. If
203dnl the native linker is in use, all variables will be defined to something
204dnl safe (like an empty string).
205dnl
ff66d28f
PE
206dnl Defines:
207dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible
208dnl OPT_LDFLAGS='-Wl,-O1' if possible
209dnl LD (as a side effect of testing)
210dnl Sets:
211dnl with_gnu_ld
212dnl glibcxx_gnu_ld_version (possibly)
213dnl
214dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
215dnl set glibcxx_gnu_ld_version to 12345. Zeros cause problems.
c470c17d 216dnl
f214923c 217AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
421173e6
PE
218 # If we're not using GNU ld, then there's no point in even trying these
219 # tests. Check for that first. We should have already tested for gld
220 # by now (in libtool), but require it now just to be safe...
654421eb
DE
221 test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
222 test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
421173e6 223 AC_REQUIRE([AC_PROG_LD])
ff66d28f 224 AC_REQUIRE([AC_PROG_AWK])
5bd17d39 225
c98b201b
PE
226 # The name set by libtool depends on the version of libtool. Shame on us
227 # for depending on an impl detail, but c'est la vie. Older versions used
228 # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
229 # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
230 # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
231 # set (hence we're using an older libtool), then set it.
232 if test x${with_gnu_ld+set} != xset; then
233 if test x${ac_cv_prog_gnu_ld+set} != xset; then
234 # We got through "ac_require(ac_prog_ld)" and still not set? Huh?
235 with_gnu_ld=no
236 else
237 with_gnu_ld=$ac_cv_prog_gnu_ld
238 fi
239 fi
240
241 # Start by getting the version number. I think the libtool test already
242 # does some of this, but throws away the result.
243 changequote(,)
244 ldver=`$LD --version 2>/dev/null | head -1 | \
245 sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
246 changequote([,])
3d7c150e 247 glibcxx_gnu_ld_version=`echo $ldver | \
c98b201b
PE
248 $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
249
5bd17d39 250 # Set --gc-sections.
c98b201b 251 if test "$with_gnu_ld" = "notbroken"; then
a9117427 252 # GNU ld it is! Joy and bunny rabbits!
421173e6
PE
253
254 # All these tests are for C++; save the language and the compiler flags.
255 # Need to do this so that g++ won't try to link in libstdc++
256 ac_test_CFLAGS="${CFLAGS+set}"
257 ac_save_CFLAGS="$CFLAGS"
5bd17d39 258 CFLAGS='-x c++ -Wl,--gc-sections'
421173e6
PE
259
260 # Check for -Wl,--gc-sections
ff66d28f
PE
261 # XXX This test is broken at the moment, as symbols required for linking
262 # are now in libsupc++ (not built yet). In addition, this test has
263 # cored on solaris in the past. In addition, --gc-sections doesn't
264 # really work at the moment (keeps on discarding used sections, first
265 # .eh_frame and now some of the glibc sections for iconv).
266 # Bzzzzt. Thanks for playing, maybe next time.
421173e6
PE
267 AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
268 AC_TRY_RUN([
37bc6ca2 269 int main(void)
421173e6 270 {
a9117427
BK
271 try { throw 1; }
272 catch (...) { };
421173e6
PE
273 return 0;
274 }
c0abb59e 275 ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
421173e6
PE
276 if test "$ac_test_CFLAGS" = set; then
277 CFLAGS="$ac_save_CFLAGS"
278 else
279 # this is the suspicious part
280 CFLAGS=''
281 fi
282 if test "$ac_sectionLDflags" = "yes"; then
654421eb 283 SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
421173e6
PE
284 fi
285 AC_MSG_RESULT($ac_sectionLDflags)
5bd17d39 286 fi
a9117427 287
5bd17d39 288 # Set linker optimization flags.
6aa43d99 289 if test x"$with_gnu_ld" = x"yes"; then
654421eb 290 OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
421173e6 291 fi
5bd17d39 292
c470c17d 293 AC_SUBST(SECTION_LDFLAGS)
421173e6 294 AC_SUBST(OPT_LDFLAGS)
c470c17d
BK
295])
296
297
b2dad0e3 298dnl
ff66d28f 299dnl Check to see if this target can enable the wchar_t parts.
8b8ab21c 300dnl If --disable-c-mbchar was given, no wchar_t stuff is enabled. (This
ff66d28f
PE
301dnl must have been previously checked.) By default, wide characters are
302dnl disabled.
b2dad0e3 303dnl
ff66d28f
PE
304dnl Defines:
305dnl HAVE_MBSTATE_T if mbstate_t is not in wchar.h
306dnl _GLIBCXX_USE_WCHAR_T if all the bits are found.
d54bc1d8
PE
307dnl Substs:
308dnl LIBICONV to a -l string containing the iconv library, if needed.
b2dad0e3 309dnl
f214923c 310AC_DEFUN([GLIBCXX_CHECK_WCHAR_T_SUPPORT], [
ff66d28f
PE
311 # Test wchar.h for mbstate_t, which is needed for char_traits and
312 # others even if wchar_t support is not on.
7b331228
BK
313 AC_MSG_CHECKING([for mbstate_t])
314 AC_TRY_COMPILE([#include <wchar.h>],
37bc6ca2 315 [mbstate_t teststate;],
7b331228
BK
316 have_mbstate_t=yes, have_mbstate_t=no)
317 AC_MSG_RESULT($have_mbstate_t)
318 if test x"$have_mbstate_t" = xyes; then
319 AC_DEFINE(HAVE_MBSTATE_T)
320 fi
321
ff66d28f 322 # Sanity check for existence of ISO C99 headers for extended encoding.
7b331228 323 AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
31f93f90 324 AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
37bc6ca2 325
ff66d28f 326 # Only continue checking if the ISO C99 headers exist and support is on.
a0cb1aa7
PE
327 if test x"$ac_has_wchar_h" = xyes &&
328 test x"$ac_has_wctype_h" = xyes &&
329 test x"$enable_c_mbchar" != xno; then
37bc6ca2 330
ff66d28f
PE
331 # Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
332 # numeric_limits can instantiate type_traits<wchar_t>
7b331228
BK
333 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
334 AC_TRY_COMPILE([#include <wchar.h>],
37bc6ca2 335 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
7b331228
BK
336 has_wchar_minmax=yes, has_wchar_minmax=no)
337 AC_MSG_RESULT($has_wchar_minmax)
37bc6ca2 338
ff66d28f
PE
339 # Test wchar.h for WEOF, which is what we use to determine whether
340 # to specialize for char_traits<wchar_t> or not.
7b331228
BK
341 AC_MSG_CHECKING([for WEOF])
342 AC_TRY_COMPILE([
343 #include <wchar.h>
344 #include <stddef.h>],
345 [wint_t i = WEOF;],
346 has_weof=yes, has_weof=no)
347 AC_MSG_RESULT($has_weof)
37bc6ca2 348
ff66d28f 349 # Tests for wide character functions used in char_traits<wchar_t>.
68fe6226 350 ac_wfuncs=yes
ff66d28f
PE
351 AC_CHECK_FUNCS([wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset],
352 [],[ac_wfuncs=no])
37bc6ca2 353
ff66d28f
PE
354 # Checks for names injected into std:: by the c_std headers.
355 AC_CHECK_FUNCS([btowc wctob fgetwc fgetws fputwc fputws fwide \
2b1be54b
BS
356 fwprintf fwscanf swprintf swscanf vfwprintf vswprintf \
357 vwprintf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
358 mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstol \
68fe6226 359 wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
ff66d28f
PE
360 wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr],
361 [],[ac_wfuncs=no])
df7b1359 362
2b1be54b
BS
363 # Checks for wide character functions that are not required
364 # for basic wchar_t support. Don't disable support if they are missing.
365 # Injection of these is wrapped with guard macros.
366 AC_CHECK_FUNCS([vfwscanf vswscanf vwscanf wcstof iswblank],[],[])
367
7b331228 368 AC_MSG_CHECKING([for ISO C99 wchar_t support])
a0cb1aa7
PE
369 if test x"$has_weof" = xyes &&
370 test x"$has_wchar_minmax" = xyes &&
ff66d28f
PE
371 test x"$ac_wfuncs" = xyes;
372 then
7b331228
BK
373 ac_isoC99_wchar_t=yes
374 else
375 ac_isoC99_wchar_t=no
376 fi
377 AC_MSG_RESULT($ac_isoC99_wchar_t)
37bc6ca2 378
ff66d28f
PE
379 # Use iconv for wchar_t to char conversions. As such, check for
380 # X/Open Portability Guide, version 2 features (XPG2).
7b331228
BK
381 AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
382 AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
383
ff66d28f 384 # Check for existence of libiconv.a providing XPG2 wchar_t support.
d54bc1d8 385 AC_CHECK_LIB(iconv, iconv, LIBICONV="-liconv")
7b331228 386 ac_save_LIBS="$LIBS"
d54bc1d8
PE
387 LIBS="$LIBS $LIBICONV"
388 AC_SUBST(LIBICONV)
7b331228 389
ff66d28f
PE
390 AC_CHECK_FUNCS([iconv_open iconv_close iconv nl_langinfo],
391 [ac_XPG2funcs=yes], [ac_XPG2funcs=no])
37bc6ca2 392
7b331228 393 LIBS="$ac_save_LIBS"
5b20f7a0 394
7b331228 395 AC_MSG_CHECKING([for XPG2 wchar_t support])
a0cb1aa7
PE
396 if test x"$ac_has_iconv_h" = xyes &&
397 test x"$ac_has_langinfo_h" = xyes &&
ff66d28f
PE
398 test x"$ac_XPG2funcs" = xyes;
399 then
7b331228
BK
400 ac_XPG2_wchar_t=yes
401 else
402 ac_XPG2_wchar_t=no
403 fi
404 AC_MSG_RESULT($ac_XPG2_wchar_t)
37bc6ca2 405
ff66d28f
PE
406 # At the moment, only enable wchar_t specializations if all the
407 # above support is present.
408 if test x"$ac_isoC99_wchar_t" = xyes &&
409 test x"$ac_XPG2_wchar_t" = xyes;
410 then
3d7c150e 411 AC_DEFINE(_GLIBCXX_USE_WCHAR_T)
6b543e86 412 enable_wchar_t=yes
15bcd79a 413 fi
b2dad0e3 414 fi
6b543e86 415 AC_MSG_CHECKING([for enabled wchar_t specializations])
ff66d28f 416 AC_MSG_RESULT($enable_wchar_t)
b2dad0e3
BK
417])
418
419
b2dad0e3 420dnl
ff66d28f
PE
421dnl Check for headers for, and arguments to, the setrlimit() function.
422dnl Used only in testsuite_hooks.h. Called from GLIBCXX_CONFIGURE_TESTSUITE.
6aa43d99 423dnl
ff66d28f 424dnl Defines:
2ae6e982
PC
425dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits
426dnl various HAVE_LIMIT_* for individual limit names
6aa43d99 427dnl
f214923c 428AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT_ancilliary], [
ff66d28f
PE
429 AC_TRY_COMPILE(
430 [#include <unistd.h>
431 #include <sys/time.h>
432 #include <sys/resource.h>
433 ],
434 [ int f = RLIMIT_$1 ; ],
435 [glibcxx_mresult=1], [glibcxx_mresult=0])
2ae6e982 436 AC_DEFINE_UNQUOTED(HAVE_LIMIT_$1, $glibcxx_mresult,
ff66d28f
PE
437 [Only used in build directory testsuite_hooks.h.])
438])
439
f214923c 440AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [
ff66d28f
PE
441 setrlimit_have_headers=yes
442 AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
443 [],
444 [setrlimit_have_headers=no])
445 # If don't have the headers, then we can't run the tests now, and we
446 # won't be seeing any of these during testsuite compilation.
447 if test $setrlimit_have_headers = yes; then
448 # Can't do these in a loop, else the resulting syntax is wrong.
449 GLIBCXX_CHECK_SETRLIMIT_ancilliary(DATA)
450 GLIBCXX_CHECK_SETRLIMIT_ancilliary(RSS)
451 GLIBCXX_CHECK_SETRLIMIT_ancilliary(VMEM)
452 GLIBCXX_CHECK_SETRLIMIT_ancilliary(AS)
2ae6e982 453 GLIBCXX_CHECK_SETRLIMIT_ancilliary(FSIZE)
ff66d28f
PE
454
455 # Check for rlimit, setrlimit.
456 AC_CACHE_VAL(ac_setrlimit, [
457 AC_TRY_COMPILE(
458 [#include <unistd.h>
459 #include <sys/time.h>
460 #include <sys/resource.h>
461 ],
462 [struct rlimit r;
463 setrlimit(0, &r);],
464 [ac_setrlimit=yes], [ac_setrlimit=no])
465 ])
466 fi
467
2ae6e982 468 AC_MSG_CHECKING([for testsuite resource limits support])
ff66d28f 469 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
2ae6e982
PC
470 ac_res_limits=yes
471 AC_DEFINE(_GLIBCXX_RES_LIMITS)
ff66d28f 472 else
2ae6e982 473 ac_res_limits=no
ff66d28f 474 fi
2ae6e982 475 AC_MSG_RESULT($ac_res_limits)
6aa43d99
BK
476])
477
478
6aa43d99 479dnl
ff66d28f
PE
480dnl Check whether S_ISREG (Posix) or S_IFREG is available in <sys/stat.h>.
481dnl Define HAVE_S_ISREG / HAVE_S_IFREG appropriately.
6aa43d99 482dnl
f214923c 483AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [
ff66d28f
PE
484 AC_CACHE_VAL(glibcxx_cv_S_ISREG, [
485 AC_TRY_LINK(
486 [#include <sys/stat.h>],
487 [struct stat buffer;
488 fstat(0, &buffer);
489 S_ISREG(buffer.st_mode);],
490 [glibcxx_cv_S_ISREG=yes],
491 [glibcxx_cv_S_ISREG=no])
492 ])
493 AC_CACHE_VAL(glibcxx_cv_S_IFREG, [
494 AC_TRY_LINK(
495 [#include <sys/stat.h>],
496 [struct stat buffer;
497 fstat(0, &buffer);
498 S_IFREG & buffer.st_mode;],
499 [glibcxx_cv_S_IFREG=yes],
500 [glibcxx_cv_S_IFREG=no])
501 ])
502 if test $glibcxx_cv_S_ISREG = yes; then
503 AC_DEFINE(HAVE_S_ISREG)
504 elif test $glibcxx_cv_S_IFREG = yes; then
505 AC_DEFINE(HAVE_S_IFREG)
506 fi
b2dad0e3
BK
507])
508
509
dcfa0bc8 510dnl
ff66d28f 511dnl Check whether poll is available in <poll.h>, and define HAVE_POLL.
dcfa0bc8 512dnl
f214923c 513AC_DEFUN([GLIBCXX_CHECK_POLL], [
ff66d28f 514 AC_CACHE_VAL(glibcxx_cv_POLL, [
3d05b345 515 AC_TRY_LINK(
ff66d28f
PE
516 [#include <poll.h>],
517 [struct pollfd pfd[1];
518 pfd[0].events = POLLIN;
519 poll(pfd, 1, 0);],
520 [glibcxx_cv_POLL=yes],
521 [glibcxx_cv_POLL=no])
522 ])
523 if test $glibcxx_cv_POLL = yes; then
524 AC_DEFINE(HAVE_POLL)
525 fi
526])
527
528
529dnl
530dnl Check whether writev is available in <sys/uio.h>, and define HAVE_WRITEV.
531dnl
f214923c 532AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
ff66d28f 533 AC_CACHE_VAL(glibcxx_cv_WRITEV, [
3d05b345 534 AC_TRY_LINK(
ff66d28f
PE
535 [#include <sys/uio.h>],
536 [struct iovec iov[2];
537 writev(0, iov, 0);],
538 [glibcxx_cv_WRITEV=yes],
539 [glibcxx_cv_WRITEV=no])
540 ])
541 if test $glibcxx_cv_WRITEV = yes; then
542 AC_DEFINE(HAVE_WRITEV)
543 fi
544])
545
546
3d05b345
PC
547dnl
548dnl Check whether int64_t is available in <stdint.h>, and define HAVE_INT64_T.
549dnl
f214923c 550AC_DEFUN([GLIBCXX_CHECK_INT64_T], [
3d05b345
PC
551 AC_CACHE_VAL(glibcxx_cv_INT64_T, [
552 AC_TRY_COMPILE(
553 [#include <stdint.h>],
554 [int64_t var;],
555 [glibcxx_cv_INT64_T=yes],
556 [glibcxx_cv_INT64_T=no])
557 ])
558 if test $glibcxx_cv_INT64_T = yes; then
559 AC_DEFINE(HAVE_INT64_T)
560 fi
561])
562
563
564dnl
565dnl Check whether LFS support is available.
566dnl
f214923c 567AC_DEFUN([GLIBCXX_CHECK_LFS], [
0c6b814a 568 AC_LANG_SAVE
9d47bc51
PC
569 AC_LANG_CPLUSPLUS
570 ac_save_CXXFLAGS="$CXXFLAGS"
571 CXXFLAGS="$CXXFLAGS -fno-exceptions"
3d05b345
PC
572 AC_CACHE_VAL(glibcxx_cv_LFS, [
573 AC_TRY_LINK(
0c6b814a
PC
574 [#include <unistd.h>
575 #include <stdio.h>
576 ],
5c89246d
PC
577 [FILE* fp;
578 fopen64("t", "w");
579 fseeko64(fp, 0, SEEK_CUR);
580 ftello64(fp);
3d05b345
PC
581 lseek64(1, 0, SEEK_CUR);],
582 [glibcxx_cv_LFS=yes],
583 [glibcxx_cv_LFS=no])
584 ])
585 if test $glibcxx_cv_LFS = yes; then
586 AC_DEFINE(_GLIBCXX_USE_LFS)
587 fi
9d47bc51
PC
588 CXXFLAGS="$ac_save_CXXFLAGS"
589 AC_LANG_RESTORE
3d05b345
PC
590])
591
592
ff66d28f
PE
593dnl
594dnl Does any necessary configuration of the testsuite directory. Generates
595dnl the testsuite_hooks.h header.
596dnl
597dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE must be done before this.
598dnl
599dnl Sets:
600dnl enable_abi_check / GLIBCXX_TEST_ABI
601dnl Substs:
602dnl baseline_dir
603dnl
f214923c 604AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [
92eabea2 605 if $GLIBCXX_IS_NATIVE && test $is_hosted = yes; then
2ae6e982 606 # Do checks for resource limit functions.
ff66d28f
PE
607 GLIBCXX_CHECK_SETRLIMIT
608
609 # Look for setenv, so that extended locale tests can be performed.
610 GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
dbc66058
DJ
611
612 if test $enable_symvers = no; then
613 enable_abi_check=no
614 else
615 case "$host" in
616 *-*-cygwin*)
617 enable_abi_check=no ;;
618 *)
619 enable_abi_check=yes ;;
620 esac
621 fi
622 else
623 # Only build this as native, since automake does not understand
624 # CXX_FOR_BUILD.
625 enable_abi_check=no
ff66d28f
PE
626 fi
627
628 # Export file names for ABI checking.
629 baseline_dir="$glibcxx_srcdir/config/abi/${abi_baseline_pair}\$(MULTISUBDIR)"
630 AC_SUBST(baseline_dir)
631
92eabea2
PE
632 GLIBCXX_CONDITIONAL(GLIBCXX_TEST_WCHAR_T, test $enable_wchar_t = yes)
633 GLIBCXX_CONDITIONAL(GLIBCXX_TEST_ABI, test $enable_abi_check = yes)
ff66d28f
PE
634])
635
636
637dnl
638dnl Set up *_INCLUDES variables for all sundry Makefile.am's.
639dnl
640dnl Substs:
641dnl GLIBCXX_INCLUDES
642dnl TOPLEVEL_INCLUDES
ff66d28f 643dnl
f214923c 644AC_DEFUN([GLIBCXX_EXPORT_INCLUDES], [
0df3f383
PE
645 # Used for every C++ compile we perform.
646 GLIBCXX_INCLUDES="\
647-I$glibcxx_builddir/include/$host_alias \
648-I$glibcxx_builddir/include \
649-I$glibcxx_srcdir/libsupc++"
ff66d28f 650
0df3f383 651 # For Canadian crosses, pick this up too.
ff66d28f 652 if test $CANADIAN = yes; then
37e0ff11 653 GLIBCXX_INCLUDES="$GLIBCXX_INCLUDES -I\${includedir}"
ff66d28f
PE
654 fi
655
0df3f383
PE
656 # Stuff in the actual top level. Currently only used by libsupc++ to
657 # get unwind* headers from the gcc dir.
658 #TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include'
659 TOPLEVEL_INCLUDES='-I$(toplevel_srcdir)/gcc'
ff66d28f
PE
660
661 # Now, export this to all the little Makefiles....
662 AC_SUBST(GLIBCXX_INCLUDES)
663 AC_SUBST(TOPLEVEL_INCLUDES)
ff66d28f
PE
664])
665
666
667dnl
668dnl Set up *_FLAGS and *FLAGS variables for all sundry Makefile.am's.
669dnl (SECTION_FLAGS is done under CHECK_COMPILER_FEATURES.)
670dnl
671dnl Substs:
672dnl OPTIMIZE_CXXFLAGS
673dnl WARN_FLAGS
674dnl
f214923c 675AC_DEFUN([GLIBCXX_EXPORT_FLAGS], [
ff66d28f
PE
676 # Optimization flags that are probably a good idea for thrill-seekers. Just
677 # uncomment the lines below and make, everything else is ready to go...
678 # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
679 OPTIMIZE_CXXFLAGS=
680 AC_SUBST(OPTIMIZE_CXXFLAGS)
681
dc7c62ae 682 WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
ff66d28f
PE
683 AC_SUBST(WARN_FLAGS)
684])
685
686
687dnl
688dnl All installation directory information is determined here.
689dnl
690dnl Substs:
691dnl gxx_install_dir
692dnl glibcxx_prefixdir
693dnl glibcxx_toolexecdir
694dnl glibcxx_toolexeclibdir
695dnl
696dnl Assumes cross_compiling bits already done, and with_cross_host in
697dnl particular.
698dnl
f214923c 699AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
ff66d28f
PE
700 glibcxx_toolexecdir=no
701 glibcxx_toolexeclibdir=no
702 glibcxx_prefixdir=$prefix
703
704 AC_MSG_CHECKING([for gxx-include-dir])
705 AC_ARG_WITH([gxx-include-dir],
706 AC_HELP_STRING([--with-gxx-include-dir=DIR],
707 [installation directory for include files]),
708 [case "$withval" in
709 yes) AC_MSG_ERROR([Missing directory for --with-gxx-include-dir]) ;;
710 no) gxx_include_dir=no ;;
711 *) gxx_include_dir=$withval ;;
712 esac],
713 [gxx_include_dir=no])
714 AC_MSG_RESULT($gxx_include_dir)
715
716 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
717 AC_ARG_ENABLE([version-specific-runtime-libs],
718 AC_HELP_STRING([--enable-version-specific-runtime-libs],
719 [Specify that runtime libraries should be installed in a compiler-specific directory]),
720 [case "$enableval" in
721 yes) version_specific_libs=yes ;;
722 no) version_specific_libs=no ;;
723 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
724 esac],
725 [version_specific_libs=no])
726 AC_MSG_RESULT($version_specific_libs)
727
728 # Default case for install directory for include files.
729 if test $version_specific_libs = no && test $gxx_include_dir = no; then
730 gxx_include_dir='${prefix}'/include/c++/${gcc_version}
731 fi
732
733 # Version-specific runtime libs processing.
734 if test $version_specific_libs = yes; then
735 # Need the gcc compiler version to know where to install libraries
736 # and header files if --enable-version-specific-runtime-libs option
0314451d
GK
737 # is selected. FIXME: these variables are misnamed, there are
738 # no executables installed in _toolexecdir or _toolexeclibdir.
ff66d28f 739 if test x"$gxx_include_dir" = x"no"; then
0314451d 740 gxx_include_dir='${libdir}/gcc/${host_alias}/'$gcc_version/include/c++
ff66d28f 741 fi
0314451d 742 glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
fbe057bb 743 glibcxx_toolexeclibdir='${toolexecdir}/'$gcc_version'$(MULTISUBDIR)'
ff66d28f
PE
744 fi
745
746 # Calculate glibcxx_toolexecdir, glibcxx_toolexeclibdir
747 # Install a library built with a cross compiler in tooldir, not libdir.
748 if test x"$glibcxx_toolexecdir" = x"no"; then
749 if test -n "$with_cross_host" &&
750 test x"$with_cross_host" != x"no"; then
fbe057bb
PE
751 glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
752 glibcxx_toolexeclibdir='${toolexecdir}/lib'
ff66d28f 753 else
0314451d 754 glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
fbe057bb 755 glibcxx_toolexeclibdir='${libdir}'
ff66d28f 756 fi
fbe057bb 757 multi_os_directory=`$CXX -print-multi-os-directory`
ff66d28f
PE
758 case $multi_os_directory in
759 .) ;; # Avoid trailing /.
760 *) glibcxx_toolexeclibdir=$glibcxx_toolexeclibdir/$multi_os_directory ;;
761 esac
762 fi
763
764 AC_MSG_CHECKING([for install location])
765 AC_MSG_RESULT($gxx_include_dir)
766
767 AC_SUBST(glibcxx_prefixdir)
768 AC_SUBST(gxx_include_dir)
769 AC_SUBST(glibcxx_toolexecdir)
770 AC_SUBST(glibcxx_toolexeclibdir)
771])
772
773
774dnl
775dnl GLIBCXX_ENABLE
776dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING)
777dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c)
778dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER)
779dnl
780dnl See docs/html/17_intro/configury.html#enable for documentation.
781dnl
782m4_define([GLIBCXX_ENABLE],[dnl
783m4_define([_g_switch],[--enable-$1])dnl
784m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl
785 AC_ARG_ENABLE($1,_g_help,
786 m4_bmatch([$5],
787 [^permit ],
788 [[
789 case "$enableval" in
790 m4_bpatsubst([$5],[permit ])) ;;
791 *) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;;
792 dnl Idea for future: generate a URL pointing to
793 dnl "onlinedocs/configopts.html#whatever"
794 esac
795 ]],
796 [^$],
797 [[
798 case "$enableval" in
799 yes|no) ;;
800 *) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;;
801 esac
802 ]],
803 [[$5]]),
804 [enable_]m4_bpatsubst([$1],-,_)[=][$2])
805m4_undefine([_g_switch])dnl
806m4_undefine([_g_help])dnl
807])
808
809
810dnl
811dnl Check for ISO/IEC 9899:1999 "C99" support.
812dnl
813dnl --enable-c99 defines _GLIBCXX_USE_C99
814dnl --disable-c99 leaves _GLIBCXX_USE_C99 undefined
815dnl + Usage: GLIBCXX_ENABLE_C99[(DEFAULT)]
816dnl Where DEFAULT is either `yes' or `no'.
817dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
818dnl
f214923c 819AC_DEFUN([GLIBCXX_ENABLE_C99], [
ff66d28f
PE
820 GLIBCXX_ENABLE(c99,$1,,[turns on ISO/IEC 9899:1999 support])
821
822 AC_LANG_SAVE
823 AC_LANG_CPLUSPLUS
824
825 # Check for the existence of <math.h> functions used if C99 is enabled.
826 ac_c99_math=yes;
827 AC_MSG_CHECKING([for ISO C99 support in <math.h>])
828 AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
829 AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
830 AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
831 AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
832 AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
833 AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
834 AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
835 AC_TRY_COMPILE([#include <math.h>],
836 [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
837 AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
838 AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
839 AC_TRY_COMPILE([#include <math.h>],
840 [islessgreater(0.0,0.0);],, [ac_c99_math=no])
841 AC_TRY_COMPILE([#include <math.h>],
842 [isunordered(0.0,0.0);],, [ac_c99_math=no])
843 AC_MSG_RESULT($ac_c99_math)
844
517da0ce
MM
845 if test x"$ac_c99_math" = x"yes"; then
846 AC_DEFINE(_GLIBCXX_USE_C99_MATH)
847 fi
848
ff66d28f
PE
849 # Check for the existence in <stdio.h> of vscanf, et. al.
850 ac_c99_stdio=yes;
851 AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
852 AC_TRY_COMPILE([#include <stdio.h>],
853 [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
854 AC_TRY_COMPILE([#include <stdio.h>
855 #include <stdarg.h>
856 void foo(char* fmt, ...)
857 {va_list args; va_start(args, fmt);
858 vfscanf(stderr, "%i", args);}],
859 [],, [ac_c99_stdio=no])
860 AC_TRY_COMPILE([#include <stdio.h>
861 #include <stdarg.h>
862 void foo(char* fmt, ...)
863 {va_list args; va_start(args, fmt);
864 vscanf("%i", args);}],
865 [],, [ac_c99_stdio=no])
866 AC_TRY_COMPILE([#include <stdio.h>
867 #include <stdarg.h>
868 void foo(char* fmt, ...)
869 {va_list args; va_start(args, fmt);
870 vsnprintf(fmt, 0, "%i", args);}],
871 [],, [ac_c99_stdio=no])
872 AC_TRY_COMPILE([#include <stdio.h>
873 #include <stdarg.h>
874 void foo(char* fmt, ...)
875 {va_list args; va_start(args, fmt);
876 vsscanf(fmt, "%i", args);}],
877 [],, [ac_c99_stdio=no])
878 AC_MSG_RESULT($ac_c99_stdio)
879
880 # Check for the existence in <stdlib.h> of lldiv_t, et. al.
881 ac_c99_stdlib=yes;
882 AC_MSG_CHECKING([for lldiv_t declaration])
883 AC_CACHE_VAL(ac_c99_lldiv_t, [
884 AC_TRY_COMPILE([#include <stdlib.h>],
885 [ lldiv_t mydivt;],
886 [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
887 ])
888 AC_MSG_RESULT($ac_c99_lldiv_t)
889
890 AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
891 AC_TRY_COMPILE([#include <stdlib.h>],
892 [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
893 AC_TRY_COMPILE([#include <stdlib.h>],
894 [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
895 AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
896 AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
897 AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
898 AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
899 if test x"$ac_c99_lldiv_t" = x"no"; then
900 ac_c99_stdlib=no;
901 fi;
902 AC_MSG_RESULT($ac_c99_stdlib)
903
904 # Check for the existence of <wchar.h> functions used if C99 is enabled.
905 # XXX the wchar.h checks should be rolled into the general C99 bits.
906 ac_c99_wchar=yes;
907 AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
908 AC_TRY_COMPILE([#include <wchar.h>],
909 [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
910 AC_TRY_COMPILE([#include <wchar.h>],
911 [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
912 AC_TRY_COMPILE([#include <wchar.h>],
913 [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
914 AC_MSG_RESULT($ac_c99_wchar)
915
916 AC_MSG_CHECKING([for enabled ISO C99 support])
917 if test x"$ac_c99_math" = x"no" ||
918 test x"$ac_c99_stdio" = x"no" ||
919 test x"$ac_c99_stdlib" = x"no" ||
920 test x"$ac_c99_wchar" = x"no"; then
921 enable_c99=no;
922 fi;
923 AC_MSG_RESULT($enable_c99)
924
517da0ce
MM
925 if test x"$ac_99_math" = x"yes"; then
926 AC_DEFINE(_GLIBCXX_USE_C99_MATH)
927 fi
928
ff66d28f
PE
929 # Option parsed, now set things appropriately
930 if test x"$enable_c99" = x"yes"; then
931 AC_DEFINE(_GLIBCXX_USE_C99)
932 fi
933
934 AC_LANG_RESTORE
dcfa0bc8
PE
935])
936
937
0214010c 938dnl
ff66d28f
PE
939dnl Check for what type of C headers to use.
940dnl
941dnl --enable-cheaders= [does stuff].
942dnl --disable-cheaders [does not do anything, really].
943dnl + Usage: GLIBCXX_ENABLE_CHEADERS[(DEFAULT)]
944dnl Where DEFAULT is either `c' or `c_std'.
945dnl
f214923c 946AC_DEFUN([GLIBCXX_ENABLE_CHEADERS], [
ff66d28f
PE
947 GLIBCXX_ENABLE(cheaders,$1,[=KIND],
948 [construct "C" headers for g++], [permit c|c_std])
949 AC_MSG_NOTICE("C" header strategy set to $enable_cheaders)
950
951 C_INCLUDE_DIR='${glibcxx_srcdir}/include/'$enable_cheaders
952
953 AC_SUBST(C_INCLUDE_DIR)
92eabea2
PE
954 GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C, test $enable_cheaders = c)
955 GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_STD, test $enable_cheaders = c_std)
956 GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_COMPATIBILITY, test $c_compatibility = yes)
ff66d28f
PE
957])
958
959
0214010c 960dnl
ff66d28f
PE
961dnl Check for which locale library to use. The choice is mapped to
962dnl a subdirectory of config/locale.
37bc6ca2 963dnl
ff66d28f 964dnl Default is generic.
0214010c 965dnl
f214923c 966AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
ff66d28f
PE
967 AC_MSG_CHECKING([for C locale to use])
968 GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
969 [use MODEL for target locale package],
970 [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
971
972 # If they didn't use this option switch, or if they specified --enable
973 # with no specific model, we'll have to look for one. If they
974 # specified --disable (???), do likewise.
975 if test $enable_clocale = no || test $enable_clocale = yes; then
976 enable_clocale=auto
977 fi
0214010c 978
ff66d28f 979 # Either a known package, or "auto"
0214010c
BK
980 enable_clocale_flag=$enable_clocale
981
ff66d28f
PE
982 # Probe for locale support if no specific model is specified.
983 # Default to "generic".
984 if test $enable_clocale_flag = auto; then
56deb74c 985 case x${target_os} in
b2398b49 986 xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
ff66d28f 987 AC_EGREP_CPP([_GLIBCXX_ok], [
56deb74c 988 #include <features.h>
37bc6ca2 989 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
3d7c150e 990 _GLIBCXX_ok
56deb74c
BK
991 #endif
992 ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
1451a492 993
ff66d28f
PE
994 # Test for bugs early in glibc-2.2.x series
995 if test x$enable_clocale_flag = xgnu; then
996 AC_TRY_RUN([
997 #define _GNU_SOURCE 1
998 #include <locale.h>
999 #include <string.h>
1000 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
1001 extern __typeof(newlocale) __newlocale;
1002 extern __typeof(duplocale) __duplocale;
1003 extern __typeof(strcoll_l) __strcoll_l;
1004 #endif
1005 int main()
1006 {
1007