From f6bd4957283fa70771c53cbff7d3135bff661485 Mon Sep 17 00:00:00 2001 From: Tobias Thierer Date: Wed, 15 Nov 2017 20:55:03 +0000 Subject: [PATCH] Break EXPERIMENTAL_USE_OPENJDK9 into {USE,TARGET}_OPENJDK9. This CL topic breaks the single flag value EXPERIMENTAL_USE_OPENJDK9 into two flags USE_OPENJDK9 and TARGET_OPENJDK9 which are computed independently in config.mk and config.go; this means that later build logic no longer depends on / duplicates the semantics of an unset EXPERIMENTAL_USE_OPENJDK9, because that later build logic can use USE_OPENJDK9 and TARGET_OPENJDK9 instead. Thus, it becomes slightly easier to change this default in future CLs (touching only config.mk and config.go). It also makes it more straightforward to convert .mk files to .bp. This CL also introduces a new allowed value "false" for EXPERIMENTAL_USE_OPENJDK9. This fourth possible value currently has the same semantics as a default/unset EXPERIMENTAL_USE_OPENJDK9, but allows people to explicitly switch back to the old semantics when the default changes. Test: make showcommands core-oj (in environments with EXPERIMENTAL_USE_OPENJDK9 set to "", "1.8", and "true"). Bug: 38177295 Change-Id: Iaade9610b237722e5d175143808b8653b1e98996 --- core/config.mk | 24 +++++++++++++++++++----- core/definitions.mk | 4 ++-- core/droiddoc.mk | 2 +- core/java.mk | 2 +- core/java_common.mk | 3 +-- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/core/config.mk b/core/config.mk index c993c1b6f3..debe9188c0 100644 --- a/core/config.mk +++ b/core/config.mk @@ -665,14 +665,28 @@ ANDROID_MANIFEST_MERGER := $(JAVA) -classpath prebuilts/devtools/tools/lib/manif COLUMN:= column -# Path to tools.jar, or empty if EXPERIMENTAL_USE_OPENJDK9 is set +ifeq ($(EXPERIMENTAL_USE_OPENJDK9),) +USE_OPENJDK9 := +TARGET_OPENJDK9 := +else ifeq ($(EXPERIMENTAL_USE_OPENJDK9),false) +USE_OPENJDK9 := +TARGET_OPENJDK9 := +else ifeq ($(EXPERIMENTAL_USE_OPENJDK9),1.8) +USE_OPENJDK9 := true +TARGET_OPENJDK9 := +else ifeq ($(EXPERIMENTAL_USE_OPENJDK9),true) +USE_OPENJDK9 := true +TARGET_OPENJDK9 := true +endif + +# Path to tools.jar, or empty if USE_OPENJDK9 is unset HOST_JDK_TOOLS_JAR := # TODO: Remove HOST_JDK_TOOLS_JAR and all references to it once OpenJDK 8 -# toolchains are no longer supported (i.e. when what is now -# EXPERIMENTAL_USE_OPENJDK9 becomes the standard). http://b/38418220 -ifeq ($(EXPERIMENTAL_USE_OPENJDK9),) +# toolchains are no longer supported (i.e. when USE_OPENJDK9 is enforced). +# http://b/38418220 +ifndef USE_OPENJDK9 HOST_JDK_TOOLS_JAR := $(ANDROID_JAVA_TOOLCHAIN)/../lib/tools.jar -endif # ifeq ($(EXPERIMENTAL_USE_OPENJDK9),) +endif # ifdef USE_OPENJDK9 # It's called md5 on Mac OS and md5sum on Linux ifeq ($(HOST_OS),darwin) diff --git a/core/definitions.mk b/core/definitions.mk index 8b4051defa..13bd47cdcc 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2381,7 +2381,7 @@ $(hide) rm -f $@ $@.tmp @rm -rf $(dir $@)/desugar_dumped_classes @mkdir $(dir $@)/desugar_dumped_classes $(hide) $(JAVA) \ - $(if $(EXPERIMENTAL_USE_OPENJDK9),--add-opens java.base/java.lang.invoke=ALL-UNNAMED,) \ + $(if $(USE_OPENJDK9),--add-opens java.base/java.lang.invoke=ALL-UNNAMED,) \ -Djdk.internal.lambda.dumpProxyClasses=$(abspath $(dir $@))/desugar_dumped_classes \ -jar $(DESUGAR) \ $(addprefix --bootclasspath_entry ,$(PRIVATE_BOOTCLASSPATH)) \ @@ -2774,7 +2774,7 @@ endef ########################################################### ## Commands to call Proguard ########################################################### -ifeq ($(EXPERIMENTAL_USE_OPENJDK9),true) +ifdef TARGET_OPENJDK9 define transform-jar-to-proguard @echo Skipping Proguard: $<$(PRIVATE_PROGUARD_INJAR_FILTERS) $@ $(hide) cp '$<' $@ diff --git a/core/droiddoc.mk b/core/droiddoc.mk index 45b8af0929..d66b68872a 100644 --- a/core/droiddoc.mk +++ b/core/droiddoc.mk @@ -213,7 +213,7 @@ else ## ## -ifneq ($(EXPERIMENTAL_USE_OPENJDK9),) +ifdef USE_OPENJDK9 # For OpenJDK 9 we use --patch-module to define the core libraries code. # TODO(tobiast): Reorganize this when adding proper support for OpenJDK 9 # modules. Here we treat all code in core libraries as being in java.base diff --git a/core/java.mk b/core/java.mk index 09e5371e91..7fa14476f8 100644 --- a/core/java.mk +++ b/core/java.mk @@ -555,7 +555,7 @@ endif $(eval $(call copy-one-file,$(full_classes_jarjar_jar),$(full_classes_jar))) -ifeq ($(EXPERIMENTAL_USE_OPENJDK9),true) +ifdef TARGET_OPENJDK9 LOCAL_DX_FLAGS := $(filter-out --multi-dex,$(LOCAL_DX_FLAGS)) --multi-dex endif diff --git a/core/java_common.mk b/core/java_common.mk index 37de700d4b..6ae1415c72 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -23,8 +23,7 @@ ifeq (,$(LOCAL_JAVA_LANGUAGE_VERSION)) # TODO(ccross): allow 1.9 for current and unbundled once we have SDK system modules LOCAL_JAVA_LANGUAGE_VERSION := 1.8 else - # DEFAULT_JAVA_LANGUAGE_VERSION is 1.8 unless EXPERIMENTAL_USE_OPENJDK9=true - # in which case it is 1.9 + # DEFAULT_JAVA_LANGUAGE_VERSION is 1.8, unless TARGET_OPENJDK9 in which case it is 1.9 LOCAL_JAVA_LANGUAGE_VERSION := $(DEFAULT_JAVA_LANGUAGE_VERSION) endif endif