📄 configure.in
字号:
AC_MSG_CHECKING([matherr support])AC_TRY_COMPILE([#include <math.h>], [struct exception x;x.type = DOMAIN;x.type = SING;], tcl_ok=yes, tcl_ok=no)AC_MSG_RESULT($tcl_ok)if test $tcl_ok = yes; then AC_DEFINE(NEED_MATHERR)fi#--------------------------------------------------------------------# Check to see whether the system provides a vfork kernel call.# If not, then use fork instead. Also, check for a problem with# vforks and signals that can cause core dumps if a vforked child# resets a signal handler. If the problem exists, then use fork# instead of vfork.#--------------------------------------------------------------------AC_TYPE_SIGNAL()AC_CHECK_FUNC(vfork, tcl_ok=1, tcl_ok=0)if test "$tcl_ok" = 1; then AC_MSG_CHECKING([vfork/signal bug]); AC_TRY_RUN([#include <stdio.h>#include <signal.h>#include <sys/wait.h>int gotSignal = 0;sigProc(sig) int sig;{ gotSignal = 1;}main(){ int pid, sts; (void) signal(SIGCHLD, sigProc); pid = vfork(); if (pid < 0) { exit(1); } else if (pid == 0) { (void) signal(SIGCHLD, SIG_DFL); _exit(0); } else { (void) wait(&sts); } exit((gotSignal) ? 0 : 1);}], tcl_ok=1, tcl_ok=0, tcl_ok=0) if test "$tcl_ok" = 1; then AC_MSG_RESULT(ok) else AC_MSG_RESULT([buggy, using fork instead]) fifirm -f coreif test "$tcl_ok" = 0; then AC_DEFINE(vfork, fork)fi#--------------------------------------------------------------------# Check whether there is an strncasecmp function on this system.# This is a bit tricky because under SCO it's in -lsocket and# under Sequent Dynix it's in -linet.#--------------------------------------------------------------------AC_CHECK_FUNC(strncasecmp, tcl_ok=1, tcl_ok=0)if test "$tcl_ok" = 0; then AC_CHECK_LIB(socket, strncasecmp, tcl_ok=1, tcl_ok=0)fiif test "$tcl_ok" = 0; then AC_CHECK_LIB(inet, strncasecmp, tcl_ok=1, tcl_ok=0)fiif test "$tcl_ok" = 0; then LIBOBJS="$LIBOBJS strncasecmp.o"fi#--------------------------------------------------------------------# The code below deals with several issues related to gettimeofday:# 1. Some systems don't provide a gettimeofday function at all# (set NO_GETTOD if this is the case).# 2. SGI systems don't use the BSD form of the gettimeofday function,# but they have a BSDgettimeofday function that can be used instead.# 3. See if gettimeofday is declared in the <sys/time.h> header file.# if not, set the GETTOD_NOT_DECLARED flag so that tclPort.h can# declare it.#--------------------------------------------------------------------AC_CHECK_FUNC(BSDgettimeofday, AC_DEFINE(HAVE_BSDGETTIMEOFDAY), AC_CHECK_FUNC(gettimeofday, , AC_DEFINE(NO_GETTOD)))AC_MSG_CHECKING([for gettimeofday declaration])AC_EGREP_HEADER(gettimeofday, sys/time.h, AC_MSG_RESULT(present), [ AC_MSG_RESULT(missing) AC_DEFINE(GETTOD_NOT_DECLARED)])#--------------------------------------------------------------------# Interactive UNIX requires -linet instead of -lsocket, plus it# needs net/errno.h to define the socket-related error codes.#--------------------------------------------------------------------AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])AC_CHECK_HEADER(net/errno.h, AC_DEFINE(HAVE_NET_ERRNO_H))#--------------------------------------------------------------------# The following code checks to see whether it is possible to get# signed chars on this platform. This is needed in order to# properly generate sign-extended ints from character values.#--------------------------------------------------------------------AC_C_CHAR_UNSIGNEDAC_MSG_CHECKING([signed char declarations])AC_TRY_COMPILE(, [signed char *p;p = 0;], tcl_ok=yes, tcl_ok=no)AC_MSG_RESULT($tcl_ok)if test $tcl_ok = yes; then AC_DEFINE(HAVE_SIGNED_CHAR)fi#--------------------------------------------------------------------# Check for the existence of the -lsocket and -lnsl libraries.# The order here is important, so that they end up in the right# order in the command line generated by make. Here are some# special considerations:# 1. Use "connect" and "accept" to check for -lsocket, and# "gethostbyname" to check for -lnsl.# 2. Use each function name only once: can't redo a check because# autoconf caches the results of the last check and won't redo it.# 3. Use -lnsl and -lsocket only if they supply procedures that# aren't already present in the normal libraries. This is because# IRIX 5.2 has libraries, but they aren't needed and they're# bogus: they goof up name resolution if used.# 4. On some SVR4 systems, can't use -lsocket without -lnsl too.# To get around this problem, check for both libraries together# if -lsocket doesn't work by itself.#--------------------------------------------------------------------tcl_checkBoth=0AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)if test "$tcl_checkSocket" = 1; then AC_CHECK_LIB(socket, main, LIBS="$LIBS -lsocket", tcl_checkBoth=1)fiif test "$tcl_checkBoth" = 1; then tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])fiAC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"]))#--------------------------------------------------------------------# The statements below define a collection of symbols related to# dynamic loading and shared libraries:## DL_OBJS - Name of the object file that implements dynamic# loading for Tcl on this system.# DL_LIBS - Library file(s) to include in tclsh and other base# applications in order for the "load" command to work.# LD_FLAGS - Flags to pass to the compiler when linking object# files into an executable application binary such# as tclsh.# LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",# that tell the run-time dynamic linker where to look# for shared libraries such as libtcl.so. Depends on# the variable LIB_RUNTIME_DIR in the Makefile.# MAKE_LIB - Command to execute to build the Tcl library;# differs depending on whether or not Tcl is being# compiled as a shared library.# SHLIB_CFLAGS - Flags to pass to cc when compiling the components# of a shared library (may request position-independent# code, among other things).# SHLIB_LD - Base command to use for combining object files# into a shared library.# SHLIB_LD_LIBS - Dependent libraries for the linker to scan when# creating shared libraries. This symbol typically# goes at the end of the "ld" commands that build# shared libraries. The value of the symbol is# "${LIBS}" if all of the dependent libraries should# be specified when creating a shared library. If# dependent libraries should not be specified (as on# SunOS 4.x, where they cause the link to fail, or in# general if Tcl and Tk aren't themselves shared# libraries), then this symbol has an empty string# as its value.# SHLIB_SUFFIX - Suffix to use for the names of dynamically loadable# extensions. An empty string means we don't know how# to use shared libraries on this platform.# TCL_LIB_FILE - Name of the file that contains the Tcl library, such# as libtcl7.8.so or libtcl7.8.a.# TCL_LIB_SUFFIX -Specifies everything that comes after the "libtcl"# in the shared library name, using the $VERSION variable# to put the version in the right place. This is used# by platforms that need non-standard library names.# Examples: ${VERSION}.so.1.1 on NetBSD, since it needs# to have a version after the .so, and ${VERSION}.a# on AIX, since the Tcl shared library needs to have# a .a extension whereas shared objects for loadable# extensions have a .so extension. Defaults to# ${VERSION}${SHLIB_SUFFIX}.#--------------------------------------------------------------------# Step 1: set the variable "system" to hold the name and version number# for the system. This can usually be done via the "uname" command, but# there are a few systems, like Next, where this doesn't work.AC_MSG_CHECKING([system version (for dynamic loading)])if test -f /usr/lib/NextStep/software_version; then system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`else system=`uname -s`-`uname -r` if test "$?" -ne 0 ; then AC_MSG_RESULT([unknown (can't find uname command)]) system=unknown else # Special check for weird MP-RAS system (uname returns weird # results, and the version is kept in special file). if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then system=MP-RAS-`awk '{print $3}' /etc/.relid'` fi if test "`uname -s`" = "AIX" ; then system=AIX-`uname -v`.`uname -r` fi AC_MSG_RESULT($system) fifi# Step 2: check for existence of -ldl library. This is needed because# Linux can use either -ldl or -ldld for dynamic loading.AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)# Step 3: set configuration options based on system name and version.fullSrcDir=`cd $srcdir; pwd`TCL_SHARED_LIB_SUFFIX=""TCL_UNSHARED_LIB_SUFFIX=""TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'ECHO_VERSION='`echo ${VERSION}`'TCL_LIB_VERSIONS_OK=okCFLAGS_DEBUG=-gCFLAGS_OPTIMIZE=-Ocase $system in AIX-4.[[2-9]]) SHLIB_CFLAGS="" SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LD_FLAGS="" LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' AIX=yes TCL_SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' ;; AIX-*) SHLIB_CFLAGS="" SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o tclLoadAix.o" DL_LIBS="-lld" LD_FLAGS="" LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' TCL_SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" SHLIB_LD="shlicc -r" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LD_FLAGS="" LD_SEARCH_FLAGS="" ;; dgux*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LD_FLAGS="" LD_SEARCH_FLAGS="" ;; HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*) AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no) if test "$tcl_ok" = yes; then SHLIB_CFLAGS="+z" SHLIB_LD="ld -b" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".sl" DL_OBJS="tclLoadShl.o" DL_LIBS="-ldld" LD_FLAGS="-Wl,-E" LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.' fi ;; IRIX-4.*) SHLIB_CFLAGS="-G 0" SHLIB_SUFFIX=".a" SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0" SHLIB_LD_LIBS='${LIBS}' DL_OBJS="tclLoadAout.o" DL_LIBS="" LD_FLAGS="-Wl,-D,08000000" LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' TCL_SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a' ;; IRIX-5.*|IRIX-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -shared -rdata_shared" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" LD_FLAGS="" LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' ;; IRIX64-6.*) SHLIB_CFLAGS="" SHLIB_LD="ld -32 -shared -rdata_shared -rpath /usr/local/lib" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" LD_FLAGS="" LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' ;; Linux*) SHLIB_CFLAGS="-fPIC" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" if test "$have_dl" = yes; then SHLIB_LD="${CC} -shared" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LD_FLAGS="-rdynamic" LD_SEARCH_FLAGS="" else AC_CHECK_HEADER(dld.h, [ SHLIB_LD="ld -shared" DL_OBJS="tclLoadDld.o" DL_LIBS="-ldld" LD_FLAGS="" LD_SEARCH_FLAGS=""]) fi ;; MP-RAS-02*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LD_FLAGS="" LD_SEARCH_FLAGS="" ;; MP-RAS-*) SHLIB_CFLAGS="-K PIC" SHLIB_LD="cc -G" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="-ldl" LD_FLAGS="-Wl,-Bexport" LD_SEARCH_FLAGS="" ;; NetBSD-*|FreeBSD-*|OpenBSD-*) # Not available on all versions: check for include file. AC_CHECK_HEADER(dlfcn.h, [ SHLIB_CFLAGS="-fpic" SHLIB_LD="ld -Bshareable -x" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" LD_FLAGS="" LD_SEARCH_FLAGS="" TCL_SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0' ], [ SHLIB_CFLAGS="" SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r" SHLIB_LD_LIBS='${LIBS}' SHLIB_SUFFIX=".a" DL_OBJS="tclLoadAout.o" DL_LIBS="" LD_FLAGS="" LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' TCL_SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' ]) # FreeBSD doesn't handle version numbers with dots. TCL_UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a' TCL_LIB_VERSIONS_OK=nodots ;; NEXTSTEP-*) SHLIB_CFLAGS="" SHLIB_LD="cc -nostdlib -r" SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadNext.o" DL_LIBS="" LD_FLAGS="" LD_SEARCH_FLAGS="" ;; OSF1-1.0|OSF1-1.1|OSF1-1.2) # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 SHLIB_CFLAGS="" # Hack: make package name same as library name SHLIB_LD='ld -R -export $@:' SHLIB_LD_LIBS="" SHLIB_SUFFIX=".so" DL_OBJS="tclLoadOSF.o" DL_LIBS="" LD_FLAGS="" LD_SEARCH_FLAGS="" ;; OSF1-1.*) # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 SHLIB_CFLAGS="-fpic" SHLIB_LD="ld -shared"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -