Modules.gmk revision 2465:7f45dad2b358
1154899Srik# 2154899Srik# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. 3154899Srik# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4154899Srik# 5154899Srik# This code is free software; you can redistribute it and/or modify it 6154899Srik# under the terms of the GNU General Public License version 2 only, as 7154899Srik# published by the Free Software Foundation. Oracle designates this 8154899Srik# particular file as subject to the "Classpath" exception as provided 9154899Srik# by Oracle in the LICENSE file that accompanied this code. 10154899Srik# 11154899Srik# This code is distributed in the hope that it will be useful, but WITHOUT 12154899Srik# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13154899Srik# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14154899Srik# version 2 for more details (a copy is included in the LICENSE file that 15154899Srik# accompanied this code). 16154899Srik# 17154899Srik# You should have received a copy of the GNU General Public License version 18154899Srik# 2 along with this work; if not, write to the Free Software Foundation, 19154899Srik# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20154899Srik# 21154899Srik# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22154899Srik# or visit www.oracle.com if you need additional information or have any 23154899Srik# questions. 24154899Srik# 25154899Srik 26154899Srikifndef _MODULES_GMK 27154899Srik_MODULES_GMK := 1 28154899Srik 29154899Srik################################################################################ 30154899Srik# 31154899Srik# BOOT_MODULES are modules defined by the boot loader 32164033Srwatson# PLATFORM_MODULES are modules defined by the platform loader 33154899Srik# JRE_TOOL_MODULES are tools included in JRE and defined by the application loader 34154899Srik# 35154899Srik# All other modules not declared below are defined by the application loader 36154899Srik# and are not included in JRE. 37154899Srik 38154899SrikBOOT_MODULES := 39154899SrikPLATFORM_MODULES := 40154899SrikJRE_TOOL_MODULES := 41154899SrikUPGRADEABLE_MODULES := 42154899SrikAGGREGATOR_MODULES := 43154899Srik 44154899Srik# Hook to include the corresponding custom file, if present. 45154899Srik$(eval $(call IncludeCustomExtension, , common/Modules.gmk)) 46154899Srik 47154899SrikBOOT_MODULES += \ 48154899Srik java.base \ 49154899Srik java.datatransfer \ 50257176Sglebius java.desktop \ 51154899Srik java.instrument \ 52154899Srik java.logging \ 53154899Srik java.management \ 54154899Srik java.management.rmi \ 55154899Srik java.naming \ 56154899Srik java.prefs \ 57154899Srik java.rmi \ 58154899Srik java.security.sasl \ 59154899Srik java.xml \ 60154899Srik jdk.httpserver \ 61154899Srik jdk.management \ 62154899Srik jdk.management.agent \ 63154899Srik jdk.net \ 64154899Srik jdk.sctp \ 65154899Srik jdk.unsupported \ 66154899Srik jdk.vm.ci \ 67154899Srik # 68154899Srik 69154899Srik# to be deprivileged 70154899SrikBOOT_MODULES += \ 71154899Srik jdk.naming.rmi \ 72154899Srik # 73154899Srik 74154899SrikUPGRADEABLE_MODULES += \ 75154899Srik java.activation \ 76154899Srik java.annotations.common \ 77154899Srik java.corba \ 78154899Srik java.transaction \ 79154899Srik java.xml.bind \ 80154899Srik java.xml.ws \ 81154899Srik # 82154899Srik 83154899Srik# Modules explicitly declared as not being upgradeable even though they require 84154899Srik# an upgradeable module. 85154899SrikNON_UPGRADEABLE_MODULES += 86154899Srik 87154899SrikAGGREGATOR_MODULES += \ 88154899Srik java.se \ 89154899Srik java.se.ee \ 90154899Srik # 91154899Srik 92154899SrikPLATFORM_MODULES += \ 93154899Srik $(UPGRADEABLE_MODULES) \ 94154899Srik $(AGGREGATOR_MODULES) 95154899Srik # 96154899Srik 97154899SrikPLATFORM_MODULES += \ 98154899Srik java.compiler \ 99154899Srik jdk.incubator.httpclient \ 100154899Srik java.scripting \ 101154899Srik java.security.jgss \ 102154899Srik java.smartcardio \ 103154899Srik java.sql \ 104154899Srik java.sql.rowset \ 105154899Srik java.xml.crypto \ 106154899Srik jdk.accessibility \ 107154899Srik jdk.charsets \ 108154899Srik jdk.crypto.ec \ 109154899Srik jdk.crypto.cryptoki \ 110154899Srik jdk.desktop \ 111154899Srik jdk.dynalink \ 112154899Srik jdk.jsobject \ 113154899Srik jdk.localedata \ 114154899Srik jdk.naming.dns \ 115154899Srik jdk.scripting.nashorn \ 116154899Srik jdk.security.auth \ 117154899Srik jdk.security.jgss \ 118154899Srik jdk.xml.dom \ 119154899Srik jdk.zipfs \ 120154899Srik # 121154899Srik 122154899SrikJRE_TOOL_MODULES += \ 123154899Srik jdk.jdwp.agent \ 124154899Srik jdk.pack \ 125154899Srik jdk.scripting.nashorn.shell \ 126154899Srik # 127154899Srik 128188663Srwatsonifeq ($(OPENJDK_TARGET_OS), windows) 129188663Srwatson PLATFORM_MODULES += jdk.crypto.mscapi 130188663Srwatsonendif 131154899Srikifeq ($(OPENJDK_TARGET_OS), solaris) 132154899Srik PLATFORM_MODULES += jdk.crypto.ucrypto 133154899Srikendif 134154899Srik 135154899Srik# These modules are included in the interim image which is used to run profiling 136154899Srik# before building the real images. 137154899SrikINTERIM_IMAGE_MODULES := java.base java.logging 138154899Srik 139154899Srik################################################################################ 140154899Srik# Some platforms don't have the serviceability agent 141154899Srik 142154899Srikifeq ($(INCLUDE_SA), false) 143154899Srik MODULES_FILTER += jdk.hotspot.agent 144246128Ssbzendif 145154899Srik 146154899Srik################################################################################ 147154899Srik# Filter out Graal specific modules if Graal build is disabled 148154899Srik 149154899Srikifeq ($(INCLUDE_GRAAL), false) 150154899Srik MODULES_FILTER += jdk.vm.compiler 151154899Srikendif 152154899Srik 153154899Srik################################################################################ 154154899Srik# Filter out aot specific modules if aot is disabled 155154899Srik 156154899Srikifeq ($(ENABLE_AOT), false) 157154899Srik MODULES_FILTER += jdk.aot 158154899Srikendif 159154899Srik 160154899Srik################################################################################ 161154899Srik# Module list macros 162154899Srik 163154899Srik# Use append so that the custom extension may add to these variables 164193813Simp 165154899SrikGENERATED_SRC_DIRS += \ 166154899Srik $(SUPPORT_OUTPUTDIR)/gensrc \ 167154899Srik # 168154899Srik 169154899SrikTOP_SRC_DIRS += \ 170154899Srik $(CORBA_TOPDIR)/src \ 171154899Srik $(HOTSPOT_TOPDIR)/src \ 172154899Srik $(JDK_TOPDIR)/src \ 173199407Sjhb $(LANGTOOLS_TOPDIR)/src \ 174199407Sjhb $(JAXP_TOPDIR)/src \ 175154899Srik $(JAXWS_TOPDIR)/src \ 176154899Srik $(NASHORN_TOPDIR)/src \ 177154899Srik # 178154899Srik 179154899SrikSRC_SUBDIRS += $(OPENJDK_TARGET_OS)/classes 180154899Srikifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE)) 181154899Srik SRC_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/classes 182154899Srikendif 183154899SrikSRC_SUBDIRS += share/classes 184154899Srik 185154899Srik# Find all module-info.java files for the current build target platform and 186154899Srik# configuration. 187154899Srik# Param 1 - Module to find for, set to * for finding all 188154899SrikFindAllModuleInfos = \ 189154899Srik $(wildcard \ 190154899Srik $(foreach sub, $(SRC_SUBDIRS), \ 191154899Srik $(patsubst %,%/$(strip $1)/$(sub)/module-info.java, $(TOP_SRC_DIRS))) \ 192154899Srik $(patsubst %,%/$(strip $1)/module-info.java, $(IMPORT_MODULES_SRC))) 193154899Srik 194154899Srik# Find module-info.java files in the specific source dir 195154899Srik# Param 1 - Src dir to find module-info.java files in 196154899SrikFindModuleInfosForSrcDir = \ 197154899Srik $(wildcard \ 198154899Srik $(foreach sub, $(SRC_SUBDIRS), \ 199154899Srik $(patsubst %,%/*/$(sub)/module-info.java, $(strip $1)) \ 200154899Srik ) \ 201154899Srik $(patsubst %,%/*/module-info.java, $(strip $1)) \ 202154899Srik ) 203154899Srik 204154899Srik# Extract the module names from the paths of module-info.java files. The 205154899Srik# position of the module directory differs depending on if this is an imported 206154899Srik# src dir or not. 207154899SrikGetModuleNameFromModuleInfo = \ 208154899Srik $(strip $(foreach mi, $1, \ 209154899Srik $(if $(filter $(addsuffix %, $(IMPORT_MODULES_SRC)), $(mi)), \ 210199407Sjhb $(notdir $(patsubst %/,%, $(dir $(mi)))), \ 211154899Srik $(notdir $(patsubst %/,%, $(dir $(patsubst %/,%, $(dir $(patsubst %/,%, $(dir $(mi))))))))))) 212154899Srik 213154899Srik# Find all modules by looking for module-info.java files and looking at parent 214154899Srik# directories. 215154899SrikFindAllModules = \ 216154899Srik $(sort $(filter-out $(MODULES_FILTER), \ 217154899Srik $(call GetModuleNameFromModuleInfo, $(MODULE_INFOS)))) 218154899Srik 219154899Srik# Find all modules in a specific src dir 220154899Srik# Param 1 - Src dir to find modules in 221154899SrikFindModulesForSrcDir = \ 222154899Srik $(sort $(filter-out $(MODULES_FILTER), \ 223154899Srik $(call GetModuleNameFromModuleInfo, $(call FindModuleInfosForSrcDir, $1)) \ 224154899Srik )) 225154899Srik 226154899SrikFindImportedModules = \ 227154899Srik $(filter-out $(MODULES_FILTER), \ 228155065Srik $(if $(IMPORT_MODULES_CLASSES), $(notdir $(wildcard $(IMPORT_MODULES_CLASSES)/*)))) 229155065Srik 230155065Srik# Find all source dirs for a particular module 231155065Srik# $1 - Module to find source dirs for 232155065SrikFindModuleSrcDirs = \ 233155065Srik $(strip $(wildcard \ 234155065Srik $(addsuffix /$(strip $1), $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \ 235155065Srik $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS))))) 236155065Srik 237155065Srik# Construct the complete module source path 238155065SrikGetModuleSrcPath = \ 239155065Srik $(call PathList, \ 240155065Srik $(addsuffix /*, $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \ 241155065Srik $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /*/$(sub), $(TOP_SRC_DIRS)))) 242155065Srik 243155065Srik################################################################################ 244155065Srik# Extract module dependencies from module-info.java files. 245155065Srik 246155065SrikMODULE_DEPS_MAKEFILE := $(MAKESUPPORT_OUTPUTDIR)/module-deps.gmk 247155065Srik 248155065SrikMODULE_INFOS := $(call FindAllModuleInfos, *) 249155065Srik 250155065Srik$(MODULE_DEPS_MAKEFILE): $(MODULE_INFOS) \ 251155065Srik $(call DependOnVariable, MODULE_INFOS, $(MAKESUPPORT_OUTPUTDIR)/MODULE_INFOS.vardeps) 252155065Srik $(MKDIR) -p $(@D) 253155065Srik $(RM) $@ 254155065Srik $(foreach m, $(MODULE_INFOS), \ 255155065Srik ( $(PRINTF) "DEPS_$(call GetModuleNameFromModuleInfo, $m) :=" && \ 256155065Srik $(NAWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\ 257155065Srik BEGIN { if (MODULE != "java.base") printf(" java.base"); } \ 258155065Srik /requires/ { sub(/;/, ""); \ 259155065Srik sub(/requires/, ""); \ 260155065Srik sub(/transitive/, ""); \ 261155065Srik sub(/\/\/.*/, ""); \ 262155065Srik sub(/\/\*.*\*\//, ""); \ 263155065Srik gsub(/^ +\*.*/, ""); \ 264155065Srik gsub(/ /, ""); \ 265155065Srik printf(" %s", $$0) } \ 266155065Srik END { printf("\n") }' $m \ 267155065Srik ) >> $@ $(NEWLINE)) 268155065Srik 269155065Srik-include $(MODULE_DEPS_MAKEFILE) 270155065Srik 271155065Srik# Param 1: Module to find deps for 272155065SrikFindDepsForModule = \ 273155065Srik $(DEPS_$(strip $1)) 274155065Srik 275155065Srik# Finds transitive dependencies in 3 levels. 276155065Srik# Param 1: Module to find transitive deps for 277155065SrikFindTransitiveDepsForModule = \ 278155065Srik $(sort $(call FindDepsForModule, $1) \ 279155065Srik $(foreach m, $(call FindDepsForModule, $1), \ 280155065Srik $(call FindDepsForModule, $m) \ 281155065Srik $(foreach n, $(call FindDepsForModule, $m), \ 282155065Srik $(call FindDepsForModule, $n)))) 283155065Srik 284155065Srik# Upgradeable modules are those that are either defined as upgradeable or that 285155065Srik# require an upradeable module. 286155065SrikFindAllUpgradeableModules = \ 287155065Srik $(filter-out $(MODULES_FILTER) $(NON_UPGRADEABLE_MODULES), \ 288155065Srik $(sort $(UPGRADEABLE_MODULES) $(foreach m, \ 289155065Srik $(filter-out $(UPGRADEABLE_MODULES), $(call FindAllModules)), \ 290155065Srik $(if $(filter $(UPGRADEABLE_MODULES), \ 291155065Srik $(call FindTransitiveDepsForModule, $m)), \ 292155065Srik $m \ 293155065Srik ) \ 294155065Srik )) \ 295154899Srik ) 296154899Srik 297154899Srik################################################################################ 298154899Srik 299154899SrikLEGAL_SUBDIRS += $(OPENJDK_TARGET_OS)/legal 300154899Srikifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE)) 301154899Srik LEGAL_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/legal 302243857Sglebiusendif 303154899SrikLEGAL_SUBDIRS += share/legal 304154899Srik 305276750Srwatson# Find all legal dirs for a particular module 306154899Srik# $1 - Module to find legal dirs for 307154899SrikFindModuleLegalDirs = \ 308154899Srik $(strip $(wildcard \ 309154899Srik $(addsuffix /$(strip $1), $(IMPORT_MODULES_LEGAL)) \ 310154899Srik $(foreach sub, $(LEGAL_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS))))) 311154899Srik 312154899Srik################################################################################ 313154899Srik 314154899Srik# Param 1 - Name of module 315154899Srikdefine ReadSingleImportMetaData 316154899Srik ifneq ($$(wildcard $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties), ) 317154899Srik classloader := 318154899Srik include_in_jre := 319154899Srik include_in_jdk := 320154899Srik include $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties 321154899Srik ifeq ($$(include_in_jre), true) 322154899Srik JRE_MODULES += $1 323154899Srik endif 324154899Srik ifeq ($$(include_in_jdk), true) 325154899Srik JDK_MODULES += $1 326154899Srik endif 327154899Srik ifeq ($$(classloader), boot) 328154899Srik BOOT_MODULES += $1 329154899Srik else ifeq ($$(classloader), ext) 330154899Srik PLATFORM_MODULES += $1 331154899Srik endif 332154899Srik else 333154899Srik # Default to include in all 334154899Srik JRE_MODULES += $1 335154899Srik JDK_MODULES += $1 336154899Srik endif 337154899Srikendef 338154899Srik 339154899Srik# Reading the imported modules metadata has a cost, so to make it available, 340154899Srik# a makefile needs to eval-call this macro first. After calling this, the 341154899Srik# following variables are populated with data from the imported modules: 342154899Srik# * JRE_MODULES 343154899Srik# * JDK_MODULES 344154899Srik# * BOOT_MODULES 345154899Srik# * PLATFORM_MODULES 346154899Srik# * JRE_TOOL_MODULES 347154899Srikdefine ReadImportMetaData 348154899Srik IMPORTED_MODULES := $$(call FindImportedModules) 349154899Srik $$(foreach m, $$(IMPORTED_MODULES), \ 350154899Srik $$(eval $$(call ReadSingleImportMetaData, $$m))) 351154899Srikendef 352154899Srik 353154899Srik################################################################################ 354154899Srik 355154899Srikendif # _MODULES_GMK 356154899Srik