X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..729e4ab9bc6618bc3d8a898e575df7f4019e29ca:/icuSources/config/mh-aix-gcc diff --git a/icuSources/config/mh-aix-gcc b/icuSources/config/mh-aix-gcc index a5d4e911..40564abf 100644 --- a/icuSources/config/mh-aix-gcc +++ b/icuSources/config/mh-aix-gcc @@ -1,11 +1,14 @@ ## -*-makefile-*- -## Copyright (c) 2003-2004 IBM, Ken Foskey, and others. All rights reserved. +## Copyright (c) 2003-2009 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 +# Certain files don't compile in -ansi mode (e.g. umutex.c, toolutil.c, and cdatatst.c) +CFLAGS += -D_ALL_SOURCE + ## Commands to generate dependency files GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) @@ -16,11 +19,12 @@ GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) LINK.c= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) LINK.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) +## Shared library options +LD_SOOPTIONS= -Wl,-bsymbolic + ## 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 -#SHLIB.c= $(AIX_PREDELETE) $(AIX_SHLIB) -p 5000 $(LDFLAGS) -bexpall -#SHLIB.cc= $(AIX_PREDELETE) $(AIX_SHLIB) -p 5000 $(LDFLAGS) -bexpall +SHLIB.c= $(AIX_PREDELETE) $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_SOOPTIONS) +SHLIB.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_SOOPTIONS) ## Compiler switch to embed a runtime search path LD_RPATH= -I @@ -29,6 +33,9 @@ LD_RPATH_PRE= ## enable the shared lib loader LDFLAGS += -Wl,-bbigtoc +## 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 @@ -42,6 +49,8 @@ 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))) +SHARED_OBJECT_NO_VERSION = $(basename $(SO_TARGET)).$(SOBJ) # The following is for Makefile.inc's use. ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) @@ -54,7 +63,12 @@ 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 + ## Shared object suffix +SOBJ= so +# without the -brtl option, the library names use .a. AIX is funny that way. SO= a A= a @@ -65,7 +79,13 @@ STATIC_O = o ## Build archive from shared object %.a : %.so - $(AR) $(ARFLAGS) $@ $< + ln -f $< $(SHARED_OBJECT_NO_VERSION) + $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) + rm -f $(SHARED_OBJECT_NO_VERSION) +$(LIBDIR)/%.a : %.so + ln -f $< $(SHARED_OBJECT_NO_VERSION) + $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) + rm -f $(SHARED_OBJECT_NO_VERSION) ## Build import list from export list %.e : %.exp @@ -108,9 +128,6 @@ STATIC_O = o # LDflags that pkgdata will use BIR_LDFLAGS= -Wl,-bE:$(NAME).map,-bnoexpall -# CPPflags for genccode/gencmn -BIR_CPPFLAGS= -DU_HAVE_BIND_INTERNAL_REFERENCES - # Dependencies [i.e. map files] for the final library BIR_DEPS= $(NAME).map