]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/config/mh-aix-gcc
ICU-461.12.tar.gz
[apple/icu.git] / icuSources / config / mh-aix-gcc
index a5d4e9115090fed1abb5d4d733ef2736b09f7f31..40564abf00866c64999ad1ea1f674818ab6511b5 100644 (file)
@@ -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