diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rwxr-xr-x | unix/configure | 260 | ||||
-rw-r--r-- | unix/configure.in | 16 | ||||
-rw-r--r-- | unix/tcl.m4 | 14 |
4 files changed, 286 insertions, 12 deletions
@@ -1,3 +1,11 @@ +2005-05-06 Jeff Hobbs <jeffh@ActiveState.com> + + * unix/configure: regen + * unix/configure.in: add AC_C_BIGENDIAN check and pkg-config xft + checks to extend xft search. + * unix/tcl.m4: correct Solaris 10 (5.10) check and add support for + x86_64 Solaris cc builds. + 2005-04-28 Donal K. Fellows <donal.k.fellows@manchester.ac.uk> * macosx/tkMacOSXNotify.c (TkMacOSXWaitForEvent): Fix for typo in diff --git a/unix/configure b/unix/configure index 2bfc72b..9c770dd 100755 --- a/unix/configure +++ b/unix/configure @@ -5936,7 +5936,8 @@ _ACEOF UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; - SunOS-5.[0-6]*) + SunOS-5.[0-6]) + # Careful to not let 5.10+ fall into this case # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -5972,7 +5973,6 @@ _ACEOF fi ;; SunOS-5*) - # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -6013,9 +6013,18 @@ echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;} LDFLAGS_ARCH="-xarch=v9" fi fi + elif test "$arch" = "amd64 i386" ; then + if test "$GCC" = "yes" ; then + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5 +echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;} + else + do64bit_ok=yes + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64" + fi else - { echo "$as_me:$LINENO: WARNING: 64bit mode only supported sparcv9 system" >&5 -echo "$as_me: WARNING: 64bit mode only supported sparcv9 system" >&2;} + { echo "$as_me:$LINENO: WARNING: 64bit mode not supported for $arch" >&5 +echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;} fi fi @@ -7225,6 +7234,241 @@ echo "${ECHO_T}no" >&6 fi fi +#-------------------------------------------------------------------- +# Check endianness because we can optimize some operations +#-------------------------------------------------------------------- + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/param.h> + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/param.h> + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + #------------------------------------------------------------------------ # If Tcl and Tk are installed in different places, adjust the library # search path to reflect this. @@ -8577,8 +8821,12 @@ XFT_LIBS="" if test "$enable_xft" = "yes" ; then echo "$as_me:$LINENO: checking for xft configuration" >&5 echo $ECHO_N "checking for xft configuration... $ECHO_C" >&6 - XFT_CFLAGS=`xft-config --cflags` || enable_xft="no" - XFT_LIBS=`xft-config --libs` || enable_xft="no" + XFT_CFLAGS=`xft-config --cflags 2>/dev/null` || enable_xft="no" + XFT_LIBS=`xft-config --libs 2>/dev/null` || enable_xft="no" + if test "$enable_xft" = "no" ; then + XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || enable_xft="no" + XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || enable_xft="no" + fi if test "$enable_xft" = "yes" ; then echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 diff --git a/unix/configure.in b/unix/configure.in index 3c06656..6b9f99e 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,7 +3,7 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tk installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.99 2005/01/10 18:57:41 jenglish Exp $ +# RCS: @(#) $Id: configure.in,v 1.100 2005/05/07 00:28:17 hobbs Exp $ AC_INIT([tk],[8.5]) AC_PREREQ(2.57) @@ -109,6 +109,12 @@ SC_TCL_EARLY_FLAGS SC_TCL_64BIT_FLAGS +#-------------------------------------------------------------------- +# Check endianness because we can optimize some operations +#-------------------------------------------------------------------- + +AC_C_BIGENDIAN + #------------------------------------------------------------------------ # If Tcl and Tk are installed in different places, adjust the library # search path to reflect this. @@ -295,8 +301,12 @@ XFT_CFLAGS="" XFT_LIBS="" if test "$enable_xft" = "yes" ; then AC_MSG_CHECKING([for xft configuration]) - XFT_CFLAGS=`xft-config --cflags` || enable_xft="no" - XFT_LIBS=`xft-config --libs` || enable_xft="no" + XFT_CFLAGS=`xft-config --cflags 2>/dev/null` || enable_xft="no" + XFT_LIBS=`xft-config --libs 2>/dev/null` || enable_xft="no" + if test "$enable_xft" = "no" ; then + XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || enable_xft="no" + XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || enable_xft="no" + fi if test "$enable_xft" = "yes" ; then AC_MSG_RESULT([ok]) else diff --git a/unix/tcl.m4 b/unix/tcl.m4 index 778beee..bbed997 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -1565,7 +1565,8 @@ dnl AC_CHECK_TOOL(AR, ar) UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' TCL_LIB_VERSIONS_OK=nodots ;; - SunOS-5.[[0-6]]*) + SunOS-5.[[0-6]]) + # Careful to not let 5.10+ fall into this case # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -1594,7 +1595,6 @@ dnl AC_CHECK_TOOL(AR, ar) fi ;; SunOS-5*) - # Note: If _REENTRANT isn't defined, then Solaris # won't define thread-safe library routines. @@ -1627,8 +1627,16 @@ dnl AC_CHECK_TOOL(AR, ar) LDFLAGS_ARCH="-xarch=v9" fi fi + elif test "$arch" = "amd64 i386" ; then + if test "$GCC" = "yes" ; then + AC_MSG_WARN([64bit mode not supported with GCC on $system]) + else + do64bit_ok=yes + CFLAGS="$CFLAGS -xarch=amd64" + LDFLAGS="$LDFLAGS -xarch=amd64" + fi else - AC_MSG_WARN([64bit mode only supported sparcv9 system]) + AC_MSG_WARN([64bit mode not supported for $arch]) fi fi |