configure.in.dynamic
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:10k
- #--------------------------------------------------------------------
- # The statements below define a collection of symbols related to
- # dynamic loading and shared libraries:
- #
- # DL_LIBS - Library file(s) to include in tclsh and other base
- # applications in order for the "load" command to work.
- # DL_LD_FLAGS - Flags to pass to the compiler when linking object
- # files into an executable application binary such
- # as tclsh.
- # DL_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 SHLIB_RUNTIME_DIR in the Makefile.
- # 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
- # "$V_LIB" 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.
- #--------------------------------------------------------------------
- ### XXX: AC_ARG_ENABLE(shlib, --enable-shlib enable Makefile flags
- ###for building shared libraries, , enable_shlib="no")
- AC_ARG_ENABLE(shlib, --enable-shlib enable Makefile targets for mash shared libraries, , enable_shlib="no")
- # 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)
- fi
- fi
- # 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)
- if test -z "$V_TCLSH"
- then
- local_TCLSH=tclsh
- else
- local_TCLSH=$V_TCLSH
- fi
- # Step 3: set configuration options based on system name and version.
- case $system in
- AIX-*)
- enable_dl="no"
- ;;
- BSD/OS-2.1*|BSD/OS-3*)
- SHLIB_CFLAGS=""
- SHLIB_LD="shlicc -r"
- SHLIB_LD_LIBS="$V_LIB"
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ;;
- dgux*)
- SHLIB_CFLAGS="-K PIC"
- SHLIB_LD="cc -G"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ;;
- HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
- AC_CHECK_LIB(dld, shl_load, dl_ok=yes, dl_ok=no)
- if test "$dl_ok" = yes; then
- SHLIB_CFLAGS="+z"
- SHLIB_LD="ld -b"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".sl"
- DL_LIBS="-ldld"
- DL_LD_FLAGS="-Wl,-E"
- DL_LD_SEARCH_FLAGS='-Wl,+b,${SHLIB_RUNTIME_DIR}:.'
- fi
- ;;
- IRIX-4.*)
- SHLIB_CFLAGS="-G 0"
- SHLIB_SUFFIX=".a"
- SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | $local_TCLSH -r -G 0"
- SHLIB_LD_LIBS="$V_LIB"
- DL_LIBS=""
- DL_LD_FLAGS="-Wl,-D,08000000"
- DL_LD_SEARCH_FLAGS='-L${SHLIB_RUNTIME_DIR}'
- ;;
- IRIX-5.*|IRIX-6.*)
- SHLIB_CFLAGS=""
- SHLIB_LD="ld -shared -rdata_shared"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS='-Wl,-rpath,${SHLIB_RUNTIME_DIR}'
- ;;
- IRIX64-6.*)
- SHLIB_CFLAGS=""
- SHLIB_LD="ld -32 -shared -rdata_shared -rpath /usr/local/lib"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS='-Wl,-rpath,${SHLIB_RUNTIME_DIR}'
- ;;
- Linux*)
- SHLIB_CFLAGS="-fPIC"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- if test "$have_dl" = yes; then
- SHLIB_LD="${CC} -shared"
- DL_LIBS="-ldl"
- DL_LD_FLAGS="-rdynamic"
- DL_LD_SEARCH_FLAGS=""
- else
- AC_CHECK_HEADER(dld.h, [
- SHLIB_LD="ld -shared"
- DL_LIBS="-ldld"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""])
- fi
- ;;
- MP-RAS-02*)
- SHLIB_CFLAGS="-K PIC"
- SHLIB_LD="cc -G"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ;;
- MP-RAS-*)
- SHLIB_CFLAGS="-K PIC"
- SHLIB_LD="cc -G"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS="-Wl,-Bexport"
- DL_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_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ], [
- SHLIB_CFLAGS=""
- SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | $local_TCLSH -r"
- SHLIB_LD_LIBS='$V_LIB'
- SHLIB_SUFFIX=".a"
- DL_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS='-L${SHLIB_RUNTIME_DIR}'
- ])
- ;;
- NEXTSTEP-*)
- SHLIB_CFLAGS=""
- SHLIB_LD="cc -nostdlib -r"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS=""
- DL_LD_FLAGS=""
- DL_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_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ;;
- OSF1-1.*)
- # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
- SHLIB_CFLAGS="-fpic"
- SHLIB_LD="ld -shared"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ;;
- OSF1-V*)
- # Digital OSF/1
- SHLIB_CFLAGS=""
- SHLIB_LD='ld -shared -expect_unresolved "*"'
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS=""
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS='-Wl,-rpath,${SHLIB_RUNTIME_DIR}'
- ;;
- RISCos-*)
- SHLIB_CFLAGS="-G 0"
- SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | $local_TCLSH -r -G 0"
- SHLIB_LD_LIBS='$V_LIB'
- SHLIB_SUFFIX=".a"
- DL_LIBS=""
- DL_LD_FLAGS="-Wl,-D,08000000"
- DL_LD_SEARCH_FLAGS='-L${SHLIB_RUNTIME_DIR}'
- ;;
- SCO_SV-3.2*)
- # Note, dlopen is available only on SCO 3.2.5 and greater. However,
- # this test works, since "uname -s" was non-standard in 3.2.4 and
- # below.
- SHLIB_CFLAGS="-Kpic -belf"
- SHLIB_LD="ld -G"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS=""
- DL_LD_FLAGS="-belf -Wl,-Bexport"
- DL_LD_SEARCH_FLAGS=""
- ;;
- SINIX*5.4*)
- SHLIB_CFLAGS="-K PIC"
- SHLIB_LD="cc -G"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS=""
- ;;
- SunOS-4*)
- SHLIB_CFLAGS="-PIC"
- SHLIB_LD="ld"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS='-L${SHLIB_RUNTIME_DIR}'
- ;;
- SunOS-5*)
- SHLIB_CFLAGS="-fpic"
- SHLIB_LD="/usr/ccs/bin/ld -G -z text"
- # Note: need the LIBS below, otherwise Tk won't find Tcl's
- # symbols when dynamically loaded into tclsh.
- SHLIB_LD_LIBS='$V_LIB'
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- DL_LD_FLAGS=""
- DL_LD_SEARCH_FLAGS='-R ${SHLIB_RUNTIME_DIR}'
- ;;
- ULTRIX-4.*)
- SHLIB_CFLAGS="-G 0"
- SHLIB_SUFFIX=".a"
- SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | $local_TCLSH -r -G 0"
- SHLIB_LD_LIBS='$V_LIB'
- DL_LIBS=""
- DL_LD_FLAGS="-Wl,-D,08000000"
- DL_LD_SEARCH_FLAGS='-L${SHLIB_RUNTIME_DIR}'
- ;;
- UNIX_SV*)
- SHLIB_CFLAGS="-KPIC"
- SHLIB_LD="cc -G"
- SHLIB_LD_LIBS=""
- SHLIB_SUFFIX=".so"
- DL_LIBS="-ldl"
- # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
- # that don't grok the -Bexport option. Test that it does.
- hold_ldflags=$LDFLAGS
- AC_MSG_CHECKING(for ld accepts -Bexport flag)
- LDFLAGS="${LDFLAGS} -Wl,-Bexport"
- AC_TRY_LINK(, [int i;], found=yes, found=no)
- LDFLAGS=$hold_ldflags
- AC_MSG_RESULT($found)
- if test $found = yes; then
- SH_LD_FLAGS="-Wl,-Bexport"
- else
- SH_LD_FLAGS=""
- fi
- SH_LD_SEARCH_FLAGS=""
- ;;
- esac
- # Step 4: disable dynamic loading if requested via a command-line switch.
- #
- #XXX:if test $enable_shlib = "no" ; then
- # echo "Disabling dynamic loading and shared libraries"
- # SHLIB_CFLAGS=""
- # SHLIB_LD=""
- # SHLIB_SUFFIX=""
- # DL_LIBS=""
- # DL_LD_FLAGS=""
- # DL_LD_SEARCH_FLAGS=""
- #fi
- # If we're running gcc, then change the C flags for compiling shared
- # libraries to the right flags for gcc, instead of those for the
- # standard manufacturer compiler.
- ####XXX:if test "enable_shlib" != "no" ; then
- if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then
- case $system in
- AIX-*)
- ;;
- BSD/OS*)
- ;;
- IRIX*)
- ;;
- NetBSD-*|FreeBSD-*|OpenBSD-*)
- ;;
- RISCos-*)
- ;;
- ULTRIX-4.*)
- ;;
- *)
- SHLIB_CFLAGS="-fPIC"
- ;;
- esac
- fi
- ####fi
- if test "$enable_shlib" != "no" ; then
- PKG_SHLIB_CFLAGS=$SHLIB_CFLAGS
- else
- PKG_SHLIB_CFLAGS=""
- fi
- AC_SUBST(DL_LIBS)
- AC_SUBST(DL_LD_FLAGS)
- AC_SUBST(DL_LD_SEARCH_FLAGS)
- AC_SUBST(SHLIB_CFLAGS)
- AC_SUBST(SHLIB_LD)
- AC_SUBST(SHLIB_LD_LIBS)
- AC_SUBST(SHLIB_SUFFIX)
- AC_SUBST(PKG_SHLIB_CFLAGS)