]> gcc.gnu.org Git - gcc.git/blame - libstdc++-v3/acinclude.m4
mkcshadow: build in more-correct directory...
[gcc.git] / libstdc++-v3 / acinclude.m4
CommitLineData
b2dad0e3
BK
1dnl
2dnl Initialize configure bits.
3dnl
4dnl Define OPTLEVEL='-O2' if new inlining code present.
5dnl
6dnl GLIBCPP_CONFIGURE
7AC_DEFUN(GLIBCPP_CONFIGURE, [
8 dnl Default to --enable-multilib
9 AC_ARG_ENABLE(multilib,
10 [ --enable-multilib build hella library versions (default)],
11 [case "${enableval}" in
12 yes) multilib=yes ;;
13 no) multilib=no ;;
14 *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
15 esac], [multilib=yes])dnl
16
17 dnl We may get other options which we dont document:
18 dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
19 if test "[$]{srcdir}" = "."; then
20 if test "[$]{with_target_subdir}" != "."; then
21 glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
22 else
23 glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
24 fi
25 else
26 glibcpp_basedir="[$]{srcdir}/$1"
27 fi
28 AC_SUBST(glibcpp_basedir)
29
30 AC_CANONICAL_HOST
31
32 AM_INIT_AUTOMAKE(libstdc++, 2.90.8)
33
34# FIXME: We temporarily define our own version of AC_PROG_CC. This is
35# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
36# are probably using a cross compiler, which will not be able to fully
37# link an executable. This should really be fixed in autoconf
38# itself.
39
40AC_DEFUN(LIB_AC_PROG_CC,
41[AC_BEFORE([$0], [AC_PROG_CPP])dnl
42dnl Fool anybody using AC_PROG_CC.
43AC_PROVIDE([AC_PROG_CC])
44AC_CHECK_PROG(CC, gcc, gcc)
45if test -z "$CC"; then
46 AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
47 test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
48fi
49
50AC_PROG_CC_GNU
51
52if test $ac_cv_prog_gcc = yes; then
53 GCC=yes
54dnl Check whether -g works, even if CFLAGS is set, in case the package
55dnl plays around with CFLAGS (such as to build both debugging and
56dnl normal versions of a library), tasteless as that idea is.
57 ac_test_CFLAGS="${CFLAGS+set}"
58 ac_save_CFLAGS="$CFLAGS"
59 CFLAGS=
60 AC_PROG_CC_G
61 if test "$ac_test_CFLAGS" = set; then
62 CFLAGS="$ac_save_CFLAGS"
63 elif test $ac_cv_prog_cc_g = yes; then
64 CFLAGS="-g -O2"
65 else
66 CFLAGS="-O2"
67 fi
68else
69 GCC=
70 test "${CFLAGS+set}" = set || CFLAGS="-g"
71fi
72])
73
74LIB_AC_PROG_CC
75
76# Likewise for AC_PROG_CXX.
77AC_DEFUN(LIB_AC_PROG_CXX,
78[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
79dnl Fool anybody using AC_PROG_CXX.
80AC_PROVIDE([AC_PROG_CXX])
81AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
82test -z "$CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
83
84AC_PROG_CXX_GNU
85
86if test $ac_cv_prog_gxx = yes; then
87 GXX=yes
88dnl Check whether -g works, even if CXXFLAGS is set, in case the package
89dnl plays around with CXXFLAGS (such as to build both debugging and
90dnl normal versions of a library), tasteless as that idea is.
91 ac_test_CXXFLAGS="${CXXFLAGS+set}"
92 ac_save_CXXFLAGS="$CXXFLAGS"
93 CXXFLAGS=
94 AC_PROG_CXX_G
95 if test "$ac_test_CXXFLAGS" = set; then
96 CXXFLAGS="$ac_save_CXXFLAGS"
97 elif test $ac_cv_prog_cxx_g = yes; then
98 CXXFLAGS="-g -O2"
99 else
100 CXXFLAGS="-O2"
101 fi
102else
103 GXX=
104 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
105fi
106])
107
108LIB_AC_PROG_CXX
109
110# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we dont
111# run it explicitly here, it will be run implicitly before
112# LIBGCJ_CONFIGURE, which doesn't work because that means that it will
113# be run before AC_CANONICAL_HOST.
114AC_CANONICAL_BUILD
115
116AC_CHECK_TOOL(AS, as)
117AC_CHECK_TOOL(AR, ar)
118AC_CHECK_TOOL(RANLIB, ranlib, :)
119
120AC_PROG_INSTALL
121
122AM_MAINTAINER_MODE
123
124# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
125# at least currently, we never actually build a program, so we never
126# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
127# fails, because we are probably configuring with a cross compiler
128# which cant create executables. So we include AC_EXEEXT to keep
129# automake happy, but we dont execute it, since we dont care about
130# the result.
131if false; then
132 AC_EXEEXT
133fi
134
135# configure.host sets the following important variables
136# glibcpp_cflags - host specific C compiler flags
137# glibcpp_cxxflags - host specific C++ compiler flags
138
139glibcpp_cflags=
140glibcpp_cxxflags=
141
142. [$]{glibcpp_basedir}/configure.host
143
144case [$]{glibcpp_basedir} in
145/* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
146*) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
147esac
148
149GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
150GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
151AC_SUBST(GLIBCPP_CFLAGS)
152AC_SUBST(GLIBCPP_CXXFLAGS)
153])
154
155
156dnl
157dnl Check to see if g++ can compile this library.
158dnl
159dnl Define OPTLEVEL='-O2' if new inlining code present.
160dnl
161dnl GLIBCPP_CHECK_COMPILER_VERSION
162AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
163 AC_MSG_CHECKING([for g++ that will successfullly compile this code])
164 AC_EGREP_CPP([ok], [
165 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
166 ok
167 #endif
168 ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above"))
169 AC_MSG_RESULT($gpp_satisfactory)
170
171 AC_MSG_CHECKING([for g++ that supports new inlining mechanism])
172 AC_EGREP_CPP([ok], [
173 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)
174 ok
175 #endif
176 ], [OPTLEVEL='-O2'
177 WERRORSUPPRESS=
178 ], [OPTLEVEL=
179 WERRORSUPPRESS=-Wno-error
180 ])
181 if test "$OPTLEVEL" = ""; then
182 AC_MSG_RESULT(no)
183 else
184 AC_MSG_RESULT(yes)
185 fi
186 AC_SUBST(OPTLEVEL)
187 AC_SUBST(WERRORSUPPRESS)
188])
189
190
191dnl
192dnl Check to see what builtin math functions are supported
193dnl
194dnl Define _GLIBCPP_HAS_BUILTIN_SINF if __builtin_sinf
195dnl Define _GLIBCPP_HAS_BUILTIN_COSF if __builtin_cosf
196dnl Define _GLIBCPP_HAS_BUILTIN_FABSF if __builtin_fabsf
197dnl Define _GLIBCPP_HAS_BUILTIN_SQRTF if __builtin_sqrtf
198dnl
199dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
200AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
201 dnl Test for builtin math functions.
202 AC_MSG_CHECKING([for __builtin_sinf])
203 AC_TRY_COMPILE([#include <math.h>],
204 [float foo(void) { __builtin_sinf(0.0); }],
205 use_builtin_sinf=yes, use_builtin_sinf=no)
206 AC_MSG_RESULT($use_builtin_sinf)
207 if test $use_builtin_sinf = "yes"; then
208 AC_DEFINE(_GLIBCPP_HAS_BUILTIN_SINF)
209 fi
210
211 AC_MSG_CHECKING([for __builtin_cosf])
212 AC_TRY_COMPILE([#include <math.h>],
213 [float foo(void) { __builtin_cosf(0.0); }],
214 use_builtin_cosf=yes, use_builtin_cosf=no)
215 AC_MSG_RESULT($use_builtin_cosf)
216 if test $use_builtin_cosf = "yes"; then
217 AC_DEFINE(_GLIBCPP_HAS_BUILTIN_COSF)
218 fi
219
220 AC_MSG_CHECKING([for __builtin_fabsf])
221 AC_TRY_COMPILE([#include <math.h>],
222 [float foo(void) { __builtin_fabsf(0.0); }],
223 use_builtin_fabsf=yes, use_builtin_fabsf=no)
224 AC_MSG_RESULT($use_builtin_fabsf)
225 if test $use_builtin_fabsf = "yes"; then
226 AC_DEFINE(_GLIBCPP_HAS_BUILTIN_FABSF)
227 fi
228
229 AC_MSG_CHECKING([for __builtin_sqrtf])
230 AC_TRY_COMPILE([#include <math.h>],
231 [float foo(void) { __builtin_sqrtf(0.0); }],
232 use_builtin_sqrtf=yes, use_builtin_sqrtf=no)
233 AC_MSG_RESULT($use_builtin_sqrtf)
234 if test $use_builtin_sqrtf = "yes"; then
235 AC_DEFINE(_GLIBCPP_HAS_BUILTIN_SQRTF)
236 fi
237])
238
239
240dnl
cde28f0d 241
b2dad0e3
BK
242dnl Check to see what architecture we are compiling for. If it's
243dnl supported, use special hand-crafted routines to provide thread
cde28f0d
BK
244dnl primitives. Also, if architecture-specific flags are required for
245dnl compilation, add them here.
b2dad0e3 246dnl
f3b004d8
BK
247dnl Depending on what is found, select configure/cpu/*/bits/atomicity.h
248dnl If not found, select configure/cpu/generic/bits/atomicity.h
b2dad0e3
BK
249dnl
250dnl GLIBCPP_CHECK_CPU
251AC_DEFUN(GLIBCPP_CHECK_CPU, [
252 AC_MSG_CHECKING([for cpu primitives directory])
cde28f0d 253 CPUFLAGS=
b2dad0e3
BK
254 case "$target_cpu" in
255 alpha*)
256 cpu_include_dir="config/cpu/alpha"
257 ;;
258 arm*)
259 cpu_include_dir="config/cpu/arm"
260 ;;
261 i486 | i586 | i686 | i786)
262 cpu_include_dir="config/cpu/i386"
263 ;;
264 powerpc | rs6000)
265 cpu_include_dir="config/cpu/powerpc"
7b267e3e 266 CPUFLAGS='-mcpu=powerpc'
b2dad0e3
BK
267 ;;
268 sparc64 | ultrasparc)
269 cpu_include_dir="config/cpu/sparc/sparc64"
270 ;;
271 sparc*)
272 cpu_include_dir="config/cpu/sparc/sparc32"
273 ;;
274 *)
275 cpu_include_dir="config/cpu/generic"
276 ;;
277 esac
278 AC_MSG_RESULT($cpu_include_dir)
279 AC_SUBST(cpu_include_dir)
cde28f0d 280 AC_SUBST(CPUFLAGS)
b2dad0e3
BK
281])
282
283
284dnl
285dnl Check to see what the underlying c library's interface to ctype looks
286dnl like. Bits of locale rely on things like isspace, toupper, etc. This
287dnl stuff makes sure the right bits from the clibrary get called.
288dnl
289dnl Depending on what is found, select various configure/*/bits/ctype_base.h
290dnl Depending on what is found, select various configure/*/ctype.cc
291dnl
292dnl GLIBCPP_CHECK_CTYPE
293AC_DEFUN(GLIBCPP_CHECK_CTYPE, [
294 AC_CHECK_HEADER(ctype.h, [
295
296 dnl If doesn't match any specified, go with defaults.
297 ctype_default=yes
298
299 dnl Test for <ctype> functionality -- gnu-linux
8445e42a 300 AC_MSG_CHECKING([<ctype> for gnu-linux ])
b2dad0e3
BK
301 AC_TRY_COMPILE([#include <ctype.h>],
302 [int
303 foo (int a)
304 { return _ISspace + _ISprint + _IScntrl + _ISupper + _ISlower + _ISalpha \
305 + _ISdigit + _ISpunct + _ISxdigit + _ISalnum + _ISgraph \
306 + __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}], \
307 ctype_linux=yes, ctype_linux=no)
308 AC_MSG_RESULT($ctype_linux)
309 if test $ctype_linux = "yes"; then
310 ctype_include_dir="config/gnu-linux"
311 ctype_default=no
312 fi
313
6ad50467
BK
314 dnl Test for <ctype> functionality -- FreeBSD 4.0
315 AC_MSG_CHECKING([<ctype> for freebsd 4.0 ])
7b267e3e
BK
316 AC_TRY_COMPILE([#include <ctype.h>],
317 [int
318 foo (int a)
319 { return _CTYPE_S + _CTYPE_R + _CTYPE_C + _CTYPE_U + _CTYPE_L + _CTYPE_A \
320 + _CTYPE_D + _CTYPE_P + _CTYPE_X + _CTYPE_G ;}], \
321 ctype_bsd=yes, ctype_bsd=no)
322 AC_MSG_RESULT($ctype_bsd)
323 if test $ctype_bsd = "yes"; then
324 ctype_include_dir="config/bsd"
325 ctype_default=no
326 fi
327
6ad50467
BK
328 dnl Test for <ctype> functionality -- FreeBSD 3.4
329 AC_MSG_CHECKING([<ctype> for freebsd 3.4 ])
330 AC_TRY_COMPILE([#include <ctype.h>],
331 [int
332 foo (int a)
333 { return _S + _R + _C + _U + _L + _A \
334 + _D + _P + _X + _G + __istype (a, 0);}], \
335 ctype_freebsd34=yes, ctype_freebsd34=no)
336 AC_MSG_RESULT($ctype_freebsd34)
337 if test $ctype_freebsd34 = "yes"; then
338 ctype_include_dir="config/bsd"
339 ctype_default=no
340 fi
341
b2dad0e3
BK
342 dnl Test for <ctype> functionality -- solaris 2.6 and 2.7
343 if test $ctype_default = "yes"; then
8445e42a 344 AC_MSG_CHECKING([<ctype> for solaris 2.[6,7,8] ])
b2dad0e3
BK
345 AC_TRY_COMPILE([#include <ctype.h>],
346 [int
347 foo (int a)
348 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
349 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
350 + __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}], \
351 ctype_solaris=yes, ctype_solaris=no)
352 AC_MSG_RESULT($ctype_solaris)
353
354 if test $ctype_solaris = "yes"; then
355 AC_MSG_CHECKING([ for version])
356 AC_LANG_CPLUSPLUS
357 AC_TRY_COMPILE([#include <ctype.h>],
358 [typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;],\
359 ctype_solaris26=yes, ctype_solaris26=no)
360 AC_LANG_C
361 if test $ctype_solaris26 = "yes"; then
362 ctype_include_dir="config/solaris/solaris2.6"
363 AC_MSG_RESULT("solaris2.6")
364 ctype_default=no
365 else
366 ctype_include_dir="config/solaris/solaris2.7"
32a4595e 367 AC_MSG_RESULT("solaris2.[7,8]")
b2dad0e3
BK
368 ctype_default=no
369 fi
370 fi
371 fi
372
373 dnl Test for <ctype> functionality -- solaris 2.5.1
374 if test $ctype_default = "yes"; then
8445e42a 375 AC_MSG_CHECKING([<ctype> for solaris 2.5.1 ])
b2dad0e3
BK
376 AC_TRY_COMPILE([#include <ctype.h>],
377 [int
378 foo (int a)
379 { return _U + _L + _N + _S + _P + _C + _X + _B \
380 + __ctype[a];}], \
381 ctype_solaris25=yes, ctype_solaris25=no)
382 AC_MSG_RESULT($ctype_solaris25)
383 if test $ctype_solaris25 = "yes"; then
384 ctype_include_dir="config/solaris/solaris2.5"
385 ctype_default=no
386 fi
387 fi
388
389 dnl Test for <ctype> functionality -- aix
390 if test $ctype_default = "yes"; then
8445e42a 391 AC_MSG_CHECKING([<ctype> for aix ])
b2dad0e3
BK
392 AC_TRY_COMPILE([#include <ctype.h>],
393 [int
394 foo (int a)
395 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
396 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
397 + _VALC('a') + _IS('c', 0);}], \
398 ctype_aix=yes, ctype_aix=no)
399 AC_MSG_RESULT($ctype_aix)
400 if test $ctype_aix = "yes"; then
401 ctype_include_dir="config/aix"
402 ctype_default=no
403 fi
404 fi
405
406 dnl Test for <ctype> functionality -- newlib
407 if test $ctype_default = "yes"; then
8445e42a 408 AC_MSG_CHECKING([<ctype> for newlib ])
b2dad0e3
BK
409 AC_TRY_COMPILE([#include <ctype.h>],
410 [int
411 foo (int a)
412 { return _U + _L + _N + _S + _P + _C + _X + _B \
413 + _ctype_[a];}], \
414 ctype_newlib=yes, ctype_newlib=no)
415 AC_MSG_RESULT($ctype_newlib)
416 if test $ctype_newlib = "yes"; then
417 ctype_include_dir="config/newlib"
418 ctype_default=no
419 fi
420 fi
421
422 if test $ctype_default = "yes"; then
423 ctype_include_dir="config/generic"
424 AC_MSG_WARN("Using default ctype headers.")
425 fi
426 AC_SUBST(ctype_include_dir)
427 ])
428])
429
430
431dnl
432dnl Check to see what the underlying c library or math library is like.
433dnl
434dnl Define HAVE_CARGF etc if "cargf" is found.
435dnl
436dnl GLIBCPP_CHECK_MATH_SUPPORT
437AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
438 AC_CHECK_LIB(m, sin, libm="-lm")
439 save_LIBS="$LIBS"
440 LIBS="$LIBS $libm"
441
442 dnl Check for complex versions of math functions of platform.
443 AC_CHECK_HEADERS([complex.h])
444 AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \
445 clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \
446 ctan ctanf ctanh ctanhf \
447 carg cargf nan hypot hypotf atan2f expf copysignf)
448
449 dnl We compile the long double complex functions only if the function
f3b004d8 450 dnl provides the non-complex long double functions.
b2dad0e3 451 USE_LONG_DOUBLE=no
f3b004d8 452 AC_CHECK_FUNC(copysignl,
b2dad0e3
BK
453 USE_LONG_DOUBLE=yes
454 AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \
455 csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l))
456 AC_SUBST(USE_LONG_DOUBLE)
457
458 dnl Check to see if basic C math functions have faster float versions.
459 AC_CHECK_FUNCS(modf isnan isnanf isnanl isinf isinff isinfl copysign \
460 copysignl cosf coshf logf log10f powf sinf sinhf sqrtf tanf tanhf \
461 strtof strtold fabsf sincos sincosf sincosl finite finite fqfinite \
462 fpclass qfpclass)
463
464#Some runtimes have these functions with a preceding underscore. Please
465# keep this sync'd with the one above. And if you add any new symbol,
466# please add the corresponding block in the @BOTTOM@ section of
467# acconfig.h.
468AC_CHECK_FUNCS(_modf _isnan _isnanf _isnanl _isinf _isinff _isinfl _copysign \
469_copysignl _cosf _coshf _logf _log10f _powf _sinf _sinhf _sqrtf _tanf _tanhf \
470_strtof _strtold _fabsf _sincos _sincosf _sincosl _finite _finitef _qfinite \
471_fpclass _qfpclass)
472
473LIBS="$save_LIBS"
474])
475
476
477dnl
478dnl Check to see if this target can enable the wchar_t parts of libstdc++.
479dnl
480dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
481dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
482dnl Define _GLIBCPP_HAS_WCHAR_MIN_MAX if WCHAR_MIN, WCHAR_MAX in wchar.h
483dnl
484dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
485AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
486 AC_CHECK_HEADER(wchar.h,[
487 dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
488 AC_MSG_CHECKING([for native mbstate_t])
489 AC_TRY_COMPILE([#include <wchar.h>],
490 [mbstate_t teststate;],
491 use_native_mbstatet=yes, use_native_mbstatet=no)
492 AC_MSG_RESULT($use_native_mbstatet)
493 if test $use_native_mbstatet = "no"; then
494 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
495 fi
496
497 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
498 dnl numeric_limits can instantiate type_traits<wchar_t>
499 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
500 AC_TRY_COMPILE([#include <wchar.h>],
501 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
502 has_wchar_minmax=yes, has_wchar_minmax=no)
503 AC_MSG_RESULT($has_wchar_minmax)
504 if test $has_wchar_minmax = "yes"; then
505 AC_DEFINE(_GLIBCPP_HAS_WCHAR_MIN_MAX)
506 fi
507
508 # Test wchar.h for WEOF, which is what we use to determine whether
509 # to specialize for wchar_t or not.
510 AC_MSG_CHECKING([for WEOF])
511 AC_TRY_COMPILE([
512 #include <wchar.h>
513 #include <stddef.h>],
514 [wint_t i = WEOF;],
515 has_weof=yes, has_weof=no)
516 AC_MSG_RESULT($has_weof)
517
518 dnl Tests for wide character functions.
519 AC_REPLACE_STRINGFUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset)
5d89258a 520 AC_SUBST(libinst_wstring_la)
b2dad0e3
BK
521
522 AC_MSG_CHECKING([for wide character support])
523 if test $has_weof = "yes" && test $has_wchar_minmax = "yes"; then
5d89258a 524 libinst_wstring_la="libinst-wstring.la"
b2dad0e3
BK
525 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
526 AC_MSG_RESULT(ok)
527 else
5d89258a 528 libinst_wstring_la=""
b2dad0e3
BK
529 AC_MSG_RESULT("not specializing for wchar_t")
530 fi
531 ],[
532 AC_MSG_WARN([<wchar.h> not found])
533 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
534 ])
535])
536
537
538dnl
539dnl Check to see if this version of GNU C++ is afflicted by bugs in
540dnl __complex__ float support.
541dnl
542dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
543dnl
544dnl GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT
545AC_DEFUN(GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT, [
546 AC_REQUIRE([AC_PROG_CXX])
547 AC_MSG_CHECKING([for GNU C++ __complex__ float support])
548 AC_CACHE_VAL(glibcpp_cv_float_complex, [
549 AC_LANG_SAVE
550 AC_LANG_CPLUSPLUS
551 rm -f conftest.h
552 cat > conftest.h <<EOB
553 //
554 // Check for buggy __complex__ that causes ICE in most versions of egcs
555 // and gcc-2.95.x on certain platforms (eg., x86-win32).
556 //
557 // See http://egcs.cygnus.com/ml/gcc-bugs/1999-07/msg00845.html for
558 // more info on the bug itself.
559 //
560 struct
561 float_complex
562 {
563 __complex__ float m_value;
564 float_complex (float = 0.0f, float = 0.0f);
565 float_complex (__complex__ float val) : m_value (val) {}
566 float_complex foo (const float_complex &val)
567 { return float_complex (~val.m_value); }
568 };
569EOB
570 AC_TRY_COMPILE([#include "conftest.h"], ,
571 glibcpp_cv_float_complex=ok,
572 glibcpp_cv_float_complex=buggy
573 )
574 AC_LANG_RESTORE
575 ])
576 AC_MSG_RESULT($glibcpp_cv_float_complex)
577 if test $glibcpp_cv_float_complex = buggy; then
578 AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
579 fi
580])
581
582
583dnl
584dnl
585dnl Check to see if this version of GNU C++ is afflicted by bugs in
586dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
587dnl gcc-2.95.x when using the library, unless we define the default copy
588dnl ctor in the specializations of complex<>.
589dnl
590dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
591dnl
592dnl GLIBCPP_CHECK_COMPLEX_SUPPORT
593AC_DEFUN(GLIBCPP_CHECK_COMPLEX_SUPPORT, [
594 AC_REQUIRE([AC_PROG_CXX])
595 AC_MSG_CHECKING([for GNU C++ __complex__ support])
596 AC_CACHE_VAL(glibcpp_cv_complex, [
597 AC_LANG_SAVE
598 AC_LANG_CPLUSPLUS
599 AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
600 dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
601 [ dcomplex x; f(x); ],
602 glibcpp_cv_complex=ok,
603 glibcpp_cv_complex=buggy
604 )
605 AC_LANG_RESTORE
606 ])
607 AC_MSG_RESULT($glibcpp_cv_complex)
608 if test $glibcpp_cv_complex = buggy; then
609 AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
610 fi
611])
612
613
614dnl
615dnl Check for certain special build configurations.
616dnl
617dnl GLIBCPP_ENABLE_DEBUG
618dnl --enable-debug sets '-ggdb -O0'.
619dnl --disable-debug sets '-g' and whatever optimization options the
620dnl compiler can handle.
621dnl + Perhaps --enable-maintainer-mode should automatically turn this on?
622dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
623dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
624dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
625dnl defaults to `no'.
626AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
627define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
628AC_ARG_ENABLE(debug,
629changequote(<<, >>)dnl
630<< --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
631changequote([, ])dnl
632[case "$enableval" in
633 yes) enable_debug=yes ;;
634 no) enable_debug=no ;;
635 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
636 esac],
637enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
638dnl Option parsed, now set things appropriately
639case "$enable_debug" in
cde28f0d
BK
640 yes)
641 DEBUGFLAGS='-O0 -ggdb'
642 ;;
f3b004d8
BK
643 no)
644 DEBUGFLAGS='-g'
645 ;;
b2dad0e3
BK
646esac
647AC_SUBST(DEBUGFLAGS)
648])
649
650
dcfa0bc8
PE
651dnl
652dnl Check for "unusual" flags to pass to the compiler while building.
653dnl
654dnl GLIBCPP_ENABLE_CXX_FLAGS
655dnl --enable-cxx-flags='-foo -bar -baz' is a general method for passing
656dnl experimental flags such as -fhonor-std, -fsquangle, -Dfloat=char, etc.
657dnl Somehow this same set of flags must be passed when [re]building
658dnl libgcc.
659dnl --disable-cxx-flags passes nothing.
32a4595e
PE
660dnl + See http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00131.html
661dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00284.html
662dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00035.html
dcfa0bc8 663dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
32a4595e
PE
664dnl If "default flags" is an empty string (or "none"), the effect is
665dnl the same as --disable or --enable=no.
dcfa0bc8
PE
666AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [dnl
667define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))dnl
668AC_ARG_ENABLE(cxx-flags,
669changequote(<<, >>)dnl
670<< --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
671 [default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
672changequote([, ])dnl
673[case "x$enableval" in
674 xyes) AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
32a4595e 675 xno|x) enable_cxx_flags='' ;;
dcfa0bc8
PE
676 *) enable_cxx_flags="$enableval" ;;
677 esac],
678enable_cxx_flags='GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT')dnl
32a4595e
PE
679dnl Thinko on my part during design. This kludge is the workaround.
680if test "$enable_cxx_flags" = "none"; then enable_cxx_flags=''; fi
681dnl Run through flags (either default or command-line) and set anything
682dnl extra (e.g., #defines) that must accompany particular g++ options.
dcfa0bc8
PE
683if test -n "$enable_cxx_flags"; then
684 for f in $enable_cxx_flags; do
685 case "$f" in
991a40fc 686 -fhonor-std) ;;
dcfa0bc8
PE
687 -*) ;;
688 *) # and we're trying to pass /what/ exactly?
689 AC_MSG_ERROR([compiler flags start with a -]) ;;
690 esac
691 done
692fi
693EXTRA_CXX_FLAGS="$enable_cxx_flags"
694AC_SUBST(EXTRA_CXX_FLAGS)
695])
696
697
b2dad0e3
BK
698dnl
699dnl Check for instructions to automatically rebuild libgcc.a. Requires,
700dnl of course, the location of the gcc objdir. Note that if --disable-
701dnl namespaces is in effect, rebuilding libgcc.a is an expensive no-op.
702dnl
703dnl GLIBCPP_ENABLE_RELIBGCC
704dnl --enable-libgcc-rebuild=/absolute/path/to/gcc/objdir sets GCC_OBJDIR
705dnl (presumably in the top-level Makefile) to /absol.../objdir
706dnl --disable-libgcc-rebuild will not touch libgcc.a at all (maybe print
707dnl a warning if this is given along with --enable-namespaces), by
708dnl setting GCC_OBJDIR to `no'.
709dnl + Doing this by default is going to be interesting. What default
710dnl "on" value can there be?
711dnl + Usage: GLIBCPP_ENABLE_RELIBGCC[(DEFAULT)]
712dnl The default path should be ../.. if bundled with GCC source.
713dnl If ommitted, it defaults to `no'.
714dnl
715AC_DEFUN(GLIBCPP_ENABLE_RELIBGCC, [dnl
716define([GLIBCPP_ENABLE_RELIBGCC_DEFAULT], ifelse($1,, no, $1))dnl
717AC_ARG_ENABLE(libgcc-rebuild,
718changequote(<<, >>)dnl
719<< --enable-libgcc-rebuild=DIR also rebuild libgcc.a; DIR is
720 the GCC objdir; see install.html>>,
721changequote([, ])dnl
722[case "$enableval" in
723 yes) AC_MSG_ERROR([--enable-libgcc-rebuild needs a pathname]) ;;
724 no) enable_libgcc_rebuild=no ;;
725 *) if test -d "$enableval" && test -d "${enableval}/gcc" && \
726 test -d "${enableval}/libiberty"
727 then
728 enable_libgcc_rebuild="$enableval"
729 else
730 AC_MSG_ERROR(["$enableval" does not appear to be the GCC objdir])
731 fi
732 ;;
733 esac],
734enable_libgcc_rebuild=GLIBCPP_ENABLE_RELIBGCC_DEFAULT)dnl
735GCC_OBJDIR="$enable_libgcc_rebuild"
736AC_SUBST(GCC_OBJDIR)
737])
738
739
740dnl
741dnl Check for certain special build configurations.
742dnl
743dnl GLIBCPP_ENABLE_CSTDIO
744dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
745dnl
746dnl default is libio
747dnl
748AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
749 AC_MSG_CHECKING([for cstdio to use])
750 AC_ARG_ENABLE(cstdio,
751 [ --enable-cstdio enable GNU libio for target io package. (default)
752 --enable-cstdio=LIB use LIB target-speific io package.],
753 if test x$enable_cstdio = xno; then
754 enable_cstdio=libio
755 fi,
756 enable_cstdio=libio)
757
758 enable_cstdio_flag=$enable_cstdio
759
760 dnl Check if a valid thread package
761 case x${enable_cstdio_flag} in
762 xlibio | x | xno | xnone | xyes)
763 # default
764 CSTDIO_H=c_io_libio.h
765 CSTDIO_CC=c_io_libio.cc
766 AC_MSG_RESULT(libio)
767
768 # see if we are on a system with libio native (ie, linux)
769 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
770 if test $has_libio = "yes"; then
771 BUILD_LIBIO_INCLUDE=
772 need_libio=no
773 else
774 BUILD_LIBIO_INCLUDE='-I../libio'
775 need_libio=yes
776 fi
777 AC_SUBST(BUILD_LIBIO_INCLUDE)
f3b004d8
BK
778
779 # see if the _G_config.h header needs to be built.
780 # NB: This replaces the _G_CONFIG_H machinery in libio-v2
781 AC_CHECK_HEADER(_G_config.h, has_gconf_h=yes, has_gconf_h=no)
782 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO_CONFIG_H, test "$has_gconf_h" = no)
b2dad0e3
BK
783 ;;
784 xwince)
785 CSTDIO_H=c_io_wince.h
786 CSTDIO_CC=c_io_wince.cc
787 AC_MSG_RESULT(wince)
788
789 need_libio=no
790 BUILD_LIBIO_INCLUDE=
791 AC_SUBST(BUILD_LIBIO_INCLUDE)
792 ;;
793 *)
794 echo "$enable_cstdio is an unknown io package" 1>&2
795 exit 1
796 ;;
797 esac
798 AC_SUBST(CSTDIO_H)
799 AC_SUBST(CSTDIO_CC)
800 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
801])
802
803
804dnl
805dnl Check for certain special build configurations.
806dnl
807dnl GLIBCPP_ENABLE_THREADS
808dnl --enable-threads=posix sets config/threads-posix.h et. al.
809dnl
810dnl default is no threads
811dnl
812AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
813 dnl Note this comes from the gcc/config.in and libjava/config.in
814 dnl Efforts should be made to keep this in sync.
815 AC_MSG_CHECKING([for threads package to use])
816 AC_ARG_ENABLE(threads,
817 [ --enable-threads enable thread usage for target GCC.
818 --enable-threads=LIB use LIB thread package for target GCC.],
819 if test x$enable_threads = xno; then
820 enable_threads=''
821 fi,
822 enable_threads='')
823
824 enable_threads_flag=$enable_threads
825
826 dnl Check if a valid thread package
827 case x${enable_threads_flag} in
828 x | xno | xnone)
829 # No threads
830 target_thread_file='single'
831 ;;
832 xyes)
833 # default
834 target_thread_file=''
835 ;;
836 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
837 xsolaris | xwin32 | xdce | xvxworks)
838 target_thread_file=$enable_threads_flag
839 ;;
840 *)
841 echo "$enable_threads is an unknown thread package" 1>&2
842 exit 1
843 ;;
844 esac
845
846 dnl Check for thread package actually supported in libstdc++
847 case "$target_thread_file" in
848 no | none | single)
849 THREADS=none
850 ;;
851 posix | pthreads)
852 THREADS=posix
853 case "$host" in
854 *-*-linux*)
855 ;;
856 esac
857 ;;
858 decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
859 AC_MSG_ERROR(thread package $THREADS not yet supported)
860 ;;
861 *)
862 AC_MSG_ERROR($THREADS is an unknown thread package)
863 ;;
864 esac
865 AC_MSG_RESULT($THREADS)
866
867 THREADLIBS=
868 THREADINCS=
869 THREADDEPS=
870 THREADOBJS=
871 THREADH=
872 THREADSPEC=
873 case "$THREADS" in
874 posix)
875 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
876 THREADLIBS=-lpthread
877 THREADSPEC=-lpthread
878 dnl Not presently used
879 dnl THREADOBJS=threads-posix.lo
880 THREADH=threads-posix.h
881 ;;
882 none)
883 dnl Not presently used
884 dnl THREADOBJS=threads-no.lo
885 THREADH=threads-no.h
886 ;;
887 esac
888 AC_SUBST(THREADLIBS)
889 AC_SUBST(THREADINCS)
890 AC_SUBST(THREADDEPS)
891 AC_SUBST(THREADOBJS)
892 AC_SUBST(THREADSPEC)
893])
894
895
896dnl
897dnl Check for certain special build configurations.
898dnl
899dnl GLIBCPP_ENABLE_LONG_LONG
900dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
901dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
902dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
903dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
904dnl defaults to `no'.
905dnl
906dnl GLIBCPP_ENABLE_LONG_LONG
907AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
908 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
909 AC_ARG_ENABLE(long-long,
910 changequote(<<, >>)dnl
911 <<--enable-long_long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
912 changequote([, ])dnl
913 [case "$enableval" in
914 yes) enable_long_long=yes ;;
915 no) enable_long_long=no ;;
916 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
917 esac],
918 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
919 dnl Option parsed, now set things appropriately
920 case "$enable_long_long" in
921 yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
922 ;;
923 esac
924])
925
926
927
928
929
930
931
932
933
934
935
936
This page took 0.129139 seconds and 5 git commands to generate.