diff --git a/stubdata/Android.mk b/stubdata/Android.mk
index 5beeeda..05f5d54 100644
--- a/stubdata/Android.mk
+++ b/stubdata/Android.mk
@@ -18,7 +18,9 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-include $(LOCAL_PATH)/root.mk
+# Derive a string like 'icudt 48l.dat' from a path like 'external/icu4c/stubdata/icudt 48l.dat'
+stubdata_path:= $(call my-dir)
+dat_file := $(notdir $(wildcard $(stubdata_path)/*.dat))
 
 include $(CLEAR_VARS)
 LOCAL_MODULE := icu-data
@@ -26,8 +28,8 @@
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := ETC
 LOCAL_MODULE_PATH := $(TARGET_OUT)/usr/icu
-LOCAL_MODULE_STEM := $(root).dat
-LOCAL_SRC_FILES := $(root)-all.dat
+LOCAL_MODULE_STEM := $(dat_file)
+LOCAL_SRC_FILES := $(dat_file)
 include $(BUILD_PREBUILT)
 
 include $(CLEAR_VARS)
@@ -36,7 +38,7 @@
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := ETC
 LOCAL_MODULE_PATH := $(HOST_OUT)/usr/icu
-LOCAL_MODULE_STEM := $(root).dat
-LOCAL_SRC_FILES := $(root)-all.dat
+LOCAL_MODULE_STEM := $(dat_file)
+LOCAL_SRC_FILES := $(dat_file)
 LOCAL_IS_HOST_MODULE := true
 include $(BUILD_PREBUILT)
diff --git a/stubdata/Makefile.in b/stubdata/Makefile.in
deleted file mode 100644
index f1e4047..0000000
--- a/stubdata/Makefile.in
+++ /dev/null
@@ -1,149 +0,0 @@
-#******************************************************************************
-#
-#   Copyright (C) 1999-2011, International Business Machines
-#   Corporation and others.  All Rights Reserved.
-#
-#******************************************************************************
-## Makefile.in for ICU stubdata
-## Stephen F. Booth
-
-## Source directory information
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-
-top_builddir = ..
-
-## All the flags and other definitions are included here.
-include $(top_builddir)/icudefs.mk
-
-## Build directory information
-subdir = stubdata
-
-## Extra files to remove for 'make clean'
-CLEANFILES = *~ $(DEPS) $(IMPORT_LIB) $(MIDDLE_IMPORT_LIB) $(FINAL_IMPORT_LIB)
-
-## Target information
-
-TARGET_STUBNAME=$(DATA_STUBNAME)
-
-ifneq ($(ENABLE_STATIC),)
-TARGET = $(STUBDATA_LIBDIR)$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A)
-endif
-
-
-ifneq ($(ENABLE_SHARED),)
-SO_TARGET = $(STUBDATA_LIBDIR)$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX)$(STUB_SUFFIX).$(SO)
-ALL_SO_TARGETS = $(FINAL_SO_TARGET) $(MIDDLE_SO_TARGET) $(SO_TARGET) $(BATCH_STUB_TARGET) $(SHARED_OBJECT)
-endif
-
-
-ALL_TARGETS = $(TARGET) $(ALL_SO_TARGETS)
-
-DYNAMICCPPFLAGS = $(SHAREDLIBCPPFLAGS)
-DYNAMICCFLAGS = $(SHAREDLIBCFLAGS)
-DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
-
-CPPFLAGS += -I$(top_srcdir)/common $(LIBCPPFLAGS)
-LDFLAGS += $(LDFLAGSICUDT)
-
-OBJECTS = stubdata.o
-
-## Header files to install
-HEADERS = 
-
-STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
-
-DEPS = $(OBJECTS:.o=.d)
-
--include Makefile.local
-
-## List of phony targets
-.PHONY : all all-local install install-local clean clean-local	\
-distclean distclean-local install-library dist	\
-dist-local check check-local check-exhaustive
-
-## Clear suffix list
-.SUFFIXES :
-
-## List of standard targets
-all: all-local
-install: install-local
-clean: clean-local
-distclean : distclean-local
-dist: dist-local
-check: all check-local
-
-check-exhaustive: check
-
-all-local: $(ALL_TARGETS)
-
-install-local: install-library
-
-install-library: all-local
-	$(MKINSTALLDIRS) $(DESTDIR)$(libdir)
-ifneq ($(ENABLE_STATIC),)
-	$(INSTALL-L) $(TARGET) $(DESTDIR)$(libdir)
-endif
-ifneq ($(ENABLE_SHARED),)
-	$(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(libdir)
-ifneq ($(FINAL_SO_TARGET),$(SO_TARGET))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(SO_TARGET))
-ifneq ($(FINAL_SO_TARGET),$(MIDDLE_SO_TARGET))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(MIDDLE_SO_TARGET))
-endif
-endif
-ifneq ($(IMPORT_LIB_EXT),)
-	$(INSTALL-L) $(FINAL_IMPORT_LIB) $(DESTDIR)$(libdir)
-ifneq ($(IMPORT_LIB),$(FINAL_IMPORT_LIB))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(IMPORT_LIB))
-endif
-ifneq ($(MIDDLE_IMPORT_LIB),$(FINAL_IMPORT_LIB))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(MIDDLE_IMPORT_LIB))
-endif
-endif
-endif
-
-dist-local:
-
-clean-local:
-	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
-	$(RMV) $(OBJECTS) $(STATIC_OBJECTS) $(ALL_TARGETS)
-
-distclean-local: clean-local
-	$(RMV) Makefile
-
-check-local:
-
-Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) \
-	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-ifneq ($(ENABLE_STATIC),)
-$(TARGET): $(STATIC_OBJECTS)
-	$(AR) $(ARFLAGS) $(AR_OUTOPT)$@ $^
-	$(RANLIB) $@
-endif
-
-ifneq ($(ENABLE_SHARED),)
-$(SHARED_OBJECT): $(OBJECTS)
-	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
-ifeq ($(ENABLE_RPATH),YES)
-ifneq ($(wildcard $(libdir)/$(MIDDLE_SO_TARGET)),)
-	$(warning RPATH warning: --enable-rpath means test programs may use existing $(libdir)/$(MIDDLE_SO_TARGET))
-endif
-endif
-
-ifeq ($(OS390BATCH),1)
-$(BATCH_STUB_TARGET): $(OBJECTS)
-	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
-endif   # OS390BATCH
-endif   # ENABLE_SHARED
-
-ifeq (,$(MAKECMDGOALS))
--include $(DEPS)
-else
-ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
--include $(DEPS)
-endif
-endif
-
diff --git a/stubdata/Makefile.org b/stubdata/Makefile.org
deleted file mode 100644
index 8fe7e8e..0000000
--- a/stubdata/Makefile.org
+++ /dev/null
@@ -1,149 +0,0 @@
-#******************************************************************************
-#
-#   Copyright (C) 1999-2007, International Business Machines
-#   Corporation and others.  All Rights Reserved.
-#
-#******************************************************************************
-## Makefile.in for ICU stubdata
-## Stephen F. Booth
-
-## Source directory information
-srcdir = .
-top_srcdir = ..
-
-top_builddir = ..
-
-## All the flags and other definitions are included here.
-include $(top_builddir)/icudefs.mk
-
-## Build directory information
-subdir = stubdata
-
-## Extra files to remove for 'make clean'
-CLEANFILES = *~ $(DEPS) $(IMPORT_LIB) $(MIDDLE_IMPORT_LIB) $(FINAL_IMPORT_LIB)
-
-## Target information
-
-TARGET_STUBNAME=$(DATA_STUBNAME)
-
-ifneq ($(ENABLE_STATIC),)
-TARGET = $(STUBDATA_LIBDIR)$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A)
-endif
-
-
-ifneq ($(ENABLE_SHARED),)
-SO_TARGET = $(STUBDATA_LIBDIR)$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX)$(STUB_SUFFIX).$(SO)
-ALL_SO_TARGETS = $(FINAL_SO_TARGET) $(MIDDLE_SO_TARGET) $(SO_TARGET) $(BATCH_STUB_TARGET) $(SHARED_OBJECT)
-endif
-
-
-ALL_TARGETS = $(TARGET) $(ALL_SO_TARGETS)
-
-DYNAMICCPPFLAGS = $(SHAREDLIBCPPFLAGS)
-DYNAMICCFLAGS = $(SHAREDLIBCFLAGS)
-DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
-
-ifneq ($(top_builddir),$(top_srcdir))
-CPPFLAGS += -I$(top_builddir)/common
-endif
-CPPFLAGS += -I$(top_srcdir)/common $(LIBCPPFLAGS)
-LDFLAGS += $(LDFLAGSICUDT)
-
-OBJECTS = stubdata.o
-
-## Header files to install
-HEADERS = 
-
-STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
-
-DEPS = $(OBJECTS:.o=.d)
-
--include Makefile.local
-
-## List of phony targets
-.PHONY : all all-local install install-local clean clean-local	\
-distclean distclean-local install-library dist	\
-dist-local check check-local
-
-## Clear suffix list
-.SUFFIXES :
-
-## List of standard targets
-all: all-local
-install: install-local
-clean: clean-local
-distclean : distclean-local
-dist: dist-local
-check: all check-local
-
-all-local: $(ALL_TARGETS)
-
-install-local: install-library
-
-install-library: all-local
-	$(MKINSTALLDIRS) $(DESTDIR)$(libdir)
-ifneq ($(ENABLE_STATIC),)
-	$(INSTALL-L) $(TARGET) $(DESTDIR)$(libdir)
-endif
-ifneq ($(ENABLE_SHARED),)
-	$(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(libdir)
-ifneq ($(FINAL_SO_TARGET),$(SO_TARGET))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(SO_TARGET))
-ifneq ($(FINAL_SO_TARGET),$(MIDDLE_SO_TARGET))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(MIDDLE_SO_TARGET))
-endif
-endif
-ifneq ($(IMPORT_LIB_EXT),)
-	$(INSTALL-L) $(FINAL_IMPORT_LIB) $(DESTDIR)$(libdir)
-ifneq ($(IMPORT_LIB),$(FINAL_IMPORT_LIB))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(IMPORT_LIB))
-endif
-ifneq ($(MIDDLE_IMPORT_LIB),$(FINAL_IMPORT_LIB))
-	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(MIDDLE_IMPORT_LIB))
-endif
-endif
-endif
-
-dist-local:
-
-clean-local:
-	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
-	$(RMV) $(OBJECTS) $(STATIC_OBJECTS) $(ALL_TARGETS)
-
-distclean-local: clean-local
-	$(RMV) Makefile
-
-check-local:
-
-Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) \
-	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-../common/unicode/platform.h: $(srcdir)/../common/unicode/platform.h.in $(top_builddir)/config.status
-	cd $(top_builddir) \
-	 && CONFIG_FILES=common/unicode/platform.h CONFIG_HEADERS= $(SHELL) ./config.status
-
-ifneq ($(ENABLE_STATIC),)
-$(TARGET): $(STATIC_OBJECTS)
-	$(AR) $(ARFLAGS) $(AR_OUTOPT)$@ $^
-	$(RANLIB) $@
-endif
-
-ifneq ($(ENABLE_SHARED),)
-$(SHARED_OBJECT): $(OBJECTS)
-	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
-
-ifeq ($(OS390BATCH),1)
-$(BATCH_STUB_TARGET): $(OBJECTS)
-	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
-endif   # OS390BATCH
-endif   # ENABLE_SHARED
-
-ifeq (,$(MAKECMDGOALS))
--include $(DEPS)
-else
-ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
--include $(DEPS)
-endif
-endif
-
diff --git a/stubdata/cnv/docomo-shift_jis-2007.cnv b/stubdata/cnv/docomo-shift_jis-2007.cnv
deleted file mode 100644
index 0862bf5..0000000
--- a/stubdata/cnv/docomo-shift_jis-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/docomo-shift_jis-2012.cnv b/stubdata/cnv/docomo-shift_jis-2012.cnv
deleted file mode 100644
index a39bd8c..0000000
--- a/stubdata/cnv/docomo-shift_jis-2012.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/gsm-03.38-2000.cnv b/stubdata/cnv/gsm-03.38-2000.cnv
deleted file mode 100644
index d326164..0000000
--- a/stubdata/cnv/gsm-03.38-2000.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/iso-8859_16-2001.cnv b/stubdata/cnv/iso-8859_16-2001.cnv
deleted file mode 100644
index 6b68f47..0000000
--- a/stubdata/cnv/iso-8859_16-2001.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/kddi-jisx-208-2007.cnv b/stubdata/cnv/kddi-jisx-208-2007.cnv
deleted file mode 100644
index 2f31c92..0000000
--- a/stubdata/cnv/kddi-jisx-208-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/kddi-shift_jis-2007.cnv b/stubdata/cnv/kddi-shift_jis-2007.cnv
deleted file mode 100644
index 160fbd8..0000000
--- a/stubdata/cnv/kddi-shift_jis-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/kddi-shift_jis-2012.cnv b/stubdata/cnv/kddi-shift_jis-2012.cnv
deleted file mode 100644
index 382595a..0000000
--- a/stubdata/cnv/kddi-shift_jis-2012.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/softbank-jisx-208-2007.cnv b/stubdata/cnv/softbank-jisx-208-2007.cnv
deleted file mode 100644
index 58acd4e..0000000
--- a/stubdata/cnv/softbank-jisx-208-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/softbank-shift_jis-2007.cnv b/stubdata/cnv/softbank-shift_jis-2007.cnv
deleted file mode 100644
index c988683..0000000
--- a/stubdata/cnv/softbank-shift_jis-2007.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/cnv/softbank-shift_jis-2012.cnv b/stubdata/cnv/softbank-shift_jis-2012.cnv
deleted file mode 100644
index 14f489a..0000000
--- a/stubdata/cnv/softbank-shift_jis-2012.cnv
+++ /dev/null
Binary files differ
diff --git a/stubdata/icu-data-default.txt b/stubdata/icu-data-default.txt
deleted file mode 100644
index 99730f2..0000000
--- a/stubdata/icu-data-default.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-brkitr/char.brk
-brkitr/cjdict.dict
-brkitr/khmerdict.dict
-brkitr/line.brk
-brkitr/line_fi.brk
-brkitr/line_ja.brk
-brkitr/res_index.res
-brkitr/root.res
-brkitr/sent.brk
-brkitr/sent_el.brk
-brkitr/thaidict.dict
-brkitr/title.brk
-brkitr/word.brk
-brkitr/word_POSIX.brk
-
-coll/invuca.icu
-coll/res_index.res
-coll/root.res
-coll/ucadata.icu
-# coll/ps.res is needed for fa_AF.
-coll/ps.res
-
-curr/pool.res
-curr/res_index.res
-curr/root.res
-curr/supplementalData.res
-
-lang/pool.res
-lang/res_index.res
-lang/root.res
-
-region/pool.res
-region/res_index.res
-region/root.res
-
-translit/el.res
-translit/en.res
-translit/root.res
-
-zone/pool.res
-zone/res_index.res
-zone/root.res
-
-pool.res
-res_index.res
-root.res
-
-docomo-shift_jis-2012.cnv
-euc-jp-2007.cnv
-gb18030.cnv
-gsm-03.38-2000.cnv
-ibm-1089_P100-1995.cnv
-ibm-1168_P100-2002.cnv
-ibm-1363_P11B-1998.cnv
-ibm-1373_P100-2002.cnv
-ibm-1375_P100-2007.cnv
-ibm-1386_P100-2001.cnv
-ibm-5012_P100-1999.cnv
-ibm-5346_P100-1998.cnv
-ibm-5347_P100-1998.cnv
-ibm-5348_P100-1997.cnv
-ibm-5349_P100-1998.cnv
-ibm-5350_P100-1998.cnv
-ibm-5354_P100-1998.cnv
-ibm-864_X110-1999.cnv
-ibm-874_P100-1995.cnv
-ibm-878_P100-1996.cnv
-ibm-9005_X110-2007.cnv
-ibm-912_P100-1995.cnv
-ibm-913_P100-2000.cnv
-ibm-914_P100-1995.cnv
-ibm-915_P100-1995.cnv
-ibm-920_P100-1995.cnv
-ibm-921_P100-1995.cnv
-ibm-923_P100-1998.cnv
-ibm-943_P15A-2003.cnv
-ibm-9447_P100-2002.cnv
-ibm-9448_X100-2005.cnv
-ibm-9449_P100-2002.cnv
-iso-8859_10-1998.cnv
-iso-8859_11-2001.cnv
-iso-8859_14-1998.cnv
-iso-8859_16-2001.cnv
-kddi-jisx-208-2007.cnv
-kddi-shift_jis-2012.cnv
-macos-0_2-10.2.cnv
-macos-7_3-10.2.cnv
-noop-cns-11643.cnv
-noop-gb2312_gl.cnv
-noop-iso-ir-165.cnv
-softbank-jisx-208-2007.cnv
-softbank-shift_jis-2012.cnv
-windows-874-2000.cnv
-windows-936-2000.cnv
-windows-949-2000.cnv
-windows-950-2000.cnv
-# jisx-208.cnv is needed by the iso-2022-jp patch in ucnv2022.cpp.
-jisx-208.cnv
-
-cnvalias.icu
-dayPeriods.res
-genderList.res
-icustd.res
-icuver.res
-keyTypeData.res
-likelySubtags.res
-metadata.res
-metaZones.res
-nfc.nrm
-nfkc.nrm
-numberingSystems.res
-plurals.res
-postalCodeData.res
-rfc3491.spp
-supplementalData.res
-timezoneTypes.res
-# unames.icu is required for Character.getName.
-unames.icu
-uts46.nrm
-zoneinfo64.res
diff --git a/stubdata/icu_dat_generator.py b/stubdata/icu_dat_generator.py
deleted file mode 100755
index d24e662..0000000
--- a/stubdata/icu_dat_generator.py
+++ /dev/null
@@ -1,406 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generates icudtXXl-default.dat from icudtXXl-all.dat and icu-data-default.txt.
-#
-# Usage:
-#    icu_dat_generator.py [-v] [-h]
-#
-# Sample usage:
-#   $ANDROID_BUILD_TOP/external/icu4c/stubdata$ ./icu_dat_generator.py --verbose
-
-import getopt
-import glob
-import os
-import os.path
-import re
-import shutil
-import subprocess
-import sys
-
-
-def PrintHelpAndExit():
-  print "Usage:"
-  print "  icu_dat_generator.py [-v|--verbose] [-h|--help]"
-  print "Example:"
-  print "  $ANDROID_BUILD_TOP/external/icu4c/stubdata$ ./icu_dat_generator.py"
-  sys.exit(1)
-
-
-def InvokeIcuTool(tool, working_dir, args):
-  command_list = [os.path.join(ICU_PREBUILT_DIR, tool)]
-  command_list.extend(args)
-
-  if VERBOSE:
-    command = "[%s] %s" % (working_dir, " ".join(command_list))
-    print command
-
-  ret = subprocess.call(command_list, cwd=working_dir)
-  if ret != 0:
-    sys.exit(command_list[0:])
-
-
-def ExtractAllResourceFilesToTmpDir():
-  # copy icudtXXl-all.dat to icudtXXl.dat
-  src_dat = os.path.join(ICU4C_DIR, "stubdata", ICU_DATA + "-all.dat")
-  dst_dat = os.path.join(ICU4C_DIR, "stubdata", ICU_DATA + ".dat")
-  shutil.copyfile(src_dat, dst_dat)
-  InvokeIcuTool("icupkg", None, [dst_dat, "-x", "*", "-d", TMP_DAT_PATH])
-
-
-def MakeDat(input_file, stubdata_dir):
-  print "------ Processing '%s'..." % (input_file)
-  if not os.path.isfile(input_file):
-    print "%s not a file!" % input_file
-    sys.exit(1)
-  GenResIndex(input_file)
-  CopyAndroidCnvFiles(stubdata_dir)
-  # Run "icupkg -tl -s icudtXXl -a icu-data-default.txt new icudtXXl.dat".
-  args = ["-tl", "-s", TMP_DAT_PATH, "-a", "add_list.txt", "new", ICU_DATA + ".dat"]
-  InvokeIcuTool("icupkg", TMP_DAT_PATH, args)
-
-
-def ResFilesToLocales(res_files):
-  locales = []
-  for res_file in res_files:
-    # res_file is something like 'coll/en_US.res'.
-    if not '/' in res_file:
-      locales.append(res_file)
-    else:
-      locales.append(res_file.split('/')[1].replace('.res', ''))
-  return locales
-
-
-def WriteIndex(path, locales):
-  empty_value = " {\"\"}\n"  # key-value pair for all locale entries
-
-  f = open(path, "w")
-  f.write("res_index:table(nofallback) {\n")
-  f.write("  InstalledLocales {\n")
-  for locale in sorted(locales):
-    f.write(locale + empty_value)
-
-  f.write("  }\n")
-  f.write("}\n")
-  f.close()
-
-
-def AddResFile(collection, path):
-  # There are two consumers of the the input .txt file: this script and
-  # icupkg. We only care about .res files, but icupkg needs files they depend
-  # on too, so it's not an error to have to ignore non-.res files here.
-  end = path.find(".res")
-  if end > 0:
-    collection.add(path[path.find("/")+1:end])
-  return
-
-
-def AddAllResFiles(collection, dir_name, language):
-  pattern1 = '%s/data/%s/%s.txt' % (ICU4C_DIR, dir_name, language)
-  pattern2 = '%s/data/%s/%s_*.txt' % (ICU4C_DIR, dir_name, language)
-  for path in glob.glob(pattern1) + glob.glob(pattern2):
-    if 'TRADITIONAL' in path or 'PHONEBOOK' in path:
-      continue
-    parts = path.split('/')
-    if dir_name == 'locales':
-      path = parts[-1].replace('.txt', '')
-    else:
-      path = parts[-2] + '/' + parts[-1].replace('.txt', '.res')
-    collection.add(path)
-
-
-def DumpFile(filename):
-  print ' ----------------- %s' % filename
-  os.system("cat %s" % filename)
-  print ' ----------------- END'
-
-
-# Open input file (such as icu-data-default.txt).
-# Go through the list and generate res_index.res for locales, brkitr,
-# coll, et cetera.
-def GenResIndex(input_file):
-  brkitrs = set()
-  colls = set()
-  currs = set()
-  langs = set()
-  locales = set()
-  regions = set()
-  zones = set()
-
-  languages = [
-    # Group 0.
-    'en',
-
-    # Group 1.
-    'ar',
-    'zh',
-    'nl',
-    'fr',
-    'de',
-    'it',
-    'ja',
-    'ko',
-    'pl',
-    'pt',
-    'ru',
-    'es',
-    'th',
-    'tr',
-
-    # Group 2.
-    'bg',
-    'ca',
-    'hr',
-    'cs',
-    'da',
-    'fil','tl',
-    'fi',
-    'el',
-    'iw','he',
-    'hi',
-    'hu',
-    'id','in',
-    'lv',
-    'lt',
-    'nb',
-    'ro',
-    'sr',
-    'sk',
-    'sl',
-    'sv',
-    'uk',
-    'vi',
-    'fa',
-
-    # Group 3.
-    'af',
-    'am',
-    'bn',
-    'et',
-    'is',
-    'ms',
-    'mr',
-    'sw',
-    'ta',
-    'zu',
-
-    # Group 4.
-    'eu',
-    'gl',
-    'gu',
-    'kn',
-    'ml',
-    'te',
-    'ur',
-
-    # Group 5.
-    'km',
-    'lo',
-    'ne',
-    'si',
-    'ka',
-    'hy',
-    'mn',
-    'cy',
-
-    # Others.
-    'az',
-    'be',
-    'rm',
-  ]
-
-  for language in languages:
-    AddAllResFiles(brkitrs, 'brkitr', language)
-    AddAllResFiles(colls, 'coll', language)
-    AddAllResFiles(currs, 'curr', language)
-    AddAllResFiles(langs, 'lang', language)
-    AddAllResFiles(regions, 'region', language)
-    AddAllResFiles(zones, 'zone', language)
-    AddAllResFiles(locales, 'locales', language)
-
-  # We need to merge the human-edited icu-data-default.txt with the
-  # machine-generated list of files needed to support the various languages.
-  new_add_list = []
-
-  for line in open(input_file, "r"):
-    new_add_list.append(line)
-    if "root." in line or "res_index" in line or "_.res" in line:
-      continue
-    if "brkitr/" in line:
-      AddResFile(brkitrs, line)
-    elif "coll/" in line:
-      AddResFile(colls, line)
-    elif "curr/" in line:
-      AddResFile(currs, line)
-    elif "lang/" in line:
-      AddResFile(langs, line)
-    elif "region/" in line:
-      AddResFile(regions, line)
-    elif "zone/" in line:
-      AddResFile(zones, line)
-    elif ".res" in line:
-      # TODO: these should all now be misc resources!
-      # We need to determine the resource is locale resource or misc resource.
-      # To determine the locale resource, we assume max script length is 3.
-      end = line.find(".res")
-      if end <= 3 or (line.find("_") <= 3 and line.find("_") > 0):
-        locales.add(line[:end])
-
-  kind_to_res_files = {
-      "brkitr": brkitrs,
-      "coll": colls,
-      "curr": currs,
-      "lang": langs,
-      "locales": locales,
-      "region": regions,
-      "zone": zones
-  }
-
-  # Merge the machine-generated list into the human-generated list.
-  for kind, res_files in kind_to_res_files.items():
-    for res_file in sorted(res_files):
-      if '.' not in res_file:
-        res_file = res_file + '.res'
-      new_add_list.append(res_file)
-
-  if VERBOSE:
-    for kind, res_files in kind_to_res_files.items():
-      print "%s=%s" % (kind, sorted(res_files))
-
-  # Write the genrb input files.
-
-  # First add_list.txt, the argument to icupkg -a...
-  f = open(os.path.join(TMP_DAT_PATH, "add_list.txt"), "w")
-  for line in new_add_list:
-    if line.startswith('#'):
-      continue
-    f.write("%s\n" % line)
-  f.close()
-
-  # Second res_index.txt, used below by genrb.
-  res_index = "res_index.txt"
-  WriteIndex(os.path.join(TMP_DAT_PATH, res_index), locales)
-  for kind, res_files in kind_to_res_files.items():
-    if kind == "locales":
-      continue
-    res_index_filename = os.path.join(TMP_DAT_PATH, kind, res_index)
-    WriteIndex(res_index_filename, ResFilesToLocales(res_files))
-    if VERY_VERBOSE:
-      DumpFile(res_index_filename)
-
-  # Useful if you need to see the temporary input files we generated.
-  if VERY_VERBOSE:
-    DumpFile('%s/add_list.txt' % TMP_DAT_PATH)
-    DumpFile('%s/res_index.txt' % TMP_DAT_PATH)
-
-  # Call genrb to generate new res_index.res.
-  InvokeIcuTool("genrb", TMP_DAT_PATH, [res_index])
-  for kind, res_files in kind_to_res_files.items():
-    if kind == "locales":
-      continue
-    InvokeIcuTool("genrb", os.path.join(TMP_DAT_PATH, kind), [res_index])
-
-
-def CopyAndroidCnvFiles(stubdata_dir):
-  android_specific_cnv = ["gsm-03.38-2000.cnv",
-                          "iso-8859_16-2001.cnv",
-                          "docomo-shift_jis-2012.cnv",
-                          "kddi-jisx-208-2007.cnv",
-                          "kddi-shift_jis-2012.cnv",
-                          "softbank-jisx-208-2007.cnv",
-                          "softbank-shift_jis-2012.cnv"]
-  for cnv_file in android_specific_cnv:
-    src_path = os.path.join(stubdata_dir, "cnv", cnv_file)
-    dst_path = os.path.join(TMP_DAT_PATH, cnv_file)
-    shutil.copyfile(src_path, dst_path)
-    if VERBOSE:
-      print "copy " + src_path + " " + dst_path
-
-
-def main():
-  global ANDROID_BUILD_TOP  # $ANDROID_BUILD_TOP
-  global ICU4C_DIR          # $ANDROID_BUILD_TOP/external/icu4c
-  global ICU_PREBUILT_DIR   # Directory containing pre-built ICU tools.
-  global ICU_DATA           # e.g. "icudt50l"
-  global TMP_DAT_PATH       # Temporary directory to store all resource files and
-                            # intermediate dat files.
-  global VERBOSE, VERY_VERBOSE
-
-  VERBOSE = VERY_VERBOSE = False
-
-  show_help = False
-  try:
-    opts, args = getopt.getopt(sys.argv[1:], "hv", ["help", "verbose", "very-verbose"])
-  except getopt.error:
-    PrintHelpAndExit()
-  for opt, _ in opts:
-    if opt in ("-h", "--help"):
-      show_help = True
-    elif opt in ("-v", "--verbose"):
-      VERBOSE = True
-    elif opt in ("--very-verbose"):
-      VERY_VERBOSE = VERBOSE = True
-  if args:
-    show_help = True
-
-  if show_help:
-    PrintHelpAndExit()
-
-  ANDROID_BUILD_TOP = os.environ.get("ANDROID_BUILD_TOP")
-  if not ANDROID_BUILD_TOP:
-    print "$ANDROID_BUILD_TOP not set! Run 'env_setup.sh'."
-    sys.exit(1)
-  ICU4C_DIR = os.path.join(ANDROID_BUILD_TOP, "external", "icu4c")
-  stubdata_dir = os.path.join(ICU4C_DIR, "stubdata")
-
-  # Work out the ICU version from the source .dat filename, so we can find the
-  # appropriate pre-built ICU tools.
-  source_dat = os.path.basename(glob.glob(os.path.join(stubdata_dir, "icudt*.dat"))[0])
-  icu_version = re.sub(r"([^0-9])", "", source_dat)
-  ICU_PREBUILT_DIR = os.path.join(os.environ.get("ANDROID_BUILD_TOP"),
-      "prebuilts", "misc", "linux-x86_64", "icu-%s%s" % (icu_version[0], icu_version[1]))
-  if not os.path.exists(ICU_PREBUILT_DIR):
-    print "%s does not exist!" % ICU_PREBUILT_DIR
-
-  ICU_DATA = "icudt" + icu_version + "l"
-
-  # Check that icudtXXl-all.dat exists (since we build the other .dat files from that).
-  full_data_filename = os.path.join(stubdata_dir, ICU_DATA + "-all.dat")
-  if not os.path.isfile(full_data_filename):
-    print "%s not present." % full_data_filename
-    sys.exit(1)
-
-  # Create a temporary working directory.
-  TMP_DAT_PATH = os.path.join(ICU4C_DIR, "tmp")
-  if os.path.exists(TMP_DAT_PATH):
-    shutil.rmtree(TMP_DAT_PATH)
-  os.mkdir(TMP_DAT_PATH)
-
-  # Extract resource files from icudtXXl-all.dat to TMP_DAT_PATH.
-  ExtractAllResourceFilesToTmpDir()
-
-  input_file = os.path.join(stubdata_dir, "icu-data-default.txt")
-  output_file = os.path.join(stubdata_dir, ICU_DATA + "-default.dat")
-  MakeDat(input_file, stubdata_dir)
-  shutil.copyfile(os.path.join(TMP_DAT_PATH, ICU_DATA + ".dat"), output_file)
-  print "Generated ICU data: %s" % output_file
-
-  # Cleanup temporary working directory and icudtXXl.dat
-  shutil.rmtree(TMP_DAT_PATH)
-  os.remove(os.path.join(stubdata_dir, ICU_DATA + ".dat"))
-
-if __name__ == "__main__":
-  main()
diff --git a/stubdata/icudt51l-default.dat b/stubdata/icudt51l-default.dat
deleted file mode 100644
index a15cd22..0000000
--- a/stubdata/icudt51l-default.dat
+++ /dev/null
Binary files differ
diff --git a/stubdata/icudt51l-all.dat b/stubdata/icudt51l.dat
similarity index 100%
rename from stubdata/icudt51l-all.dat
rename to stubdata/icudt51l.dat
Binary files differ
diff --git a/stubdata/readme.txt b/stubdata/readme.txt
deleted file mode 100644
index 3ef895e..0000000
--- a/stubdata/readme.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-This directory is used for building our Android ICU data file.
-
-1. To generate ICU data files:run the icu_dat_generator.py script.
-   The command is:
-     ./icu_dat_generator.py [-v] [-h]
-
-2. To add a resource to Android ICU data file: insert an entry to
-   icu-data-default.txt in external/icu4c/stubdata then
-   run icu_dat_generator.py.
-   For example, to add French collation, you need to
-   a. Add an entry, "coll/fr.res", into external/icu4c/stubdata/icu-data-default.txt
-   b. run "./icu_dat_generator.py".
-
-3. Add a new resource or modify existing ICU resource definition:
-   Note: This is a rare case. You should talk to ICU team first if it is a bug
-   in ICU resource or a feature enhancement before making such changes.
-   If you would like to add existing ICU resource to Android, please check #2.
-   a. Create or change the text format resource files under external/icu4c/data.
-   b. Make a temporary directory for ICU build.
-      i.e. mkdir external/icu4c/icuBuild
-   c. cd to ICU build directory.
-      i.e. cd external/icu4c/icuBuild
-   d. Run external/icu4c/runConfigureICU with "Linux" option to generate the
-      makefile.
-      i.e. $ANDROID_BUILD_TOP/external/icu4c/runConfigureICU Linux
-   e. make -j2
-   f. The new icudtXXl.dat is under data/out/tmp and the individual resources are
-      under data/out/build/icudtXXl
-      For example, you can find data/out/tmp/icudtXXl.dat and data/out/build/icudtXX48l/*.res.
-   g. Copy the new icudtXXl.dat over $ANDROID_BUILD_TOP/external/icu4c/stubdata/icudtXXl-all.dat.
-      i.e. cp data/out/tmp/icudtXXl.dat $ANDROID_BUILD_TOP/external/icu4c/stubdata/icudtXXl-all.dat.
-   h. Check #1 or #2 to replace or add resource to ICU.
-   i. Clean up ICU build directory.
-   j. Discuss with icu-team how to include the change to public ICU.
-
-Locale Resource Files:
-- icudtXXl-all.dat contains the resources in packed
-  form. It includes everything that comes with
-  a vanilla ICU release. icu_dat_generator.py uses this file to generate
-  custom build dat files.
-
-- cnv/*.cnv are the additional encodings required by Android.
-  These are
-  - gsm-03.38-2000.cnv
-  - iso-8859_16-2001.cnv
-  - docomo-shift_jis-2012.cnv
-  - kddi-jisx-208-2007.cnv
-  - kddi-shift_jis-2012.cnv
-  - softbank-jisx-208-2007.cnv
-  - softbank-shift_jis-2012.cnv
-
-- Text format ICU resource files are under external/icu4c/data directory.
-  Binary resource files are packaged in external/icu4c/stubdata/icudtXXl-all.dat.
-  If you have bug fixes to apply or want to examine individual resource sizes,
-  you can run icupkg utility to extract icudtXXl-all.dat into a temporary directory.
-  For example:
-  cd $ANDROID_BUILD_TOP/external/icu4c/stubdata
-  cp icudtXXl-all.dat icudtXXl.dat
-  mkdir tempDir
-  $ANDROID_BUILD_TOP/prebuilt/linux-x86_64/icu-4.8/icupkg  icudtXXl.dat -x "*" -d tempDir
-
-Run ICU tests:
-ICU tests are not part of Android build. If you change the ICU code or data,
-it is highly recommended to run ICU tests.
- 1. Remove the flag "-R" in external/icu4c/data/Makefile.in.
-    "Reverse collation keys" tables are not included in ICU data on Android. To
-    pass ICU collation tests, you need to delete the flag "-R" in Makefile.in.
-    Search for " -R" under "### collation res" section in external/icu4c/data/Makefile.in,
-    delete all of them.
- 2. Make a temporary directory for ICU build.
-    i.e. mkdir external/icu4c/icuBuild
- 3. cd to ICU build directory.
-    i.e. cd external/icu4c/icuBuild
- 4. Run external/icu4c/runConfigureICU with "Linux" option to generate the makefile.
-    i.e. $ANDROID_BUILD_TOP/external/icu4c/runConfigureICU Linux
- 5. make -j2 check
- 6. Check the result. Ignore the errors from tsconv.
diff --git a/stubdata/reduced_coll/README.txt b/stubdata/reduced_coll/README.txt
deleted file mode 100644
index 58c1a2d..0000000
--- a/stubdata/reduced_coll/README.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-To construct a revised data file, copy it to this directory, changing its
-name to icudt42l.dat, and then run the following command in this directory:
-
-    icupkg --add add.txt icudt42l.dat
-
-Then copy the new data file back to its source location.
-
-Note: If you have built but not installed ICU on the Mac, you will need
-to do something like this to execute the command:
-
-    ICU_SOURCE=/Users/danfuzz/down/icu/source
-    DYLD_LIBRARY_PATH=$ICU_SOURCE/lib $ICU_SOURCE/bin/icupkg
diff --git a/stubdata/reduced_coll/add.txt b/stubdata/reduced_coll/add.txt
deleted file mode 100644
index 15aa826..0000000
--- a/stubdata/reduced_coll/add.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-coll/en.res
-coll/en_AU.res
-coll/en_BE.res
-coll/en_BW.res
-coll/en_CA.res
-coll/en_GB.res
-coll/en_HK.res
-coll/en_IE.res
-coll/en_IN.res
-coll/en_MT.res
-coll/en_NZ.res
-coll/en_PH.res
-coll/en_SG.res
-coll/en_US.res
-coll/en_US_POSIX.res
-coll/en_VI.res
-coll/en_ZA.res
-coll/en_ZW.res
-coll/root.res
diff --git a/stubdata/reduced_coll/coll/en.res b/stubdata/reduced_coll/coll/en.res
deleted file mode 100644
index 7cee77d..0000000
--- a/stubdata/reduced_coll/coll/en.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_AU.res b/stubdata/reduced_coll/coll/en_AU.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_AU.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_BE.res b/stubdata/reduced_coll/coll/en_BE.res
deleted file mode 100644
index f76c521..0000000
--- a/stubdata/reduced_coll/coll/en_BE.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_BW.res b/stubdata/reduced_coll/coll/en_BW.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_BW.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_CA.res b/stubdata/reduced_coll/coll/en_CA.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_CA.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_GB.res b/stubdata/reduced_coll/coll/en_GB.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_GB.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_HK.res b/stubdata/reduced_coll/coll/en_HK.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_HK.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_IE.res b/stubdata/reduced_coll/coll/en_IE.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_IE.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_IN.res b/stubdata/reduced_coll/coll/en_IN.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_IN.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_MT.res b/stubdata/reduced_coll/coll/en_MT.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_MT.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_NZ.res b/stubdata/reduced_coll/coll/en_NZ.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_NZ.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_PH.res b/stubdata/reduced_coll/coll/en_PH.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_PH.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_SG.res b/stubdata/reduced_coll/coll/en_SG.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_SG.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_US.res b/stubdata/reduced_coll/coll/en_US.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_US.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_US_POSIX.res b/stubdata/reduced_coll/coll/en_US_POSIX.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_US_POSIX.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_VI.res b/stubdata/reduced_coll/coll/en_VI.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_VI.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_ZA.res b/stubdata/reduced_coll/coll/en_ZA.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_ZA.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/en_ZW.res b/stubdata/reduced_coll/coll/en_ZW.res
deleted file mode 100644
index b426125..0000000
--- a/stubdata/reduced_coll/coll/en_ZW.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/reduced_coll/coll/root.res b/stubdata/reduced_coll/coll/root.res
deleted file mode 100644
index a989a34..0000000
--- a/stubdata/reduced_coll/coll/root.res
+++ /dev/null
Binary files differ
diff --git a/stubdata/regenerate.sh b/stubdata/regenerate.sh
deleted file mode 100755
index c536cd5..0000000
--- a/stubdata/regenerate.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# Stop if anything goes wrong, and show what we're doing. (This script is slow.)
-set -e
-set -x
-
-# TODO: extract this from the .dat file's name.
-ICU_VERSION=51
-
-ICU_BIN=$ANDROID_BUILD_TOP/prebuilts/misc/linux-x86_64/icu-$ICU_VERSION
-ICU4C_DIR=$ANDROID_BUILD_TOP/external/icu4c
-
-# Make a temporary directory.
-rm -rf $ICU4C_DIR/tmp
-mkdir $ICU4C_DIR/tmp
-
-# TODO: expand this to more than just the curr and region files.
-data_kinds="curr region"
-
-for data_kind in $data_kinds ; do
-  mkdir $ICU4C_DIR/tmp/$data_kind
-
-  # Compile the .txt files to .res files.
-  cd $ICU4C_DIR/data/$data_kind
-  for locale in *.txt ; do
-    $ICU_BIN/genrb -d $ICU4C_DIR/tmp/$data_kind ../../data/$data_kind/$locale
-  done
-done
-
-# Create a copy of the .dat file that uses the new .res files.
-cp $ICU4C_DIR/stubdata/icudt${ICU_VERSION}l-all.dat $ICU4C_DIR/tmp/icudt${ICU_VERSION}l.dat
-cd $ICU4C_DIR/tmp
-for data_kind in $data_kinds ; do
-  for res in $data_kind/*.res ; do
-    $ICU_BIN/icupkg -a $res icudt${ICU_VERSION}l.dat
-  done
-done
-
-# Make the modified .dat file the canonical copy.
-mv $ICU4C_DIR/tmp/icudt${ICU_VERSION}l.dat $ICU4C_DIR/stubdata/icudt${ICU_VERSION}l-all.dat
diff --git a/stubdata/root.mk b/stubdata/root.mk
deleted file mode 100644
index 1e3e2ab..0000000
--- a/stubdata/root.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-# derive a string like 'icudt 48l' from a local file like 'external/icu4c/stubdata/icudt 48l-all.dat'
-stubdata_path:= $(call my-dir)
-root_dat_path := $(wildcard $(stubdata_path)/*-all.dat)
-root := $(patsubst $(stubdata_path)/%,%,$(patsubst %-all.dat,%,$(root_dat_path)))
diff --git a/stubdata/stubdata.vcxproj b/stubdata/stubdata.vcxproj
deleted file mode 100644
index 0b20a61..0000000
--- a/stubdata/stubdata.vcxproj
+++ /dev/null
@@ -1,280 +0,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{203EC78A-0531-43F0-A636-285439BDE025}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\x86\Release\icudt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release\stubdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <PreLinkEvent>
-      <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
-    </PreLinkEvent>
-    <Link>
-      <OutputFile>..\..\bin\icudt51.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <ProgramDatabaseFile>.\x86\Release\icudt.pdb</ProgramDatabaseFile>
-      <NoEntryPoint>true</NoEntryPoint>
-      <SetChecksum>true</SetChecksum>
-      <BaseAddress>0x4ad00000</BaseAddress>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
-      <ImportLibrary>..\..\lib\icudt.lib</ImportLibrary>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\x86\Debug/icudt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/stubdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <PreLinkEvent>
-      <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
-    </PreLinkEvent>
-    <Link>
-      <OutputFile>..\..\bin\icudt51.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Debug/icudt.pdb</ProgramDatabaseFile>
-      <NoEntryPoint>true</NoEntryPoint>
-      <SetChecksum>true</SetChecksum>
-      <BaseAddress>0x4ad00000</BaseAddress>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
-      <ImportLibrary>..\..\lib\icudt.lib</ImportLibrary>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release\icudt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release\stubdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <PreLinkEvent>
-      <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
-    </PreLinkEvent>
-    <Link>
-      <OutputFile>..\..\bin64\icudt51.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
-      <ProgramDatabaseFile>.\x64\Release\icudt.pdb</ProgramDatabaseFile>
-      <NoEntryPoint>true</NoEntryPoint>
-      <SetChecksum>true</SetChecksum>
-      <BaseAddress>0x4ad00000</BaseAddress>
-      <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
-      <ImportLibrary>..\..\lib64\icudt.lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/icudt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/stubdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <PreLinkEvent>
-      <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
-    </PreLinkEvent>
-    <Link>
-      <OutputFile>..\..\bin64\icudt51.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Debug/icudt.pdb</ProgramDatabaseFile>
-      <NoEntryPoint>true</NoEntryPoint>
-      <SetChecksum>true</SetChecksum>
-      <BaseAddress>0x4ad00000</BaseAddress>
-      <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
-      <ImportLibrary>..\..\lib64\icudt.lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="stubdata.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\data\misc\icudata.rc">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
diff --git a/stubdata/stubdata.vcxproj.filters b/stubdata/stubdata.vcxproj.filters
deleted file mode 100644
index 96859a4..0000000
--- a/stubdata/stubdata.vcxproj.filters
+++ /dev/null
@@ -1,27 +0,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{0ee0463f-dec0-4224-af0c-52babad261c1}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{a9df809d-9699-4284-97a0-a7e71522eac3}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{981a212f-ebc5-4f1e-be28-06ce5e90ecca}</UniqueIdentifier>
-      <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="stubdata.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\data\misc\icudata.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
