At Thu, 8 May 2008 15:53:41 +0200, Thomas Klausner wrote: > > On Wed, May 07, 2008 at 02:27:04PM -0400, Lowry, Zach B CTR USAF AFMC > AEDC/ATA wrote: > > The attached patch fixes a failure for m4 in 2008Q1 on Solaris 10. > > Solaris 10's math.h is weird and needs special handling in GNU m4 [0]. > > This fix should be committed to pkgsrc-current for devel/m4 and possibly > > other GNU packages. > > Please send me the patch for inclusion into pkgsrc -- it wasn't > attached. > > Thanks, > Thomas Here's a patch for devel/m4 in 2008Q1 (m4-1.4.11) to fix that problem, based upon Eric Blake's work. cf. http://lists.gnu.org/archive/html/bug-m4/2008-04/msg00085.html --- Makefile.in.orig 2008-04-02 21:45:30.000000000 +0900 +++ Makefile.in 2008-07-05 05:58:39.000000000 +0900 @@ -386,12 +386,14 @@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_ROUND = @REPLACE_ROUND@ --- configure.orig 2008-04-02 21:45:03.000000000 +0900 +++ configure 2008-07-05 06:46:20.000000000 +0900 @@ -790,8 +790,10 @@ REPLACE_FLOORL REPLACE_FREXP REPLACE_FREXPL +REPLACE_HUGE_VAL REPLACE_ISFINITE REPLACE_LDEXPL +REPLACE_NAN REPLACE_ROUND REPLACE_ROUNDF REPLACE_ROUNDL @@ -7366,8 +7368,10 @@ REPLACE_FLOORL=0; REPLACE_FREXP=0; REPLACE_FREXPL=0; + REPLACE_HUGE_VAL=0; REPLACE_ISFINITE=0; REPLACE_LDEXPL=0; + REPLACE_NAN=0; REPLACE_ROUND=0; REPLACE_ROUNDF=0; REPLACE_ROUNDL=0; @@ -16379,6 +16383,119 @@ + { echo "$as_me:$LINENO: checking whether NAN macro works" >&5 +echo $ECHO_N "checking whether NAN macro works... $ECHO_C" >&6; } +if test "${gl_cv_header_math_nan_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <math.h> +int +main () +{ +/* Solaris 10 has a broken definition of NAN. Other platforms + fail to provide NAN, or provide it only in C99 mode; this + test only needs to fail when NAN is provided but wrong. */ + float f = 1.0f; +#ifdef NAN + f = NAN; +#endif + return f == 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gl_cv_header_math_nan_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gl_cv_header_math_nan_works=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gl_cv_header_math_nan_works" >&5 +echo "${ECHO_T}$gl_cv_header_math_nan_works" >&6; } + if test $gl_cv_header_math_nan_works = no; then + REPLACE_NAN=1 + fi + { echo "$as_me:$LINENO: checking whether HUGE_VAL works" >&5 +echo $ECHO_N "checking whether HUGE_VAL works... $ECHO_C" >&6; } +if test "${gl_cv_header_math_huge_val_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <math.h> +int +main () +{ +/* Solaris 10 has a broken definition of HUGE_VAL. */ + double d = HUGE_VAL; + return d == 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gl_cv_header_math_huge_val_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gl_cv_header_math_huge_val_works=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gl_cv_header_math_huge_val_works" >&5 +echo "${ECHO_T}$gl_cv_header_math_huge_val_works" >&6; } + if test $gl_cv_header_math_huge_val_works = no; then + REPLACE_HUGE_VAL=1 + fi @@ -27058,8 +27175,10 @@ REPLACE_FLOORL!$REPLACE_FLOORL$ac_delim REPLACE_FREXP!$REPLACE_FREXP$ac_delim REPLACE_FREXPL!$REPLACE_FREXPL$ac_delim +REPLACE_HUGE_VAL!$REPLACE_HUGE_VAL$ac_delim REPLACE_ISFINITE!$REPLACE_ISFINITE$ac_delim REPLACE_LDEXPL!$REPLACE_LDEXPL$ac_delim +REPLACE_NAN!$REPLACE_NAN$ac_delim REPLACE_ROUND!$REPLACE_ROUND$ac_delim REPLACE_ROUNDF!$REPLACE_ROUNDF$ac_delim REPLACE_ROUNDL!$REPLACE_ROUNDL$ac_delim @@ -27081,7 +27200,7 @@ GNULIB_FCHDIR!$GNULIB_FCHDIR$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 99; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 --- doc/Makefile.in.orig 2008-04-02 21:45:28.000000000 +0900 +++ doc/Makefile.in 2008-07-05 05:57:57.000000000 +0900 @@ -380,12 +380,14 @@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_ROUND = @REPLACE_ROUND@ --- examples/Makefile.in.orig 2008-04-02 21:45:28.000000000 +0900 +++ examples/Makefile.in 2008-07-05 05:59:06.000000000 +0900 @@ -355,12 +355,14 @@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_ROUND = @REPLACE_ROUND@ --- lib/Makefile.am.orig 2008-04-02 09:56:18.000000000 +0900 +++ lib/Makefile.am 2008-07-05 06:01:46.000000000 +0900 @@ -582,8 +582,10 @@ -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \ -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \ -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \ + -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \ -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \ -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \ + -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \ -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \ -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \ -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \ --- lib/Makefile.in.orig 2008-04-02 21:45:29.000000000 +0900 +++ lib/Makefile.in 2008-07-05 06:00:27.000000000 +0900 @@ -399,11 +399,13 @@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_ROUND = @REPLACE_ROUND@ @@ -1083,8 +1085,10 @@ -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \ -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \ -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \ + -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \ -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \ -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \ + -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \ -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \ -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \ -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \ --- lib/math.in.h.orig 2008-04-01 11:59:24.000000000 +0900 +++ lib/math.in.h 2008-07-05 06:07:06.000000000 +0900 @@ -34,8 +34,11 @@ /* POSIX allows platforms that don't support NAN. But all major machines in the past 15 years have supported something close to - IEEE NaN, so we define this unconditionally. */ -#ifndef NAN + IEEE NaN, so we define this unconditionally. We also must define + it on platforms like Solaris 10, where NAN is present but defined + as a function pointer rather than a floating point constant. */ +#if !defined NAN || @REPLACE_NAN@ +# undef NAN /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ # ifdef __DECC static float @@ -50,6 +53,13 @@ # endif #endif +/* Solaris 10 defines HUGE_VAL, but as a function pointer rather + than a floating point constant. */ +#if @REPLACE_HUGE_VAL@ +# undef HUGE_VAL +# define HUGE_VAL (1.0 / 0.0) +#endif + /* Write x as x = mantissa * 2^exp where --- m4/math_h.m4.orig 2008-01-27 08:05:11.000000000 +0900 +++ m4/math_h.m4 2008-07-05 06:04:14.000000000 +0900 @@ -8,6 +8,31 @@ [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([math.h]) + AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]], + [[/* Solaris 10 has a broken definition of NAN. Other platforms + fail to provide NAN, or provide it only in C99 mode; this + test only needs to fail when NAN is provided but wrong. */ + float f = 1.0f; +#ifdef NAN + f = NAN; +#endif + return f == 0;]])], + [gl_cv_header_math_nan_works=yes], + [gl_cv_header_math_nan_works=no])]) + if test $gl_cv_header_math_nan_works = no; then + REPLACE_NAN=1 + fi + AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]], + [[/* Solaris 10 has a broken definition of HUGE_VAL. */ + double d = HUGE_VAL; + return d == 0;]])], + [gl_cv_header_math_huge_val_works=yes], + [gl_cv_header_math_huge_val_works=no])]) + if test $gl_cv_header_math_huge_val_works = no; then + REPLACE_HUGE_VAL=1 + fi ]) AC_DEFUN([gl_MATH_MODULE_INDICATOR], @@ -56,8 +81,10 @@ REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL]) REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP]) REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL]) + REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL]) REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) + REPLACE_NAN=0; AC_SUBST([REPLACE_NAN]) REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND]) REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF]) REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL]) --- src/Makefile.in.orig 2008-04-02 21:45:29.000000000 +0900 +++ src/Makefile.in 2008-07-05 06:05:08.000000000 +0900 @@ -381,12 +381,14 @@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_ROUND = @REPLACE_ROUND@ --- tests/Makefile.in.orig 2008-04-02 21:45:30.000000000 +0900 +++ tests/Makefile.in 2008-07-05 06:05:56.000000000 +0900 @@ -695,12 +695,14 @@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_NAN = @REPLACE_NAN@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_ROUND = @REPLACE_ROUND@
Attachment:
pgpLbeE9FkRHX.pgp
Description: PGP signature