From 42b2966822e28ec6f64990a1b0386aa18c7757e9 Mon Sep 17 00:00:00 2001 From: Yves Arrouye Date: Fri, 21 Dec 2001 20:10:23 +0000 Subject: [PATCH] ICU-1596 treat the ICU data library as any other regular library, giving it a proper name and versioning scheme, and using rpath as needed too. X-SVN-Rev: 7366 --- icu4c/debian/rules | 3 +-- icu4c/source/data/Makefile.in | 18 ++++++------------ icu4c/source/icudefs.mk.in | 10 ++++++++-- icu4c/source/stubdata/Makefile.in | 8 +++----- icu4c/source/test/cintltst/Makefile.in | 2 +- icu4c/source/tools/Makefile.in | 3 ++- 6 files changed, 21 insertions(+), 23 deletions(-) diff --git a/icu4c/debian/rules b/icu4c/debian/rules index 19e59f277f6..2aa5e466534 100755 --- a/icu4c/debian/rules +++ b/icu4c/debian/rules @@ -142,8 +142,7 @@ binary-arch: build install # $(RM) debian/tmp/usr/lib/libicuctestfw.* dh_movefiles -plibicu$(major) \ - usr/lib/*.so.* \ - usr/lib/libicudt* + usr/lib/*.so.* mkdir debian/libicu$(major)/usr/lib/icu # # build icu package by moving files from icu-dev diff --git a/icu4c/source/data/Makefile.in b/icu4c/source/data/Makefile.in index 0a165e4b6bb..4967ccf340f 100644 --- a/icu4c/source/data/Makefile.in +++ b/icu4c/source/data/Makefile.in @@ -28,7 +28,7 @@ include @platform_make_fragment@ ## Files to remove for 'make clean' ifeq ($(strip $(PKGDATA_MODE)), dll) -CLEANFILES = *~ $(SPECIALTESTDATA) $(LIB_ICUDATA_NAME).$(SO) libicudata.$(SO) +CLEANFILES = *~ $(SPECIALTESTDATA) $(LIB_ICUDATA_NAME).$(SO) else CLEANFILES = *~ $(SPECIALTESTDATA) endif @@ -45,7 +45,7 @@ top_builddir_from_tmp = $(patsubst ..%,../..%,$(top_builddir)) INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(top_builddir_from_tmp)/common:$(top_builddir_from_tmp)/tools/toolutil:$(top_builddir_from_tmp)/stubdata:$$$(LDLIBRARYPATH_ENVVAR) CURDIR=$(shell pwd) PKGDATA = $(top_builddir_from_tmp)/tools/pkgdata/pkgdata -O $(top_builddir_from_tmp)/tools/pkgdata/icupkg.inc -d $(CURDIR) - +PKGDATA_VERSIONING = -V $(SO_TARGET_VERSION) ## List of phony targets .PHONY : all all-local all-recursive install install-local install-udata install-udata-files install-udata-dlls install-convrtrstxt \ @@ -110,27 +110,21 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status packagedata: build/icudata.lst $(top_builddir)/tools/pkgdata/icupkg.inc cd build ; \ - $(INVOKE) $(PKGDATA) -e $(ICUDATA_BASENAME_VERSION) -s . -T . -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) icudata.lst -ifeq ($(strip $(PKGDATA_MODE)), dll) - $(RM) libicudata.$(SO) && ln -s $(LIB_ICUDATA_NAME).$(SO) libicudata.$(SO) ; -endif + $(INVOKE) $(PKGDATA) -e $(ICUDATA_BASENAME_VERSION) -s . -T . -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) icudata.lst packagetest: $(TESTDATAOBJDIR)/testdata.lst $(top_builddir)/tools/pkgdata/icupkg.inc cd $(TESTDATAOBJDIR) ; $(INVOKE) $(PKGDATA) -T . -s . -p testdata -m common testdata.lst cleanpackage: @echo Cleaning up packaged data.. - @-cd build ; $(INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) -s . -T . -p $(ICUDATA_NAME) icudata.lst --clean 2> /dev/null + @-cd build ; $(INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -s . -T . -p $(ICUDATA_NAME) icudata.lst --clean 2> /dev/null @-cd $(TESTDATAOBJDIR) ; $(INVOKE) $(PKGDATA) -m common -T . -s . -p testdata testdata.lst --clean 2> /dev/null $(RMV) $(ICUDATA_NAME).* build/icudata.lst build/*.mak ## Install ICU data. Make a convenience link 'icudata' library if it's a library mode. install-local: build/icudata.lst $(top_builddir)/tools/pkgdata/icupkg.inc install-convrtrstxt $(OS390INSTALL) $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(ICUPKGDATA_DIR) - cd build ; $(INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) -e $(ICUDATA_BASENAME_VERSION) -T . -s . -p $(ICUDATA_NAME) icudata.lst -I $(DESTDIR)$(ICUPKGDATA_DIR) -ifeq ($(strip $(PKGDATA_MODE)),dll) - cd $(DESTDIR)$(ICUPKGDATA_DIR); $(RM) libicudata.$(SO) && ln -s $(LIB_ICUDATA_NAME).$(SO) libicudata.$(SO) -endif + cd build ; $(INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e $(ICUDATA_BASENAME_VERSION) -T . -s . -p $(ICUDATA_NAME) icudata.lst -I $(DESTDIR)$(ICUPKGDATA_DIR) install-convrtrstxt: $(top_srcdir)/../data/convrtrs.txt $(MKINSTALLDIRS) $(DESTDIR)$(pkgsysconfdir) @@ -150,7 +144,7 @@ testudata_nam.typ: build/te_IN.res #### 390 support install390: build/icudata390.lst $(top_builddir)/tools/pkgdata/icupkg.inc $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(libdir) - cd build ; $(INVOKE) $(PKGDATA) -s . -T ../tmp3901 -p $(ICUDATA_NAME)$(BATCH_STUB_SUFFIX) -e $(ICUDATA_BASENAME_VERSION) icudata390.lst -m dll -I $(DESTDIR)$(ICUPKGDATA_DIR) + cd build ; $(INVOKE) $(PKGDATA) -s . -T ../tmp3901 -p $(ICUDATA_NAME)$(BATCH_STUB_SUFFIX) -e $(ICUDATA_BASENAME_VERSION) icudata390.lst -m dll $(PKGDATA_VERSIONING) -I $(DESTDIR)$(ICUPKGDATA_DIR) #### $(LIB_ICUDATA_NAME)$(BATCH_SUFFIX) is the subset data for batch mode package390: build/icudata390.lst build/icudata.lst $(top_builddir)/tools/pkgdata/icupkg.inc diff --git a/icu4c/source/icudefs.mk.in b/icu4c/source/icudefs.mk.in index 3eae7435213..92dc33efd04 100644 --- a/icu4c/source/icudefs.mk.in +++ b/icu4c/source/icudefs.mk.in @@ -35,13 +35,19 @@ UNICODE_VERSION = @UNICODE_VERSION@ SO_TARGET_VERSION = @LIB_VERSION@ SO_TARGET_VERSION_MAJOR = @LIB_VERSION_MAJOR@ -# Should be the same as U_ICUDATA_NAME +# The ICU data external name is usually icudata; the entry point name is +# the version-dependent name (for no particula reason except it was easier +# to change the build this way). When building in common mode, the data +# name is the versioned platform-dependent one. + ICUDATA_BASENAME_VERSION = icudt@LIB_VERSION_MAJOR@ -ICUDATA_NAME = $(ICUDATA_BASENAME_VERSION)@ICUDATA_CHAR@ +ICUDATA_PLATFORM_NAME = $(ICUDATA_BASENAME_VERSION)@ICUDATA_CHAR@ +ICUDATA_NAME = icudata ifeq ($(strip $(PKGDATA_MODE)),) PKGDATA_MODE=@DATA_PACKAGING_MODE@ endif ifeq ($(PKGDATA_MODE),common) +ICUDATA_NAME = $(ICUDATA_PLATFORM_NAME) ICUDATA_DIR = $(pkgdatadir) ICUPKGDATA_DIR = $(ICUDATA_DIR) else diff --git a/icu4c/source/stubdata/Makefile.in b/icu4c/source/stubdata/Makefile.in index 6c66a40aa3a..3a796d67540 100644 --- a/icu4c/source/stubdata/Makefile.in +++ b/icu4c/source/stubdata/Makefile.in @@ -48,8 +48,8 @@ endif # ifneq ($(ENABLE_SHARED),) SO_TARGET = libicudata.$(SO) -MIDDLE_SO_TARGET = lib$(ICUDATA_NAME)$(BATCH_STUB_SUFFIX).$(SO) -ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(BATCH_STUB_TARGET) +MIDDLE_SO_TARGET = libicudata$(BATCH_STUB_SUFFIX).$(SO).$(SO_TARGET_VERSION_MAJOR) +ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(FINAL_SO_TARGET) $(BATCH_STUB_TARGET) endif ALL_TARGETS = $(TARGET) $(ALL_SO_TARGETS) @@ -129,11 +129,9 @@ $(TARGET): $(TARGET)($(STATIC_OBJECTS)) endif ifneq ($(ENABLE_SHARED),) -$(MIDDLE_SO_TARGET): $(OBJECTS) +$(FINAL_SO_TARGET): $(OBJECTS) $(SHLIB.c) $(LD_SONAME) -o $@ $^ $(LIBS) -$(SO_TARGET): $(MIDDLE_SO_TARGET) - $(RM) $(SO_TARGET) && ln -s $(MIDDLE_SO_TARGET) $(SO_TARGET) ifeq ($(OS390BATCH),1) $(BATCH_STUB_TARGET): $(OBJECTS) $(SHLIB.c) $(LD_SONAME) -o $@ $^ $(LIBS) diff --git a/icu4c/source/test/cintltst/Makefile.in b/icu4c/source/test/cintltst/Makefile.in index a582c2dbb52..12b723c938f 100644 --- a/icu4c/source/test/cintltst/Makefile.in +++ b/icu4c/source/test/cintltst/Makefile.in @@ -40,7 +40,7 @@ BUILDDIR := $(shell pwd)/../.. # we define ICU_UNICODE_VERSION so we can test it CPPFLAGS = @CPPFLAGS@ -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/tools/toolutil \ - -DICU_UNICODE_VERSION=\"$(UNICODE_VERSION)\" -DICU_VERSION=\"@VERSION@\" -DICUDATA_NAME=\"$(ICUDATA_NAME)\" -DU_TOPSRCDIR=\"$(top_srcdir)/\" -DU_TOPBUILDDIR=\"$(BUILDDIR)\" + -DICU_UNICODE_VERSION=\"$(UNICODE_VERSION)\" -DICU_VERSION=\"@VERSION@\" -DICUDATA_NAME=\"$(ICUDATA_PLATFORM_NAME)\" -DU_TOPSRCDIR=\"$(top_srcdir)/\" -DU_TOPBUILDDIR=\"$(BUILDDIR)\" CFLAGS = @CFLAGS@ CXXFLAGS = @CXXFLAGS@ ENABLE_RPATH = @ENABLE_RPATH@ diff --git a/icu4c/source/tools/Makefile.in b/icu4c/source/tools/Makefile.in index 202f597ad81..99be982e6ec 100644 --- a/icu4c/source/tools/Makefile.in +++ b/icu4c/source/tools/Makefile.in @@ -39,6 +39,7 @@ DATABUILDDIR=$(OBJDATADIR) top_builddir_from_tmp = $(patsubst ..%,../..%,$(top_builddir)) INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(top_builddir_from_tmp)/common:$(top_builddir_from_tmp)/tools/toolutil:$$$(LDLIBRARYPATH_ENVVAR) PKGDATA = ../pkgdata/pkgdata -T . -s $(DATABUILDDIR) -O ./icupkg.inc -d $(DATABUILDDIR) +PKGDATA_VERSIONING = -V $(SO_TARGET_VERSION) ## Install program information MKINSTALLDIRS = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -151,7 +152,7 @@ clean-local: clean-pkgdata $(RMV) $(DATAFILES) $(RMV) icupkg.inc -@if [ -f $(TMPDATADIR)/$(ICUDATA_NAME)_dll.mak ]; then \ - (cd pkgdata ; $(INVOKE) ./pkgdata -T $(TMPDATADIR) -m dll -p $(ICUDATA_NAME) -O $(DATABUILDDIR)/icupkg.inc $(TMPDATADIR)/$(ICUDATA_NAME).lst -d $(DATABUILDDIR) --clean ) \ + (cd pkgdata ; $(INVOKE) ./pkgdata -T $(TMPDATADIR) -m dll $(PKGDATA_VERSIONING) -p $(ICUDATA_NAME) -O $(DATABUILDDIR)/icupkg.inc $(TMPDATADIR)/$(ICUDATA_NAME).lst -d $(DATABUILDDIR) --clean ) \ fi -@if [ -f $(TMPDATADIR)/$(ICUDATA_NAME)_common.mak ]; then \ (cd pkgdata; $(INVOKE) ./pkgdata -T $(TMPDATADIR) -m common -p $(ICUDATA_NAME) -O $(DATABUILDDIR)/icupkg.inc $(TMPDATADIR)/$(ICUDATA_NAME).lst -d $(DATABUILDDIR) --clean ) \