1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/intl/icu/source/config/mh-aix-gcc Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,133 @@ 1.4 +## -*-makefile-*- 1.5 +## Copyright (c) 2003-2009 IBM, Ken Foskey, and others. All rights reserved. 1.6 +## 1.7 +## Aix-specific setup (for gcc) 1.8 +## 1.9 +## Please note: AIX does NOT have library versioning per se (there is no 'SONAME' capability). 1.10 +## So, we are using 'windows' style library names, that is, libicuuc20.1.so instead of libicuuc.so.20.1 1.11 + 1.12 +# Certain files don't compile in -ansi mode (e.g. umutex.c, toolutil.c, and cdatatst.c) 1.13 +CFLAGS += -D_ALL_SOURCE 1.14 + 1.15 +## Commands to generate dependency files 1.16 +GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) 1.17 +GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) 1.18 + 1.19 +## Commands to link 1.20 +## We need to use the C++ linker, even when linking C programs, since 1.21 +## our libraries contain C++ code (C++ static init not called) 1.22 +LINK.c= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) 1.23 +LINK.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) 1.24 + 1.25 +## Shared library options 1.26 +LD_SOOPTIONS= -Wl,-bsymbolic 1.27 + 1.28 +## Commands to make a shared library 1.29 +SHLIB.c= $(AIX_PREDELETE) $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_SOOPTIONS) 1.30 +SHLIB.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_SOOPTIONS) 1.31 + 1.32 +## Compiler switch to embed a runtime search path 1.33 +LD_RPATH= -I 1.34 +LD_RPATH_PRE= 1.35 + 1.36 +## enable the shared lib loader 1.37 +LDFLAGS += -Wl,-bbigtoc 1.38 + 1.39 +## These are the library specific LDFLAGS 1.40 +LDFLAGSICUDT=-nodefaultlibs -nostdlib 1.41 + 1.42 +## We need to delete things prior to linking, or else we'll get 1.43 +## SEVERE ERROR: output file in use .. on AIX. 1.44 +## But, shell script version should NOT delete target as we don't 1.45 +## have $@ in that context. (SH = only shell script, icu-config) 1.46 +AIX_PREDELETE=rm -f $@ ; 1.47 +#SH# AIX_PREDELETE= 1.48 + 1.49 +## Environment variable to set a runtime search path 1.50 +LDLIBRARYPATH_ENVVAR = LIBPATH 1.51 + 1.52 +## Override Versioned target for a shared library. 1.53 +FINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) 1.54 +MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) 1.55 +SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ))) 1.56 +SHARED_OBJECT_NO_VERSION = $(basename $(SO_TARGET)).$(SOBJ) 1.57 + 1.58 +# The following is for Makefile.inc's use. 1.59 +ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) 1.60 + 1.61 +# this one is for icudefs.mk's use 1.62 +ifeq ($(ENABLE_SHARED),YES) 1.63 +SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR) 1.64 +endif 1.65 + 1.66 +## Compiler switch to embed a library name. Not present on AIX. 1.67 +LD_SONAME = 1.68 + 1.69 +## The type of assembly needed when pkgdata is used for generating shared libraries. 1.70 +GENCCODE_ASSEMBLY=-a xlc 1.71 + 1.72 +## Shared object suffix 1.73 +SOBJ= so 1.74 +# without the -brtl option, the library names use .a. AIX is funny that way. 1.75 +SO= a 1.76 +A= a 1.77 + 1.78 +## Non-shared intermediate object suffix 1.79 +STATIC_O = o 1.80 + 1.81 +## Special AIX rules 1.82 + 1.83 +## Build archive from shared object 1.84 +%.a : %.so 1.85 + ln -f $< $(SHARED_OBJECT_NO_VERSION) 1.86 + $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) 1.87 + rm -f $(SHARED_OBJECT_NO_VERSION) 1.88 +$(LIBDIR)/%.a : %.so 1.89 + ln -f $< $(SHARED_OBJECT_NO_VERSION) 1.90 + $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) 1.91 + rm -f $(SHARED_OBJECT_NO_VERSION) 1.92 + 1.93 +## Build import list from export list 1.94 +%.e : %.exp 1.95 + @echo "Building an import list for $<" 1.96 + @$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@" 1.97 + 1.98 +## Compilation rules 1.99 +%.$(STATIC_O): $(srcdir)/%.c 1.100 + $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< 1.101 +%.o: $(srcdir)/%.c 1.102 + $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< 1.103 + 1.104 +%.$(STATIC_O): $(srcdir)/%.cpp 1.105 + $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 1.106 +%.o: $(srcdir)/%.cpp 1.107 + $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 1.108 + 1.109 + 1.110 +## Dependency rules 1.111 +%.d: $(srcdir)/%.c 1.112 + @echo "generating dependency information for $<" 1.113 + @$(SHELL) -ec '$(GEN_DEPS.c) $< \ 1.114 + | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ 1.115 + [ -s $@ ] || rm -f $@' 1.116 + 1.117 +%.d: $(srcdir)/%.cpp 1.118 + @echo "generating dependency information for $<" 1.119 + @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ 1.120 + | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ 1.121 + [ -s $@ ] || rm -f $@' 1.122 + 1.123 +## Versioned libraries rules 1.124 +%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) 1.125 + $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 1.126 +%.$(SO): %$(SO_TARGET_VERSION).$(SO) 1.127 + $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 1.128 + 1.129 + 1.130 +## BIR - bind with internal references [so app data and icu data doesn't collide] 1.131 +# LDflags that pkgdata will use 1.132 +BIR_LDFLAGS= -Wl,-bE:$(NAME).map,-bnoexpall 1.133 + 1.134 +# Dependencies [i.e. map files] for the final library 1.135 +BIR_DEPS= $(NAME).map 1.136 +