Home | History | Annotate | Download | only in config
      1 ## -*-makefile-*-
      2 ## Aix-specific setup (for Visual Age 5+)
      3 ## Copyright (c) 1999-2009, International Business Machines Corporation and
      4 ## others. All Rights Reserved.
      5 
      6 ## Commands to generate dependency files
      7 GEN_DEPS.c=	$(CC) -E -M $(DEFS) $(CPPFLAGS)
      8 GEN_DEPS.cc=	$(CXX) -E -M $(DEFS) $(CPPFLAGS)
      9 
     10 # -qroconst make the strings readonly, which is usually the default.
     11 #           This helps in the data library,
     12 # -qproto assumes all functions are prototyped (for optimization)
     13 CFLAGS += -qproto -qroconst
     14 CXXFLAGS += -qproto -qroconst
     15 
     16 # If you readd this line, you must change the SO value
     17 #LDFLAGS += -brtl
     18 
     19 ifeq ($(UCLN_NO_AUTO_CLEANUP),0)
     20 # set up init point.
     21 UCLN_FINI =  ucln_fini$(TARGET_STUBNAME)_$(SO_TARGET_VERSION_MAJOR)$(ICULIBSUFFIXCNAME)
     22 CPPFLAGS_FINI = -DUCLN_FINI=$(UCLN_FINI)
     23 LDFLAGS_FINI = -binitfini::$(UCLN_FINI)
     24 
     25 CPPFLAGSICUUC += $(CPPFLAGS_FINI)
     26 LDFLAGSICUUC += $(LDFLAGS_FINI)
     27 CPPFLAGSICUIO += $(CPPFLAGS_FINI)
     28 LDFLAGSICUIO += $(LDFLAGS_FINI)
     29 CPPFLAGSICUI18N += $(CPPFLAGS_FINI)
     30 LDFLAGSICUI18N += $(LDFLAGS_FINI)
     31 CPPFLAGSCTESTFW += $(CPPFLAGS_FINI)
     32 LDFLAGSCTESTFW += $(LDFLAGS_FINI)
     33 
     34 # ICUUC, ICUIO, ICUI18N, CTESTFW
     35 endif
     36 
     37 ## We need to delete things prior to linking, or else we'll get
     38 ## SEVERE ERROR: output file in use ..  on AIX. 
     39 ## But, shell script version should NOT delete target as we don't
     40 ## have $@ in that context.  (SH = only shell script, icu-config)
     41 AIX_PREDELETE=rm -f $@ ; 
     42 #SH# AIX_PREDELETE=
     43 
     44 ## Commands to link
     45 ## We need to use the C++ linker, even when linking C programs, since
     46 ##  our libraries contain C++ code (C++ static init not called)
     47 LINK.c=		$(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
     48 LINK.cc=	$(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
     49 
     50 ## Commands to make a shared library
     51 ## -G means -berok -brtl -bnortllib -bnosymbolic -bnoautoexp
     52 ## -bh:8 means halt on errors or worse.  We don't display warnings about
     53 ##      duplicate inline symbols.
     54 SHLIB.c=	$(AIX_PREDELETE) $(CXX) -qmkshrobj -G $(LDFLAGS)
     55 SHLIB.cc=	$(AIX_PREDELETE) $(CXX) -qmkshrobj -G $(LDFLAGS)
     56 
     57 ## Compiler switch to embed a runtime search path
     58 LD_RPATH=	-I
     59 LD_RPATH_PRE=	
     60 
     61 ## Environment variable to set a runtime search path
     62 LDLIBRARYPATH_ENVVAR = LIBPATH
     63 
     64 # The following is for Makefile.inc's use.
     65 ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
     66 
     67 # this one is for icudefs.mk's use
     68 ifeq ($(ENABLE_SHARED),YES)
     69 SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
     70 endif
     71 
     72 LD_SONAME = 
     73 
     74 ## The type of assembly needed when pkgdata is used for generating shared libraries.
     75 GENCCODE_ASSEMBLY=-a xlc
     76 
     77 ## Shared object suffix
     78 SOBJ=	so
     79 # without the -brtl option, the library names use .a. AIX is funny that way.
     80 SO=	a
     81 ## Non-shared intermediate object suffix
     82 STATIC_O = o
     83 
     84 ## Override Versioned target for a shared library.
     85 FINAL_SO_TARGET=  $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO)
     86 MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
     87 SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)))
     88 SHARED_OBJECT_NO_VERSION=  $(basename $(SO_TARGET)).$(SOBJ)
     89 
     90 ## Build archive from shared object
     91 %.a : %.so
     92 	ln -f $< $(SHARED_OBJECT_NO_VERSION) 
     93 	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
     94 	rm -f $(SHARED_OBJECT_NO_VERSION)
     95 $(LIBDIR)/%.a : %.so
     96 	ln -f $< $(SHARED_OBJECT_NO_VERSION) 
     97 	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
     98 	rm -f $(SHARED_OBJECT_NO_VERSION)
     99 
    100 ## Build import list from export list
    101 %.e : %.exp
    102 	@echo "Building an import list for $<"
    103 	@$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@"
    104 
    105 ## Compilation rules
    106 %.$(STATIC_O): $(srcdir)/%.c
    107 	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
    108 %.o: $(srcdir)/%.c
    109 	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
    110 
    111 %.$(STATIC_O): $(srcdir)/%.cpp
    112 	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
    113 %.o: $(srcdir)/%.cpp
    114 	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
    115 
    116 
    117 ## Dependency rules
    118 %.d : %.u
    119 	@$(SHELL) -ec 'cat $<  \
    120 		| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
    121 		[ -s $@ ] || rm -f $@ ; rm -f $<'
    122 
    123 %.u : $(srcdir)/%.c
    124 	@echo "generating dependency information for $<"
    125 	@$(SHELL) -ec '$(GEN_DEPS.c) $< > /dev/null'
    126 
    127 %.u : $(srcdir)/%.cpp
    128 	@echo "generating dependency information for $<"
    129 	@$(SHELL) -ec '$(GEN_DEPS.cc) $< > /dev/null'
    130 
    131 ## Versioned libraries rules
    132 %$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
    133 	$(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
    134 %.$(SO): %$(SO_TARGET_VERSION).$(SO)
    135 	$(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
    136 
    137 ## End Aix-specific setup
    138