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