1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## -*-makefile-*- 2b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru## Copyright (c) 2003-2009 IBM, Ken Foskey, and others. All rights reserved. 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Aix-specific setup (for gcc) 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Please note: AIX does NOT have library versioning per se (there is no 'SONAME' capability). 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## So, we are using 'windows' style library names, that is, libicuuc20.1.so instead of libicuuc.so.20.1 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 9b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru# Certain files don't compile in -ansi mode (e.g. umutex.c, toolutil.c, and cdatatst.c) 10b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruCFLAGS += -D_ALL_SOURCE 11b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to generate dependency files 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to link 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## We need to use the C++ linker, even when linking C programs, since 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## our libraries contain C++ code (C++ static init not called) 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLINK.c= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLINK.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho## Shared library options 2350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLD_SOOPTIONS= -Wl,-bsymbolic 2450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to make a shared library 2650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSHLIB.c= $(AIX_PREDELETE) $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_SOOPTIONS) 2750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSHLIB.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-bexpall $(LD_SOOPTIONS) 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compiler switch to embed a runtime search path 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_RPATH= -I 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_RPATH_PRE= 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## enable the shared lib loader 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLDFLAGS += -Wl,-bbigtoc 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## These are the library specific LDFLAGS 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLDFLAGSICUDT=-nodefaultlibs -nostdlib 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## We need to delete things prior to linking, or else we'll get 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## SEVERE ERROR: output file in use .. on AIX. 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## But, shell script version should NOT delete target as we don't 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## have $@ in that context. (SH = only shell script, icu-config) 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruAIX_PREDELETE=rm -f $@ ; 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#SH# AIX_PREDELETE= 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Environment variable to set a runtime search path 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLDLIBRARYPATH_ENVVAR = LIBPATH 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Override Versioned target for a shared library. 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruFINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruMIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ))) 5350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSHARED_OBJECT_NO_VERSION = $(basename $(SO_TARGET)).$(SOBJ) 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# The following is for Makefile.inc's use. 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# this one is for icudefs.mk's use 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruifeq ($(ENABLE_SHARED),YES) 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR) 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruendif 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compiler switch to embed a library name. Not present on AIX. 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_SONAME = 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## The type of assembly needed when pkgdata is used for generating shared libraries. 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGENCCODE_ASSEMBLY=-a xlc 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Shared object suffix 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSOBJ= so 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# without the -brtl option, the library names use .a. AIX is funny that way. 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSO= a 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruA= a 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Non-shared intermediate object suffix 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSTATIC_O = o 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Special AIX rules 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Build archive from shared object 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.a : %.so 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ln -f $< $(SHARED_OBJECT_NO_VERSION) 8350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) 8450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho rm -f $(SHARED_OBJECT_NO_VERSION) 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru$(LIBDIR)/%.a : %.so 8650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ln -f $< $(SHARED_OBJECT_NO_VERSION) 8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) 8850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho rm -f $(SHARED_OBJECT_NO_VERSION) 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Build import list from export list 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.e : %.exp 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @echo "Building an import list for $<" 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@" 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compilation rules 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(STATIC_O): $(srcdir)/%.c 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.o: $(srcdir)/%.c 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(STATIC_O): $(srcdir)/%.cpp 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.o: $(srcdir)/%.cpp 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Dependency rules 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.d: $(srcdir)/%.c 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @echo "generating dependency information for $<" 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @$(SHELL) -ec '$(GEN_DEPS.c) $< \ 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru [ -s $@ ] || rm -f $@' 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.d: $(srcdir)/%.cpp 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @echo "generating dependency information for $<" 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru [ -s $@ ] || rm -f $@' 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Versioned libraries rules 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(SO): %$(SO_TARGET_VERSION).$(SO) 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## BIR - bind with internal references [so app data and icu data doesn't collide] 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# LDflags that pkgdata will use 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruBIR_LDFLAGS= -Wl,-bE:$(NAME).map,-bnoexpall 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Dependencies [i.e. map files] for the final library 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruBIR_DEPS= $(NAME).map 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 134