diff options
author | Caolán McNamara <caolanm@redhat.com> | 2010-10-13 13:23:48 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2010-10-13 14:34:03 +0100 |
commit | c6ab29e5621f30bbb214ad2fb7c6cf5ad159c0d7 (patch) | |
tree | dede03b7cebee455499ce6bbab42c9fb4aca3e08 | |
parent | d739047a91c294d4e87d09c90401f22b4a716e96 (diff) |
add aix build fixes
-rw-r--r-- | icu/icu4c-aix.patch | 155 | ||||
-rw-r--r-- | icu/makefile.mk | 9 |
2 files changed, 163 insertions, 1 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" diff --git a/icu/makefile.mk b/icu/makefile.mk index 2fafcfa75e8d..82e74bd455ba 100644 --- a/icu/makefile.mk +++ b/icu/makefile.mk @@ -46,7 +46,9 @@ TARFILE_MD5= .ENDIF TARFILE_ROOTDIR=icu -PATCH_FILES=${TARFILE_NAME}.patch +PATCH_FILES=\ + ${TARFILE_NAME}.patch \ + icu4c-aix.patch # ADDITIONAL_FILES= @@ -95,6 +97,11 @@ CONFIGURE_ACTION=rm data/mappings/ucm*.mk data/translit/trn*.mk ; DISABLE_64BIT=--enable-64bit-libs=no .ENDIF # "$(OS)"=="SOLARIS" +.IF "$(OS)"=="AIX" +DISABLE_64BIT=--enable-64bit-libs=no +LDFLAGSADD+=$(LINKFLAGS) $(LINKFLAGSRUNPATH_OOO) +.ENDIF # "$(OS)"=="AIX" + .IF "$(HAVE_LD_HASH_STYLE)" == "TRUE" LDFLAGSADD += -Wl,--hash-style=both .ENDIF |