office-gobmx/icu/icu4c-aix.patch
2010-10-13 14:34:03 +01:00

155 lines
5.4 KiB
Diff

--- misc/icu/source/config/mh-aix-gcc 2009-01-15 01:46:10.000000000 -0600
+++ misc/build/icu/source/config/mh-aix-gcc 2010-06-24 20:58:16.000000000 -0500
@@ -1,85 +1,49 @@
## -*-makefile-*-
-## Copyright (c) 2003-2007 IBM, Ken Foskey, and others. All rights reserved.
-##
-## Aix-specific setup (for gcc)
-##
-## Please note: AIX does NOT have library versioning per se (there is no 'SONAME' capability).
-## So, we are using 'windows' style library names, that is, libicuuc20.1.so instead of libicuuc.so.20.1
+## Linux-specific setup
+## Copyright (c) 1999-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
## Commands to generate dependency files
-GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
-GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
+GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
+GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
-## Commands to link
-## We need to use the C++ linker, even when linking C programs, since
-## our libraries contain C++ code (C++ static init not called)
-LINK.c= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
-LINK.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
-
-## Commands to make a shared library
-SHLIB.c= $(AIX_PREDELETE) $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-bexpall
-SHLIB.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-bexpall
+## Flags for position independent code
+SHAREDLIBCFLAGS = -fPIC
+SHAREDLIBCXXFLAGS = -fPIC
+SHAREDLIBCPPFLAGS = -DPIC
+
+## Additional flags when building libraries and with threads
+THREADSCPPFLAGS = -D_REENTRANT -D_THREAD_SAFE
+LIBCPPFLAGS =
## Compiler switch to embed a runtime search path
-LD_RPATH= -I
-LD_RPATH_PRE=
+LD_RPATH=
+LD_RPATH_PRE =
-## enable the shared lib loader
-LDFLAGS += -Wl,-bbigtoc
+## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH
+## (incl. the C++ runtime libs potentially found in the URE lib dir):
+#ENABLE_RPATH=YES
+#RPATHLDFLAGS=${LD_RPATH_PRE}'$$ORIGIN:$$ORIGIN/../ure-link/lib'
+
+#SH# ENABLE_RPATH=YES
+#SH# RPATHLDFLAGS="${LD_RPATH_PRE}'$$ORIGIN:$$ORIGIN/../ure-link/lib'"
## These are the library specific LDFLAGS
LDFLAGSICUDT=-nodefaultlibs -nostdlib
-## We need to delete things prior to linking, or else we'll get
-## SEVERE ERROR: output file in use .. on AIX.
-## But, shell script version should NOT delete target as we don't
-## have $@ in that context. (SH = only shell script, icu-config)
-AIX_PREDELETE=rm -f $@ ;
-#SH# AIX_PREDELETE=
-
## Environment variable to set a runtime search path
LDLIBRARYPATH_ENVVAR = LIBPATH
-## 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)
-SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)))
-
-# The following is for Makefile.inc's use.
-ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
-
-# this one is for icudefs.mk's use
-ifeq ($(ENABLE_SHARED),YES)
-SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
-endif
-
-## Compiler switch to embed a library name. Not present on AIX.
-LD_SONAME =
-
-## The type of assembly needed when pkgdata is used for generating shared libraries.
-GENCCODE_ASSEMBLY=-a xlc
+## Compiler switch to embed a library name
+# The initial tab in the next line is to prevent icu-config from reading it.
+ #LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET))
+#SH# # We can't depend on MIDDLE_SO_TARGET being set.
+#SH# LD_SONAME=
## Shared object suffix
-SOBJ= so
-# without the -brtl option, the library names use .a. AIX is funny that way.
-SO= a
-A= a
-
+SO = so
## Non-shared intermediate object suffix
-STATIC_O = o
-
-## Special AIX rules
-
-## Build archive from shared object
-%.a : %.so
- $(AR) $(ARFLAGS) $@ $<
-$(LIBDIR)/%.a : %.so
- $(AR) $(ARFLAGS) $@ $<
-
-## Build import list from export list
-%.e : %.exp
- @echo "Building an import list for $<"
- @$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@"
+STATIC_O = ao
## Compilation rules
%.$(STATIC_O): $(srcdir)/%.c
@@ -107,16 +71,19 @@
[ -s $@ ] || rm -f $@'
## Versioned libraries rules
-%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
- $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
-%.$(SO): %$(SO_TARGET_VERSION).$(SO)
- $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
+%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
+ $(RM) $@ && ln -s ${<F} $@
+%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
+ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
+
+## Bind internal references
-## BIR - bind with internal references [so app data and icu data doesn't collide]
# LDflags that pkgdata will use
-BIR_LDFLAGS= -Wl,-bE:$(NAME).map,-bnoexpall
+BIR_LDFLAGS= -Wl,-Bsymbolic
# Dependencies [i.e. map files] for the final library
-BIR_DEPS= $(NAME).map
+BIR_DEPS=
+
+## End Linux-specific setup
--- misc/icu/source/tools/pkgdata/dllmode.c 2010-07-27 09:29:19.000000000 -0500
+++ misc/build/icu/source/tools/pkgdata/dllmode.c 2010-07-27 09:29:48.000000000 -0500
@@ -222,7 +222,7 @@
"\t$(SHLIB.c) -o $@ $(OBJECTS) $(DLL_LDFLAGS)\n\n");
#endif
-#ifdef U_AIX
+#if 0
T_FileStream_writeLine(makefile, "$(TARGETDIR)/$(FINAL_SO_TARGET): $(OBJECTS) $(LISTFILES) $(DLL_DEPS)\n"
"\t$(SHLIB.c) -o $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)) $(OBJECTS) $(DLL_LDFLAGS)\n"
"\t$(AR) $(ARFLAGS) $@ $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ))\n"