summaryrefslogtreecommitdiffstats
path: root/icu/icu4c-aix.patch
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2010-10-13 13:23:48 +0100
committerCaolán McNamara <caolanm@redhat.com>2010-10-13 14:34:03 +0100
commitc6ab29e5621f30bbb214ad2fb7c6cf5ad159c0d7 (patch)
treedede03b7cebee455499ce6bbab42c9fb4aca3e08 /icu/icu4c-aix.patch
parentfix AIX build (diff)
downloadcore-c6ab29e5621f30bbb214ad2fb7c6cf5ad159c0d7.tar.gz
core-c6ab29e5621f30bbb214ad2fb7c6cf5ad159c0d7.zip
add aix build fixes
Diffstat (limited to 'icu/icu4c-aix.patch')
-rw-r--r--icu/icu4c-aix.patch155
1 files changed, 155 insertions, 0 deletions
diff --git a/icu/icu4c-aix.patch b/icu/icu4c-aix.patch
new file mode 100644
index 000000000000..fa43e8563588
--- /dev/null
+++ b/icu/icu4c-aix.patch
@@ -0,0 +1,155 @@
+--- 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"