]> gcc.gnu.org Git - gcc.git/blame - libstdc++-v3/acinclude.m4
New test case.
[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
241dnl Check to see what architecture we are compiling for. If it's
242dnl supported, use special hand-crafted routines to provide thread
243dnl primitives.
244dnl
245dnl Depending on what is found, select various configure/cpu/*/atomicity.h
246dnl If not found, select configure/cpu/generic/atomicity.h
247dnl
248dnl GLIBCPP_CHECK_CPU
249AC_DEFUN(GLIBCPP_CHECK_CPU, [
250 AC_MSG_CHECKING([for cpu primitives directory])
251 case "$target_cpu" in
252 alpha*)
253 cpu_include_dir="config/cpu/alpha"
254 ;;
255 arm*)
256 cpu_include_dir="config/cpu/arm"
257 ;;
258 i486 | i586 | i686 | i786)
259 cpu_include_dir="config/cpu/i386"
260 ;;
261 powerpc | rs6000)
262 cpu_include_dir="config/cpu/powerpc"
263 ;;
264 sparc64 | ultrasparc)
265 cpu_include_dir="config/cpu/sparc/sparc64"
266 ;;
267 sparc*)
268 cpu_include_dir="config/cpu/sparc/sparc32"
269 ;;
270 *)
271 cpu_include_dir="config/cpu/generic"
272 ;;
273 esac
274 AC_MSG_RESULT($cpu_include_dir)
275 AC_SUBST(cpu_include_dir)
276])
277
278
279dnl
280dnl Check to see what the underlying c library's interface to ctype looks
281dnl like. Bits of locale rely on things like isspace, toupper, etc. This
282dnl stuff makes sure the right bits from the clibrary get called.
283dnl
284dnl Depending on what is found, select various configure/*/bits/ctype_base.h
285dnl Depending on what is found, select various configure/*/ctype.cc
286dnl
287dnl GLIBCPP_CHECK_CTYPE
288AC_DEFUN(GLIBCPP_CHECK_CTYPE, [
289 AC_CHECK_HEADER(ctype.h, [
290
291 dnl If doesn't match any specified, go with defaults.
292 ctype_default=yes
293
294 dnl Test for <ctype> functionality -- gnu-linux
295 AC_MSG_CHECKING([for gnu-linux <ctype>])
296 AC_TRY_COMPILE([#include <ctype.h>],
297 [int
298 foo (int a)
299 { return _ISspace + _ISprint + _IScntrl + _ISupper + _ISlower + _ISalpha \
300 + _ISdigit + _ISpunct + _ISxdigit + _ISalnum + _ISgraph \
301 + __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}], \
302 ctype_linux=yes, ctype_linux=no)
303 AC_MSG_RESULT($ctype_linux)
304 if test $ctype_linux = "yes"; then
305 ctype_include_dir="config/gnu-linux"
306 ctype_default=no
307 fi
308
309 dnl Test for <ctype> functionality -- solaris 2.6 and 2.7
310 if test $ctype_default = "yes"; then
311 AC_MSG_CHECKING([for solaris 2.6 or 2.7 <ctype>])
312 AC_TRY_COMPILE([#include <ctype.h>],
313 [int
314 foo (int a)
315 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
316 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
317 + __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}], \
318 ctype_solaris=yes, ctype_solaris=no)
319 AC_MSG_RESULT($ctype_solaris)
320
321 if test $ctype_solaris = "yes"; then
322 AC_MSG_CHECKING([ for version])
323 AC_LANG_CPLUSPLUS
324 AC_TRY_COMPILE([#include <ctype.h>],
325 [typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;],\
326 ctype_solaris26=yes, ctype_solaris26=no)
327 AC_LANG_C
328 if test $ctype_solaris26 = "yes"; then
329 ctype_include_dir="config/solaris/solaris2.6"
330 AC_MSG_RESULT("solaris2.6")
331 ctype_default=no
332 else
333 ctype_include_dir="config/solaris/solaris2.7"
334 AC_MSG_RESULT("solaris2.7")
335 ctype_default=no
336 fi
337 fi
338 fi
339
340 dnl Test for <ctype> functionality -- solaris 2.5.1
341 if test $ctype_default = "yes"; then
342 AC_MSG_CHECKING([for solaris 2.5.1 <ctype>])
343 AC_TRY_COMPILE([#include <ctype.h>],
344 [int
345 foo (int a)
346 { return _U + _L + _N + _S + _P + _C + _X + _B \
347 + __ctype[a];}], \
348 ctype_solaris25=yes, ctype_solaris25=no)
349 AC_MSG_RESULT($ctype_solaris25)
350 if test $ctype_solaris25 = "yes"; then
351 ctype_include_dir="config/solaris/solaris2.5"
352 ctype_default=no
353 fi
354 fi
355
356 dnl Test for <ctype> functionality -- aix
357 if test $ctype_default = "yes"; then
358 AC_MSG_CHECKING([for aix <ctype>])
359 AC_TRY_COMPILE([#include <ctype.h>],
360 [int
361 foo (int a)
362 { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
363 + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
364 + _VALC('a') + _IS('c', 0);}], \
365 ctype_aix=yes, ctype_aix=no)
366 AC_MSG_RESULT($ctype_aix)
367 if test $ctype_aix = "yes"; then
368 ctype_include_dir="config/aix"
369 ctype_default=no
370 fi
371 fi
372
373 dnl Test for <ctype> functionality -- newlib
374 if test $ctype_default = "yes"; then
375 AC_MSG_CHECKING([for newlib <ctype>])
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_newlib=yes, ctype_newlib=no)
382 AC_MSG_RESULT($ctype_newlib)
383 if test $ctype_newlib = "yes"; then
384 ctype_include_dir="config/newlib"
385 ctype_default=no
386 fi
387 fi
388
389 if test $ctype_default = "yes"; then
390 ctype_include_dir="config/generic"
391 AC_MSG_WARN("Using default ctype headers.")
392 fi
393 AC_SUBST(ctype_include_dir)
394 ])
395])
396
397
398dnl
399dnl Check to see what the underlying c library or math library is like.
400dnl
401dnl Define HAVE_CARGF etc if "cargf" is found.
402dnl
403dnl GLIBCPP_CHECK_MATH_SUPPORT
404AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
405 AC_CHECK_LIB(m, sin, libm="-lm")
406 save_LIBS="$LIBS"
407 LIBS="$LIBS $libm"
408
409 dnl Check for complex versions of math functions of platform.
410 AC_CHECK_HEADERS([complex.h])
411 AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \
412 clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \
413 ctan ctanf ctanh ctanhf \
414 carg cargf nan hypot hypotf atan2f expf copysignf)
415
416 dnl We compile the long double complex functions only if the function
417 dnl provides the non-complex functions.
418 USE_LONG_DOUBLE=no
419 AC_CHECK_FUNC(sinl,
420 USE_LONG_DOUBLE=yes
421 AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \
422 csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l))
423 AC_SUBST(USE_LONG_DOUBLE)
424
425 dnl Check to see if basic C math functions have faster float versions.
426 AC_CHECK_FUNCS(modf isnan isnanf isnanl isinf isinff isinfl copysign \
427 copysignl cosf coshf logf log10f powf sinf sinhf sqrtf tanf tanhf \
428 strtof strtold fabsf sincos sincosf sincosl finite finite fqfinite \
429 fpclass qfpclass)
430
431#Some runtimes have these functions with a preceding underscore. Please
432# keep this sync'd with the one above. And if you add any new symbol,
433# please add the corresponding block in the @BOTTOM@ section of
434# acconfig.h.
435AC_CHECK_FUNCS(_modf _isnan _isnanf _isnanl _isinf _isinff _isinfl _copysign \
436_copysignl _cosf _coshf _logf _log10f _powf _sinf _sinhf _sqrtf _tanf _tanhf \
437_strtof _strtold _fabsf _sincos _sincosf _sincosl _finite _finitef _qfinite \
438_fpclass _qfpclass)
439
440LIBS="$save_LIBS"
441])
442
443
444dnl
445dnl Check to see if this target can enable the wchar_t parts of libstdc++.
446dnl
447dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
448dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
449dnl Define _GLIBCPP_HAS_WCHAR_MIN_MAX if WCHAR_MIN, WCHAR_MAX in wchar.h
450dnl
451dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
452AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
453 AC_CHECK_HEADER(wchar.h,[
454 dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
455 AC_MSG_CHECKING([for native mbstate_t])
456 AC_TRY_COMPILE([#include <wchar.h>],
457 [mbstate_t teststate;],
458 use_native_mbstatet=yes, use_native_mbstatet=no)
459 AC_MSG_RESULT($use_native_mbstatet)
460 if test $use_native_mbstatet = "no"; then
461 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
462 fi
463
464 dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
465 dnl numeric_limits can instantiate type_traits<wchar_t>
466 AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
467 AC_TRY_COMPILE([#include <wchar.h>],
468 [int i = WCHAR_MIN; int j = WCHAR_MAX;],
469 has_wchar_minmax=yes, has_wchar_minmax=no)
470 AC_MSG_RESULT($has_wchar_minmax)
471 if test $has_wchar_minmax = "yes"; then
472 AC_DEFINE(_GLIBCPP_HAS_WCHAR_MIN_MAX)
473 fi
474
475 # Test wchar.h for WEOF, which is what we use to determine whether
476 # to specialize for wchar_t or not.
477 AC_MSG_CHECKING([for WEOF])
478 AC_TRY_COMPILE([
479 #include <wchar.h>
480 #include <stddef.h>],
481 [wint_t i = WEOF;],
482 has_weof=yes, has_weof=no)
483 AC_MSG_RESULT($has_weof)
484
485 dnl Tests for wide character functions.
486 AC_REPLACE_STRINGFUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset)
487
488 AC_MSG_CHECKING([for wide character support])
489 if test $has_weof = "yes" && test $has_wchar_minmax = "yes"; then
490 AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
491 AC_MSG_RESULT(ok)
492 else
493 AC_MSG_RESULT("not specializing for wchar_t")
494 fi
495 ],[
496 AC_MSG_WARN([<wchar.h> not found])
497 AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
498 ])
499])
500
501
502dnl
503dnl Check to see if this version of GNU C++ is afflicted by bugs in
504dnl __complex__ float support.
505dnl
506dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
507dnl
508dnl GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT
509AC_DEFUN(GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT, [
510 AC_REQUIRE([AC_PROG_CXX])
511 AC_MSG_CHECKING([for GNU C++ __complex__ float support])
512 AC_CACHE_VAL(glibcpp_cv_float_complex, [
513 AC_LANG_SAVE
514 AC_LANG_CPLUSPLUS
515 rm -f conftest.h
516 cat > conftest.h <<EOB
517 //
518 // Check for buggy __complex__ that causes ICE in most versions of egcs
519 // and gcc-2.95.x on certain platforms (eg., x86-win32).
520 //
521 // See http://egcs.cygnus.com/ml/gcc-bugs/1999-07/msg00845.html for
522 // more info on the bug itself.
523 //
524 struct
525 float_complex
526 {
527 __complex__ float m_value;
528 float_complex (float = 0.0f, float = 0.0f);
529 float_complex (__complex__ float val) : m_value (val) {}
530 float_complex foo (const float_complex &val)
531 { return float_complex (~val.m_value); }
532 };
533EOB
534 AC_TRY_COMPILE([#include "conftest.h"], ,
535 glibcpp_cv_float_complex=ok,
536 glibcpp_cv_float_complex=buggy
537 )
538 AC_LANG_RESTORE
539 ])
540 AC_MSG_RESULT($glibcpp_cv_float_complex)
541 if test $glibcpp_cv_float_complex = buggy; then
542 AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
543 fi
544])
545
546
547dnl
548dnl
549dnl Check to see if this version of GNU C++ is afflicted by bugs in
550dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
551dnl gcc-2.95.x when using the library, unless we define the default copy
552dnl ctor in the specializations of complex<>.
553dnl
554dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
555dnl
556dnl GLIBCPP_CHECK_COMPLEX_SUPPORT
557AC_DEFUN(GLIBCPP_CHECK_COMPLEX_SUPPORT, [
558 AC_REQUIRE([AC_PROG_CXX])
559 AC_MSG_CHECKING([for GNU C++ __complex__ support])
560 AC_CACHE_VAL(glibcpp_cv_complex, [
561 AC_LANG_SAVE
562 AC_LANG_CPLUSPLUS
563 AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
564 dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
565 [ dcomplex x; f(x); ],
566 glibcpp_cv_complex=ok,
567 glibcpp_cv_complex=buggy
568 )
569 AC_LANG_RESTORE
570 ])
571 AC_MSG_RESULT($glibcpp_cv_complex)
572 if test $glibcpp_cv_complex = buggy; then
573 AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
574 fi
575])
576
577
578dnl
579dnl Check for certain special build configurations.
580dnl
581dnl GLIBCPP_ENABLE_DEBUG
582dnl --enable-debug sets '-ggdb -O0'.
583dnl --disable-debug sets '-g' and whatever optimization options the
584dnl compiler can handle.
585dnl + Perhaps --enable-maintainer-mode should automatically turn this on?
586dnl + Perhaps -D/-U of NDEBUG, DEBUG, DEBUG_ASSERT, ...?
587dnl + Usage: GLIBCPP_ENABLE_DEBUG[(DEFAULT)]
588dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
589dnl defaults to `no'.
590AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [dnl
591define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))dnl
592AC_ARG_ENABLE(debug,
593changequote(<<, >>)dnl
594<< --enable-debug extra debugging, turn off optimization [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
595changequote([, ])dnl
596[case "$enableval" in
597 yes) enable_debug=yes ;;
598 no) enable_debug=no ;;
599 *) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
600 esac],
601enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl
602dnl Option parsed, now set things appropriately
603case "$enable_debug" in
604 yes) DEBUGFLAGS='-ggdb -O0'
605 ;;
606 no) DEBUGFLAGS='-g'
607 ;;
608esac
609AC_SUBST(DEBUGFLAGS)
610])
611
612
613dnl
614dnl Check for certain special build configurations.
615dnl
616dnl GLIBCPP_ENABLE_NAMESPACES
617dnl --enable-namespaces sets '-fhonor-std' and defines _GLIBCPP_USE_NAMESPACES
618dnl --disable-namespaces sets '-fno-honor-std' (the macro should be
619dnl undefined by default in whatever.h.in).
620dnl + Eventually, this will go away.
621dnl + Usage: GLIBCPP_ENABLE_NAMESPACES[(DEFAULT)]
622dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
623dnl defaults to `no'.
624AC_DEFUN(GLIBCPP_ENABLE_NAMESPACES, [dnl
625define([GLIBCPP_ENABLE_NAMESPACES_DEFAULT], ifelse($1, yes, yes, no))dnl
626AC_ARG_ENABLE(namespaces,
627changequote(<<, >>)dnl
628<< --enable-namespaces turns on 'std' [default=>>GLIBCPP_ENABLE_NAMESPACES_DEFAULT],
629changequote([, ])dnl
630[case "$enableval" in
631 yes) enable_namespaces=yes ;;
632 no) enable_namespaces=no ;;
633 *) AC_MSG_ERROR([Unknown argument to enable/disable namespaces]) ;;
634 esac],
635enable_namespaces=GLIBCPP_ENABLE_NAMESPACES_DEFAULT)dnl
636dnl Option parsed, now set things appropriately
637case "$enable_namespaces" in
638 yes) NAMESPACES='-fhonor-std'
639 AC_DEFINE(_GLIBCPP_USE_NAMESPACES)
640 ;;
641 no) NAMESPACES='-fno-honor-std'
642 ;;
643esac
644AC_SUBST(NAMESPACES)
645])
646
647
648dnl
649dnl Check for instructions to automatically rebuild libgcc.a. Requires,
650dnl of course, the location of the gcc objdir. Note that if --disable-
651dnl namespaces is in effect, rebuilding libgcc.a is an expensive no-op.
652dnl
653dnl GLIBCPP_ENABLE_RELIBGCC
654dnl --enable-libgcc-rebuild=/absolute/path/to/gcc/objdir sets GCC_OBJDIR
655dnl (presumably in the top-level Makefile) to /absol.../objdir
656dnl --disable-libgcc-rebuild will not touch libgcc.a at all (maybe print
657dnl a warning if this is given along with --enable-namespaces), by
658dnl setting GCC_OBJDIR to `no'.
659dnl + Doing this by default is going to be interesting. What default
660dnl "on" value can there be?
661dnl + Usage: GLIBCPP_ENABLE_RELIBGCC[(DEFAULT)]
662dnl The default path should be ../.. if bundled with GCC source.
663dnl If ommitted, it defaults to `no'.
664dnl
665AC_DEFUN(GLIBCPP_ENABLE_RELIBGCC, [dnl
666define([GLIBCPP_ENABLE_RELIBGCC_DEFAULT], ifelse($1,, no, $1))dnl
667AC_ARG_ENABLE(libgcc-rebuild,
668changequote(<<, >>)dnl
669<< --enable-libgcc-rebuild=DIR also rebuild libgcc.a; DIR is
670 the GCC objdir; see install.html>>,
671changequote([, ])dnl
672[case "$enableval" in
673 yes) AC_MSG_ERROR([--enable-libgcc-rebuild needs a pathname]) ;;
674 no) enable_libgcc_rebuild=no ;;
675 *) if test -d "$enableval" && test -d "${enableval}/gcc" && \
676 test -d "${enableval}/libiberty"
677 then
678 enable_libgcc_rebuild="$enableval"
679 else
680 AC_MSG_ERROR(["$enableval" does not appear to be the GCC objdir])
681 fi
682 ;;
683 esac],
684enable_libgcc_rebuild=GLIBCPP_ENABLE_RELIBGCC_DEFAULT)dnl
685GCC_OBJDIR="$enable_libgcc_rebuild"
686AC_SUBST(GCC_OBJDIR)
687])
688
689
690dnl
691dnl Check for certain special build configurations.
692dnl
693dnl GLIBCPP_ENABLE_CSTDIO
694dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
695dnl
696dnl default is libio
697dnl
698AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
699 AC_MSG_CHECKING([for cstdio to use])
700 AC_ARG_ENABLE(cstdio,
701 [ --enable-cstdio enable GNU libio for target io package. (default)
702 --enable-cstdio=LIB use LIB target-speific io package.],
703 if test x$enable_cstdio = xno; then
704 enable_cstdio=libio
705 fi,
706 enable_cstdio=libio)
707
708 enable_cstdio_flag=$enable_cstdio
709
710 dnl Check if a valid thread package
711 case x${enable_cstdio_flag} in
712 xlibio | x | xno | xnone | xyes)
713 # default
714 CSTDIO_H=c_io_libio.h
715 CSTDIO_CC=c_io_libio.cc
716 AC_MSG_RESULT(libio)
717
718 # see if we are on a system with libio native (ie, linux)
719 AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
720 if test $has_libio = "yes"; then
721 BUILD_LIBIO_INCLUDE=
722 need_libio=no
723 else
724 BUILD_LIBIO_INCLUDE='-I../libio'
725 need_libio=yes
726 fi
727 AC_SUBST(BUILD_LIBIO_INCLUDE)
728 ;;
729 xwince)
730 CSTDIO_H=c_io_wince.h
731 CSTDIO_CC=c_io_wince.cc
732 AC_MSG_RESULT(wince)
733
734 need_libio=no
735 BUILD_LIBIO_INCLUDE=
736 AC_SUBST(BUILD_LIBIO_INCLUDE)
737 ;;
738 *)
739 echo "$enable_cstdio is an unknown io package" 1>&2
740 exit 1
741 ;;
742 esac
743 AC_SUBST(CSTDIO_H)
744 AC_SUBST(CSTDIO_CC)
745 AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
746])
747
748
749dnl
750dnl Check for certain special build configurations.
751dnl
752dnl GLIBCPP_ENABLE_THREADS
753dnl --enable-threads=posix sets config/threads-posix.h et. al.
754dnl
755dnl default is no threads
756dnl
757AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
758 dnl Note this comes from the gcc/config.in and libjava/config.in
759 dnl Efforts should be made to keep this in sync.
760 AC_MSG_CHECKING([for threads package to use])
761 AC_ARG_ENABLE(threads,
762 [ --enable-threads enable thread usage for target GCC.
763 --enable-threads=LIB use LIB thread package for target GCC.],
764 if test x$enable_threads = xno; then
765 enable_threads=''
766 fi,
767 enable_threads='')
768
769 enable_threads_flag=$enable_threads
770
771 dnl Check if a valid thread package
772 case x${enable_threads_flag} in
773 x | xno | xnone)
774 # No threads
775 target_thread_file='single'
776 ;;
777 xyes)
778 # default
779 target_thread_file=''
780 ;;
781 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
782 xsolaris | xwin32 | xdce | xvxworks)
783 target_thread_file=$enable_threads_flag
784 ;;
785 *)
786 echo "$enable_threads is an unknown thread package" 1>&2
787 exit 1
788 ;;
789 esac
790
791 dnl Check for thread package actually supported in libstdc++
792 case "$target_thread_file" in
793 no | none | single)
794 THREADS=none
795 ;;
796 posix | pthreads)
797 THREADS=posix
798 case "$host" in
799 *-*-linux*)
800 ;;
801 esac
802 ;;
803 decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
804 AC_MSG_ERROR(thread package $THREADS not yet supported)
805 ;;
806 *)
807 AC_MSG_ERROR($THREADS is an unknown thread package)
808 ;;
809 esac
810 AC_MSG_RESULT($THREADS)
811
812 THREADLIBS=
813 THREADINCS=
814 THREADDEPS=
815 THREADOBJS=
816 THREADH=
817 THREADSPEC=
818 case "$THREADS" in
819 posix)
820 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
821 THREADLIBS=-lpthread
822 THREADSPEC=-lpthread
823 dnl Not presently used
824 dnl THREADOBJS=threads-posix.lo
825 THREADH=threads-posix.h
826 ;;
827 none)
828 dnl Not presently used
829 dnl THREADOBJS=threads-no.lo
830 THREADH=threads-no.h
831 ;;
832 esac
833 AC_SUBST(THREADLIBS)
834 AC_SUBST(THREADINCS)
835 AC_SUBST(THREADDEPS)
836 AC_SUBST(THREADOBJS)
837 AC_SUBST(THREADSPEC)
838])
839
840
841dnl
842dnl Check for certain special build configurations.
843dnl
844dnl GLIBCPP_ENABLE_LONG_LONG
845dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
846dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
847dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
848dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
849dnl defaults to `no'.
850dnl
851dnl GLIBCPP_ENABLE_LONG_LONG
852AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
853 define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
854 AC_ARG_ENABLE(long-long,
855 changequote(<<, >>)dnl
856 <<--enable-long_long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
857 changequote([, ])dnl
858 [case "$enableval" in
859 yes) enable_long_long=yes ;;
860 no) enable_long_long=no ;;
861 *) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
862 esac],
863 enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
864 dnl Option parsed, now set things appropriately
865 case "$enable_long_long" in
866 yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
867 ;;
868 esac
869])
870
871
872
873
874
875
876
877
878
879
880
881
This page took 0.113074 seconds and 5 git commands to generate.