]> 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 da00df4edd7c4c0913fdd425c45092538876c625..1572466a550785c6d6c39346dfee81dabfd3d94f 100644 (file)
@@ -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