1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## -*-makefile-*-
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Aix-specific setup (for Visual Age 5+)
327f654740f2a26ad62a5c155af9199af9e69b889claireho## Copyright (c) 1999-2010, International Business Machines Corporation and
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to generate dependency files
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGEN_DEPS.c=	$(CC) -E -M $(DEFS) $(CPPFLAGS)
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGEN_DEPS.cc=	$(CXX) -E -M $(DEFS) $(CPPFLAGS)
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# -qroconst make the strings readonly, which is usually the default.
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#           This helps in the data library,
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# -qproto assumes all functions are prototyped (for optimization)
1327f654740f2a26ad62a5c155af9199af9e69b889claireho# -qrtti turns on compiler RTTI, required beginning with ICU 4.6
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruCFLAGS += -qproto -qroconst
1527f654740f2a26ad62a5c155af9199af9e69b889clairehoCXXFLAGS += -qproto -qroconst -qrtti
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# If you readd this line, you must change the SO value
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#LDFLAGS += -brtl
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
2050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoifeq ($(UCLN_NO_AUTO_CLEANUP),0)
2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho# set up init point.
2250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoUCLN_FINI =  ucln_fini$(TARGET_STUBNAME)_$(SO_TARGET_VERSION_MAJOR)$(ICULIBSUFFIXCNAME)
2350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoCPPFLAGS_FINI = -DUCLN_FINI=$(UCLN_FINI)
2450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLDFLAGS_FINI = -binitfini::$(UCLN_FINI)
2550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoCPPFLAGSICUUC += $(CPPFLAGS_FINI)
2750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLDFLAGSICUUC += $(LDFLAGS_FINI)
2850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoCPPFLAGSICUIO += $(CPPFLAGS_FINI)
2950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLDFLAGSICUIO += $(LDFLAGS_FINI)
3050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoCPPFLAGSICUI18N += $(CPPFLAGS_FINI)
3150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLDFLAGSICUI18N += $(LDFLAGS_FINI)
3250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoCPPFLAGSCTESTFW += $(CPPFLAGS_FINI)
3350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLDFLAGSCTESTFW += $(LDFLAGS_FINI)
3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho# ICUUC, ICUIO, ICUI18N, CTESTFW
3650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoendif
3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## We need to delete things prior to linking, or else we'll get
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## SEVERE ERROR: output file in use ..  on AIX. 
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## But, shell script version should NOT delete target as we don't
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## have $@ in that context.  (SH = only shell script, icu-config)
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruAIX_PREDELETE=rm -f $@ ; 
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#SH# AIX_PREDELETE=
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to link
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## We need to use the C++ linker, even when linking C programs, since
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru##  our libraries contain C++ code (C++ static init not called)
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLINK.c=		$(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLINK.cc=	$(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to make a shared library
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## -G means -berok -brtl -bnortllib -bnosymbolic -bnoautoexp
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## -bh:8 means halt on errors or worse.  We don't display warnings about
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru##      duplicate inline symbols.
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHLIB.c=	$(AIX_PREDELETE) $(CXX) -qmkshrobj -G $(LDFLAGS)
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHLIB.cc=	$(AIX_PREDELETE) $(CXX) -qmkshrobj -G $(LDFLAGS)
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compiler switch to embed a runtime search path
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_RPATH=	-I
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_RPATH_PRE=	
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Environment variable to set a runtime search path
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLDLIBRARYPATH_ENVVAR = LIBPATH
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# The following is for Makefile.inc's use.
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# this one is for icudefs.mk's use
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruifeq ($(ENABLE_SHARED),YES)
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruendif
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_SONAME = 
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## The type of assembly needed when pkgdata is used for generating shared libraries.
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGENCCODE_ASSEMBLY=-a xlc
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Shared object suffix
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSOBJ=	so
80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# without the -brtl option, the library names use .a. AIX is funny that way.
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSO=	a
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Non-shared intermediate object suffix
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSTATIC_O = o
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Override Versioned target for a shared library.
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruFINAL_SO_TARGET=  $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO)
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruMIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)))
8950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSHARED_OBJECT_NO_VERSION=  $(basename $(SO_TARGET)).$(SOBJ)
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Build archive from shared object
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.a : %.so
9350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho	ln -f $< $(SHARED_OBJECT_NO_VERSION) 
9450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
9550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho	rm -f $(SHARED_OBJECT_NO_VERSION)
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru$(LIBDIR)/%.a : %.so
9750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho	ln -f $< $(SHARED_OBJECT_NO_VERSION) 
9850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
9950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho	rm -f $(SHARED_OBJECT_NO_VERSION)
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Build import list from export list
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.e : %.exp
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@echo "Building an import list for $<"
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@"
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compilation rules
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(STATIC_O): $(srcdir)/%.c
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.o: $(srcdir)/%.c
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(STATIC_O): $(srcdir)/%.cpp
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.o: $(srcdir)/%.cpp
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Dependency rules
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.d : %.u
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@$(SHELL) -ec 'cat $<  \
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru		| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru		[ -s $@ ] || rm -f $@ ; rm -f $<'
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.u : $(srcdir)/%.c
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@echo "generating dependency information for $<"
126b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho	@$(GEN_DEPS.c) $< > /dev/null
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.u : $(srcdir)/%.cpp
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@echo "generating dependency information for $<"
130b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho	@$(GEN_DEPS.cc) $< > /dev/null
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Versioned libraries rules
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(SO): %$(SO_TARGET_VERSION).$(SO)
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## End Aix-specific setup
139