diff --git a/scripts/packageBinaries.pl b/scripts/packageBinaries.pl
index 025ba81c7260f10e88f9959776241700590fb39d..5679a5b887da74299c6aff71039d5156f1db1068 100644
--- a/scripts/packageBinaries.pl
+++ b/scripts/packageBinaries.pl
@@ -1262,10 +1262,10 @@ if ( ($platform =~ m/AIX/i)   || ($platform =~ m/HP-UX/i) || ($platform =~ m/BeO
     }
 
 	# Mac OS X
-    if ((-e "$XERCESCROOT/lib/libxerces-c.dylib.22.0" )) {
-        psystem("cp -f $XERCESCROOT/lib/libxerces-c.dylib.22.0 .");
-        psystem("ln -s libxerces-c.dylib.22.0 libxerces-c.dylib.22 ");
-        psystem("ln -s libxerces-c.dylib.22   libxerces-c.dylib    ");
+    if ((-e "$XERCESCROOT/lib/libxerces-c.22.0.dylib" )) {
+        psystem("cp -f $XERCESCROOT/lib/libxerces-c.22.0.dylib .");
+        psystem("ln -s libxerces-c.22.0.dylib libxerces-c.22.dylib ");
+        psystem("ln -s libxerces-c.22.dylib   libxerces-c.dylib    ");
     }
 
     # Populate the Message Catalog Files
diff --git a/src/xercesc/Makefile.incl b/src/xercesc/Makefile.incl
index 8a6b708c6ec5e5ae5a4f9f8dfa1a9b3ddb6f3642..89ff8bc3d8bcaa7fe728ce47a8373f64f34d955e 100644
--- a/src/xercesc/Makefile.incl
+++ b/src/xercesc/Makefile.incl
@@ -514,6 +514,7 @@ ifeq (${PLATFORM}, MACOSX)
         ALLLIBS = ${LIBS} -L/usr/lib
     endif
     SHLIBSUFFIX=.dylib
+	LD_SONAME = -install_name ${SO_NAME}
 endif
 
 #=============== CygWin SPECIFIC OPTIONS =========================
@@ -545,48 +546,56 @@ endif
 #
 #
 ifeq (${PLATFORM}, AIX)
-
     #
     # LINK_NAME=libxerces-c.so
     # SO_NAME  =libxerces-c20.so
     # REAL_NAME=libxerces-c20.0.so
     #
-
     LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
     SO_NAME  =${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}
     REAL_NAME=${LIBNAME}${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}${SHLIBSUFFIX}
+endif
+ifeq (${PLATFORM}, OS390)
+	#
+	# LINK_NAME=libxerces-c.dll
+	# SO_NAME  =libxerces-c20.dll
+	# REAL_NAME=libxerces-c2_0_0.dll
+	#
+	LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
+	SO_NAME  =${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}
+	REAL_NAME=${LIBNAME}${VER}${SHLIBSUFFIX}
+endif
+ifeq (${PLATFORM}, CYGWIN)
+	#
+	# LINK_NAME=libxerces-c.dll
+	# SO_NAME  =cygxerces-c20.dll
+	# REAL_NAME=libxerces-c2_0_0.dll
+	#
+	LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
+	SO_NAME  =${CYGNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}
+	REAL_NAME=${LIBNAME}${VER}${SHLIBSUFFIX}
+endif
+ifeq (${PLATFORM}, MACOSX)
+    #
+    # LINK_NAME=libxerces-c.{suffix}
+    # SO_NAME  =libxerces-c.20.{suffix}
+    # REAL_NAME=libxerces-c.20.0.{suffix}
+    #
+    LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
+    SO_NAME  =${LIBNAME}.${SO_TARGET_VERSION}${SHLIBSUFFIX}
+    REAL_NAME=${LIBNAME}.${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}${SHLIBSUFFIX}
+endif
 
-else
-    ifeq (${PLATFORM}, OS390)
-        #
-        # LINK_NAME=libxerces-c.dll
-        # SO_NAME  =libxerces-c20.dll
-        # REAL_NAME=libxerces-c2_0_0.dll
-        #
-        LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
-        SO_NAME  =${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}
-        REAL_NAME=${LIBNAME}${VER}${SHLIBSUFFIX}
-    else
-        ifeq (${PLATFORM}, CYGWIN)
-            #
-            # LINK_NAME=libxerces-c.dll
-            # SO_NAME  =cygxerces-c20.dll
-            # REAL_NAME=libxerces-c2_0_0.dll
-            #
-            LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
-            SO_NAME  =${CYGNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}
-            REAL_NAME=${LIBNAME}${VER}${SHLIBSUFFIX}
-        else
-            #
-            # LINK_NAME=libxerces-c.so
-            # SO_NAME  =libxerces-c.so.20
-            # REAL_NAME=libxerces-c.so.20.0
-            #
-            LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
-            SO_NAME  =${LIBNAME}${SHLIBSUFFIX}.${SO_TARGET_VERSION}
-            REAL_NAME=${LIBNAME}${SHLIBSUFFIX}.${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}
-        endif
-    endif
+# Default naming (if no special cases above)
+ifeq ($(SO_NAME),) 
+	#
+	# LINK_NAME=libxerces-c.so
+	# SO_NAME  =libxerces-c.so.20
+	# REAL_NAME=libxerces-c.so.20.0
+	#
+	LINK_NAME=${LIBNAME}${SHLIBSUFFIX}
+	SO_NAME  =${LIBNAME}${SHLIBSUFFIX}.${SO_TARGET_VERSION}
+	REAL_NAME=${LIBNAME}${SHLIBSUFFIX}.${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}
 endif
 
 
@@ -594,6 +603,7 @@ FQ_LINK_NAME=${XML_LIB_DIR}/${LINK_NAME}
 FQ_SO_NAME  =${XML_LIB_DIR}/${SO_NAME}
 FQ_REAL_NAME=${XML_LIB_DIR}/${REAL_NAME}
 
+
 ###################### STANDARD TOOLS #############################
 ifeq (${PLATFORM}, OS400)
 CP = -cp -fph