8152197: Single place to specify module-specific information for images build

Reviewed-by: alanb, erikj
This commit is contained in:
Mandy Chung 2016-03-23 09:20:41 -07:00
parent c56035afa6
commit af242aa393
2 changed files with 150 additions and 51 deletions

View File

@ -38,62 +38,24 @@ $(eval $(call IncludeCustomExtension, , Images-pre.gmk))
############################################################################
MAIN_MODULES += java.se.ee java.smartcardio jdk.httpserver jdk.sctp \
jdk.security.auth jdk.security.jgss jdk.pack200 jdk.xml.dom \
jdk.accessibility jdk.internal.le jdk.dynalink \
jdk.scripting.nashorn jdk.scripting.nashorn.shell \
jdk.vm.ci jdk.management jdk.jsobject
# All modules for the current target platform.
ALL_MODULES := $(call FindAllModules)
# providers
PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.jvmstat.rmi \
jdk.localedata jdk.naming.dns jdk.naming.rmi jdk.zipfs
$(eval $(call ReadImportMetaData))
# tools
TOOLS_MODULES += jdk.attach jdk.compiler \
jdk.javadoc jdk.jcmd jdk.jconsole jdk.hotspot.agent jdk.jartool \
jdk.jdeps jdk.jdi jdk.jdwp.agent jdk.jlink jdk.jshell \
jdk.policytool jdk.rmic jdk.xml.bind jdk.xml.ws jdk.internal.opt
ifeq ($(OPENJDK_TARGET_OS), windows)
PROVIDER_MODULES += jdk.crypto.mscapi
endif
ifeq ($(OPENJDK_TARGET_OS), solaris)
PROVIDER_MODULES += jdk.crypto.ucrypto
endif
JRE_MODULES := $(filter-out $(MODULES_FILTER), $(MAIN_MODULES) $(PROVIDER_MODULES))
JDK_MODULES := $(filter-out $(MODULES_FILTER), $(JRE_MODULES) $(TOOLS_MODULES))
# Param 1 - Name of module
define ReadImportMetaData
ifneq ($$(wildcard $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties), )
include_in_jre :=
include_in_jdk :=
include $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties
ifeq ($$(include_in_jre), true)
JRE_MODULES += $1
endif
ifeq ($$(include_in_jdk), true)
JDK_MODULES += $1
endif
else
# Default to include in all
JRE_MODULES += $1
JDK_MODULES += $1
endif
endef
IMPORTED_MODULES := $(call FindImportedModules)
$(foreach m, $(IMPORTED_MODULES), $(eval $(call ReadImportMetaData, $m)))
JRE_MODULES += $(filter-out $(MODULES_FILTER), $(BOOT_MODULES) $(PLATFORM_MODULES) $(JRE_TOOL_MODULES))
JDK_MODULES += $(filter-out $(MODULES_FILTER), $(ALL_MODULES))
# Compact builds have additional modules
COMPACT_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec
JRE_COMPACT1_MODULES := $(COMPACT_EXTRA_MODULES) java.compact1
JRE_COMPACT2_MODULES := $(JRE_COMPACT1_MODULES) java.compact2 jdk.xml.dom jdk.httpserver
JRE_COMPACT3_MODULES := $(JRE_COMPACT2_MODULES) java.compact3 java.smartcardio jdk.management \
COMPACT1_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec
COMPACT2_EXTRA_MODULES := jdk.xml.dom jdk.httpserver
COMPACT3_EXTRA_MODULES := java.smartcardio jdk.management \
jdk.naming.dns jdk.naming.rmi jdk.sctp jdk.security.auth
JRE_COMPACT1_MODULES := java.compact1 $(COMPACT1_EXTRA_MODULES)
JRE_COMPACT2_MODULES := $(JRE_COMPACT1_MODULES) java.compact2 $(COMPACT2_EXTRA_MODULES)
JRE_COMPACT3_MODULES := $(JRE_COMPACT2_MODULES) java.compact3 $(COMPACT3_EXTRA_MODULES)
# Replacing double-comma with a single comma is to workaround the issue
# with some version of make on windows that doesn't substitute spaces
# with one comma properly as with make 4.0

View File

@ -26,11 +26,108 @@
ifndef _MODULES_GMK
_MODULES_GMK := 1
################################################################################
#
# BOOT_MODULES are modules defined by the boot loader
# PLATFORM_MODULES are modules defined by the platform loader
# JRE_TOOL_MODULES are tools included in JRE and defined by the application loader
#
# All other modules not declared below are defined by the application loader
# and are not included in JRE.
BOOT_MODULES :=
PLATFORM_MODULES :=
JRE_TOOL_MODULES :=
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, , common/Modules.gmk))
UPGRADEABLE_MDOULES :=
AGGREGATOR_MDOULES :=
BOOT_MODULES += \
java.base \
java.datatransfer \
java.desktop \
java.httpclient \
java.instrument \
java.logging \
java.management \
java.naming \
java.prefs \
java.rmi \
java.security.jgss \
java.security.sasl \
java.sql \
java.xml \
java.xml.crypto \
jdk.httpserver \
jdk.management \
jdk.sctp \
jdk.security.auth \
jdk.security.jgss \
#
# to be deprivileged
BOOT_MODULES += \
java.compiler \
java.scripting \
java.sql.rowset \
java.smartcardio \
jdk.charsets \
jdk.naming.rmi \
#
UPGRADEABLE_MODULES += \
java.activation \
java.annotations.common \
java.corba \
java.transaction \
java.xml.bind \
java.xml.ws \
#
AGGREGATOR_MODULES += \
java.compact1 \
java.compact2 \
java.compact3 \
java.se \
java.se.ee \
#
PLATFORM_MODULES += \
$(UPGRADEABLE_MODULES) \
$(AGGREGATOR_MODULES)
#
PLATFORM_MODULES += \
jdk.accessibility \
jdk.crypto.ec \
jdk.crypto.pkcs11 \
jdk.dynalink \
jdk.jsobject \
jdk.xml.dom \
jdk.localedata \
jdk.naming.dns \
jdk.scripting.nashorn \
jdk.zipfs \
#
JRE_TOOL_MODULES += \
jdk.pack200 \
jdk.scripting.nashorn.shell \
#
ifeq ($(OPENJDK_TARGET_OS), windows)
PLATFORM_MODULES += jdk.crypto.mscapi
endif
ifeq ($(OPENJDK_TARGET_OS), solaris)
PLATFORM_MODULES += jdk.crypto.ucrypto
endif
################################################################################
# Some platforms don't have the serviceability agent
ifeq ($(INCLUDE_SA), false)
MODULES_FILTER += jdk.hotspot.agent
endif
@ -120,4 +217,44 @@ FindTransitiveDepsForModule = \
################################################################################
# Param 1 - Name of module
define ReadSingleImportMetaData
ifneq ($$(wildcard $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties), )
classloader :=
include_in_jre :=
include_in_jdk :=
include $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties
ifeq ($$(include_in_jre), true)
JRE_MODULES += $1
endif
ifeq ($$(include_in_jdk), true)
JDK_MODULES += $1
endif
ifeq ($$(classloader), boot)
BOOT_MODULES += $1
else ifeq ($$(classloader), ext)
PLATFORM_MODULES += $1
endif
else
# Default to include in all
JRE_MODULES += $1
JDK_MODULES += $1
endif
endef
# Reading the imported modules metadata has a cost, so to make it available,
# a makefile needs to eval-call this macro first. After calling this, the
# following variables are populated with data from the imported modules:
# * JRE_MODULES
# * JDK_MODULES
# * BOOT_MODULES
# * PLATFORM_MODULES
# * JRE_TOOL_MODULES
define ReadImportMetaData
IMPORTED_MODULES := $(call FindImportedModules)
$(foreach m, $(IMPORTED_MODULES), $(eval $(call ReadImportMetaData, $m)))
endef
################################################################################
endif # _MODULES_GMK