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 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 := HOST_JDK_TOOLS_JAR :=
# TODO: Remove HOST_JDK_TOOLS_JAR and all references to it once OpenJDK 8 # 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 # toolchains are no longer supported (i.e. when USE_OPENJDK9 is enforced).
# EXPERIMENTAL_USE_OPENJDK9 becomes the standard). http://b/38418220 # http://b/38418220
ifeq ($(EXPERIMENTAL_USE_OPENJDK9),) ifndef USE_OPENJDK9
HOST_JDK_TOOLS_JAR := $(ANDROID_JAVA_TOOLCHAIN)/../lib/tools.jar 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 # It's called md5 on Mac OS and md5sum on Linux
ifeq ($(HOST_OS),darwin) ifeq ($(HOST_OS),darwin)

View file

@ -2381,7 +2381,7 @@ $(hide) rm -f $@ $@.tmp
@rm -rf $(dir $@)/desugar_dumped_classes @rm -rf $(dir $@)/desugar_dumped_classes
@mkdir $(dir $@)/desugar_dumped_classes @mkdir $(dir $@)/desugar_dumped_classes
$(hide) $(JAVA) \ $(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 \ -Djdk.internal.lambda.dumpProxyClasses=$(abspath $(dir $@))/desugar_dumped_classes \
-jar $(DESUGAR) \ -jar $(DESUGAR) \
$(addprefix --bootclasspath_entry ,$(PRIVATE_BOOTCLASSPATH)) \ $(addprefix --bootclasspath_entry ,$(PRIVATE_BOOTCLASSPATH)) \
@ -2774,7 +2774,7 @@ endef
########################################################### ###########################################################
## Commands to call Proguard ## Commands to call Proguard
########################################################### ###########################################################
ifeq ($(EXPERIMENTAL_USE_OPENJDK9),true) ifdef TARGET_OPENJDK9
define transform-jar-to-proguard define transform-jar-to-proguard
@echo Skipping Proguard: $<$(PRIVATE_PROGUARD_INJAR_FILTERS) $@ @echo Skipping Proguard: $<$(PRIVATE_PROGUARD_INJAR_FILTERS) $@
$(hide) cp '$<' $@ $(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. # For OpenJDK 9 we use --patch-module to define the core libraries code.
# TODO(tobiast): Reorganize this when adding proper support for OpenJDK 9 # 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 # 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))) $(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 LOCAL_DX_FLAGS := $(filter-out --multi-dex,$(LOCAL_DX_FLAGS)) --multi-dex
endif 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 # TODO(ccross): allow 1.9 for current and unbundled once we have SDK system modules
LOCAL_JAVA_LANGUAGE_VERSION := 1.8 LOCAL_JAVA_LANGUAGE_VERSION := 1.8
else else
# DEFAULT_JAVA_LANGUAGE_VERSION is 1.8 unless EXPERIMENTAL_USE_OPENJDK9=true # DEFAULT_JAVA_LANGUAGE_VERSION is 1.8, unless TARGET_OPENJDK9 in which case it is 1.9
# in which case it is 1.9
LOCAL_JAVA_LANGUAGE_VERSION := $(DEFAULT_JAVA_LANGUAGE_VERSION) LOCAL_JAVA_LANGUAGE_VERSION := $(DEFAULT_JAVA_LANGUAGE_VERSION)
endif endif
endif endif