Allow control of jack used for compilation
Version of Jack used to compile a module can now be control from
a dedicated mk located in prebuilts/sdk/tools
Bug: 24564814
Change-Id: Ie8120c97e0fa10953d4d015afd27aacfac80e5b6
diff --git a/core/config.mk b/core/config.mk
index b7fb547..602c2d4 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -478,12 +478,6 @@
else
DEFAULT_JACK_ENABLED:=
endif
-# call jack
-#
-# $(1): jack perf arguments
-define call-jack
-$(JACK) $(1)
-endef
ifneq ($(ANDROID_JACK_EXTRA_ARGS),)
DEFAULT_JACK_EXTRA_ARGS := $(ANDROID_JACK_EXTRA_ARGS)
else
diff --git a/core/configure_local_jack.mk b/core/configure_local_jack.mk
index 98b13d2..d903ed9 100644
--- a/core/configure_local_jack.mk
+++ b/core/configure_local_jack.mk
@@ -17,7 +17,9 @@
ifdef ANDROID_FORCE_JACK_ENABLED
LOCAL_JACK_ENABLED := $(ANDROID_FORCE_JACK_ENABLED)
endif
+
LOCAL_JACK_ENABLED := $(strip $(LOCAL_JACK_ENABLED))
+
ifneq ($(LOCAL_JACK_ENABLED),full)
ifneq ($(LOCAL_JACK_ENABLED),incremental)
ifdef LOCAL_JACK_ENABLED
@@ -28,3 +30,9 @@
LOCAL_JACK_ENABLED :=
endif
endif
+
+ifdef $(LOCAL_MODULE).JACK_VERSION
+LOCAL_JACK_VERSION := $($(LOCAL_MODULE).JACK_VERSION)
+else
+LOCAL_JACK_VERSION := $(JACK_DEFAULT_VERSION)
+endif
diff --git a/core/definitions.mk b/core/definitions.mk
index b379afc..36d3ae1 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1756,6 +1756,13 @@
$(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,;rm -rf $(2)/META-INF)
endef
+# Call jack
+#
+# $(1): jack extra arguments
+define call-jack
+ JACK_VERSION=$(PRIVATE_JACK_VERSION) $(JACK) $(1)
+endef
+
# Common definition to invoke javac on the host and target.
#
# Some historical notes:
diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk
index 8ba657c..6db0cbf 100644
--- a/core/host_dalvik_java_library.mk
+++ b/core/host_dalvik_java_library.mk
@@ -123,6 +123,7 @@
$(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack)
$(built_dex): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
+$(built_dex): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)
$(built_dex): $(java_sources) $(java_resource_sources) $(full_jack_lib_deps) \
$(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_MODULE_MAKEFILE_DEP) \
$(LOCAL_ADDITIONAL_DEPENDENCIES) $(JACK)
diff --git a/core/host_dalvik_static_java_library.mk b/core/host_dalvik_static_java_library.mk
index 6c2ddb5..6248e1a 100644
--- a/core/host_dalvik_static_java_library.mk
+++ b/core/host_dalvik_static_java_library.mk
@@ -35,6 +35,7 @@
# proguard is not supported
# *.proto files are not supported
$(full_classes_jack): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
+$(full_classes_jack): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)
$(full_classes_jack): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
$(full_classes_jack): \
PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-rsc
diff --git a/core/java.mk b/core/java.mk
index 2cf42cb..f9305df 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -644,6 +644,7 @@
endif # LOCAL_PROGUARD_ENABLED defined
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
+$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)
jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_lib_deps) \
$(jar_manifest_file) $(layers_file) $(RenderScript_file_stamp) $(proguard_flag_files) \
diff --git a/core/main.mk b/core/main.mk
index 1ca02d1..4593b86 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -312,6 +312,12 @@
# The pdk (Platform Development Kit) build
include build/core/pdk_config.mk
+#
+# -----------------------------------------------------------------
+# Jack version configuration
+include $(TOPDIR)prebuilts/sdk/tools/jack_versions.mk
+include $(TOPDIR)prebuilts/sdk/tools/jack_for_module.mk
+
# -----------------------------------------------------------------
###
### In this section we set up the things that are different