diff options
Diffstat (limited to 'unix/configure.in')
-rw-r--r-- | unix/configure.in | 570 |
1 files changed, 192 insertions, 378 deletions
diff --git a/unix/configure.in b/unix/configure.in index 29dc027..869fbaa 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -3,46 +3,16 @@ dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. -AC_INIT([tcl],[8.6]) -AC_PREREQ(2.59) - -dnl This is only used when included from macosx/configure.ac -m4_ifdef([SC_USE_CONFIG_HEADERS], [ - AC_CONFIG_HEADERS([tclConfig.h:../unix/tclConfig.h.in]) - AC_CONFIG_COMMANDS_PRE([DEFS="-DHAVE_TCL_CONFIG_H -imacros tclConfig.h"]) - AH_TOP([ - #ifndef _TCLCONFIG - #define _TCLCONFIG]) - AH_BOTTOM([ - /* Undef unused package specific autoheader defines so that we can - * include both tclConfig.h and tkConfig.h at the same time: */ - /* override */ #undef PACKAGE_NAME - /* override */ #undef PACKAGE_STRING - /* override */ #undef PACKAGE_TARNAME - #endif /* _TCLCONFIG */]) -]) +AC_INIT(../generic/tcl.h) +AC_PREREQ(2.13) -TCL_VERSION=8.6 +TCL_VERSION=8.4 TCL_MAJOR_VERSION=8 -TCL_MINOR_VERSION=6 -TCL_PATCH_LEVEL="b2" +TCL_MINOR_VERSION=4 +TCL_PATCH_LEVEL=".19" VERSION=${TCL_VERSION} #------------------------------------------------------------------------ -# Setup configure arguments for bundled packages -#------------------------------------------------------------------------ - -PKG_CFG_ARGS="$ac_configure_args ${PKG_CFG_ARGS}" - -if test -r "$cache_file" -a -f "$cache_file"; then - case $cache_file in - [[\\/]]* | ?:[[\\/]]* ) pkg_cache_file=$cache_file ;; - *) pkg_cache_file=../../$cache_file ;; - esac - PKG_CFG_ARGS="${PKG_CFG_ARGS} --cache-file=$pkg_cache_file" -fi - -#------------------------------------------------------------------------ # Handle the --prefix=... option #------------------------------------------------------------------------ @@ -53,14 +23,14 @@ if test "${exec_prefix}" = "NONE"; then exec_prefix=$prefix fi # Make sure srcdir is fully qualified! -srcdir="`cd "$srcdir" ; pwd`" -TCL_SRC_DIR="`cd "$srcdir"/..; pwd`" +srcdir=`cd $srcdir ; pwd` +TCL_SRC_DIR=`cd $srcdir/..; pwd` #------------------------------------------------------------------------ # Compress and/or soft link the manpages? #------------------------------------------------------------------------ -SC_CONFIG_MANPAGES +SC_CONFIG_MANPAGES([tcl]) #------------------------------------------------------------------------ # Standard compiler checks @@ -73,7 +43,6 @@ if test "${CFLAGS+set}" != "set" ; then fi AC_PROG_CC -AC_C_INLINE #-------------------------------------------------------------------- # Supply substitutes for missing POSIX header files. Special notes: @@ -86,12 +55,6 @@ AC_C_INLINE SC_MISSING_POSIX_HEADERS -#-------------------------------------------------------------------- -# Determines the correct executable file extension (.exe) -#-------------------------------------------------------------------- - -AC_EXEEXT - #------------------------------------------------------------------------ # If we're using GCC, see if the compiler understands -pipe. If so, use it. # It makes compiling go faster. (This is only a performance feature.) @@ -114,12 +77,6 @@ fi SC_ENABLE_THREADS -#------------------------------------------------------------------------ -# Embedded configuration information, encoding to use for the values, TIP #59 -#------------------------------------------------------------------------ - -SC_TCL_CFG_ENCODING - #-------------------------------------------------------------------- # Look for libraries that we will need when compiling the Tcl shell #-------------------------------------------------------------------- @@ -132,37 +89,6 @@ LIBS="$LIBS$THREADS_LIBS" SC_ENABLE_SHARED #-------------------------------------------------------------------- -# Look for a native installed tclsh binary (if available) -# If one cannot be found then use the binary we build (fails for -# cross compiling). This is used for NATIVE_TCLSH in Makefile. -#-------------------------------------------------------------------- - -SC_PROG_TCLSH -if test "$TCLSH_PROG" = ""; then - TCLSH_PROG='./${TCL_EXE}' -fi - -#------------------------------------------------------------------------ -# Add stuff for zlib -#------------------------------------------------------------------------ - -zlib_ok=yes -AC_CHECK_HEADER([zlib.h],[ - AC_CHECK_TYPE([gz_header],[],[zlib_ok=no],[#include <zlib.h>])],[ - zlib_ok=no]) -AS_IF([test $zlib_ok = yes], [ - AC_SEARCH_LIBS([deflateSetHeader],[z],[],[ - zlib_ok=no - ])]) -AS_IF([test $zlib_ok = no], [ - AC_SUBST(ZLIB_DIR,[\${COMPAT_DIR}/zlib]) - AC_SUBST(ZLIB_OBJS,[\${ZLIB_OBJS}]) - AC_SUBST(ZLIB_SRCS,[\${ZLIB_SRCS}]) - AC_SUBST(ZLIB_INCLUDE,[-I\${ZLIB_DIR}]) -]) -AC_DEFINE(HAVE_ZLIB, 1, [Is there an installed zlib?]) - -#-------------------------------------------------------------------- # The statements below define a collection of compile flags. This # macro depends on the value of SHARED_BUILD, and should be called # after SC_ENABLE_SHARED checks the configure switches. @@ -170,10 +96,9 @@ AC_DEFINE(HAVE_ZLIB, 1, [Is there an installed zlib?]) SC_CONFIG_CFLAGS -SC_ENABLE_SYMBOLS(bccdebug) +SC_ENABLE_SYMBOLS -AC_DEFINE(TCL_TOMMATH, 1, [Build libtommath?]) -AC_DEFINE(MP_PREC, 4, [Default libtommath precision.]) +TCL_DBGX=${DBGX} #-------------------------------------------------------------------- # Detect what compiler flags to set for 64-bit support. @@ -196,15 +121,15 @@ AC_C_BIGENDIAN #-------------------------------------------------------------------- # Check if Posix compliant getcwd exists, if not we'll use getwd. -AC_CHECK_FUNCS(getcwd, , [AC_DEFINE(USEGETWD, 1, [Is getcwd Posix-compliant?])]) +AC_CHECK_FUNCS(getcwd, , [AC_DEFINE(USEGETWD)]) # Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really # define USEGETWD even if the posix getcwd exists. Add a test ? -AC_REPLACE_FUNCS(mkstemp opendir strtol waitpid) -AC_CHECK_FUNC(strerror, , [AC_DEFINE(NO_STRERROR, 1, [Do we have strerror()])]) -AC_CHECK_FUNC(getwd, , [AC_DEFINE(NO_GETWD, 1, [Do we have getwd()])]) -AC_CHECK_FUNC(wait3, , [AC_DEFINE(NO_WAIT3, 1, [Do we have wait3()])]) -AC_CHECK_FUNC(uname, , [AC_DEFINE(NO_UNAME, 1, [Do we have uname()])]) +AC_REPLACE_FUNCS(opendir strstr strtol strtoll strtoull tmpnam waitpid) +AC_CHECK_FUNC(strerror, , [AC_DEFINE(NO_STRERROR)]) +AC_CHECK_FUNC(getwd, , [AC_DEFINE(NO_GETWD)]) +AC_CHECK_FUNC(wait3, , [AC_DEFINE(NO_WAIT3)]) +AC_CHECK_FUNC(uname, , [AC_DEFINE(NO_UNAME)]) if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ test "`uname -r | awk -F. '{print [$]1}'`" -lt 7; then @@ -212,11 +137,9 @@ if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && \ # use it when threads are enabled, c.f. bug # 711232 ac_cv_func_realpath=no fi -AC_CHECK_FUNC(realpath, , [AC_DEFINE(NO_REALPATH, 1, [Do we have realpath()])]) +AC_CHECK_FUNC(realpath, , [AC_DEFINE(NO_REALPATH)]) -SC_TCL_IPV6 - -#-------------------------------------------------------------------- +#-------------------------------------------------------------------- # Look for thread-safe variants of some library functions. #-------------------------------------------------------------------- @@ -229,22 +152,16 @@ if test "${TCL_THREADS}" = 1; then test "`uname -r | awk -F. '{print [$]1}'`" -gt 5; then # Starting with Darwin 6 (Mac OSX 10.2), gethostbyX # are actually MT-safe as they always return pointers - # from TSD instead of static storage. - AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME, 1, - [Do we have MT-safe gethostbyname() ?]) - AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR, 1, - [Do we have MT-safe gethostbyaddr() ?]) - + # from the TSD instead of the static storage. + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME) + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR) elif test "`uname -s`" = "HP-UX" && \ test "`uname -r|sed -e 's|B\.||' -e 's|\..*$||'`" -gt 10; then # Starting with HPUX 11.00 (we believe), gethostbyX # are actually MT-safe as they always return pointers # from TSD instead of static storage. - AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME, 1, - [Do we have MT-safe gethostbyname() ?]) - AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR, 1, - [Do we have MT-safe gethostbyaddr() ?]) - + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME) + AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR) else SC_TCL_GETHOSTBYNAME_R SC_TCL_GETHOSTBYADDR_R @@ -278,12 +195,12 @@ if test $tcl_ok = no; then AC_EGREP_HEADER(fd_mask, sys/select.h, tcl_cv_grep_fd_mask=present, tcl_cv_grep_fd_mask=missing)]) if test $tcl_cv_grep_fd_mask = present; then - AC_DEFINE(HAVE_SYS_SELECT_H, 1, [Should we include <sys/select.h>?]) + AC_DEFINE(HAVE_SYS_SELECT_H) tcl_ok=yes fi fi if test $tcl_ok = no; then - AC_DEFINE(NO_FD_SET, 1, [Do we have fd_set?]) + AC_DEFINE(NO_FD_SET) fi #------------------------------------------------------------------------------ @@ -293,43 +210,45 @@ fi SC_TIME_HANDLER #-------------------------------------------------------------------- -# Some systems (e.g., IRIX 4.0.5) lack some fields in struct stat. But -# we might be able to use fstatfs instead. Some systems (OpenBSD?) also -# lack blkcnt_t. +# Some systems (e.g., IRIX 4.0.5) lack the st_blksize field +# in struct stat. But we might be able to use fstatfs instead. #-------------------------------------------------------------------- - if test "$ac_cv_cygwin" != "yes"; then -AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize]) +AC_STRUCT_ST_BLKSIZE fi -AC_CHECK_TYPES([blkcnt_t]) -AC_CHECK_FUNC(fstatfs, , [AC_DEFINE(NO_FSTATFS, 1, [Do we have fstatfs()?])]) +AC_CHECK_FUNC(fstatfs, , [AC_DEFINE(NO_FSTATFS)]) #-------------------------------------------------------------------- -# Some system have no memcmp or it does not work with 8 bit data, this -# checks it and add memcmp.o to LIBOBJS if needed +# Some system have no memcmp or it does not work with 8 bit +# data, this checks it and add memcmp.o to LIBOBJS if needed #-------------------------------------------------------------------- - AC_FUNC_MEMCMP #-------------------------------------------------------------------- -# Some system like SunOS 4 and other BSD like systems have no memmove -# (we assume they have bcopy instead). {The replacement define is in -# compat/string.h} +# Some system like SunOS 4 and other BSD like systems +# have no memmove (we assume they have bcopy instead). +# {The replacement define is in compat/string.h} #-------------------------------------------------------------------- - -AC_CHECK_FUNC(memmove, , [ - AC_DEFINE(NO_MEMMOVE, 1, [Do we have memmove()?]) - AC_DEFINE(NO_STRING_H, 1, [Do we have <string.h>?]) ]) +AC_CHECK_FUNC(memmove, , [AC_DEFINE(NO_MEMMOVE) AC_DEFINE(NO_STRING_H)]) #-------------------------------------------------------------------- -# On some systems strstr is broken: it returns a pointer even even if -# the original string is empty. +# On some systems strstr is broken: it returns a pointer even +# even if the original string is empty. #-------------------------------------------------------------------- - -SC_TCL_CHECK_BROKEN_FUNC(strstr, [ - extern int strstr(); - exit(strstr("\0test", "test") ? 1 : 0); -]) +dnl only run if AC_REPLACE_FUNCS(strstr) hasn't already added strstr.o +if test "x${ac_cv_func_strstr}" = "xyes"; then + AC_CACHE_CHECK([proper strstr implementation], tcl_cv_strstr_unbroken, [ + AC_TRY_RUN([ + extern int strstr(); + int main() + { + exit(strstr("\0test", "test") ? 1 : 0); + }], tcl_cv_strstr_unbroken=ok, tcl_cv_strstr_unbroken=broken, + tcl_cv_strstr_unbroken=broken)]) + if test $tcl_cv_strstr_unbroken = broken; then + LIBOBJS="$LIBOBJS strstr.o" + fi +fi #-------------------------------------------------------------------- # Check for strtoul function. This is tricky because under some @@ -337,22 +256,60 @@ SC_TCL_CHECK_BROKEN_FUNC(strstr, [ # pointer for the string "0". #-------------------------------------------------------------------- -SC_TCL_CHECK_BROKEN_FUNC(strtoul, [ - extern int strtoul(); - char *term, *string = "0"; - exit(strtoul(string,&term,0) != 0 || term != string+1); -]) +AC_CHECK_FUNC(strtoul, tcl_ok=1, tcl_ok=0) +if test $tcl_ok = 1; then + AC_CACHE_CHECK([proper strtoul implementation], tcl_cv_strtoul_unbroken, [ + AC_TRY_RUN([ + extern int strtoul(); + int main() + { + char *string = "0"; + char *term; + int value; + value = strtoul(string, &term, 0); + if ((value != 0) || (term != (string+1))) { + exit(1); + } + exit(0); + }], tcl_cv_strtoul_unbroken=ok , tcl_cv_strtoul_unbroken=broken, + tcl_cv_strtoul_unbroken=broken)]) + if test $tcl_cv_strtoul_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then + LIBOBJS="$LIBOBJS strtoul.o" +fi #-------------------------------------------------------------------- # Check for the strtod function. This is tricky because in some # versions of Linux strtod mis-parses strings starting with "+". #-------------------------------------------------------------------- -SC_TCL_CHECK_BROKEN_FUNC(strtod, [ - extern double strtod(); - char *term, *string = " +69"; - exit(strtod(string,&term) != 69 || term != string+4); -]) +AC_CHECK_FUNC(strtod, tcl_ok=1, tcl_ok=0) +if test $tcl_ok = 1; then + AC_CACHE_CHECK([proper strtod implementation], tcl_cv_strtod_unbroken, [ + AC_TRY_RUN([ + extern double strtod(); + int main() + { + char *string = " +69"; + char *term; + double value; + value = strtod(string, &term); + if ((value != 69) || (term != (string+4))) { + exit(1); + } + exit(0); + }], tcl_cv_strtod_unbroken=ok , tcl_cv_strtod_unbroken=broken, + tcl_cv_strtod_unbroken=broken)]) + if test $tcl_cv_strtod_unbroken = broken; then + tcl_ok=0 + fi +fi +if test $tcl_ok = 0; then + LIBOBJS="$LIBOBJS strtod.o" +fi #-------------------------------------------------------------------- # Under Solaris 2.4, strtod returns the wrong value for the @@ -373,48 +330,20 @@ AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UID_T -AC_CACHE_CHECK([for socklen_t], tcl_cv_type_socklen_t, [ - AC_TRY_COMPILE([ - #include <sys/types.h> - #include <sys/socket.h> - ],[ - socklen_t foo; - ],[tcl_cv_type_socklen_t=yes],[tcl_cv_type_socklen_t=no])]) -if test $tcl_cv_type_socklen_t = no; then - AC_DEFINE(socklen_t, int, [Define as int if socklen_t is not available]) -fi - -AC_CHECK_TYPE([intptr_t], [ - AC_DEFINE([HAVE_INTPTR_T], 1, [Do we have the intptr_t type?])], [ - AC_CACHE_CHECK([for pointer-size signed integer type], tcl_cv_intptr_t, [ - for tcl_cv_intptr_t in "int" "long" "long long" none; do - if test "$tcl_cv_intptr_t" != none; then - AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT], - [[sizeof (void *) <= sizeof ($tcl_cv_intptr_t)]])], - [tcl_ok=yes], [tcl_ok=no]) - test "$tcl_ok" = yes && break; fi - done]) - if test "$tcl_cv_intptr_t" != none; then - AC_DEFINE_UNQUOTED([intptr_t], [$tcl_cv_intptr_t], [Signed integer - type wide enough to hold a pointer.]) - fi -]) -AC_CHECK_TYPE([uintptr_t], [ - AC_DEFINE([HAVE_UINTPTR_T], 1, [Do we have the uintptr_t type?])], [ - AC_CACHE_CHECK([for pointer-size unsigned integer type], tcl_cv_uintptr_t, [ - for tcl_cv_uintptr_t in "unsigned int" "unsigned long" "unsigned long long" \ - none; do - if test "$tcl_cv_uintptr_t" != none; then - AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT], - [[sizeof (void *) <= sizeof ($tcl_cv_uintptr_t)]])], - [tcl_ok=yes], [tcl_ok=no]) - test "$tcl_ok" = yes && break; fi - done]) - if test "$tcl_cv_uintptr_t" != none; then - AC_DEFINE_UNQUOTED([uintptr_t], [$tcl_cv_uintptr_t], [Unsigned integer - type wide enough to hold a pointer.]) - fi -]) +AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, [ + AC_EGREP_CPP(changequote(<<,>>)dnl +<<(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]>>dnl +changequote([,]),[ + #include <sys/types.h> + #include <sys/socket.h> + #if STDC_HEADERS + #include <stdlib.h> + #include <stddef.h> + #endif + ], ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no)]) +if test $ac_cv_type_socklen_t = no; then + AC_DEFINE(socklen_t, unsigned) +fi #-------------------------------------------------------------------- # If a system doesn't have an opendir function (man, that's old!) @@ -423,7 +352,7 @@ AC_CHECK_TYPE([uintptr_t], [ # provided. This version only works with V7-style directories. #-------------------------------------------------------------------- -AC_CHECK_FUNC(opendir, , [AC_DEFINE(USE_DIRENT2_H, 1, [May we include <dirent2.h>?])]) +AC_CHECK_FUNC(opendir, , [AC_DEFINE(USE_DIRENT2_H)]) #-------------------------------------------------------------------- # The check below checks whether <sys/wait.h> defines the type @@ -441,7 +370,7 @@ WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ ], tcl_cv_union_wait=yes, tcl_cv_union_wait=no)]) if test $tcl_cv_union_wait = no; then - AC_DEFINE(NO_UNION_WAIT, 1, [Do we have a usable 'union wait'?]) + AC_DEFINE(NO_UNION_WAIT) fi #-------------------------------------------------------------------- @@ -458,8 +387,7 @@ if test "$tcl_ok" = 0; then AC_CHECK_LIB(inet, strncasecmp, tcl_ok=1, tcl_ok=0) fi if test "$tcl_ok" = 0; then - AC_LIBOBJ([strncasecmp]) - USE_COMPAT=1 + LIBOBJS="$LIBOBJS strncasecmp.o" fi #-------------------------------------------------------------------- @@ -474,14 +402,14 @@ fi #-------------------------------------------------------------------- AC_CHECK_FUNC(BSDgettimeofday, - [AC_DEFINE(HAVE_BSDGETTIMEOFDAY, 1, [Do we have BSDgettimeofday()?])], [ - AC_CHECK_FUNC(gettimeofday, , [AC_DEFINE(NO_GETTOD, 1, [Do we have gettimeofday()?])]) + [AC_DEFINE(HAVE_BSDGETTIMEOFDAY)], [ + AC_CHECK_FUNC(gettimeofday, , [AC_DEFINE(NO_GETTOD)]) ]) AC_CACHE_CHECK([for gettimeofday declaration], tcl_cv_grep_gettimeofday, [ AC_EGREP_HEADER(gettimeofday, sys/time.h, tcl_cv_grep_gettimeofday=present, tcl_cv_grep_gettimeofday=missing)]) if test $tcl_cv_grep_gettimeofday = missing ; then - AC_DEFINE(GETTOD_NOT_DECLARED, 1, [Is gettimeofday() actually declared in <sys/time.h>?]) + AC_DEFINE(GETTOD_NOT_DECLARED) fi #-------------------------------------------------------------------- @@ -497,7 +425,7 @@ AC_CACHE_CHECK([signed char declarations], tcl_cv_char_signed, [ p = 0; ], tcl_cv_char_signed=yes, tcl_cv_char_signed=no)]) if test $tcl_cv_char_signed = yes; then - AC_DEFINE(HAVE_SIGNED_CHAR, 1, [Are characters signed?]) + AC_DEFINE(HAVE_SIGNED_CHAR) fi #-------------------------------------------------------------------- @@ -528,8 +456,7 @@ AC_CACHE_CHECK([for a putenv() that copies the buffer], tcl_cv_putenv_copy, [ tcl_cv_putenv_copy=yes, tcl_cv_putenv_copy=no)]) if test $tcl_cv_putenv_copy = yes; then - AC_DEFINE(HAVE_PUTENV_THAT_COPIES, 1, - [Does putenv() copy strings or incorporate them by reference?]) + AC_DEFINE(HAVE_PUTENV_THAT_COPIES) fi #-------------------------------------------------------------------- @@ -539,29 +466,10 @@ fi SC_ENABLE_LANGINFO #-------------------------------------------------------------------- -# Check for support of chflags and mkstemps functions -#-------------------------------------------------------------------- - -AC_CHECK_FUNCS(chflags mkstemps) - -#-------------------------------------------------------------------- -# Check for support of isnan() function or macro -#-------------------------------------------------------------------- - -AC_CACHE_CHECK([isnan], tcl_cv_isnan, [ - AC_TRY_LINK([#include <math.h>], [ -isnan(0.0); /* Generates an error if isnan is missing */ -], tcl_cv_isnan=yes, tcl_cv_isnan=no)]) -if test $tcl_cv_isnan = no; then - AC_DEFINE(NO_ISNAN, 1, [Do we have a usable 'isnan'?]) -fi - -#-------------------------------------------------------------------- # Darwin specific API checks and defines #-------------------------------------------------------------------- if test "`uname -s`" = "Darwin" ; then - AC_CHECK_FUNCS(getattrlist) AC_CHECK_HEADERS(copyfile.h) AC_CHECK_FUNCS(copyfile) if test $tcl_corefoundation = yes; then @@ -569,13 +477,9 @@ if test "`uname -s`" = "Darwin" ; then AC_CHECK_FUNCS(OSSpinLockLock) AC_CHECK_FUNCS(pthread_atfork) fi - AC_DEFINE(USE_VFORK, 1, [Should we use vfork() instead of fork()?]) - AC_DEFINE(TCL_DEFAULT_ENCODING, "utf-8", - [Are we to override what our default encoding is?]) - AC_DEFINE(TCL_LOAD_FROM_MEMORY, 1, - [Can this platform load code from memory?]) - AC_DEFINE(TCL_WIDE_CLICKS, 1, - [Does this platform have wide high-resolution clicks?]) + AC_DEFINE(USE_VFORK) + AC_DEFINE(TCL_DEFAULT_ENCODING, "utf-8") + AC_DEFINE(TCL_LOAD_FROM_MEMORY) AC_CHECK_HEADERS(AvailabilityMacros.h) if test "$ac_cv_header_AvailabilityMacros_h" = yes; then AC_CACHE_CHECK([if weak import is available], tcl_cv_cc_weak_import, [ @@ -593,38 +497,13 @@ if test "`uname -s`" = "Darwin" ; then tcl_cv_cc_weak_import=yes, tcl_cv_cc_weak_import=no) CFLAGS=$hold_cflags]) if test $tcl_cv_cc_weak_import = yes; then - AC_DEFINE(HAVE_WEAK_IMPORT, 1, [Is weak import available?]) - fi - AC_CACHE_CHECK([if Darwin SUSv3 extensions are available], - tcl_cv_cc_darwin_c_source, [ - hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror" - AC_TRY_COMPILE([ - #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 - #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 - #endif - #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1050 - #error MAC_OS_X_VERSION_MIN_REQUIRED < 1050 - #endif - #define _DARWIN_C_SOURCE 1 - #include <sys/cdefs.h> - ],,tcl_cv_cc_darwin_c_source=yes, tcl_cv_cc_darwin_c_source=no) - CFLAGS=$hold_cflags]) - if test $tcl_cv_cc_darwin_c_source = yes; then - AC_DEFINE(_DARWIN_C_SOURCE, 1, - [Are Darwin SUSv3 extensions available?]) + AC_DEFINE(HAVE_WEAK_IMPORT) fi fi - # Build .bundle dltest binaries in addition to .dylib - DLTEST_LD='${CC} -bundle -Wl,-w ${CFLAGS} ${LDFLAGS}' - DLTEST_SUFFIX=".bundle" -else - DLTEST_LD='${SHLIB_LD}' - DLTEST_SUFFIX="" fi #-------------------------------------------------------------------- -# Check for support of fts functions (readdir replacement) +# Check for support of fts functions (readdir replacement) #-------------------------------------------------------------------- AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [ @@ -638,87 +517,24 @@ AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [ FTSENT *e = fts_read(f); fts_close(f); ], tcl_cv_api_fts=yes, tcl_cv_api_fts=no)]) if test $tcl_cv_api_fts = yes; then - AC_DEFINE(HAVE_FTS, 1, [Do we have fts functions?]) + AC_DEFINE(HAVE_FTS) fi #-------------------------------------------------------------------- -# The statements below check for systems where POSIX-style non-blocking -# I/O (O_NONBLOCK) doesn't work or is unimplemented. On these systems -# (mostly older ones), use the old BSD-style FIONBIO approach instead. +# The statements below check for systems where POSIX-style +# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. +# On these systems (mostly older ones), use the old BSD-style +# FIONBIO approach instead. #-------------------------------------------------------------------- SC_BLOCKING_STYLE -#------------------------------------------------------------------------ - -AC_MSG_CHECKING([whether to use dll unloading]) -AC_ARG_ENABLE(dll-unloading, - AC_HELP_STRING([--enable-dll-unloading], - [enable the 'unload' command (default: on)]), - [tcl_ok=$enableval], [tcl_ok=yes]) -if test $tcl_ok = yes; then - AC_DEFINE(TCL_UNLOAD_DLLS, 1, [Do we allow unloading of shared libraries?]) -fi -AC_MSG_RESULT([$tcl_ok]) - -#------------------------------------------------------------------------ -# Check whether the timezone data is supplied by the OS or has -# to be installed by Tcl. The default is autodetection, but can -# be overriden on the configure command line either way. -#------------------------------------------------------------------------ - -AC_MSG_CHECKING([for timezone data]) -AC_ARG_WITH(tzdata, - AC_HELP_STRING([--with-tzdata], - [install timezone data (default: autodetect)]), - [tcl_ok=$withval], [tcl_ok=auto]) -# -# Any directories that get added here must also be added to the -# search path in ::tcl::clock::Initialize (library/clock.tcl). -# -case $tcl_ok in - no) - AC_MSG_RESULT([supplied by OS vendor]) - ;; - yes) - # nothing to do here - ;; - auto*) - AC_CACHE_VAL([tcl_cv_dir_zoneinfo], [ - for dir in /usr/share/zoneinfo \ - /usr/share/lib/zoneinfo \ - /usr/lib/zoneinfo - do - if test -f $dir/UTC -o -f $dir/GMT - then - tcl_cv_dir_zoneinfo="$dir" - break - fi - done]) - if test -n "$tcl_cv_dir_zoneinfo"; then - tcl_ok=no - AC_MSG_RESULT([$dir]) - else - tcl_ok=yes - fi - ;; - *) - AC_MSG_ERROR([invalid argument: $tcl_ok]) - ;; -esac -if test $tcl_ok = yes -then - AC_MSG_RESULT([supplied by Tcl]) - INSTALL_TZDATA=install-tzdata -fi - #-------------------------------------------------------------------- # DTrace support #-------------------------------------------------------------------- AC_ARG_ENABLE(dtrace, - AC_HELP_STRING([--enable-dtrace], - [build with DTrace support (default: off)]), + [ --enable-dtrace build with DTrace support [--disable-dtrace]], [tcl_ok=$enableval], [tcl_ok=no]) if test $tcl_ok = yes; then AC_CHECK_HEADER(sys/sdt.h, [tcl_ok=yes], [tcl_ok=no]) @@ -730,7 +546,7 @@ fi AC_MSG_CHECKING([whether to enable DTrace support]) MAKEFILE_SHELL='/bin/sh' if test $tcl_ok = yes; then - AC_DEFINE(USE_DTRACE, 1, [Are we building with DTrace support?]) + AC_DEFINE(USE_DTRACE) DTRACE_SRC="\${DTRACE_SRC}" DTRACE_HDR="\${DTRACE_HDR}" if test "`uname -s`" != "Darwin" ; then @@ -755,12 +571,16 @@ AC_MSG_RESULT([$tcl_ok]) AC_CACHE_CHECK([whether the cpuid instruction is usable], tcl_cv_cpuid, [ AC_TRY_LINK(, [ - int index,ax,bx,cx,dx; - __asm__ __volatile__ ("cpuid":\ - "=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (index)); + int index,regsPtr[4]; + __asm__ __volatile__("mov %%ebx, %%edi \n\t" + "cpuid \n\t" + "mov %%ebx, %%esi \n\t" + "mov %%edi, %%ebx \n\t" + : "=a"(regsPtr[0]), "=S"(regsPtr[1]), "=c"(regsPtr[2]), "=d"(regsPtr[3]) + : "a"(index)); ], tcl_cv_cpuid=yes, tcl_cv_cpuid=no)]) if test $tcl_cv_cpuid = yes; then - AC_DEFINE(HAVE_CPUID) + AC_DEFINE(HAVE_CPUID, 1, [Is the cpuid instruction usable?]) fi #-------------------------------------------------------------------- @@ -773,9 +593,10 @@ TCL_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX} eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}" # tclConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed -# since on some platforms TCL_LIB_FILE contains shell escapes. -# (See also: TCL_TRIM_DOTS). +# so that the backslashes quoting the DBX braces are dropped. +# Trick to replace DBGX with TCL_DBGX +DBGX='${TCL_DBGX}' eval "TCL_LIB_FILE=${TCL_LIB_FILE}" TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)' @@ -790,40 +611,34 @@ HTML_DIR='$(DISTDIR)/html' if test "`uname -s`" = "Darwin" ; then SC_ENABLE_FRAMEWORK TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk ['{match($0, "\\\.[0-9]+"); print substr($0,RSTART,RLENGTH)}']`" - TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name "${DYLIB_INSTALL_DIR}"/${TCL_LIB_FILE}' + TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE}' echo "$LDFLAGS " | grep -q -- '-prebind ' && TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -seg1addr 0xa000000' TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist' EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist' EXTRA_APP_CC_SWITCHES='-mdynamic-no-pic' - AC_CONFIG_FILES([Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]) + tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]" TCL_YEAR="`date +%Y`" fi if test "$FRAMEWORK_BUILD" = "1" ; then - AC_DEFINE(TCL_FRAMEWORK, 1, [Is Tcl built as a framework?]) + AC_DEFINE(TCL_FRAMEWORK) # Construct a fake local framework structure to make linking with # '-framework Tcl' and running of tcltest work - AC_CONFIG_COMMANDS([Tcl.framework], [n=Tcl && - f=$n.framework && v=Versions/$VERSION && - rm -rf $f && mkdir -p $f/$v/Resources && - ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && - ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && - unset n f v - ], VERSION=${TCL_VERSION}) + AC_OUTPUT_COMMANDS([test "$FRAMEWORK_BUILD" = "1" && n=Tcl && + f=$n.framework && v=Versions/$VERSION && + echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources && + ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v && + ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist && + unset n f v + ], [VERSION=${TCL_VERSION} FRAMEWORK_BUILD=${FRAMEWORK_BUILD}]) LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH" - # default install directory for bundled packages - if test "${libdir}" = '${exec_prefix}/lib' -o "`basename ${libdir}`" = 'Frameworks'; then - PACKAGE_DIR="/Library/Tcl" - else - PACKAGE_DIR="$libdir" - fi if test "${libdir}" = '${exec_prefix}/lib'; then # override libdir default libdir="/Library/Frameworks" fi TCL_LIB_FILE="Tcl" TCL_LIB_FLAG="-framework Tcl" - TCL_BUILD_LIB_SPEC="-F`pwd | sed -e 's/ /\\\\ /g'` -framework Tcl" + TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl" TCL_LIB_SPEC="-F${libdir} -framework Tcl" libdir="${libdir}/Tcl.framework/Versions/\${VERSION}" TCL_LIBRARY="${libdir}/Resources/Scripts" @@ -831,7 +646,7 @@ if test "$FRAMEWORK_BUILD" = "1" ; then PRIVATE_INCLUDE_DIR="${libdir}/PrivateHeaders" HTML_DIR="${libdir}/Resources/Documentation/Reference/Tcl" EXTRA_INSTALL="install-private-headers html-tcl" - EXTRA_BUILD_HTML='@ln -fs contents.htm "$(HTML_INSTALL_DIR)"/TclTOC.html' + EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"' EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."' @@ -843,19 +658,34 @@ if test "$FRAMEWORK_BUILD" = "1" ; then else # libdir must be a fully qualified path and not ${exec_prefix}/lib eval libdir="$libdir" - # default install directory for bundled packages - PACKAGE_DIR="$libdir" - if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then - TCL_LIB_FLAG="-ltcl${TCL_VERSION}" + if test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then + if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then + TCL_LIB_FLAG="-ltcl${TCL_VERSION}\${TCL_DBGX}" + else + TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`\${TCL_DBGX}" + fi + TCL_BUILD_LIB_SPEC="-L`pwd` ${TCL_LIB_FLAG}" + TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}" else - TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`" + TCL_BUILD_EXP_FILE="lib.exp" + eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}" + + # Replace DBGX with TCL_DBGX + eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" + + if test "$GCC" = "yes" ; then + TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" + TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`" + else + TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" + TCL_LIB_SPEC="-bI:${libdir}/${TCL_EXP_FILE}" + fi fi - TCL_BUILD_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TCL_LIB_FLAG}" - TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}" fi VERSION='${VERSION}' eval "CFG_TCL_SHARED_LIB_SUFFIX=${TCL_SHARED_LIB_SUFFIX}" eval "CFG_TCL_UNSHARED_LIB_SUFFIX=${TCL_UNSHARED_LIB_SUFFIX}" +eval "CFG_TCL_EXPORT_FILE_SUFFIX=${TCL_EXPORT_FILE_SUFFIX}" VERSION=${TCL_VERSION} #-------------------------------------------------------------------- @@ -867,10 +697,8 @@ VERSION=${TCL_VERSION} if test "$FRAMEWORK_BUILD" = "1" ; then test -z "$TCL_PACKAGE_PATH" && \ - TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks" - test -z "$TCL_MODULE_PATH" && \ - TCL_MODULE_PATH="~/Library/Tcl /Library/Tcl /System/Library/Tcl" -elif test "$prefix/lib" != "$libdir"; then + TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks" +elif test "$prefix" != "$exec_prefix"; then TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}" else TCL_PACKAGE_PATH="${prefix}/lib ${TCL_PACKAGE_PATH}" @@ -882,19 +710,18 @@ fi #-------------------------------------------------------------------- # Replace ${VERSION} with contents of ${TCL_VERSION} -# double-eval to account for TCL_TRIM_DOTS. -# eval "TCL_STUB_LIB_FILE=libtclstub${TCL_UNSHARED_LIB_SUFFIX}" +# Replace DBGX with TCL_DBGX eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\"" eval "TCL_STUB_LIB_DIR=${libdir}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then - TCL_STUB_LIB_FLAG="-ltclstub${TCL_VERSION}" + TCL_STUB_LIB_FLAG="-ltclstub${TCL_VERSION}\${TCL_DBGX}" else - TCL_STUB_LIB_FLAG="-ltclstub`echo ${TCL_VERSION} | tr -d .`" + TCL_STUB_LIB_FLAG="-ltclstub`echo ${TCL_VERSION} | tr -d .`\${TCL_DBGX}" fi -TCL_BUILD_STUB_LIB_SPEC="-L`pwd | sed -e 's/ /\\\\ /g'` ${TCL_STUB_LIB_FLAG}" +TCL_BUILD_STUB_LIB_SPEC="-L`pwd` ${TCL_STUB_LIB_FLAG}" TCL_STUB_LIB_SPEC="-L${TCL_STUB_LIB_DIR} ${TCL_STUB_LIB_FLAG}" TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}" TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}" @@ -913,7 +740,6 @@ AC_SUBST(TCL_MAJOR_VERSION) AC_SUBST(TCL_MINOR_VERSION) AC_SUBST(TCL_PATCH_LEVEL) AC_SUBST(TCL_YEAR) -AC_SUBST(PKG_CFG_ARGS) AC_SUBST(TCL_LIB_FILE) AC_SUBST(TCL_LIB_FLAG) @@ -927,13 +753,18 @@ AC_SUBST(TCL_BUILD_STUB_LIB_SPEC) AC_SUBST(TCL_BUILD_STUB_LIB_PATH) AC_SUBST(TCL_SRC_DIR) +AC_SUBST(TCL_DBGX) AC_SUBST(CFG_TCL_SHARED_LIB_SUFFIX) AC_SUBST(CFG_TCL_UNSHARED_LIB_SUFFIX) +AC_SUBST(CFG_TCL_EXPORT_FILE_SUFFIX) AC_SUBST(TCL_SHARED_BUILD) AC_SUBST(LD_LIBRARY_PATH_VAR) AC_SUBST(TCL_BUILD_LIB_SPEC) +AC_SUBST(TCL_NEEDS_EXP_FILE) +AC_SUBST(TCL_BUILD_EXP_FILE) +AC_SUBST(TCL_EXP_FILE) AC_SUBST(TCL_LIB_VERSIONS_OK) AC_SUBST(TCL_SHARED_LIB_SUFFIX) @@ -941,8 +772,6 @@ AC_SUBST(TCL_UNSHARED_LIB_SUFFIX) AC_SUBST(TCL_HAS_LONGLONG) -AC_SUBST(INSTALL_TZDATA) - AC_SUBST(DTRACE_SRC) AC_SUBST(DTRACE_HDR) AC_SUBST(DTRACE_OBJ) @@ -950,12 +779,10 @@ AC_SUBST(MAKEFILE_SHELL) AC_SUBST(BUILD_DLTEST) AC_SUBST(TCL_PACKAGE_PATH) -AC_SUBST(TCL_MODULE_PATH) AC_SUBST(TCL_LIBRARY) AC_SUBST(PRIVATE_INCLUDE_DIR) AC_SUBST(HTML_DIR) -AC_SUBST(PACKAGE_DIR) AC_SUBST(EXTRA_CC_SWITCHES) AC_SUBST(EXTRA_APP_CC_SWITCHES) @@ -964,20 +791,7 @@ AC_SUBST(EXTRA_INSTALL_BINARIES) AC_SUBST(EXTRA_BUILD_HTML) AC_SUBST(EXTRA_TCLSH_LIBS) -AC_SUBST(DLTEST_LD) -AC_SUBST(DLTEST_SUFFIX) - -dnl Disable the automake-friendly normalization of LIBOBJS -dnl performed by autoconf 2.53 and later. It's not correct for us. -define([_AC_LIBOBJS_NORMALIZE],[]) -AC_CONFIG_FILES([ - Makefile:../unix/Makefile.in - dltest/Makefile:../unix/dltest/Makefile.in - tclConfig.sh:../unix/tclConfig.sh.in - tcl.pc:../unix/tcl.pc.in -]) -AC_OUTPUT +SC_OUTPUT_COMMANDS_PRE -dnl Local Variables: -dnl mode: autoconf -dnl End: +tcl_config_files="${tcl_config_files} [Makefile dltest/Makefile tclConfig.sh]" +AC_OUTPUT([${tcl_config_files}]) |