summaryrefslogtreecommitdiffstats
path: root/JavaLibrary.mk
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2015-04-01 09:34:24 +0100
committerNarayan Kamath <narayan@google.com>2015-04-01 09:36:05 +0100
commitf37f781d473cd398041e34648aaa5f2a50c0d8f5 (patch)
treeeb773c41ba5fce6c621e3b707a2e1bfeb4e039cd /JavaLibrary.mk
parentf180cb21b5bd3e5fa314a5e259f192b663e72216 (diff)
downloadlibcore-f37f781d473cd398041e34648aaa5f2a50c0d8f5.zip
libcore-f37f781d473cd398041e34648aaa5f2a50c0d8f5.tar.gz
libcore-f37f781d473cd398041e34648aaa5f2a50c0d8f5.tar.bz2
Revert "Revert "Add icu4j to core-libart.jar.""
This reverts commit 3b59929cb9978453c8bc81cf7e222c40fa42ce90. Fixes the original flaky build issues and fixes a typo caught by the previous review. Change-Id: Ia8a008b75dba51980b064f9689477b8698bcfa5c
Diffstat (limited to 'JavaLibrary.mk')
-rw-r--r--JavaLibrary.mk46
1 files changed, 42 insertions, 4 deletions
diff --git a/JavaLibrary.mk b/JavaLibrary.mk
index 99b4232..9051d25 100644
--- a/JavaLibrary.mk
+++ b/JavaLibrary.mk
@@ -69,14 +69,40 @@ local_javac_flags=-encoding UTF-8
local_javac_flags+=-Xmaxwarns 9999999
#
+# ICU4J related rules.
+#
+# We compile icu4j along with core-libart because we're implementing parts of core-libart
+# in terms of icu4j.
+icu4j_root := ../external/icu/icu4j/
+icu4j_src_files := $(call all-java-files-under,$(icu4j_root)/main/classes)
+
+# Filter out bits of ICU4J we don't use yet : the SPIs (which we have limited support for),
+# the charset encoders and the transliterators.
+icu4j_src_files := $(filter-out $(icu4j_root)/main/classes/localespi/%, $(icu4j_src_files))
+icu4j_src_files := $(filter-out $(icu4j_root)/main/classes/charset/%, $(icu4j_src_files))
+icu4j_src_files := $(filter-out $(icu4j_root)/main/classes/translit/%, $(icu4j_src_files))
+
+# Not all src dirs contain resources, some instead contain other random files
+# that should not be included as resources. The ones that should be included
+# can be identifed by the fact that they contain particular subdir trees.
+#
+define all-icu-subdir-with-subdir
+$(patsubst $(LOCAL_PATH)/%/$(2),%,$(wildcard $(LOCAL_PATH)/$(1)/$(2)))
+endef
+
+icu4j_resource_dirs := \
+ $(filter-out $(icu4j_root)/main/classes/localespi/%, \
+ $(call all-icu-subdir-with-subdir,$(icu4j_root)/main/classes/*/src,com/ibm/icu))
+
+#
# Build for the target (device).
#
# Definitions to make the core library.
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(libart_core_src_files)
-LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
+LOCAL_SRC_FILES := $(libart_core_src_files) $(icu4j_src_files)
+LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs) $(icu4j_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_DX_FLAGS := --core-library
@@ -84,8 +110,19 @@ LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := core-libart
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
LOCAL_REQUIRED_MODULES := tzdata
+LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
include $(BUILD_JAVA_LIBRARY)
+# Path to the ICU4C data files in the Android device file system:
+icu4c_data := /system/usr/icu
+# TODO: It's quite hideous that this double-slash between icu4j and main is required.
+# It's because we provide a variable substition of the make-rule generated jar command
+# to substitute a processed ICUProperties.config file in place of the original.
+#
+# We can avoid this by filtering out ICUConfig.properties from our list of resources.
+icu4j_config_root := $(LOCAL_PATH)/../external/icu/icu4j//main/classes/core/src
+include external/icu/icu4j/adjust_icudt_path.mk
+
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the core-tests library.
include $(CLEAR_VARS)
@@ -140,8 +177,8 @@ include $(BUILD_HOST_JAVA_LIBRARY)
# Definitions to make the core library.
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(libart_core_src_files)
-LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
+LOCAL_SRC_FILES := $(libart_core_src_files) $(icu4j_src_files)
+LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs) $(icu4j_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_DX_FLAGS := --core-library
@@ -149,6 +186,7 @@ LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := core-libart-hostdex
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
LOCAL_REQUIRED_MODULES := tzdata-host
+LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
# Make the core-tests library.