$NetBSD: patch-af,v 1.17 2005/09/21 14:49:08 joerg Exp $

--- tcl.m4.orig	2005-06-29 16:40:33.000000000 +0000
+++ tcl.m4
@@ -866,6 +866,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [
     # Step 3: set configuration options based on system name and version.
 
     do64bit_ok=no
+    TCL_LIB_SPEC_RPATH=""
     LDFLAGS_ORIG="$LDFLAGS"
     TCL_EXPORT_FILE_SUFFIX=""
     UNSHARED_LIB_SUFFIX=""
@@ -1087,6 +1088,21 @@ dnl AC_CHECK_TOOL(AR, ar)
 		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
 	    fi
 	    ;;
+	Interix-3.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD='${TCL_CC} -shared'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-E"
+	    CC_SEARCH_FLAGS='-Wl,-R${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-R${LIB_RUNTIME_DIR}'
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so',
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_SPEC_RPATH="-Wl,-R${exec_prefix}/lib"
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
 	IRIX-4.*)
 	    SHLIB_CFLAGS="-G 0"
 	    SHLIB_SUFFIX=".a"
@@ -1108,6 +1124,9 @@ dnl AC_CHECK_TOOL(AR, ar)
 	    DL_LIBS=""
 	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
 	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    TCL_LIB_VERSIONS_OK=nodots
 	    ;;
 	IRIX-6.*)
 	    SHLIB_CFLAGS=""
@@ -1133,6 +1152,9 @@ dnl AC_CHECK_TOOL(AR, ar)
 		esac
 		LDFLAGS="$LDFLAGS -n32"
 	    fi
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    TCL_LIB_VERSIONS_OK=nodots
 	    ;;
 	IRIX64-6.*)
 	    SHLIB_CFLAGS=""
@@ -1156,6 +1178,9 @@ dnl AC_CHECK_TOOL(AR, ar)
 	            LDFLAGS="$LDFLAGS -64"
 	        fi
 	    fi
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    TCL_LIB_VERSIONS_OK=nodots
 	    ;;
 	Linux*)
 	    SHLIB_CFLAGS="-fPIC"
@@ -1201,6 +1226,9 @@ dnl AC_CHECK_TOOL(AR, ar)
 	    # XIM peeking works under XFree86.
 	    AC_DEFINE(PEEK_XCLOSEIM)
 
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    TCL_LIB_VERSIONS_OK=nodots
 	    ;;
 	GNU*)
 	    SHLIB_CFLAGS="-fPIC"
@@ -1248,28 +1276,36 @@ dnl AC_CHECK_TOOL(AR, ar)
 	    LD_SEARCH_FLAGS=""
 	    ;;
 	NetBSD-*|FreeBSD-[[1-2]].*)
+	    if test "X${COMPILER_OPTIMIZATION_BUG}" = "XYES"; then
+		CFLAGS_OPTIMIZE=-O0
+	    fi
 	    # Not available on all versions:  check for include file.
 	    AC_CHECK_HEADER(dlfcn.h, [
 		# NetBSD/SPARC needs -fPIC, -fpic will not do.
 		SHLIB_CFLAGS="-fPIC"
-		SHLIB_LD="ld -Bshareable -x"
 		SHLIB_LD_LIBS=""
 		SHLIB_SUFFIX=".so"
 		DL_OBJS="tclLoadDl.o"
 		DL_LIBS=""
 		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
-		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
 		AC_MSG_CHECKING(for ELF)
 		AC_EGREP_CPP(yes, [
 #ifdef __ELF__
 	yes
 #endif
-		],
+		], [
 		    AC_MSG_RESULT(yes)
 		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so',
+		    SHLIB_LD='${TCL_CC} -shared -Wl,-x'
+		    LD_SEARCH_FLAGS='-Wl,-R${LIB_RUNTIME_DIR}'
+		    TCL_LIB_SPEC_RPATH="-Wl,-R${exec_prefix}/lib"
+		], [
 		    AC_MSG_RESULT(no)
+		    SHLIB_LD="ld -Bshareable -x"
+		    LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		    TCL_LIB_SPEC_RPATH="-R${exec_prefix}/lib"
 		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
-		)
+		])
 	    ], [
 		SHLIB_CFLAGS=""
 		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
@@ -1335,7 +1371,7 @@ dnl AC_CHECK_TOOL(AR, ar)
 	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
 	    TCL_LIB_VERSIONS_OK=nodots
 	    ;;
-	FreeBSD-*)
+	FreeBSD-*|DragonFly-*)
 	    # FreeBSD 3.* and greater have ELF.
 	    SHLIB_CFLAGS="-fPIC"
 	    SHLIB_LD="ld -Bshareable -x"
@@ -1668,6 +1704,9 @@ dnl AC_CHECK_TOOL(AR, ar)
 		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
 		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
 	    fi
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
 	    ;;
 	ULTRIX-4.*)
 	    SHLIB_CFLAGS="-G 0"
@@ -1847,8 +1886,8 @@ dnl AC_CHECK_TOOL(AR, ar)
 
     if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
         LIB_SUFFIX=${SHARED_LIB_SUFFIX}
-        MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
-        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+        MAKE_LIB='${SHLIB_LD} -o ${@:C/\.so.*/.la/} ${OBJS:.o=.lo} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS} -version-info 1:0'
+        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE:C/\.so.*/.la/) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
     else
         LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
 
@@ -1878,10 +1917,10 @@ dnl        esac
 
     # Stub lib does not depend on shared/static configuration
     if test "$RANLIB" = "" ; then
-        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
+        MAKE_STUB_LIB='${STLIB_LD} -o [$]@ ${STUB_LIB_OBJS}'
         INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
     else
-        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
+        MAKE_STUB_LIB='${STLIB_LD} -o [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
         INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
     fi
 
