diff options
Diffstat (limited to 'libstdc++-v3/acinclude.m4')
-rw-r--r-- | libstdc++-v3/acinclude.m4 | 378 |
1 files changed, 295 insertions, 83 deletions
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 4b3aaa5b58d..bd14d90126e 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -49,7 +49,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [ # Keep these sync'd with the list in Makefile.am. The first provides an # expandable list at autoconf time; the second provides an expandable list # (i.e., shell variable) at configure time. - m4_define([glibcxx_SUBDIRS],[include libmath libsupc++ src po testsuite]) + m4_define([glibcxx_SUBDIRS],[include libmath libsupc++ src doc po testsuite]) SUBDIRS='glibcxx_SUBDIRS' # These need to be absolute paths, yet at the same time need to @@ -763,24 +763,49 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS + # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__ + # undefined and fake C99 facilities - like pre-standard snprintf - may be + # spuriously enabled. + # Long term, -std=c++0x could be even better, could manage to explicitely + # request C99 facilities to the underlying C headers. + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++98" + ac_save_LIBS="$LIBS" + ac_save_gcc_no_link="$gcc_no_link" + + if test x$gcc_no_link != xyes; then + # Use -fno-exceptions to that the C driver can link these tests without + # hitting undefined references to personality routines. + CXXFLAGS="$CXXFLAGS -fno-exceptions" + AC_CHECK_LIB(m, sin, [ + LIBS="$LIBS -lm" + ], [ + # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK + gcc_no_link=yes + ]) + fi + # Check for the existence of <math.h> functions used if C99 is enabled. AC_MSG_CHECKING([for ISO C99 support in <math.h>]) AC_CACHE_VAL(ac_c99_math, [ - AC_TRY_COMPILE([#include <math.h>], - [fpclassify(0.0); - isfinite(0.0); - isinf(0.0); - isnan(0.0); - isnormal(0.0); - signbit(0.0); - isgreater(0.0,0.0); - isgreaterequal(0.0,0.0); - isless(0.0,0.0); - islessequal(0.0,0.0); - islessgreater(0.0,0.0); - islessgreater(0.0,0.0); - isunordered(0.0,0.0); - ],[ac_c99_math=yes], [ac_c99_math=no]) + GCC_TRY_COMPILE_OR_LINK( + [#include <math.h> + volatile double d1, d2; + volatile int i;], + [i = fpclassify(d1); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); + ],[ac_c99_math=yes], [ac_c99_math=no]) ]) AC_MSG_RESULT($ac_c99_math) if test x"$ac_c99_math" = x"yes"; then @@ -798,47 +823,54 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ ac_c99_complex=no; if test x"$ac_has_complex_h" = x"yes"; then AC_MSG_CHECKING([for ISO C99 support in <complex.h>]) - AC_TRY_COMPILE([#include <complex.h>], - [typedef __complex__ float float_type; float_type tmpf; - cabsf(tmpf); - cargf(tmpf); - ccosf(tmpf); - ccoshf(tmpf); - cexpf(tmpf); - clogf(tmpf); - csinf(tmpf); - csinhf(tmpf); - csqrtf(tmpf); - ctanf(tmpf); - ctanhf(tmpf); - cpowf(tmpf, tmpf); - typedef __complex__ double double_type; double_type tmpd; - cabs(tmpd); - carg(tmpd); - ccos(tmpd); - ccosh(tmpd); - cexp(tmpd); - clog(tmpd); - csin(tmpd); - csinh(tmpd); - csqrt(tmpd); - ctan(tmpd); - ctanh(tmpd); - cpow(tmpd, tmpd); - typedef __complex__ long double ld_type; ld_type tmpld; - cabsl(tmpld); - cargl(tmpld); - ccosl(tmpld); - ccoshl(tmpld); - cexpl(tmpld); - clogl(tmpld); - csinl(tmpld); - csinhl(tmpld); - csqrtl(tmpld); - ctanl(tmpld); - ctanhl(tmpld); - cpowl(tmpld, tmpld); - ],[ac_c99_complex=yes], [ac_c99_complex=no]) + GCC_TRY_COMPILE_OR_LINK( + [#include <complex.h> + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld;], + [f = cabsf(tmpf); + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + ],[ac_c99_complex=yes], [ac_c99_complex=no]) fi AC_MSG_RESULT($ac_c99_complex) if test x"$ac_c99_complex" = x"yes"; then @@ -851,35 +883,43 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ # Check for the existence in <stdio.h> of vscanf, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdio.h>]) AC_CACHE_VAL(ac_c99_stdio, [ - AC_TRY_COMPILE([#include <stdio.h> - #include <stdarg.h> - void foo(char* fmt, ...) - { - va_list args; va_start(args, fmt); - vfscanf(stderr, "%i", args); - vscanf("%i", args); - vsnprintf(fmt, 0, "%i", args); - vsscanf(fmt, "%i", args); - }], - [snprintf("12", 0, "%i");], - [ac_c99_stdio=yes], [ac_c99_stdio=no]) + GCC_TRY_COMPILE_OR_LINK( + [#include <stdio.h> + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + }], + [snprintf("12", 0, "%i");], + [ac_c99_stdio=yes], [ac_c99_stdio=no]) ]) AC_MSG_RESULT($ac_c99_stdio) # Check for the existence in <stdlib.h> of lldiv_t, et. al. AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>]) AC_CACHE_VAL(ac_c99_stdlib, [ - AC_TRY_COMPILE([#include <stdlib.h>], - [char* tmp; - strtof("gnu", &tmp); - strtold("gnu", &tmp); - strtoll("gnu", &tmp, 10); - strtoull("gnu", &tmp, 10); - llabs(10); - lldiv(10,1); - atoll("10"); - _Exit(0); - lldiv_t mydivt;],[ac_c99_stdlib=yes], [ac_c99_stdlib=no]) + GCC_TRY_COMPILE_OR_LINK( + [#include <stdlib.h> + volatile float f; + volatile long double ld; + volatile unsigned long long ll; + lldiv_t mydivt;], + [char* tmp; + f = strtof("gnu", &tmp); + ld = strtold("gnu", &tmp); + ll = strtoll("gnu", &tmp, 10); + ll = strtoull("gnu", &tmp, 10); + ll = llabs(10); + mydivt = lldiv(10,1); + ll = mydivt.quot; + ll = mydivt.rem; + ll = atoll("10"); + _Exit(0); + ],[ac_c99_stdlib=yes], [ac_c99_stdlib=no]) ]) AC_MSG_RESULT($ac_c99_stdlib) @@ -940,6 +980,9 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.]) fi + gcc_no_link="$ac_save_gcc_no_link" + LIBS="$ac_save_LIBS" + CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE fi @@ -957,6 +1000,11 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS + # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__ + # undefined and fake C99 facilities may be spuriously enabled. + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++98" + # Check for the existence of <complex.h> complex math functions used # by tr1/complex. AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) @@ -1227,6 +1275,7 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [ # Check for the existence of the <stdbool.h> header. AC_CHECK_HEADERS(stdbool.h) + CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) @@ -1258,6 +1307,142 @@ AC_DEFUN([GLIBCXX_CHECK_RANDOM_TR1], [ ]) dnl +dnl Check whether macros, etc are present for <system_error> +dnl +AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [ + + AC_MSG_CHECKING([for EOWNERDEAD]) + AC_CACHE_VAL(ac_system_error1, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = EOWNERDEAD; ], + [ac_system_error1=yes], [ac_system_error1=no]) + ]) + AC_MSG_RESULT($ac_system_error1) + if test x"$ac_system_error1" = x"yes"; then + AC_DEFINE(HAVE_EOWNERDEAD, 1, [Define if EOWNERDEAD exists.]) + fi + + AC_MSG_CHECKING([for ENOTRECOVERABLE]) + AC_CACHE_VAL(ac_system_error2, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ENOTRECOVERABLE; ], + [ac_system_error2=yes], [ac_system_error2=no]) + ]) + AC_MSG_RESULT($ac_system_error2) + if test x"$ac_system_error2" = x"yes"; then + AC_DEFINE(HAVE_ENOTRECOVERABLE, 1, [Define if ENOTRECOVERABLE exists.]) + fi + + AC_MSG_CHECKING([for ENOLINK]) + AC_CACHE_VAL(ac_system_error3, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ENOLINK; ], + [ac_system_error3=yes], [ac_system_error3=no]) + ]) + AC_MSG_RESULT($ac_system_error3) + if test x"$ac_system_error3" = x"yes"; then + AC_DEFINE(HAVE_ENOLINK, 1, [Define if ENOLINK exists.]) + fi + + AC_MSG_CHECKING([for EPROTO]) + AC_CACHE_VAL(ac_system_error_4, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = EPROTO; ], + [ac_system_error_4=yes], [ac_system_error_4=no]) + ]) + AC_MSG_RESULT($ac_system_error_4) + if test x"$ac_system_error_4" = x"yes"; then + AC_DEFINE(HAVE_EPROTO, 1, [Define if EPROTO exists.]) + fi + + AC_MSG_CHECKING([for ENODATA]) + AC_CACHE_VAL(ac_system_error_5, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ENODATA; ], + [ac_system_error_5=yes], [ac_system_error_5=no]) + ]) + AC_MSG_RESULT($ac_system_error_5) + if test x"$ac_system_error_5" = x"yes"; then + AC_DEFINE(HAVE_ENODATA, 1, [Define if ENODATA exists.]) + fi + + AC_MSG_CHECKING([for ENOSR]) + AC_CACHE_VAL(ac_system_error_6, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ENOSR; ], + [ac_system_error_6=yes], [ac_system_error_6=no]) + ]) + AC_MSG_RESULT($ac_system_error_6) + if test x"$ac_system_error_6" = x"yes"; then + AC_DEFINE(HAVE_ENOSR, 1, [Define if ENOSR exists.]) + fi + + AC_MSG_CHECKING([for ENOSTR]) + AC_CACHE_VAL(ac_system_error_7, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ENOSTR; ], + [ac_system_error_7=yes], [ac_system_error_7=no]) + ]) + AC_MSG_RESULT($ac_system_error_7) + if test x"$ac_system_error_7" = x"yes"; then + AC_DEFINE(HAVE_ENOSTR, 1, [Define if ENOSTR exists.]) + fi + + AC_MSG_CHECKING([for ETIME]) + AC_CACHE_VAL(ac_system_error_8, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ETIME; ], + [ac_system_error_8=yes], [ac_system_error_8=no]) + ]) + AC_MSG_RESULT($ac_system_error_8) + if test x"$ac_system_error_8" = x"yes"; then + AC_DEFINE(HAVE_ETIME, 1, [Define if ETIME exists.]) + fi + + AC_MSG_CHECKING([for sys_nerr]) + AC_CACHE_VAL(ac_system_error9, [ + AC_TRY_COMPILE([#include <errno.h> ], [ int i = sys_nerr; ], + [ac_system_error9=yes], [ac_system_error9=no]) + ]) + AC_MSG_RESULT($ac_system_error9) + if test x"$ac_system_error9" = x"yes"; then + AC_DEFINE(HAVE_SYS_NERR, 1, [Define if sys_nerr exists.]) + fi + + AC_MSG_CHECKING([for EBADMSG]) + AC_CACHE_VAL(ac_system_error_10, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = EBADMSG; ], + [ac_system_error_10=yes], [ac_system_error_10=no]) + ]) + AC_MSG_RESULT($ac_system_error_10) + if test x"$ac_system_error_10" = x"yes"; then + AC_DEFINE(HAVE_EBADMSG, 1, [Define if EBADMSG exists.]) + fi + + AC_MSG_CHECKING([for ECANCELED]) + AC_CACHE_VAL(ac_system_error_11, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ECANCELED; ], + [ac_system_error_11=yes], [ac_system_error_11=no]) + ]) + AC_MSG_RESULT($ac_system_error_11) + if test x"$ac_system_error_11" = x"yes"; then + AC_DEFINE(HAVE_ECANCELED, 1, [Define if ECANCELED exists.]) + fi + + AC_MSG_CHECKING([for EOVERFLOW]) + AC_CACHE_VAL(ac_system_error_12, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = EOVERFLOW; ], + [ac_system_error_12=yes], [ac_system_error_12=no]) + ]) + AC_MSG_RESULT($ac_system_error_12) + if test x"$ac_system_error_12" = x"yes"; then + AC_DEFINE(HAVE_EOVERFLOW, 1, [Define if EOVERFLOW exists.]) + fi + + AC_MSG_CHECKING([for ENOTSUP]) + AC_CACHE_VAL(ac_system_error_13, [ + AC_TRY_COMPILE([#include <errno.h>], [ int i = ENOTSUP; ], + [ac_system_error_13=yes], [ac_system_error_13=no]) + ]) + AC_MSG_RESULT($ac_system_error_13) + if test x"$ac_system_error_13" = x"yes"; then + AC_DEFINE(HAVE_ENOTSUP, 1, [Define if ENOTSUP exists.]) + fi +]) + +dnl dnl Check for what type of C headers to use. dnl dnl --enable-cheaders= [does stuff]. @@ -1609,6 +1794,35 @@ AC_DEFUN([GLIBCXX_ENABLE_CONCEPT_CHECKS], [ fi ]) +dnl +dnl Check for parallel mode pre-requisites, including OpenMP support. +dnl +dnl + Usage: GLIBCXX_ENABLE_PARALLEL +dnl +AC_DEFUN([GLIBCXX_ENABLE_PARALLEL], [ + + # NB: libstdc++ may be configured before libgomp: can't check for the actual + # dependencies (omp.h and libgomp). + enable_parallel=no; + if test -f $glibcxx_builddir/../libgomp/omp.h; then + enable_parallel=yes; + else + AC_MSG_NOTICE([$glibcxx_builddir/../libgomp/omp.h not found]) + fi + + # Check to see if it's explicitly disabled. +# GLIBCXX_ENABLE(libgomp,$1,,[enable code depending on libgomp], +# [permit yes|no]) + +# if test x$enable_libgomp = xno; then +# enable_parallel=no +# fi + + AC_MSG_CHECKING([for parallel mode support]) + AC_MSG_RESULT([$enable_parallel]) + GLIBCXX_CONDITIONAL(ENABLE_PARALLEL, test $enable_parallel = yes) +]) + dnl dnl Check for which I/O library to use: stdio, or something specific. @@ -1956,7 +2170,7 @@ AC_DEFUN([GLIBCXX_ENABLE_PCH], [ GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_PCH, test $enable_libstdcxx_pch = yes) if test $enable_libstdcxx_pch = yes; then - glibcxx_PCHFLAGS="-include bits/stdtr1c++.h" + glibcxx_PCHFLAGS="-include bits/stdc++.h" else glibcxx_PCHFLAGS="" fi @@ -2343,8 +2557,6 @@ AC_DEFUN([GLIBCXX_ENABLE_THREADS], [ # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. - -# serial 1 AC_DEFUN([AC_LC_MESSAGES], [ AC_CHECK_HEADER(locale.h, [ AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES, |