📄 configure.in.dynamic
字号:
#--------------------------------------------------------------------# 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.#--------------------------------------------------------------------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) 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.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\} | 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\} | 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\} | 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="-KPIC" 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\} | 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.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.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 fifiAC_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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -