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
This commit is contained in:
Tobias Thierer 2017-11-15 20:55:03 +00:00
parent 81eeb78200
commit f6bd495728
5 changed files with 24 additions and 11 deletions

View File

@ -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)

View File

@ -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 '$<' $@

View File

@ -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

View File

@ -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

View File

@ -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