X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Facinclude.m4;h=7f761195533c62a4fac8983e110170a60782e096;hb=fadebf1b3da61dbbf4f25b4187a5e5baee896a89;hp=9030b7f0cb8a89698d9e03a422f2c186e545c398;hpb=a31c6285d1d91b9aed62161e9f5b4f5e62385df3;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 9030b7f0cb8..7f761195533 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -155,19 +155,35 @@ AC_SUBST(GLIBCPP_CXXFLAGS) dnl dnl Check to see if g++ can compile this library, and if so, if any version- -dnl specific precautions need to be taken. In particular, test for -dnl newer compiler features, or features that are present in newer +dnl specific precautions need to be taken. +dnl +dnl GLIBCPP_CHECK_COMPILER_VERSION +AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [ + # Sanity check that g++ is capable of dealing with v-3. + AC_MSG_CHECKING([for g++ that will successfully compile this code]) + AC_EGREP_CPP([ok], [ + #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) + ok + #endif + ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above")) + AC_MSG_RESULT($gpp_satisfactory) +]) + + +dnl +dnl Test for newer compiler features, or features that are present in newer dnl compiler version but not older compiler versions should be placed dnl here. dnl -dnl Define FMTFLAGS='-fdiagnostics-show-location=once' if possible +dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible +dnl dnl Define WERROR='-Werror' if possible; g++'s that lack the new inlining -dnl code or the new system_header pragma will die. Other options dealing -dnl with warnings, errors, and compiler complaints may be folded into -dnl the WERROR variable. +dnl code or the new system_header pragma will die. dnl -dnl GLIBCPP_CHECK_COMPILER_VERSION -AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [ +dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if +dnl compiler supports it. +dnl GLIBCPP_CHECK_COMPILER_FEATURES +AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [ # All these tests are for C++; save the language and the compiler flags. # The CXXFLAGS thing is suspicious, but based on similar bits # found in GLIBCPP_CONFIGURE. @@ -177,15 +193,6 @@ AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [ ac_save_CXXFLAGS="$CXXFLAGS" WERROR='-Werror' - # Sanity check that g++ is capable of dealing with v-3. - AC_MSG_CHECKING([for g++ that will successfully compile this code]) - AC_EGREP_CPP([ok], [ - #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) - ok - #endif - ], gpp_satisfactory=yes, AC_MSG_ERROR("please upgrade to gcc-2.95 or above")) - AC_MSG_RESULT($gpp_satisfactory) - # Check for pragma system_header. AC_MSG_CHECKING([for g++ that supports pragma system_header]) CXXFLAGS='-Wunknown-pragmas -Werror' @@ -214,62 +221,446 @@ AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [ CXXFLAGS='' fi if test "$ac_gabydiags" = "yes"; then - FMTFLAGS='-fdiagnostics-show-location=once' + WFMT_FLAGS='-fdiagnostics-show-location=once' fi AC_MSG_RESULT($ac_gabydiags) + # Check for -ffunction-sections -fdata-sections + AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections]) + CXXFLAGS='-ffunction-sections -fdata-sections' + AC_TRY_COMPILE(, [int foo; + ], [ac_fdsections=yes], [ac_fdsections=no]) + if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS="$ac_save_CXXFLAGS" + else + # this is the suspicious part + CXXFLAGS='' + fi + if test "$ac_fdsections" = "yes"; then + SECTION_FLAGS='-ffunction-sections -fdata-sections' + fi + AC_MSG_RESULT($ac_fdsections) + AC_LANG_RESTORE AC_SUBST(WERROR) - AC_SUBST(FMTFLAGS) + AC_SUBST(WFMT_FLAGS) + AC_SUBST(SECTION_FLAGS) ]) dnl -dnl Check to see what builtin math functions are supported +dnl Check to see if tricky linker opts can be used. +dnl +dnl Define SECTION_LDFLAGS='-Wl,--gc-sections' if possible +dnl GLIBCPP_CHECK_LINKER_FEATURES +AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [ + # All these tests are for C++; save the language and the compiler flags. + # Need to do this so that g++ won't try to link in libstdc++ + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS='-x c++ -Wl,--gc-sections' + + # Check for -Wl,--gc-sections + AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) + AC_TRY_RUN([ + int main(void) + { + try { throw 1; } + catch (...) { }; + return 0; + } + ], [ac_sectionLDflags=yes], [ac_sectionLFflags=no], [ac_sectionLDflags=yes]) + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + else + # this is the suspicious part + CFLAGS='' + fi + if test "$ac_sectionLDflags" = "yes"; then + SECTION_LDFLAGS='-Wl,--gc-sections' + fi + AC_MSG_RESULT($ac_sectionLDflags) + + AC_SUBST(SECTION_LDFLAGS) +]) + + dnl -dnl Define _GLIBCPP_HAS_BUILTIN_SINF if __builtin_sinf -dnl Define _GLIBCPP_HAS_BUILTIN_COSF if __builtin_cosf -dnl Define _GLIBCPP_HAS_BUILTIN_FABSF if __builtin_fabsf -dnl Define _GLIBCPP_HAS_BUILTIN_SQRTF if __builtin_sqrtf +dnl Check to see if the (math function) argument passed is +dnl 1) declared when using the c++ compiler +dnl 2) has "C" linkage dnl -dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT -AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [ - dnl Test for builtin math functions. - AC_MSG_CHECKING([for __builtin_sinf]) +dnl Define HAVE_CARGF etc if "cargf" is declared and links +dnl +dnl argument 1 is name of function to check +dnl +dnl ASSUMES argument is a math function with ONE parameter +dnl +dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1 +AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for $1 declaration]) AC_TRY_COMPILE([#include ], - [float foo(void) { __builtin_sinf(0.0); }], - use_builtin_sinf=yes, use_builtin_sinf=no) - AC_MSG_RESULT($use_builtin_sinf) - if test $use_builtin_sinf = "yes"; then - AC_DEFINE(_GLIBCPP_HAS_BUILTIN_SINF) + [ $1(0);], + [use_$1=yes], [use_$1=no]) + AC_MSG_RESULT($use_$1) + AC_LANG_RESTORE + if test x$use_$1 = x"yes"; then + AC_CHECK_FUNCS($1) fi +]) + - AC_MSG_CHECKING([for __builtin_cosf]) +dnl +dnl Check to see if the (math function) argument passed is +dnl 1) declared when using the c++ compiler +dnl 2) has "C" linkage +dnl +dnl Define HAVE_CARGF etc if "cargf" is declared and links +dnl +dnl argument 1 is name of function to check +dnl +dnl ASSUMES argument is a math function with TWO parameters +dnl +dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2 +AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for $1 declaration]) AC_TRY_COMPILE([#include ], - [float foo(void) { __builtin_cosf(0.0); }], - use_builtin_cosf=yes, use_builtin_cosf=no) - AC_MSG_RESULT($use_builtin_cosf) - if test $use_builtin_cosf = "yes"; then - AC_DEFINE(_GLIBCPP_HAS_BUILTIN_COSF) + [ $1(0, 0);], + [use_$1=yes], [use_$1=no]) + AC_MSG_RESULT($use_$1) + AC_LANG_RESTORE + if test x$use_$1 = x"yes"; then + AC_CHECK_FUNCS($1) fi +]) + - AC_MSG_CHECKING([for __builtin_fabsf]) +dnl +dnl Check to see if the (math function) argument passed is +dnl 1) declared when using the c++ compiler +dnl 2) has "C" linkage +dnl +dnl Define HAVE_CARGF etc if "cargf" is declared and links +dnl +dnl argument 1 is name of function to check +dnl +dnl ASSUMES argument is a math function with THREE parameters +dnl +dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3 +AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for $1 declaration]) AC_TRY_COMPILE([#include ], - [float foo(void) { __builtin_fabsf(0.0); }], - use_builtin_fabsf=yes, use_builtin_fabsf=no) - AC_MSG_RESULT($use_builtin_fabsf) - if test $use_builtin_fabsf = "yes"; then - AC_DEFINE(_GLIBCPP_HAS_BUILTIN_FABSF) + [ $1(0, 0, 0);], + [use_$1=yes], [use_$1=no]) + AC_MSG_RESULT($use_$1) + AC_LANG_RESTORE + if test x$use_$1 = x"yes"; then + AC_CHECK_FUNCS($1) fi +]) + - AC_MSG_CHECKING([for __builtin_sqrtf]) +dnl +dnl Because the builtins are picky picky picky about the arguments they take, +dnl do an explict linkage tests here. +dnl Check to see if the (math function) argument passed is +dnl 1) declared when using the c++ compiler +dnl 2) has "C" linkage +dnl +dnl Define HAVE_CARGF etc if "cargf" is declared and links +dnl +dnl argument 1 is name of function to check +dnl +dnl ASSUMES argument is a math function with ONE parameter +dnl +dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1 +AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for $1 declaration]) AC_TRY_COMPILE([#include ], - [float foo(void) { __builtin_sqrtf(0.0); }], - use_builtin_sqrtf=yes, use_builtin_sqrtf=no) - AC_MSG_RESULT($use_builtin_sqrtf) - if test $use_builtin_sqrtf = "yes"; then - AC_DEFINE(_GLIBCPP_HAS_BUILTIN_SQRTF) + [ $1(0);], + [use_$1=yes], [use_$1=no]) + AC_MSG_RESULT($use_$1) + AC_LANG_RESTORE + if test x$use_$1 = x"yes"; then + AC_MSG_CHECKING([for $1 linkage]) + AC_TRY_LINK([#include ], + [ $1(0);], + [link_$1=yes], [link_$1=no]) + AC_MSG_RESULT($link_$1) + if test x$link_$1 = x"yes"; then + ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + AC_DEFINE_UNQUOTED(${ac_tr_func}) + fi + fi +]) + + +dnl +dnl Check to see what builtin math functions are supported +dnl +dnl check for __builtin_abs +dnl check for __builtin_fabsf +dnl check for __builtin_fabs +dnl check for __builtin_fabl +dnl check for __builtin_labs +dnl check for __builtin_sqrtf +dnl check for __builtin_sqrtl +dnl check for __builtin_fsqrt +dnl check for __builtin_sinf +dnl check for __builtin_sin +dnl check for __builtin_sinl +dnl check for __builtin_cosf +dnl check for __builtin_cos +dnl check for __builtin_cosl +dnl +dnl GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT +AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [ + dnl Test for builtin math functions. + dnl These are made in gcc/c-common.c + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs) + + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fsqrt) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl) + + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl) + + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos) + GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl) + + dnl There is, without a doubt, a more elegant way to have these + dnl names exported so that they won't be stripped out of acconfig.h by + dnl autoheader. I leave this as an exercise to somebody less frustrated + dnl than I.... please email the libstdc++ list if you can figure out a + dnl more elegant approach (see autoconf/acgen.m4 and specifically + dnl AC_CHECK_FUNC for things to steal.) + dummyvar=no + if test x$dummyvar = x"yes"; then + AC_DEFINE(HAVE___BUILTIN_ABS) + AC_DEFINE(HAVE___BUILTIN_LABS) + AC_DEFINE(HAVE___BUILTIN_COS) + AC_DEFINE(HAVE___BUILTIN_COSF) + AC_DEFINE(HAVE___BUILTIN_COSL) + AC_DEFINE(HAVE___BUILTIN_FABS) + AC_DEFINE(HAVE___BUILTIN_FABSF) + AC_DEFINE(HAVE___BUILTIN_FABSL) + AC_DEFINE(HAVE___BUILTIN_SIN) + AC_DEFINE(HAVE___BUILTIN_SINF) + AC_DEFINE(HAVE___BUILTIN_SINL) + AC_DEFINE(HAVE___BUILTIN_FSQRT) + AC_DEFINE(HAVE___BUILTIN_SQRTF) + AC_DEFINE(HAVE___BUILTIN_SQRTL) + fi +]) + + +dnl +dnl Check to see what the underlying c library or math library is like. +dnl These checks need to do two things: +dnl 1) make sure the name is declared when using the c++ compiler +dnl 2) make sure the name has "C" linkage +dnl This might seem like overkill but experience has shown that it's not... +dnl +dnl Define HAVE_CARGF etc if "cargf" is found. +dnl +dnl GLIBCPP_CHECK_MATH_SUPPORT +AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ + ac_test_CXXFLAGS="${CXXFLAGS+set}" + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS='-fno-builtins -D_GNU_SOURCE' + + dnl Check libm + AC_CHECK_LIB(m, sin, libm="-lm") + ac_save_LIBS="$LIBS" + LIBS="$LIBS $libm" + + dnl Although not math functions, needed and for some reason checked here. + AC_CHECK_FUNCS(strtof strtold) + + dnl Check to see if certain C math functions exist. + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnan) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finite) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysign) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass) + + dnl Check to see if basic C math functions have float versions. + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceilf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef) + + dnl Check to see if basic C math functions have long double versions. + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceill) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel) + + dnl Some runtimes have these functions with a preceding underscore. Please + dnl keep this sync'd with the one above. And if you add any new symbol, + dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h. + dnl Check to see if certain C math functions exist. + dnl Check to see if certain C math functions exist. + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnan) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finite) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysign) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincos) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fpclass) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_qfpclass) + + dnl Check to see if basic C math functions have float versions. + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinff) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2f) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceilf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10f) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modff) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosf) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitef) + + dnl Check to see if basic C math functions have long double versions. + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinfl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysignl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2l) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceill) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10l) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modfl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosl) + GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitel) + + LIBS="$ac_save_LIBS" + CXXFLAGS="$ac_save_CXXFLAGS" +]) + + +dnl +dnl Check to see if there is native support for complex +dnl +dnl Don't compile bits in math/* if native support exits. +dnl +dnl Define USE_COMPLEX_LONG_DOUBLE etc if "cargf" is found. +dnl +dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT +AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ + dnl Check for complex versions of math functions of platform. + AC_CHECK_HEADERS([complex.h]) + AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \ + clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \ + ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf copysignf) + + dnl Compile the long double complex functions only if the function + dnl provides the non-complex long double functions that are needed. + dnl Currently this includes copysignl and atan2l, which should be + dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. + USE_COMPLEX_LONG_DOUBLE=no + if test x$ac_cv_func_atan2l = x"yes" \ + && test x$ac_cv_func_copysignl = x"yes"; then + USE_COMPLEX_LONG_DOUBLE=yes + AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \ + csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l) fi + + AC_SUBST(USE_COMPLEX_LONG_DOUBLE) ]) @@ -284,7 +675,7 @@ dnl dnl GLIBCPP_CHECK_CPU AC_DEFUN(GLIBCPP_CHECK_CPU, [ AC_MSG_CHECKING([for cpu primitives directory]) - CPUFLAGS= + CPU_FLAGS= case "$target_cpu" in alpha*) cpu_include_dir="config/cpu/alpha" @@ -300,7 +691,7 @@ AC_DEFUN(GLIBCPP_CHECK_CPU, [ ;; powerpc | rs6000) cpu_include_dir="config/cpu/powerpc" - CPUFLAGS='-mcpu=powerpc' + CPU_FLAGS='-mcpu=powerpc' ;; sparc64 | ultrasparc) cpu_include_dir="config/cpu/sparc/sparc64" @@ -314,7 +705,7 @@ AC_DEFUN(GLIBCPP_CHECK_CPU, [ esac AC_MSG_RESULT($cpu_include_dir) AC_SUBST(cpu_include_dir) - AC_SUBST(CPUFLAGS) + AC_SUBST(CPU_FLAGS) ]) @@ -470,109 +861,94 @@ AC_DEFUN(GLIBCPP_CHECK_CTYPE, [ dnl -dnl Check to see what the underlying c library or math library is like. -dnl -dnl Define HAVE_CARGF etc if "cargf" is found. -dnl -dnl GLIBCPP_CHECK_MATH_SUPPORT -AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ - AC_CHECK_LIB(m, sin, libm="-lm") - save_LIBS="$LIBS" - LIBS="$LIBS $libm" - - dnl Check for complex versions of math functions of platform. - AC_CHECK_HEADERS([complex.h]) - AC_REPLACE_MATHFUNCS(ccos ccosf ccosh ccoshf cexp cexpf c_log c_logf \ - clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt csqrtf \ - ctan ctanf ctanh ctanhf \ - carg cargf nan hypot hypotf atan2f expf copysignf) - - dnl We compile the long double complex functions only if the function - dnl provides the non-complex long double functions. - USE_LONG_DOUBLE=no - AC_CHECK_FUNC(copysignl, - USE_LONG_DOUBLE=yes - AC_REPLACE_MATHFUNCS(ccoshl ccosl cexpl cpowl csinhl csinl \ - csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l)) - AC_SUBST(USE_LONG_DOUBLE) - - dnl Check to see if basic C math functions have faster float versions. - AC_CHECK_FUNCS(modf isnan isnanf isnanl isinf isinff isinfl copysign \ - copysignl cosf coshf logf log10f powf sinf sinhf sqrtf tanf tanhf \ - strtof strtold fabsf sincos sincosf sincosl finite finite fqfinite \ - fpclass qfpclass) - -#Some runtimes have these functions with a preceding underscore. Please -# keep this sync'd with the one above. And if you add any new symbol, -# please add the corresponding block in the @BOTTOM@ section of -# acconfig.h. -AC_CHECK_FUNCS(_modf _isnan _isnanf _isnanl _isinf _isinff _isinfl _copysign \ -_copysignl _cosf _coshf _logf _log10f _powf _sinf _sinhf _sqrtf _tanf _tanhf \ -_strtof _strtold _fabsf _sincos _sincosf _sincosl _finite _finitef _qfinite \ -_fpclass _qfpclass) - -LIBS="$save_LIBS" -]) - - -dnl dnl Check to see if this target can enable the wchar_t parts of libstdc++. dnl dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h -dnl Define _GLIBCPP_HAS_WCHAR_MIN_MAX if WCHAR_MIN, WCHAR_MAX in wchar.h dnl dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [ - AC_CHECK_HEADER(wchar.h,[ - dnl Test wchar.h for mbstate_t, which is needed for char_traits and others. - AC_MSG_CHECKING([for native mbstate_t]) - AC_TRY_COMPILE([#include ], - [mbstate_t teststate;], - use_native_mbstatet=yes, use_native_mbstatet=no) - AC_MSG_RESULT($use_native_mbstatet) - if test $use_native_mbstatet = "no"; then - AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T) - fi + + dnl Sanity check for existence of ISO C9X headers for extended encoding. + AC_CHECK_HEADER(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no) + AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no) + + dnl Only continue checking if the ISO C9X headers exist. + if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then + + dnl Test wchar.h for mbstate_t, which is needed for char_traits and others. + AC_MSG_CHECKING([for mbstate_t]) + AC_TRY_COMPILE([#include ], + [mbstate_t teststate;], + use_native_mbstatet=yes, use_native_mbstatet=no) + AC_MSG_RESULT($use_native_mbstatet) + if test x"$use_native_mbstatet" = xno; then + AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T) + fi - dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before - dnl numeric_limits can instantiate type_traits - AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX]) - AC_TRY_COMPILE([#include ], - [int i = WCHAR_MIN; int j = WCHAR_MAX;], - has_wchar_minmax=yes, has_wchar_minmax=no) - AC_MSG_RESULT($has_wchar_minmax) - if test $has_wchar_minmax = "yes"; then - AC_DEFINE(_GLIBCPP_HAS_WCHAR_MIN_MAX) - fi + dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before + dnl numeric_limits can instantiate type_traits + AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX]) + AC_TRY_COMPILE([#include ], + [int i = WCHAR_MIN; int j = WCHAR_MAX;], + has_wchar_minmax=yes, has_wchar_minmax=no) + AC_MSG_RESULT($has_wchar_minmax) - # Test wchar.h for WEOF, which is what we use to determine whether - # to specialize for wchar_t or not. - AC_MSG_CHECKING([for WEOF]) - AC_TRY_COMPILE([ - #include - #include ], - [wint_t i = WEOF;], - has_weof=yes, has_weof=no) - AC_MSG_RESULT($has_weof) - - dnl Tests for wide character functions. - AC_REPLACE_STRINGFUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset) - AC_SUBST(libinst_wstring_la) - - AC_MSG_CHECKING([for wide character support]) - if test $has_weof = "yes" && test $has_wchar_minmax = "yes"; then - libinst_wstring_la="libinst-wstring.la" - AC_DEFINE(_GLIBCPP_USE_WCHAR_T) - AC_MSG_RESULT(ok) + dnl Test wchar.h for WEOF, which is what we use to determine whether + dnl to specialize for char_traits or not. + AC_MSG_CHECKING([for WEOF]) + AC_TRY_COMPILE([ + #include + #include ], + [wint_t i = WEOF;], + has_weof=yes, has_weof=no) + AC_MSG_RESULT($has_weof) + + dnl Tests for wide character functions used in char_traits. + AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset, ac_wfuncs=yes, ac_wfuncs=no) + + AC_MSG_CHECKING([for ISO C9X wchar_t support]) + if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes && test x"$ac_wfuncs" = xyes; then + ac_isoC9X_wchar_t=yes + else + ac_isoC9X_wchar_t=no + fi + AC_MSG_RESULT($ac_isoC9X_wchar_t) + + dnl Use iconv for wchar_t to char conversions. As such, check for + dnl X/Open Portability Guide, version 2 features (XPG2). + AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no) + AC_CHECK_FUNCS(iconv_open iconv_close iconv, ac_XPG2funcs=yes, ac_XPG2funcs=no) + + AC_MSG_CHECKING([for XPG2 wchar_t support]) + if test x"$ac_has_iconv_h" = xyes && test x"$ac_XPG2funcs" = xyes; then + ac_XPG2_wchar_t=yes + else + ac_XPG2_wchar_t=no + fi + AC_MSG_RESULT($ac_XPG2_wchar_t) + + dnl At the moment, only enable wchar_t specializations if all the + dnl above support is present. + dnl 2000-07-07-bkoz-hack-xxx +# ac_isoC9X_wchar_t=no + dnl 2000-07-07-bkoz-hack-xxx + + AC_MSG_CHECKING([for enabled wchar_t specializations]) + if test x"$ac_isoC9X_wchar_t" = xyes && test x"$ac_XPG2_wchar_t" = xyes; then + libinst_wstring_la="libinst-wstring.la" + AC_DEFINE(_GLIBCPP_USE_WCHAR_T) + AC_MSG_RESULT("yes") + else + libinst_wstring_la="" + AC_MSG_RESULT("no") + fi + AC_SUBST(libinst_wstring_la) + else - libinst_wstring_la="" - AC_MSG_RESULT("not specializing for wchar_t") + AC_MSG_WARN([ not found]) + AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T) fi - ],[ - AC_MSG_WARN([ not found]) - AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T) - ]) ]) @@ -582,9 +958,33 @@ dnl __complex__ float support. dnl dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy. dnl -dnl GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT -AC_DEFUN(GLIBCPP_CHECK_COMPLEX_FLOAT_SUPPORT, [ +dnl Check to see if this version of GNU C++ is afflicted by bugs in +dnl __complex__ support.Check for buggy __complex__ that will cause ICE in +dnl gcc-2.95.x when using the library, unless we define the default copy +dnl ctor in the specializations of complex<>. +dnl +dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy. +dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT +AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [ AC_REQUIRE([AC_PROG_CXX]) + + AC_MSG_CHECKING([for GNU C++ __complex__ support]) + AC_CACHE_VAL(glibcpp_cv_complex, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \ + dcomplex f(const dcomplex& x) { return dcomplex(x); }], \ + [ dcomplex x; f(x); ], + glibcpp_cv_complex=ok, + glibcpp_cv_complex=buggy + ) + AC_LANG_RESTORE + ]) + AC_MSG_RESULT($glibcpp_cv_complex) + if test $glibcpp_cv_complex = buggy; then + AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX) + fi + AC_MSG_CHECKING([for GNU C++ __complex__ float support]) AC_CACHE_VAL(glibcpp_cv_float_complex, [ AC_LANG_SAVE @@ -622,37 +1022,6 @@ EOB dnl -dnl -dnl Check to see if this version of GNU C++ is afflicted by bugs in -dnl __complex__ support.Check for buggy __complex__ that will cause ICE in -dnl gcc-2.95.x when using the library, unless we define the default copy -dnl ctor in the specializations of complex<>. -dnl -dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy. -dnl -dnl GLIBCPP_CHECK_COMPLEX_SUPPORT -AC_DEFUN(GLIBCPP_CHECK_COMPLEX_SUPPORT, [ - AC_REQUIRE([AC_PROG_CXX]) - AC_MSG_CHECKING([for GNU C++ __complex__ support]) - AC_CACHE_VAL(glibcpp_cv_complex, [ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \ - dcomplex f(const dcomplex& x) { return dcomplex(x); }], \ - [ dcomplex x; f(x); ], - glibcpp_cv_complex=ok, - glibcpp_cv_complex=buggy - ) - AC_LANG_RESTORE - ]) - AC_MSG_RESULT($glibcpp_cv_complex) - if test $glibcpp_cv_complex = buggy; then - AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX) - fi -]) - - -dnl dnl Check for special debugging mode; not for production use. dnl dnl GLIBCPP_ENABLE_DEBUG @@ -679,13 +1048,13 @@ enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)dnl dnl Option parsed, now set things appropriately case "$enable_debug" in yes) - DEBUGFLAGS='-O0 -ggdb' + DEBUG_FLAGS='-O0 -ggdb' ;; no) - DEBUGFLAGS='-g' + DEBUG_FLAGS='-g' ;; esac -AC_SUBST(DEBUGFLAGS) +AC_SUBST(DEBUG_FLAGS) ]) @@ -800,45 +1169,73 @@ AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [ dnl Check if a valid thread package case x${enable_cstdio_flag} in - xlibio | x | xno | xnone | xyes) - # default - CSTDIO_H=c_io_libio.h - CSTDIO_CC=c_io_libio.cc - AC_MSG_RESULT(libio) - - # see if we are on a system with libio native (ie, linux) - AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no) - if test $has_libio = "yes"; then - BUILD_LIBIO_INCLUDE= - need_libio=no - else - BUILD_LIBIO_INCLUDE='-I../libio' - need_libio=yes - fi - AC_SUBST(BUILD_LIBIO_INCLUDE) - - # see if the _G_config.h header needs to be built. - # NB: This replaces the _G_CONFIG_H machinery in libio-v2 - AC_CHECK_HEADER(_G_config.h, has_gconf_h=yes, has_gconf_h=no) - AM_CONDITIONAL(GLIBCPP_NEED_LIBIO_CONFIG_H, test "$has_gconf_h" = no) - ;; - xwince) - CSTDIO_H=c_io_wince.h - CSTDIO_CC=c_io_wince.cc - AC_MSG_RESULT(wince) - - need_libio=no - BUILD_LIBIO_INCLUDE= - AC_SUBST(BUILD_LIBIO_INCLUDE) - ;; - *) - echo "$enable_cstdio is an unknown io package" 1>&2 - exit 1 - ;; + xlibio | x | xno | xnone | xyes) + # default + CSTDIO_H=config/c_io_libio.h + CSTDIO_CC=config/c_io_libio.cc + AC_MSG_RESULT(libio) + + # see if we are on a system with libio native (ie, linux) + AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no) + + # Need to check and see what version of glibc is being used. If + # it's not glibc-2.2 or higher, then we'll need to go ahead and + # compile most of libio for linux systems. + if test x$has_libio = x"yes"; then + case "$target" in + *-*-linux*) + AC_MSG_CHECKING([for glibc version >= 2.2]) + AC_EGREP_CPP([ok], [ + #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) + ok + #endif + ], glibc_satisfactory=yes, glibc_satisfactory=no) + AC_MSG_RESULT($glibc_satisfactory) + ;; + esac + + if test x$glibc_satisfactory = x"yes"; then + BUILD_LIBIO_INCLUDE= + need_libio=no + need_xtra_libio=no + need_wlibio=no + else + BUILD_LIBIO_INCLUDE='-I../libio' + need_libio=yes + need_xtra_libio=yes + # bkoz XXX need to add checks to enable this + need_wlibio=yes + fi + + # Using libio, but doesn't exist on the target system. . . + else + BUILD_LIBIO_INCLUDE='-I../libio' + need_libio=yes + need_xtra_libio=no + # bkoz XXX need to add checks to enable this + need_wlibio=no + fi + ;; + + xwince) + CSTDIO_H=config/c_io_wince.h + CSTDIO_CC=config/c_io_wince.cc + AC_MSG_RESULT(wince) + + need_libio=no + BUILD_LIBIO_INCLUDE= + AC_SUBST(BUILD_LIBIO_INCLUDE) + ;; + *) + echo "$enable_cstdio is an unknown io package" 1>&2 + exit 1 + ;; esac - AC_SUBST(CSTDIO_H) - AC_SUBST(CSTDIO_CC) + AC_LINK_FILES($CSTDIO_H, bits/c++io.h) + AC_LINK_FILES($CSTDIO_CC, src/c++io.cc) AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes) + AM_CONDITIONAL(GLIBCPP_NEED_XTRA_LIBIO, test "$need_xtra_libio" = yes) + AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes) ]) @@ -891,7 +1288,7 @@ AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ ;; posix | pthreads) THREADS=posix - case "$host" in + case "$target" in *-*-linux*) ;; esac @@ -931,6 +1328,7 @@ AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_SUBST(THREADDEPS) AC_SUBST(THREADOBJS) AC_SUBST(THREADSPEC) + AC_LINK_FILES(config/$THREADH, bits/c++threads.h) ]) @@ -949,7 +1347,6 @@ dnl GLIBCPP_ENABLE_LONG_LONG AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl - AC_MSG_CHECKING([for enabled long long]) AC_ARG_ENABLE(long-long, changequote(<<, >>)dnl <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT], @@ -965,11 +1362,12 @@ AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl AC_CHECK_FUNC(strtoll,,ac_strtoll=no) AC_CHECK_FUNC(strtoull,,ac_strtoull=no) + AC_MSG_CHECKING([for enabled long long]) if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then - enable_long_long=no; - fi; unset ac_ll - + enable_long_long=no; + fi; AC_MSG_RESULT($enable_long_long) + dnl Option parsed, now set things appropriately case "$enable_long_long" in yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG) @@ -1009,7 +1407,7 @@ AC_MSG_RESULT($enable_cshadow_headers) dnl Option parsed, now set things appropriately case "$enable_cshadow_headers" in yes) - CSHADOWFLAGS="-D_ISOC9X_SOURCE" + CSHADOWFLAGS="-D_GNU_SOURCE" CSHADOW_INCLUDES=" -I$srcdir/shadow -I$blddir/cshadow" ;; no) @@ -1077,3 +1475,70 @@ AC_DEFUN(AC_REPLACE_STRINGFUNCS, [AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"]) AC_SUBST(LIBSTRINGOBJS)dnl ]) + + +dnl This macro searches for a GNU version of make. If a match is found, the +dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is +dnl set to "#". This is useful for including a special features in a Makefile, +dnl which cannot be handled by other versions of make. The variable +dnl _cv_gnu_make_command is set to the command to invoke GNU make if it exists, +dnl the empty string otherwise. +dnl +dnl Here is an example of its use: +dnl +dnl Makefile.in might contain: +dnl +dnl # A failsafe way of putting a dependency rule into a makefile +dnl $(DEPEND): +dnl $(CC) -MM $(srcdir)/*.c > $(DEPEND) +dnl +dnl @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND))) +dnl @ifGNUmake@ include $(DEPEND) +dnl @ifGNUmake@ endif +dnl +dnl Then configure.in would normally contain: +dnl +dnl CHECK_GNU_MAKE() +dnl AC_OUTPUT(Makefile) +dnl +dnl Then perhaps to cause gnu make to override any other make, we could do +dnl something like this (note that GNU make always looks for GNUmakefile first): +dnl +dnl if ! test x$_cv_gnu_make_command = x ; then +dnl mv Makefile GNUmakefile +dnl echo .DEFAULT: > Makefile ; +dnl echo \ $_cv_gnu_make_command \$@ >> Makefile; +dnl fi +dnl +dnl Then, if any (well almost any) other make is called, and GNU make also +dnl exists, then the other make wraps the GNU make. +dnl +dnl @author John Darrington +dnl @version $Id: acinclude.m4,v 1.42 2000/07/17 18:17:33 pme Exp $ +dnl +dnl #### Changes for libstdc++-v3: reformatting and linewrapping; prepending +dnl #### GLIBCPP_ to the macro name; adding the :-make fallback in the +dnl #### conditional's subshell (" --version" is not a command). +dnl #### -pme +AC_DEFUN( + GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command, + _cv_gnu_make_command='' ; +dnl Search all the common names for GNU make + for a in "${MAKE:-make}" make gmake gnumake ; do + if ( $a --version 2> /dev/null | grep -q GNU ) ; then + _cv_gnu_make_command=$a ; + break; + fi + done ; + ) ; +dnl If there was a GNU version, then set @ifGNUmake@ to the empty +dnl string, '#' otherwise + if test "x$_cv_gnu_make_command" != "x" ; then + ifGNUmake='' ; + else + ifGNUmake='#' ; + fi + AC_SUBST(ifGNUmake) +]) + +