diff options
-rwxr-xr-x | unix/configure | 53 | ||||
-rw-r--r-- | unix/tcl.m4 | 40 |
2 files changed, 53 insertions, 40 deletions
diff --git a/unix/configure b/unix/configure index dae7e63..aae9226 100755 --- a/unix/configure +++ b/unix/configure @@ -4878,43 +4878,52 @@ fi if test "$tcl_strtod" = 1; then echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6 echo "configure:4881: checking for Solaris2.4/Tru64 strtod bugs" >&5 - if test "$cross_compiling" = yes; then - tcl_ok=0 + if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test "$cross_compiling" = yes; then + tcl_cv_strtod_buggy=0 else cat > conftest.$ac_ext <<EOF -#line 4886 "configure" +#line 4890 "configure" #include "confdefs.h" - extern double strtod(); - int main() - { - char *string = "NaN", *spaceString = " "; - char *term; - double value; - value = strtod(string, &term); - if ((term != string) && (term[-1] == 0)) { - exit(1); + extern double strtod(); + int main() { + char *infString="Inf", *nanString="NaN", *spaceString=" "; + char *term; + double value; + value = strtod(infString, &term); + if ((term != infString) && (term[-1] == 0)) { + exit(1); + } + value = strtod(nanString, &term); + if ((term != nanString) && (term[-1] == 0)) { + exit(1); + } + value = strtod(spaceString, &term); + if (term == (spaceString+1)) { + exit(1); + } + exit(0); } - value = strtod(spaceString, &term); - if (term == (spaceString+1)) { - exit(1); - } - exit(0); - } EOF -if { (eval echo configure:4906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - tcl_ok=1 + tcl_cv_strtod_buggy=1 else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - tcl_ok=0 + tcl_cv_strtod_buggy=0 fi rm -fr conftest* fi - if test "$tcl_ok" = 1; then +fi + + if test "$tcl_cv_strtod_buggy" = 1; then echo "$ac_t""ok" 1>&6 else echo "$ac_t""buggy" 1>&6 diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 8af47d8..0816067 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -2079,24 +2079,28 @@ AC_DEFUN(SC_BUGGY_STRTOD, [ AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0) if test "$tcl_strtod" = 1; then AC_MSG_CHECKING([for Solaris2.4/Tru64 strtod bugs]) - AC_TRY_RUN([ - extern double strtod(); - int main() - { - char *string = "NaN", *spaceString = " "; - char *term; - double value; - value = strtod(string, &term); - if ((term != string) && (term[-1] == 0)) { - exit(1); - } - value = strtod(spaceString, &term); - if (term == (spaceString+1)) { - exit(1); - } - exit(0); - }], tcl_ok=1, tcl_ok=0, tcl_ok=0) - if test "$tcl_ok" = 1; then + AC_CACHE_VAL(tcl_cv_strtod_buggy,[ + AC_TRY_RUN([ + extern double strtod(); + int main() { + char *infString="Inf", *nanString="NaN", *spaceString=" "; + char *term; + double value; + value = strtod(infString, &term); + if ((term != infString) && (term[-1] == 0)) { + exit(1); + } + value = strtod(nanString, &term); + if ((term != nanString) && (term[-1] == 0)) { + exit(1); + } + value = strtod(spaceString, &term); + if (term == (spaceString+1)) { + exit(1); + } + exit(0); + }], tcl_cv_strtod_buggy=1, tcl_cv_strtod_buggy=0, tcl_cv_strtod_buggy=0)]) + if test "$tcl_cv_strtod_buggy" = 1; then AC_MSG_RESULT(ok) else AC_MSG_RESULT(buggy) |