Make 'make docs' work on OpenJDK 9 toolchain.
OpenJDK 9's javadoc tool doesn't support the -bootclasspath command line option, even with -source 1.8. Instead, under OpenJDK 9, javadoc needs to be passed a --patch-module argument to tell it the location of the classes patching packages from java.* modules. The source files in libcore/{dalvik,libart,luni,ojluni} and external/icu/android_icu4j that go into PRIVATE_BOOTCLASSPATH patch packages from the modules java.base, java.desktop, java.logging, java.prefs, java.sql, jdk.net, and jdk.unsupported. However, this CL takes the simpler approach of placing them all in java.base, which appears to work for the purposes of the javadoc run. Test: Ran the following both on OpenJDK 8 toolchain and on OpenJDK 9 (with EXPERIMENTAL_USE_OPENJDK9=true): rm -rf out/target/common/docs/ && make docs Test: Compared (via meld) the contents of out/target/common/docs for the two toolchains (there were some differences, see bug). Bug: 62049770 Change-Id: If3dd927477ca32dab7ffb528350de872e1017184
This commit is contained in:
parent
c7e3e962f8
commit
0b05860556
|
@ -166,6 +166,10 @@ endif
|
|||
# TODO: not clear if this is used any more
|
||||
$(full_target): PRIVATE_LOCAL_PATH := $(LOCAL_PATH)
|
||||
|
||||
# TODO(tobiast): Clean this up once we move to -source 1.9.
|
||||
# OpenJDK 9 does not have the concept of a "boot classpath" so we should
|
||||
# then rename PRIVATE_BOOTCLASSPATH to PRIVATE_MODULE or similar. For now,
|
||||
# keep -bootclasspath here since it works in combination with -source 1.8.
|
||||
$(full_target): \
|
||||
$(full_src_files) \
|
||||
$(droiddoc_templates) \
|
||||
|
@ -210,6 +214,18 @@ else
|
|||
## standard doclet only
|
||||
##
|
||||
##
|
||||
|
||||
ifneq ($(EXPERIMENTAL_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
|
||||
# to work around the OpenJDK 9 module system. http://b/62049770
|
||||
$(full_target): PRIVATE_BOOTCLASSPATH_ARG := --patch-module=java.base=$(PRIVATE_BOOTCLASSPATH)
|
||||
else
|
||||
# For OpenJDK 8 we can use -bootclasspath to define the core libraries code.
|
||||
$(full_target): PRIVATE_BOOTCLASSPATH_ARG := $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH))
|
||||
endif
|
||||
|
||||
$(full_target): $(full_src_files) $(full_java_lib_deps)
|
||||
@echo Docs javadoc: $(PRIVATE_OUT_DIR)
|
||||
@mkdir -p $(dir $@)
|
||||
|
@ -225,7 +241,7 @@ $(full_target): $(full_src_files) $(full_java_lib_deps)
|
|||
-Xdoclint:none \
|
||||
$(PRIVATE_PROFILING_OPTIONS) \
|
||||
$(addprefix -classpath ,$(PRIVATE_CLASSPATH)) \
|
||||
$(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) \
|
||||
$(PRIVATE_BOOTCLASSPATH_ARG) \
|
||||
-sourcepath $(PRIVATE_SOURCE_PATH)$(addprefix :,$(PRIVATE_CLASSPATH)) \
|
||||
-d $(PRIVATE_OUT_DIR) \
|
||||
-quiet \
|
||||
|
|
Loading…
Reference in New Issue