]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/config/mh-aix-va
ICU-59117.0.1.tar.gz
[apple/icu.git] / icuSources / config / mh-aix-va
index c39ccee94adffb7b972eff0b6f2d0e3f1509cbeb..1572466a550785c6d6c39346dfee81dabfd3d94f 100644 (file)
@@ -1,6 +1,8 @@
 ## -*-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-2004, International Business Machines Corporation and
+## Copyright (c) 1999-2010, International Business Machines Corporation and
 ## others. All Rights Reserved.
 
 ## Commands to generate dependency files
@@ -10,12 +12,31 @@ 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
+# -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. 
 ## But, shell script version should NOT delete target as we don't
@@ -43,10 +64,6 @@ 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)
 
@@ -61,15 +78,27 @@ LD_SONAME =
 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
@@ -82,11 +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
 
+# 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
@@ -96,11 +145,11 @@ 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)