]> git.saurik.com Git - apple/icu.git/blobdiff - makefile
ICU-66108.tar.gz
[apple/icu.git] / makefile
index 6d1483ad87d2c46e36b8204ba1c89ee0f87f052d..4a15f891c4c15356f6117ec12b47c6067f2e46fe 100644 (file)
--- a/makefile
+++ b/makefile
@@ -1,6 +1,6 @@
 ##
 # Wrapper makefile for ICU
-# Copyright (C) 2003-2018 Apple Inc. All rights reserved.
+# Copyright (C) 2003-2020 Apple Inc. All rights reserved.
 #
 # See http://www.gnu.org/manual/make/html_chapter/make_toc.html#SEC_Contents
 # for documentation on makefiles. Most of this was culled from the ncurses makefile.
@@ -36,6 +36,9 @@
 #    U_ICU_VERSION_PATCHLEVEL_NUM; the 4th value is ICU_BUILD, formed from AA and B as
 #    ICU_BUILD = 100*AA + B.
 #
+#################################
+# The following is obsolete after ICU-66002:
+#
 # The B&I submission version always has 3 parts separated by '.':
 # MMmAA.(0 | B).T
 #
@@ -229,7 +232,7 @@ $(info # SDKPATH=$(SDKPATH))
 # m  is U_ICU_VERSION_MINOR_NUM
 # AA is the Apple delta version
 # B  is the Apple branch version (1 or 2 digits)
-# T  is the Apple train code for submissions.
+# T  is the Apple train code for submissions. [obsolete after ICU-66002]
 # Note The value for the SourceVersion property in version.plists will be calculated as
 # (X*10000 + Y*100 + Z).
 # We want ICU_BUILD = 100*AA + B.
@@ -280,7 +283,8 @@ endif
 
 # Determine build type. In some cases (e.g. running installsrc for submitproject)
 # the only accurate information we may have about build type is from ICU_TRAIN_CODE,
-# so give priority to that if nonzero.
+# so give priority to that if nonzero. [though it is mostly obsolete after ICU-66002
+# it might possibly be used for non-Apple-platform builds]
 # The values currently defined for ICU_TRAIN_CODE and corresponding ICU_BUILD_TYPE are
 # 1  OSX trains
 # 2  embedded trains (iOS, tvos, watchos) including simulator versions thereof.
@@ -309,6 +313,9 @@ endif
 #      exactly one of the following is 1: TARGET_OS_SIMULATOR, TARGET_OS_EMBEDDED (i.e. device)
 #      exactly one of the following is 1: TARGET_OS_IOS, TARGET_OS_TV, TARGET_OS_WATCH, TARGET_OS_BRIDGE
 #
+# if SDKPATH is / then we are doing something like a make check against host SDK and not building
+# for embedded, so ICU_FOR_EMBEDDED_TRAINS must be NO
+#
 ifeq "$(ICU_FOR_APPLE_PLATFORMS)" "YES"
        HOSTCC := $(shell xcrun --sdk macosx --find cc)
        HOSTCXX := $(shell xcrun --sdk macosx --find c++)
@@ -320,11 +327,7 @@ ifeq "$(ICU_FOR_APPLE_PLATFORMS)" "YES"
                CXX := $(HOSTCXX)
                NM := $(shell xcrun --sdk macosx --find nm)
                STRIPCMD := $(shell xcrun --sdk macosx --find strip)
-               ifeq "$(ICU_TRAIN_CODE)" "2"
-                   export ICU_FOR_EMBEDDED_TRAINS:=YES
-               else
-                   export ICU_FOR_EMBEDDED_TRAINS:=NO
-               endif
+               export ICU_FOR_EMBEDDED_TRAINS:=NO
        else
                ISYSROOT:= -isysroot $(SDKPATH)
                CC := $(shell xcrun --sdk $(SDKPATH) --find cc)
@@ -396,45 +399,45 @@ $(error Cross-builds currently not allowed on Linux)
 endif
 endif
 
-MAC_OS_X_VERSION_MIN_REQUIRED=101300
-OSX_HOST_VERSION_MIN_STRING=10.13
+MAC_OS_X_VERSION_MIN_REQUIRED=101504
+OSX_HOST_VERSION_MIN_STRING=10.15.4
 
 ifndef IPHONEOS_DEPLOYMENT_TARGET
-       IOS_VERSION_TARGET_STRING=12.0
+       IOS_VERSION_TARGET_STRING=14.0
 else ifeq "$(IPHONEOS_DEPLOYMENT_TARGET)" ""
-       IOS_VERSION_TARGET_STRING=12.0
+       IOS_VERSION_TARGET_STRING=14.0
 else
        IOS_VERSION_TARGET_STRING=$(IPHONEOS_DEPLOYMENT_TARGET)
 endif
 
 ifndef MACOSX_DEPLOYMENT_TARGET
-       OSX_VERSION_TARGET_STRING=10.14
+       OSX_VERSION_TARGET_STRING=11.0
 else ifeq "$(MACOSX_DEPLOYMENT_TARGET)" ""
-       OSX_VERSION_TARGET_STRING=10.14
+       OSX_VERSION_TARGET_STRING=11.0
 else
        OSX_VERSION_TARGET_STRING=$(MACOSX_DEPLOYMENT_TARGET)
 endif
 
 ifndef WATCHOS_DEPLOYMENT_TARGET
-       WATCHOS_VERSION_TARGET_STRING=5.0
+       WATCHOS_VERSION_TARGET_STRING=7.0
 else ifeq "$(WATCHOS_DEPLOYMENT_TARGET)" ""
-       WATCHOS_VERSION_TARGET_STRING=5.0
+       WATCHOS_VERSION_TARGET_STRING=7.0
 else
        WATCHOS_VERSION_TARGET_STRING=$(WATCHOS_DEPLOYMENT_TARGET)
 endif
 
 ifndef TVOS_DEPLOYMENT_TARGET
-       TVOS_VERSION_TARGET_STRING=12.0
+       TVOS_VERSION_TARGET_STRING=14.0
 else ifeq "$(TVOS_DEPLOYMENT_TARGET)" ""
-       TVOS_VERSION_TARGET_STRING=12.0
+       TVOS_VERSION_TARGET_STRING=14.0
 else
        TVOS_VERSION_TARGET_STRING=$(TVOS_DEPLOYMENT_TARGET)
 endif
 
 ifndef BRIDGEOS_DEPLOYMENT_TARGET
-       BRIDGEOS_VERSION_TARGET_STRING=2.0
+       BRIDGEOS_VERSION_TARGET_STRING=4.0
 else ifeq "$(BRIDGEOS_DEPLOYMENT_TARGET)" ""
-       BRIDGEOS_VERSION_TARGET_STRING=2.0
+       BRIDGEOS_VERSION_TARGET_STRING=4.0
 else
        BRIDGEOS_VERSION_TARGET_STRING=$(BRIDGEOS_DEPLOYMENT_TARGET)
 endif
@@ -499,9 +502,15 @@ $(info # buildhost=$(UNAME_PROCESSOR))
 # then it assumes a universal build (ac_cv_c_bigendian=universal) with
 # data file initially built big-endian.
 #
+# darwin releases
+# darwin 18.0.0 2018-Sep: macOS 10.14, iOS 12
+# darwin 18.2.0 2018-Oct: macOS 10.14.1, iOS 12.1
+# darwin 19.0.0 2019-fall: macOS 10.15, iOS 13
+# darwin 20.0.0 2020-fall: macOS 10.16, iOS 14
+#
 ifeq "$(CROSS_BUILD)" "YES"
        RC_ARCHS_FIRST=$(shell echo $(RC_ARCHS) | cut -d' ' -f1)
-       TARGET_SPEC=$(RC_ARCHS_FIRST)-apple-darwin17.3.0
+       TARGET_SPEC=$(RC_ARCHS_FIRST)-apple-darwin20.0.0
        ENV_CONFIGURE_ARCHS=-arch $(RC_ARCHS_FIRST)
        ICUPKGTOOLIBS="$(CROSSHOST_OBJROOT)/lib:$(CROSSHOST_OBJROOT)/stubdata"
        ICUPKGTOOL=$(CROSSHOST_OBJROOT)/bin/icupkg
@@ -517,7 +526,7 @@ else ifeq "$(LINUX)" "YES"
        ICUPKGTOOL=$(OBJROOT_CURRENT)/bin/icupkg
        FORCEENDIAN=
 else
-       TARGET_SPEC=$(UNAME_PROCESSOR)-apple-darwin17.3.0
+       TARGET_SPEC=$(UNAME_PROCESSOR)-apple-darwin20.0.0
        ENV_CONFIGURE_ARCHS=
        ICUPKGTOOLIBS="$(OBJROOT_CURRENT)/lib:$(OBJROOT_CURRENT)/stubdata"
        ICUPKGTOOL=$(OBJROOT_CURRENT)/bin/icupkg
@@ -629,7 +638,7 @@ endif
 # may be a different environment than the one for a which a build is targeted.
 
 INSTALLSRC_VARFILES=./ICU_embedded.order \
-       ./minimalapis.txt ./minimalapisTest.c ./minimalpatchconfig.txt ./windowspatchconfig.txt ./patchconfig.txt ./crosshostpatchconfig.txt \
+       ./minimalapis.txt ./minimalapisTest.c \
        BuildICUForAAS_script.bat EXPORT.APPLE
 
 #################################
@@ -694,7 +703,7 @@ endif
 # The ICU version/subversion should reflect the actual ICU version.
 
 LIB_NAME = icucore
-ICU_VERS = 62
+ICU_VERS = 66
 ICU_SUBVERS = 1
 CORE_VERS = A
 
@@ -837,7 +846,7 @@ ZICTOOL_OBJS = ./tools/tzcode/zic.o ./tools/tzcode/localtime.o ./tools/tzcode/as
 
 RESTOOL = icugenrb
 RESTOOL_OBJS = ./tools/genrb/errmsg.o ./tools/genrb/genrb.o ./tools/genrb/parse.o ./tools/genrb/read.o ./tools/genrb/reslist.o ./tools/genrb/ustr.o \
-                               ./tools/genrb/rbutil.o ./tools/genrb/wrtjava.o ./tools/genrb/rle.o ./tools/genrb/wrtxml.o ./tools/genrb/prscmnts.o
+                               ./tools/genrb/rbutil.o ./tools/genrb/wrtjava.o ./tools/genrb/rle.o ./tools/genrb/wrtxml.o ./tools/genrb/prscmnts.o ./tools/genrb/filterrb.o
 
 # note there is also a symbol ICUPKGTOOL which refers to the one used
 # internally which is linked against the separate uc and i18n libs.
@@ -876,6 +885,36 @@ LIBOVERRIDES=LIBICUDT="-L$(OBJROOT_CURRENT) -l$(LIB_NAME)" \
        LIBICUUC="-L$(OBJROOT_CURRENT) -l$(LIB_NAME)" \
        LIBICUI18N="-L$(OBJROOT_CURRENT) -l$(LIB_NAME)"
 
+CFLAGS_SANITIZER :=
+CXXFLAGS_SANITIZER :=
+LDFLAGS_SANITIZER :=
+ifeq ($(RC_ENABLE_ADDRESS_SANITIZATION),1)
+  $(info Enabling Address Sanitizer)
+  ASAN_FLAGS:=-fsanitize=address
+  CFLAGS_SANITIZER += $(ASAN_FLAGS)
+  CXXFLAGS_SANITIZER += $(ASAN_FLAGS)
+  LDFLAGS_SANITIZER += $(ASAN_FLAGS)
+endif
+
+ifeq ($(RC_ENABLE_UNDEFINED_BEHAVIOR_SANITIZATION),1)
+  $(info Enabling Undefined Behaviour Sanitizer)
+  UBSAN_FLAGS:=-fsanitize=undefined
+  CFLAGS_SANITIZER += $(UBSAN_FLAGS)
+  CXXFLAGS_SANITIZER += $(UBSAN_FLAGS)
+  LDFLAGS_SANITIZER += $(UBSAN_FLAGS)
+endif
+
+ifeq ($(RC_ENABLE_THREAD_SANITIZATION),1)
+  $(info Enabling Thread Sanitizer)
+  TSAN_FLAGS:=-fsanitize=thread
+  CFLAGS_SANITIZER += $(TSAN_FLAGS)
+  CXXFLAGS_SANITIZER += $(TSAN_FLAGS)
+  LDFLAGS_SANITIZER += $(TSAN_FLAGS)
+endif
+LDFLAGS += $(LDFLAGS_SANITIZER)
+
+APPLE_HARDENING_OPTS := -DFORTIFY_SOURCE=2 -fstack-protector-strong
+
 # For normal Windows builds set the ENV= options here; for debug Windows builds set the ENV_DEBUG=
 # options here and also the update the LINK.EXE lines in the TARGETS section below.
 ifeq "$(WINDOWS)" "YES"
@@ -977,8 +1016,8 @@ else
                CPPFLAGS="$(DEFINE_BUILD_LEVEL) -DSTD_INSPIRED -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) $(ISYSROOT) $(ENV_CONFIGURE_ARCHS)" \
                CC="$(CC)" \
                CXX="$(CXX)" \
-               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(ENV_CONFIGURE_ARCHS) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG)" \
-               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(ENV_CONFIGURE_ARCHS) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG)" \
+               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(APPLE_HARDENING_OPTS) $(ENV_CONFIGURE_ARCHS) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG) $(CFLAGS_SANITIZER)" \
+               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(ENV_CONFIGURE_ARCHS) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG) $(CXXFLAGS_SANITIZER)" \
                RC_ARCHS="$(RC_ARCHS)" $(FORCEENDIAN)\
                TZDATA="$(TZDATA)" \
                DYLD_LIBRARY_PATH="$(DSTROOT)/usr/local/lib"
@@ -986,8 +1025,8 @@ else
        ENV= APPLE_INTERNAL_DIR="$(APPLE_INTERNAL_DIR)" \
                CC="$(CC)" \
                CXX="$(CXX)" \
-               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG)" \
-               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG)" \
+               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(APPLE_HARDENING_OPTS) $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG) $(CFLAGS_SANITIZER)" \
+               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG) $(CXXFLAGS_SANITIZER)" \
                RC_ARCHS="$(RC_ARCHS)" \
                TZDATA="$(TZDATA)" \
                DYLD_LIBRARY_PATH="$(DSTROOT)/usr/local/lib"
@@ -995,8 +1034,8 @@ else
        ENV_DEBUG= APPLE_INTERNAL_DIR="$(APPLE_INTERNAL_DIR)" \
                CC="$(CC)" \
                CXX="$(CXX)" \
-               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -O0 -gfull -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG)" \
-               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -O0 -gfull -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG)" \
+               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(APPLE_HARDENING_OPTS) $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -O0 -gfull -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG) $(CFLAGS_SANITIZER)" \
+               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -O0 -gfull -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG) $(CXXFLAGS_SANITIZER)" \
                RC_ARCHS="$(RC_ARCHS)" \
                TZDATA="$(TZDATA)" \
                DYLD_LIBRARY_PATH="$(DSTROOT)/usr/local/lib"
@@ -1004,8 +1043,8 @@ else
        ENV_PROFILE= APPLE_INTERNAL_DIR="$(APPLE_INTERNAL_DIR)" \
                CC="$(CC)" \
                CXX="$(CXX)" \
-               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -pg -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG)" \
-               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -pg -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG)" \
+               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(APPLE_HARDENING_OPTS) $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -pg -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(ISYSROOT) $(THUMB_FLAG) $(CFLAGS_SANITIZER)" \
+               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\" $(RC_ARCHS:%=-arch %) $(ICU_TARGET_VERSION) -g -Os -pg -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(ISYSROOT) $(THUMB_FLAG) $(CXXFLAGS_SANITIZER)" \
                RC_ARCHS="$(RC_ARCHS)" \
                TZDATA="$(TZDATA)" \
                DYLD_LIBRARY_PATH="$(DSTROOT)/usr/local/lib"
@@ -1014,16 +1053,16 @@ else
                CPPFLAGS="$(DEFINE_BUILD_LEVEL) -DSTD_INSPIRED -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) $(HOSTISYSROOT)" \
                CC="$(HOSTCC)" \
                CXX="$(HOSTCXX)" \
-               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden" \
-               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden" \
+               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(CFLAGS_SANITIZER)" \
+               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(CXXFLAGS_SANITIZER)" \
                TZDATA="$(TZDATA)" \
                DYLD_LIBRARY_PATH="$(DSTROOT)/usr/local/lib"
 
        ENV_BUILDHOST= APPLE_INTERNAL_DIR="$(APPLE_INTERNAL_DIR)" \
                CC="$(HOSTCC)" \
                CXX="$(HOSTCXX)" \
-               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden" \
-               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden" \
+               CFLAGS="-DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden $(CFLAGS_SANITIZER)" \
+               CXXFLAGS="--std=c++11 -DU_SHOW_CPLUSPLUS_API=1 -DU_SHOW_INTERNAL_API=1 -DU_TIMEZONE=timezone -DICU_DATA_DIR=\"\\\"$(DATA_LOOKUP_DIR_BUILDHOST)\\\"\" -DMAC_OS_X_VERSION_MIN_REQUIRED=$(MAC_OS_X_VERSION_MIN_REQUIRED) -mmacosx-version-min=$(OSX_HOST_VERSION_MIN_STRING) $(HOSTISYSROOT) -g -Os -Wglobal-constructors -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden $(CXXFLAGS_SANITIZER)" \
                TZDATA="$(TZDATA)" \
                DYLD_LIBRARY_PATH="$(DSTROOT)/usr/local/lib"
 
@@ -1068,7 +1107,7 @@ crossbuildhost icutztoolsforsdk
 # Note that if sources have been installed by installsrc (only run as part of buildit or
 # submitproject for Apple platforms, not for Windows/Linux), then
 #    $(SRCROOT)/installsrcNotRunFlag is not present, and
-#    ADJUST_SOURCES has already have been run.
+#    ADJUST_SOURCES has already been run.
 # Otherwise, if we are doing a local build (e.g. make check, make install), or if
 # sources were submitted using submitproject for non-Apple platforms (Windows/Linux) then
 #    $(SRCROOT)/installsrcNotRunFlag is present, and
@@ -1076,13 +1115,6 @@ crossbuildhost icutztoolsforsdk
 #
 
 ADJUST_SOURCES = \
-               if test "$(ICU_FOR_EMBEDDED_TRAINS)" = "YES"; then \
-                       patch -p1 <$(SRCROOT)/minimalpatchconfig.txt; \
-               elif test "$(WINDOWS)" = "YES"; then \
-                       patch -p1 <$(SRCROOT)/windowspatchconfig.txt; \
-               else \
-                       patch -p1 <$(SRCROOT)/patchconfig.txt; \
-               fi; \
                if test "$(WINDOWS)" = "YES"; then \
                        mv data/unidata/base_unidata/*.txt data/unidata/; \
                        mv data/unidata/norm2/base_norm2/*.txt data/unidata/norm2/; \
@@ -1205,13 +1237,9 @@ crossbuildhost : $(CROSSHOST_OBJROOT)/Makefile
        );
 
 # For the install-icutztoolsforsdk target, SDKROOT will always be an OSX SDK root.
-# If the sources were installed using the minimalpatchconfig.txt patch, then
-# we need to patch using crosshostpatchconfig.txt as for $(CROSSHOST_OBJROOT)/Makefile
-# (otherwise we ignore the patch in crosshostpatchconfig.txt, using -N)
 icutztoolsforsdk : $(OBJROOT_CURRENT)/Makefile
        echo "# make icutztoolsforsdk";
        (cd $(OBJROOT_CURRENT); \
-               if test ! -e $(SRCROOT)/installsrcNotRunFlag ; then patch -N -p1 <$(SRCROOT)/crosshostpatchconfig.txt; fi; \
                $(MAKE) $($(ENV)) || exit 1; \
                echo '# build' $(TOOLS_DYLIB_FORTOOLS) 'linked against' $(LIB_NAME) ; \
                $($(ENV)) $(CXX) -current_version $(ICU_VERS).$(ICU_SUBVERS) -compatibility_version 1 -dynamiclib -dynamic \
@@ -1294,10 +1322,6 @@ endif
                fi; \
        );
 
-# for the tools that build the data file, cannot set UDATA_DEFAULT_ACCESS = UDATA_ONLY_PACKAGES
-# as minimalpatchconfig.txt does; need different patches for the host build. Thus
-# we have to use crosshostpatchconfig.txt to undo the udata.h changes that would have
-# been made for ICU_FOR_EMBEDDED_TRAINS builds.
 $(CROSSHOST_OBJROOT)/Makefile :
        if test ! -d $(CROSSHOST_OBJROOT); then \
                mkdir -p $(CROSSHOST_OBJROOT); \
@@ -1310,9 +1334,6 @@ $(CROSSHOST_OBJROOT)/Makefile :
                if test -f $(TZAUXFILESDIR)/windowsZones.txt ; then cp -p $(TZAUXFILESDIR)/windowsZones.txt data/misc/; fi; \
                if test -f $(TZAUXFILESDIR)/icuregions ; then cp -p $(TZAUXFILESDIR)/icuregions tools/tzcode/; fi; \
                if test -f $(TZAUXFILESDIR)/icuzones ; then cp -p $(TZAUXFILESDIR)/icuzones tools/tzcode/; fi; \
-               if test "$(ICU_FOR_EMBEDDED_TRAINS)" = "YES"; then \
-                       patch -p1 <$(SRCROOT)/crosshostpatchconfig.txt; \
-               fi; \
                echo "# configure for crossbuild host"; \
                $(ENV_CONFIGURE_BUILDHOST) ./runConfigureICU MacOSX $(CONFIG_FLAGS); \
        );
@@ -1435,7 +1456,7 @@ install : installhdrsint icu
                        $(INSTALL) -d -m 0755 $(DSTROOT)/$(DATA_INSTALL_DIR)/; \
                fi; \
                if test -f $(OBJROOT_CURRENT)/$(L_DATA_FILE); then \
-                       $(INSTALL) -b -m 0644  $(OBJROOT_CURRENT)/$(L_DATA_FILE) $(DSTROOT)/$(DATA_INSTALL_DIR)$(L_DATA_FILE); \
+                       $(INSTALL) -b -m 0444  $(OBJROOT_CURRENT)/$(L_DATA_FILE) $(DSTROOT)/$(DATA_INSTALL_DIR)$(L_DATA_FILE); \
                fi; \
                if test -f $(OBJROOT_CURRENT)/$(TZDATA_FORMAT_FILE); then \
                        $(INSTALL) -b -m 0644  $(OBJROOT_CURRENT)/$(TZDATA_FORMAT_FILE) $(DSTROOT)/$(DATA_INSTALL_DIR)$(TZDATA_FORMAT_FILE); \