diff -uNr icu/source/config/Makefile.inc.in icu-patched/source/config/Makefile.inc.in
--- icu/source/config/Makefile.inc.in	Wed Jan  7 02:07:18 2004
+++ icu-patched/source/config/Makefile.inc.in	Mon Jan 26 21:17:56 2004
@@ -49,7 +49,7 @@
 A = a
 
 # Suffix at the end of libraries. Usually empty.
-ICULIBSUFFIX = @ICULIBSUFFIX@
+ICULIBSUFFIX = .@ICULIBSUFFIX@
 # ICULIBSUFFIX_VERSION  is non-empty if it is to contain a library
 # version. For example, if it is 21, it means libraries are named
 # libicuuc21.so for example.
diff -uNr icu/source/config/mh-darwin icu-patched/source/config/mh-darwin
--- icu/source/config/mh-darwin	Tue Oct  7 14:36:10 2003
+++ icu-patched/source/config/mh-darwin	Mon Jan 26 20:01:26 2004
@@ -27,7 +27,7 @@
 SHLIB.cc=	$(CXX) -dynamiclib -dynamic $(CXXFLAGS) $(LDFLAGS)
 
 ## Compiler switches to embed a library name and version information
-LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(MIDDLE_SO_TARGET)
+LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(MIDDLE_SO_TARGET)
 
 ## Compiler switch to embed a runtime search path
 LD_RPATH=
@@ -36,6 +36,16 @@
 ## Environment variable to set a runtime search path
 LDLIBRARYPATH_ENVVAR = DYLD_LIBRARY_PATH
 
+## Override Versioned target for a shared library.
+FINAL_SO_TARGET=  $(basename $(SO_TARGET)).$(SO_TARGET_VERSION).$(SO)
+MIDDLE_SO_TARGET= $(basename $(SO_TARGET)).$(SO_TARGET_VERSION_MAJOR).$(SO)
+
+# The following is for Makefile.inc's use.
+ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
+
+# this one is for icudefs.mk's use
+#SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
+
 ## Shared object suffix
 SO=		dylib
 ## Non-shared intermediate object suffix
@@ -72,9 +82,9 @@
 
 ## Versioned libraries rules
 
-%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
-	$(RM) $@ && ln -s $< $@
-%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
-	$(RM) $@ && ln -s $*.$(SO).$(SO_TARGET_VERSION) $@
+%.$(SO_TARGET_VERSION_MAJOR).$(SO): %.$(SO_TARGET_VERSION).$(SO)
+	$(RM) $@ && ln -s $*.$(SO_TARGET_VERSION).$(SO) $@
+%.$(SO): %.$(SO_TARGET_VERSION).$(SO)
+	$(RM) $@ && ln -s $*.$(SO_TARGET_VERSION).$(SO) $@
 
-## End Darwin-specific setup
\ No newline at end of file
+## End Darwin-specific setup
diff -uNr icu/source/data/Makefile.in icu-patched/source/data/Makefile.in
--- icu/source/data/Makefile.in	Mon Jan 12 12:51:52 2004
+++ icu-patched/source/data/Makefile.in	Mon Jan 26 19:28:32 2004
@@ -126,6 +126,7 @@
 install-local: $(BUILDDIR)/icudata.lst ./icupkg.inc packagedata $(OS390INSTALL)
 	$(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(ICUPKGDATA_DIR)
 ifneq ($(ENABLE_STATIC),)
+ifeq ($(SO),$(A))
 # It is done this way just in case the $(SO) == $(A)
 	mv -f $(OUTDIR)/$(LIB_ICUDATA_NAME).$(SO) $(OUTDIR)/$(LIB_ICUDATA_NAME)-temp.$(SO)
 	mv -f $(OUTDIR)/$(LIB_STATIC_ICUDATA_NAME).$(A) $(OUTDIR)/$(LIB_ICUDATA_NAME).$(A)
@@ -133,6 +134,7 @@
 	mv -f $(OUTDIR)/$(LIB_ICUDATA_NAME).$(A) $(OUTDIR)/$(LIB_STATIC_ICUDATA_NAME).$(A)
 	mv -f $(OUTDIR)/$(LIB_ICUDATA_NAME)-temp.$(SO) $(OUTDIR)/$(LIB_ICUDATA_NAME).$(SO)
 	$(INSTALL-L) $(OUTDIR)/$(LIB_STATIC_ICUDATA_NAME).$(A) $(DESTDIR)$(ICUPKGDATA_DIR)/$(LIB_STATIC_ICUDATA_NAME).$(A)
+endif
 endif
 	$(PKGDATA_INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e $(ICUDATA_ENTRY_POINT) -T $(BUILDDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(BUILDDIR)/icudata.lst -I $(DESTDIR)$(ICUPKGDATA_DIR)