X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..f3c0d7a59d99c2a94c6b8822291f0e42be3773c9:/icuSources/config/mh-aix-va diff --git a/icuSources/config/mh-aix-va b/icuSources/config/mh-aix-va index da00df4e..1572466a 100644 --- a/icuSources/config/mh-aix-va +++ b/icuSources/config/mh-aix-va @@ -1,9 +1,9 @@ ## -*-makefile-*- +## Copyright (C) 2016 and later: Unicode, Inc. and others. +## License & terms of use: http://www.unicode.org/copyright.html ## Aix-specific setup (for Visual Age 5+) -## Copyright (c) 1999-2002, International Business Machines Corporation and +## Copyright (c) 1999-2010, International Business Machines Corporation and ## others. All Rights Reserved. -## -## $Id: mh-aix-va,v 1.1.1.2 2003/07/03 18:13:33 avery Exp $ ## Commands to generate dependency files GEN_DEPS.c= $(CC) -E -M $(DEFS) $(CPPFLAGS) @@ -12,10 +12,30 @@ GEN_DEPS.cc= $(CXX) -E -M $(DEFS) $(CPPFLAGS) # -qroconst make the strings readonly, which is usually the default. # This helps in the data library, # -qproto assumes all functions are prototyped (for optimization) -CFLAGS += -qproto -qroconst -CXXFLAGS += -qproto -qroconst - -LDFLAGS += -brtl -bh:5 +# -qrtti turns on compiler RTTI, required beginning with ICU 4.6 +CFLAGS += -qproto -qroconst -qlanglvl=extended +CXXFLAGS += -qproto -qroconst -qrtti -qlanglvl=extended0x + +# If you readd this line, you must change the SO value +#LDFLAGS += -brtl + +ifeq ($(UCLN_NO_AUTO_CLEANUP),0) +# set up init point. +UCLN_FINI = ucln_fini$(TARGET_STUBNAME)_$(SO_TARGET_VERSION_MAJOR)$(ICULIBSUFFIXCNAME) +CPPFLAGS_FINI = -DUCLN_FINI=$(UCLN_FINI) +LDFLAGS_FINI = -binitfini::$(UCLN_FINI) + +CPPFLAGSICUUC += $(CPPFLAGS_FINI) +LDFLAGSICUUC += $(LDFLAGS_FINI) +CPPFLAGSICUIO += $(CPPFLAGS_FINI) +LDFLAGSICUIO += $(LDFLAGS_FINI) +CPPFLAGSICUI18N += $(CPPFLAGS_FINI) +LDFLAGSICUI18N += $(LDFLAGS_FINI) +CPPFLAGSCTESTFW += $(CPPFLAGS_FINI) +LDFLAGSCTESTFW += $(LDFLAGS_FINI) + +# ICUUC, ICUIO, ICUI18N, CTESTFW +endif ## We need to delete things prior to linking, or else we'll get ## SEVERE ERROR: output file in use .. on AIX. @@ -44,26 +64,41 @@ LD_RPATH_PRE= ## Environment variable to set a runtime search path LDLIBRARYPATH_ENVVAR = LIBPATH -## Override Versioned target for a shared library. -FINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) -MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) - # The following is for Makefile.inc's use. ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) # this one is for icudefs.mk's use +ifeq ($(ENABLE_SHARED),YES) SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR) +endif LD_SONAME = +## The type of assembly needed when pkgdata is used for generating shared libraries. +GENCCODE_ASSEMBLY=-a xlc + ## Shared object suffix -SO= so +SOBJ= so +# without the -brtl option, the library names use .a. AIX is funny that way. +SO= a ## Non-shared intermediate object suffix STATIC_O = o +## Override Versioned target for a shared library. +FINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) +MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) +SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ))) +SHARED_OBJECT_NO_VERSION= $(basename $(SO_TARGET)).$(SOBJ) + ## Build archive from shared object %.a : %.so - $(AR) $(ARFLAGS) $@ $< + ln -f $< $(SHARED_OBJECT_NO_VERSION) + $(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) + rm -f $(SHARED_OBJECT_NO_VERSION) +$(LIBDIR)/%.a : %.so + ln -f $< $(SHARED_OBJECT_NO_VERSION) + $(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION) + rm -f $(SHARED_OBJECT_NO_VERSION) ## Build import list from export list %.e : %.exp @@ -76,13 +111,31 @@ STATIC_O = o %.o: $(srcdir)/%.c $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< -%.$(STATIC_O): $(srcdir)/%.cpp - $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< + +## C++ compilation rules. + +# This causes escapesrc to be built before other ICU targets. +NEED_ESCAPING=YES + +ifneq ($(SKIP_ESCAPING),) +# no escaping - bootstrap %.o: $(srcdir)/%.cpp $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< +else +# convert *.cpp files to _*.cpp with \u / \U escaping +CLEANFILES += _*.cpp -../data/%.o: ../data/%.c - $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< +# the actual escaping +_%.cpp: $(srcdir)/%.cpp + @$(BINDIR)/escapesrc$(EXEEXT) $< $@ + +# compilation for static obj +%.$(STATIC_O): _%.cpp + $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< +# compilation for dynamic obj +%.o: _%.cpp + $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< +endif ## Dependency rules %.d : %.u @@ -92,16 +145,16 @@ STATIC_O = o %.u : $(srcdir)/%.c @echo "generating dependency information for $<" - @$(SHELL) -ec '$(GEN_DEPS.c) $< > /dev/null' + @$(GEN_DEPS.c) $< > /dev/null %.u : $(srcdir)/%.cpp @echo "generating dependency information for $<" - @$(SHELL) -ec '$(GEN_DEPS.cc) $< > /dev/null' + @$(GEN_DEPS.cc) $< > /dev/null ## Versioned libraries rules %$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) - $(RM) $@ && ln -s $*$(SO_TARGET_VERSION).$(SO) $@ + $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ %.$(SO): %$(SO_TARGET_VERSION).$(SO) - $(RM) $@ && ln -s $*$(SO_TARGET_VERSION).$(SO) $@ + $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ ## End Aix-specific setup