Add a suffix for Darwin's sake, since it seems like .dylib comes after
the version in the file name.
diff --git a/Makefile.shared b/Makefile.shared
index 033c8b7..9f8c33d 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -75,16 +75,16 @@
 LINK_SO=	\
   ( $(DEBUG); \
     nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
-    $$SHAREDCMD $(SHARED_LDFLAGS) $$SHAREDFLAGS -o $$SHLIB$$SHLIB_SOVER \
+    $$SHAREDCMD $(SHARED_LDFLAGS) $$SHAREDFLAGS -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
 	$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS ) && \
   $(SYMLINK_SO); ( $(DEBUG); rm -f lib$(LIBNAME).exp )
 SYMLINK_SO=	\
 	if [ -n "$$SHLIB_COMPAT"]; then \
-		prev=$$SHLIB$$SHLIB_SOVER; \
+		prev=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
 		for x in $$SHLIB_COMPAT; do \
-			( $(DEBUG); rm -f $$SHLIB$$x; \
-			  ln -s $$prev $$SHLIB$$x ); \
-			prev=$$SHLIB$$x; \
+			( $(DEBUG); rm -f $$SHLIB$$x$$SHLIB_SUFFIX; \
+			  ln -s $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
+			prev=$$SHLIB$$x$$SHLIB_SUFFIX; \
 		done; \
 	fi
 LINK_SO_A=	SHOBJECTS="lib$(LIBNAME).a $(LIBEXTRAS)"; $(LINK_SO)
@@ -108,25 +108,28 @@
 link_o.gnu:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	NOALLSYMSFLAGS='-Wl,--no-whole-archive' \
-	SHAREDFLAGS="-shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER" \
+	SHAREDFLAGS="-shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX" \
 	SHAREDCMD='$(CC)'; \
 	$(LINK_SO_O)
 link_a.gnu:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS='-Wl,--whole-archive' \
 	NOALLSYMSFLAGS='-Wl,--no-whole-archive' \
-	SHAREDFLAGS="-shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER" \
+	SHAREDFLAGS="-shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX" \
 	SHAREDCMD='$(CC)'; \
 	$(LINK_SO_A)
 
 # For Darwin AKA Mac OS/X (dyld)
 link_o.darwin:
 	@ $(CALC_VERSIONS); \
-	SHLIB=lib$(LIBNAME).dylib \
+	SHLIB=lib$(LIBNAME) \
+	SHLIB_SUFFIX=.dylib \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS='-all_load' \
 	NOALLSYMSFLAGS='' \
@@ -136,6 +139,7 @@
 link_a.darwin:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME)$$SHLIB_SOVER.dylib \
+	SHLIB_SUFFIX=.dylib \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS='-all_load' \
 	NOALLSYMSFLAGS='' \
@@ -145,6 +149,7 @@
 
 link_o.cygwin:
 	@ SHLIB=cyg$(LIBNAME).dll \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	SHLIB_SOVER= \
 	ALLSYMSFLAGS='-Wl,--whole-archive' \
@@ -154,6 +159,7 @@
 	$(LINK_SO_O)
 link_a.cygwin:
 	@ SHLIB=cyg$(LIBNAME).dll \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	SHLIB_SOVER= \
 	ALLSYMSFLAGS='-Wl,--whole-archive' \
@@ -172,6 +178,7 @@
 			LIBDEPS="$(LIBDEPS)" link_o.gnu; \
 	else \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
 		if [ -n "$$SHLIB_HIST" ]; then \
@@ -196,6 +203,7 @@
 			LIBDEPS="$(LIBDEPS)" link_o.gnu; \
 	else \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
 		if [ -n "$$SHLIB_HIST" ]; then \
@@ -223,6 +231,7 @@
 			LIBDEPS="$(LIBDEPS)" link_o.gnu; \
 	else \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
 		if [ -n "$$SHLIB_HIST" ]; then \
@@ -247,6 +256,7 @@
 			LIBDEPS="$(LIBDEPS)" link_o.gnu; \
 	else \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
 		if [ -n "$$SHLIB_HIST" ]; then \
@@ -274,6 +284,7 @@
 			LIBDEPS="$(LIBDEPS)" link_o.gnu; \
 	else \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
 		if [ -n "$$SHLIB_HIST" ]; then \
@@ -298,6 +309,7 @@
 			LIBDEPS="$(LIBDEPS)" link_o.gnu; \
 	else \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		SHLIB_HIST=`echo "$(LIBCOMPATVERSIONS)" | cut -d';' -f2 | sed -e 's/ */:/'`; \
 		if [ -n "$$SHLIB_HIST" ]; then \
@@ -324,10 +336,11 @@
 	else \
 		$(CALC_VERSIONS); \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		ALLSYMSFLAGS='-z allextract' \
 		NOALLSYMSFLAGS='' \
-		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER' \
+		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 		SHAREDCMD='$(CC)'; \
 		$(LINK_SO_O); \
 	fi
@@ -342,10 +355,11 @@
 	else \
 		$(CALC_VERSIONS); \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		ALLSYMSFLAGS='-z allextract' \
 		NOALLSYMSFLAGS='' \
-		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER' \
+		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 		SHAREDCMD='$(CC)'; \
 		$(LINK_SO_A); \
 	fi
@@ -363,10 +377,11 @@
 	else \
 		$(CALC_VERSIONS); \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		ALLSYMSFLAGS='-z allextract' \
 		NOALLSYMSFLAGS='' \
-		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER' \
+		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 		SHAREDCMD='$(CC)'; \
 		$(LINK_SO_O); \
 	fi
@@ -381,10 +396,11 @@
 	else \
 		$(CALC_VERSIONS); \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		ALLSYMSFLAGS='-z allextract' \
 		NOALLSYMSFLAGS='' \
-		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER' \
+		SHAREDFLAGS='-G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 		SHAREDCMD='$(CC)'; \
 		$(LINK_SO_A_UNPACKED); \
 	fi
@@ -400,10 +416,11 @@
 	else \
 		$(CALC_VERSIONS); \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		ALLSYMSFLAGS='-all' \
 		NOALLSYMSFLAGS='' \
-		SHAREDFLAGS='-shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER' \
+		SHAREDFLAGS='-shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 		SHAREDCMD='$(CC)'; \
 		$(LINK_SO_O); \
 	fi
@@ -418,10 +435,11 @@
 	else \
 		$(CALC_VERSIONS); \
 		SHLIB=lib$(LIBNAME).so \
+		SHLIB_SUFFIX= \
 		LIBDEPS="$(LIBDEPS)" \
 		ALLSYMSFLAGS='-all' \
 		NOALLSYMSFLAGS='' \
-		SHAREDFLAGS='-shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER' \
+		SHAREDFLAGS='-shared -Wl,-soname,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 		SHAREDCMD='$(CC)'; \
 		$(LINK_SO_A); \
 	fi
@@ -439,21 +457,23 @@
 link_o.hpux32:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).sl \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS) -lc" \
 	ALLSYMSFLAGS='-Fl' \
 	NOALLSYMSFLAGS='' \
-	SHAREDFLAGS='+vnocompatwarnings -b -z +s +h $$SHLIB$$SHLIB_SOVER' \
+	SHAREDFLAGS='+vnocompatwarnings -b -z +s +h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 	SHAREDCMD='/usr/ccs/bin/ld'; \
-	$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER
+	$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 link_a.hpux32:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).sl \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS) -lc" \
 	ALLSYMSFLAGS='-Fl' \
 	NOALLSYMSFLAGS='' \
-	SHAREDFLAGS='+vnocompatwarnings -b -z +s +h $$SHLIB$$SHLIB_SOVER' \
+	SHAREDFLAGS='+vnocompatwarnings -b -z +s +h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 	SHAREDCMD='/usr/ccs/bin/ld'; \
-	$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER
+	$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 
 # HP-UX includes the full pathname of libs we depend on, so we would get
 # ./libcrypto (with ./ as path information) compiled into libssl, hence
@@ -466,25 +486,28 @@
 link_o.hpux64:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).sl \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS) -lc" \
 	ALLSYMSFLAGS='+forceload' \
 	NOALLSYMSFLAGS='' \
-	SHAREDFLAGS='-b -z +h $$SHLIB$$SHLIB_SOVER' \
+	SHAREDFLAGS='-b -z +h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 	SHAREDCMD='/usr/ccs/bin/ld'; \
-	$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER
+	$(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 link_a.hpux64:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).sl \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS) -lc" \
 	ALLSYMSFLAGS='+forceload' \
 	NOALLSYMSFLAGS='' \
-	SHAREDFLAGS='-b -z +h $$SHLIB$$SHLIB_SOVER' \
+	SHAREDFLAGS='-b -z +h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX' \
 	SHAREDCMD='/usr/ccs/bin/ld'; \
-	$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER
+	$(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
 
 link_o.aix:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS='-bnogc' \
 	NOALLSYMSFLAGS='' \
@@ -494,6 +517,7 @@
 link_a.aix:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS='-bnogc' \
 	NOALLSYMSFLAGS='' \
@@ -504,6 +528,7 @@
 link_o.reliantunix:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS= \
 	NOALLSYMSFLAGS='' \
@@ -513,6 +538,7 @@
 link_a.reliantunix:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
+	SHLIB_SUFFIX= \
 	LIBDEPS="$(LIBDEPS)" \
 	ALLSYMSFLAGS= \
 	NOALLSYMSFLAGS='' \
@@ -521,11 +547,16 @@
 	$(LINK_SO_A_UNPACKED)
 
 # Targets to build symbolic links when needed
-symlink.gnu symlink.darwin symlink.solaris symlink.svr3 symlink.irix \
+symlink.gnu symlink.solaris symlink.svr3 symlink.irix \
 symlink.aix symlink.reliantunix:
 	@ $(CALC_VERSIONS); \
 	SHLIB=lib$(LIBNAME).so \
 	$(SYMLINK_SO)
+symlink.darwin:
+	@ $(CALC_VERSIONS); \
+	SHLIB=lib$(LIBNAME) \
+	SHLIB_SUFFIX=.dylib \
+	$(SYMLINK_SO)
 symlink.cygwin symlib.alpha-osf1 symlink.tru64 symlink.tru64-rpath:
 symlink.hpux32 symlink.hpux64:
 	@ $(CALC_VERSIONS); \