Modules.gmk revision 2492:4eb77fb98952
1217309Snwhitehorn# 2224014Snwhitehorn# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. 3217309Snwhitehorn# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4220749Snwhitehorn# 5217309Snwhitehorn# This code is free software; you can redistribute it and/or modify it 6220749Snwhitehorn# under the terms of the GNU General Public License version 2 only, as 7217309Snwhitehorn# published by the Free Software Foundation. Oracle designates this 8217309Snwhitehorn# particular file as subject to the "Classpath" exception as provided 9217309Snwhitehorn# by Oracle in the LICENSE file that accompanied this code. 10217309Snwhitehorn# 11217309Snwhitehorn# This code is distributed in the hope that it will be useful, but WITHOUT 12217309Snwhitehorn# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13217309Snwhitehorn# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14217309Snwhitehorn# version 2 for more details (a copy is included in the LICENSE file that 15217309Snwhitehorn# accompanied this code). 16217309Snwhitehorn# 17217309Snwhitehorn# You should have received a copy of the GNU General Public License version 18217309Snwhitehorn# 2 along with this work; if not, write to the Free Software Foundation, 19217309Snwhitehorn# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20217309Snwhitehorn# 21217309Snwhitehorn# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22217309Snwhitehorn# or visit www.oracle.com if you need additional information or have any 23217309Snwhitehorn# questions. 24217309Snwhitehorn# 25217309Snwhitehorn 26217309Snwhitehornifndef _MODULES_GMK 27217309Snwhitehorn_MODULES_GMK := 1 28217309Snwhitehorn 29220749Snwhitehorn################################################################################ 30217309Snwhitehorn# 31217309Snwhitehorn# BOOT_MODULES are modules defined by the boot loader 32217309Snwhitehorn# PLATFORM_MODULES are modules defined by the platform loader 33217309Snwhitehorn# JRE_TOOL_MODULES are tools included in JRE and defined by the application loader 34217309Snwhitehorn# 35217309Snwhitehorn# All other modules not declared below are defined by the application loader 36217309Snwhitehorn# and are not included in JRE. 37217309Snwhitehorn 38217309SnwhitehornBOOT_MODULES := 39217309SnwhitehornPLATFORM_MODULES := 40217309SnwhitehornJRE_TOOL_MODULES := 41217309SnwhitehornUPGRADEABLE_MODULES := 42217309SnwhitehornAGGREGATOR_MODULES := 43217309Snwhitehorn 44217309Snwhitehorn# Hook to include the corresponding custom file, if present. 45217309Snwhitehorn$(eval $(call IncludeCustomExtension, , common/Modules.gmk)) 46217309Snwhitehorn 47223289SjhBOOT_MODULES += \ 48223289Sjh java.base \ 49223289Sjh java.datatransfer \ 50223289Sjh java.desktop \ 51220749Snwhitehorn java.instrument \ 52217309Snwhitehorn java.logging \ 53217309Snwhitehorn java.management \ 54217309Snwhitehorn java.management.rmi \ 55217309Snwhitehorn java.naming \ 56217309Snwhitehorn java.prefs \ 57217309Snwhitehorn java.rmi \ 58217309Snwhitehorn java.security.sasl \ 59217309Snwhitehorn java.xml \ 60217309Snwhitehorn jdk.httpserver \ 61217309Snwhitehorn jdk.management \ 62217309Snwhitehorn jdk.management.agent \ 63217309Snwhitehorn jdk.net \ 64217309Snwhitehorn jdk.sctp \ 65217309Snwhitehorn jdk.unsupported \ 66217309Snwhitehorn jdk.vm.ci \ 67217309Snwhitehorn # 68217309Snwhitehorn 69220749Snwhitehorn# to be deprivileged 70220749SnwhitehornBOOT_MODULES += \ 71220749Snwhitehorn jdk.naming.rmi \ 72220749Snwhitehorn # 73220749Snwhitehorn 74220749SnwhitehornUPGRADEABLE_MODULES += \ 75220749Snwhitehorn java.activation \ 76220749Snwhitehorn java.corba \ 77220749Snwhitehorn java.transaction \ 78220749Snwhitehorn java.xml.bind \ 79220749Snwhitehorn java.xml.ws \ 80220749Snwhitehorn java.xml.ws.annotation \ 81220749Snwhitehorn # 82217309Snwhitehorn 83217309Snwhitehorn# Modules explicitly declared as not being upgradeable even though they require 84217309Snwhitehorn# an upgradeable module. 85217309SnwhitehornNON_UPGRADEABLE_MODULES += 86217309Snwhitehorn 87217309SnwhitehornAGGREGATOR_MODULES += \ 88217309Snwhitehorn java.se \ 89217309Snwhitehorn java.se.ee \ 90217309Snwhitehorn # 91217309Snwhitehorn 92217309SnwhitehornPLATFORM_MODULES += \ 93217309Snwhitehorn $(UPGRADEABLE_MODULES) \ 94217309Snwhitehorn $(AGGREGATOR_MODULES) 95217309Snwhitehorn # 96217309Snwhitehorn 97217309SnwhitehornPLATFORM_MODULES += \ 98217309Snwhitehorn java.compiler \ 99217309Snwhitehorn jdk.incubator.httpclient \ 100217309Snwhitehorn java.scripting \ 101217309Snwhitehorn java.security.jgss \ 102217309Snwhitehorn java.smartcardio \ 103217309Snwhitehorn java.sql \ 104217309Snwhitehorn java.sql.rowset \ 105217309Snwhitehorn java.xml.crypto \ 106217309Snwhitehorn jdk.accessibility \ 107217309Snwhitehorn jdk.charsets \ 108217309Snwhitehorn jdk.crypto.ec \ 109217309Snwhitehorn jdk.crypto.cryptoki \ 110217309Snwhitehorn jdk.dynalink \ 111217309Snwhitehorn jdk.jsobject \ 112217309Snwhitehorn jdk.localedata \ 113217309Snwhitehorn jdk.naming.dns \ 114217309Snwhitehorn jdk.scripting.nashorn \ 115217309Snwhitehorn jdk.security.auth \ 116217309Snwhitehorn jdk.security.jgss \ 117217309Snwhitehorn jdk.vm.compiler \ 118217309Snwhitehorn jdk.xml.dom \ 119217309Snwhitehorn jdk.zipfs \ 120217309Snwhitehorn # 121217309Snwhitehorn 122217309SnwhitehornJRE_TOOL_MODULES += \ 123217309Snwhitehorn jdk.jdwp.agent \ 124217309Snwhitehorn jdk.pack \ 125217309Snwhitehorn jdk.scripting.nashorn.shell \ 126217309Snwhitehorn # 127217309Snwhitehorn 128217309Snwhitehornifeq ($(OPENJDK_TARGET_OS), windows) 129217309Snwhitehorn PLATFORM_MODULES += jdk.crypto.mscapi 130217309Snwhitehornendif 131217309Snwhitehornifeq ($(OPENJDK_TARGET_OS), solaris) 132217309Snwhitehorn PLATFORM_MODULES += jdk.crypto.ucrypto 133217309Snwhitehornendif 134217309Snwhitehorn 135217309Snwhitehorn# These modules are included in the interim image which is used to run profiling 136217309Snwhitehorn# before building the real images. 137217309SnwhitehornINTERIM_IMAGE_MODULES := java.base java.logging 138217309Snwhitehorn 139217309Snwhitehorn################################################################################ 140217309Snwhitehorn# Some platforms don't have the serviceability agent 141217309Snwhitehorn 142217309Snwhitehornifeq ($(INCLUDE_SA), false) 143217309Snwhitehorn MODULES_FILTER += jdk.hotspot.agent 144217309Snwhitehornendif 145217309Snwhitehorn 146224014Snwhitehorn################################################################################ 147217309Snwhitehorn# Filter out Graal specific modules if Graal build is disabled 148217309Snwhitehorn 149217309Snwhitehornifeq ($(INCLUDE_GRAAL), false) 150217309Snwhitehorn MODULES_FILTER += jdk.vm.compiler 151217309Snwhitehornendif 152217309Snwhitehorn 153217309Snwhitehorn################################################################################ 154217309Snwhitehorn# Filter out aot specific modules if aot is disabled 155217309Snwhitehorn 156217309Snwhitehornifeq ($(ENABLE_AOT), false) 157217309Snwhitehorn MODULES_FILTER += jdk.aot 158217309Snwhitehornendif 159217309Snwhitehorn 160217309Snwhitehorn################################################################################ 161217309Snwhitehorn# Module list macros 162217309Snwhitehorn 163217309Snwhitehorn# Use append so that the custom extension may add to these variables 164217309Snwhitehorn 165217309SnwhitehornGENERATED_SRC_DIRS += \ 166220749Snwhitehorn $(SUPPORT_OUTPUTDIR)/gensrc \ 167217309Snwhitehorn # 168217309Snwhitehorn 169217309SnwhitehornTOP_SRC_DIRS += \ 170217309Snwhitehorn $(CORBA_TOPDIR)/src \ 171217309Snwhitehorn $(HOTSPOT_TOPDIR)/src \ 172217309Snwhitehorn $(JDK_TOPDIR)/src \ 173217309Snwhitehorn $(LANGTOOLS_TOPDIR)/src \ 174217309Snwhitehorn $(JAXP_TOPDIR)/src \ 175217309Snwhitehorn $(JAXWS_TOPDIR)/src \ 176217309Snwhitehorn $(NASHORN_TOPDIR)/src \ 177217309Snwhitehorn # 178220749Snwhitehorn 179217309SnwhitehornSRC_SUBDIRS += $(OPENJDK_TARGET_OS)/classes 180217309Snwhitehornifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE)) 181217309Snwhitehorn SRC_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/classes 182217309Snwhitehornendif 183217309SnwhitehornSRC_SUBDIRS += share/classes 184217309Snwhitehorn 185217309Snwhitehorn# Find all module-info.java files for the current build target platform and 186217309Snwhitehorn# configuration. 187217309Snwhitehorn# Param 1 - Module to find for, set to * for finding all 188217309SnwhitehornFindAllModuleInfos = \ 189217309Snwhitehorn $(wildcard \ 190217309Snwhitehorn $(foreach sub, $(SRC_SUBDIRS), \ 191217309Snwhitehorn $(patsubst %,%/$(strip $1)/$(sub)/module-info.java, $(TOP_SRC_DIRS))) \ 192217309Snwhitehorn $(patsubst %,%/$(strip $1)/module-info.java, $(IMPORT_MODULES_SRC))) 193217309Snwhitehorn 194217309Snwhitehorn# Find module-info.java files in the specific source dir 195217309Snwhitehorn# Param 1 - Src dir to find module-info.java files in 196217309SnwhitehornFindModuleInfosForSrcDir = \ 197217309Snwhitehorn $(wildcard \ 198217309Snwhitehorn $(foreach sub, $(SRC_SUBDIRS), \ 199217309Snwhitehorn $(patsubst %,%/*/$(sub)/module-info.java, $(strip $1)) \ 200217309Snwhitehorn ) \ 201217309Snwhitehorn $(patsubst %,%/*/module-info.java, $(strip $1)) \ 202217309Snwhitehorn ) 203217309Snwhitehorn 204217309Snwhitehorn# Extract the module names from the paths of module-info.java files. The 205217309Snwhitehorn# position of the module directory differs depending on if this is an imported 206217309Snwhitehorn# src dir or not. 207217309SnwhitehornGetModuleNameFromModuleInfo = \ 208217309Snwhitehorn $(strip $(foreach mi, $1, \ 209217309Snwhitehorn $(if $(filter $(addsuffix %, $(IMPORT_MODULES_SRC)), $(mi)), \ 210217309Snwhitehorn $(notdir $(patsubst %/,%, $(dir $(mi)))), \ 211217309Snwhitehorn $(notdir $(patsubst %/,%, $(dir $(patsubst %/,%, $(dir $(patsubst %/,%, $(dir $(mi))))))))))) 212217309Snwhitehorn 213217309Snwhitehorn# Find all modules by looking for module-info.java files and looking at parent 214217309Snwhitehorn# directories. 215217309SnwhitehornFindAllModules = \ 216217309Snwhitehorn $(sort $(filter-out $(MODULES_FILTER), \ 217217309Snwhitehorn $(call GetModuleNameFromModuleInfo, $(MODULE_INFOS)))) 218217309Snwhitehorn 219217309Snwhitehorn# Find all modules in a specific src dir 220217309Snwhitehorn# Param 1 - Src dir to find modules in 221217309SnwhitehornFindModulesForSrcDir = \ 222217309Snwhitehorn $(sort $(filter-out $(MODULES_FILTER), \ 223217309Snwhitehorn $(call GetModuleNameFromModuleInfo, $(call FindModuleInfosForSrcDir, $1)) \ 224217309Snwhitehorn )) 225217309Snwhitehorn 226217309SnwhitehornFindImportedModules = \ 227217309Snwhitehorn $(filter-out $(MODULES_FILTER), \ 228217309Snwhitehorn $(if $(IMPORT_MODULES_CLASSES), $(notdir $(wildcard $(IMPORT_MODULES_CLASSES)/*)))) 229217309Snwhitehorn 230217309Snwhitehorn# Find all source dirs for a particular module 231217309Snwhitehorn# $1 - Module to find source dirs for 232217309SnwhitehornFindModuleSrcDirs = \ 233217309Snwhitehorn $(strip $(wildcard \ 234217309Snwhitehorn $(addsuffix /$(strip $1), $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \ 235217309Snwhitehorn $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS))))) 236217309Snwhitehorn 237217309Snwhitehorn# Construct the complete module source path 238217309SnwhitehornGetModuleSrcPath = \ 239217309Snwhitehorn $(call PathList, \ 240217309Snwhitehorn $(addsuffix /*, $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \ 241217309Snwhitehorn $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /*/$(sub), $(TOP_SRC_DIRS)))) 242217309Snwhitehorn 243217309Snwhitehorn################################################################################ 244217309Snwhitehorn# Extract module dependencies from module-info.java files. 245217309Snwhitehorn 246217309SnwhitehornMODULE_DEPS_MAKEFILE := $(MAKESUPPORT_OUTPUTDIR)/module-deps.gmk 247217309Snwhitehorn 248217309SnwhitehornMODULE_INFOS := $(call FindAllModuleInfos, *) 249217309Snwhitehorn 250217309Snwhitehorn$(MODULE_DEPS_MAKEFILE): $(MODULE_INFOS) \ 251217309Snwhitehorn $(call DependOnVariable, MODULE_INFOS, $(MAKESUPPORT_OUTPUTDIR)/MODULE_INFOS.vardeps) 252217309Snwhitehorn $(MKDIR) -p $(@D) 253217309Snwhitehorn $(RM) $@ 254217309Snwhitehorn $(foreach m, $(MODULE_INFOS), \ 255217309Snwhitehorn ( $(PRINTF) "DEPS_$(call GetModuleNameFromModuleInfo, $m) :=" && \ 256217309Snwhitehorn $(NAWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\ 257217309Snwhitehorn BEGIN { if (MODULE != "java.base") printf(" java.base"); } \ 258217309Snwhitehorn /requires/ { sub(/;/, ""); \ 259217309Snwhitehorn sub(/requires/, ""); \ 260217309Snwhitehorn sub(/transitive/, ""); \ 261217309Snwhitehorn sub(/\/\/.*/, ""); \ 262217309Snwhitehorn sub(/\/\*.*\*\//, ""); \ 263217309Snwhitehorn gsub(/^ +\*.*/, ""); \ 264217309Snwhitehorn gsub(/ /, ""); \ 265217309Snwhitehorn printf(" %s", $$0) } \ 266217309Snwhitehorn END { printf("\n") }' $m \ 267217309Snwhitehorn ) >> $@ $(NEWLINE)) 268217309Snwhitehorn 269217309Snwhitehorn-include $(MODULE_DEPS_MAKEFILE) 270217309Snwhitehorn 271217309Snwhitehorn# Param 1: Module to find deps for 272217309SnwhitehornFindDepsForModule = \ 273217309Snwhitehorn $(DEPS_$(strip $1)) 274217309Snwhitehorn 275217309Snwhitehorn# Finds transitive dependencies in 3 levels. 276217309Snwhitehorn# Param 1: Module to find transitive deps for 277217309SnwhitehornFindTransitiveDepsForModule = \ 278217309Snwhitehorn $(sort $(call FindDepsForModule, $1) \ 279217309Snwhitehorn $(foreach m, $(call FindDepsForModule, $1), \ 280217309Snwhitehorn $(call FindDepsForModule, $m) \ 281217309Snwhitehorn $(foreach n, $(call FindDepsForModule, $m), \ 282217309Snwhitehorn $(call FindDepsForModule, $n)))) 283217309Snwhitehorn 284217309Snwhitehorn# Upgradeable modules are those that are either defined as upgradeable or that 285217309Snwhitehorn# require an upradeable module. 286217309SnwhitehornFindAllUpgradeableModules = \ 287217309Snwhitehorn $(filter-out $(MODULES_FILTER) $(NON_UPGRADEABLE_MODULES), \ 288217309Snwhitehorn $(sort $(UPGRADEABLE_MODULES) $(foreach m, \ 289217309Snwhitehorn $(filter-out $(UPGRADEABLE_MODULES), $(call FindAllModules)), \ 290217309Snwhitehorn $(if $(filter $(UPGRADEABLE_MODULES), \ 291217309Snwhitehorn $(call FindTransitiveDepsForModule, $m)), \ 292217309Snwhitehorn $m \ 293217309Snwhitehorn ) \ 294217309Snwhitehorn )) \ 295217309Snwhitehorn ) 296217309Snwhitehorn 297217309Snwhitehorn################################################################################ 298217309Snwhitehorn 299217309SnwhitehornLEGAL_SUBDIRS += $(OPENJDK_TARGET_OS)/legal 300217309Snwhitehornifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE)) 301217309Snwhitehorn LEGAL_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/legal 302217309Snwhitehornendif 303217309SnwhitehornLEGAL_SUBDIRS += share/legal 304217309Snwhitehorn 305217309Snwhitehorn# Find all legal dirs for a particular module 306217309Snwhitehorn# $1 - Module to find legal dirs for 307217309SnwhitehornFindModuleLegalDirs = \ 308217309Snwhitehorn $(strip $(wildcard \ 309217309Snwhitehorn $(addsuffix /$(strip $1), $(IMPORT_MODULES_LEGAL)) \ 310217309Snwhitehorn $(foreach sub, $(LEGAL_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS))))) 311217309Snwhitehorn 312217309Snwhitehorn################################################################################ 313217309Snwhitehorn 314217309Snwhitehorn# Param 1 - Name of module 315217309Snwhitehorndefine ReadSingleImportMetaData 316217309Snwhitehorn ifneq ($$(wildcard $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties), ) 317217309Snwhitehorn classloader := 318217309Snwhitehorn include_in_jre := 319217309Snwhitehorn include_in_jdk := 320217309Snwhitehorn include $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties 321217309Snwhitehorn ifeq ($$(include_in_jre), true) 322217309Snwhitehorn JRE_MODULES += $1 323217309Snwhitehorn endif 324217309Snwhitehorn ifeq ($$(include_in_jdk), true) 325217309Snwhitehorn JDK_MODULES += $1 326217309Snwhitehorn endif 327217309Snwhitehorn ifeq ($$(classloader), boot) 328217309Snwhitehorn BOOT_MODULES += $1 329217309Snwhitehorn else ifeq ($$(classloader), ext) 330217309Snwhitehorn PLATFORM_MODULES += $1 331217309Snwhitehorn endif 332217309Snwhitehorn else 333217309Snwhitehorn # Default to include in all 334217309Snwhitehorn JRE_MODULES += $1 335217309Snwhitehorn JDK_MODULES += $1 336217309Snwhitehorn endif 337217309Snwhitehornendef 338217309Snwhitehorn 339217309Snwhitehorn# Reading the imported modules metadata has a cost, so to make it available, 340217309Snwhitehorn# a makefile needs to eval-call this macro first. After calling this, the 341217309Snwhitehorn# following variables are populated with data from the imported modules: 342217309Snwhitehorn# * JRE_MODULES 343217309Snwhitehorn# * JDK_MODULES 344217309Snwhitehorn# * BOOT_MODULES 345217309Snwhitehorn# * PLATFORM_MODULES 346217309Snwhitehorn# * JRE_TOOL_MODULES 347217309Snwhitehorndefine ReadImportMetaData 348217309Snwhitehorn IMPORTED_MODULES := $$(call FindImportedModules) 349217309Snwhitehorn $$(foreach m, $$(IMPORTED_MODULES), \ 350217309Snwhitehorn $$(eval $$(call ReadSingleImportMetaData, $$m))) 351217309Snwhitehornendef 352217309Snwhitehorn 353217309Snwhitehorn################################################################################ 354217309Snwhitehorn 355217309Snwhitehornendif # _MODULES_GMK 356217309Snwhitehorn