Main.gmk revision 2641:3389bd361d46
1104477Ssam# 2104477Ssam# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. 3104477Ssam# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4104477Ssam# 5104477Ssam# This code is free software; you can redistribute it and/or modify it 6104477Ssam# under the terms of the GNU General Public License version 2 only, as 7104477Ssam# published by the Free Software Foundation. Oracle designates this 8104477Ssam# particular file as subject to the "Classpath" exception as provided 9104477Ssam# by Oracle in the LICENSE file that accompanied this code. 10104477Ssam# 11104477Ssam# This code is distributed in the hope that it will be useful, but WITHOUT 12104477Ssam# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13104477Ssam# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14104477Ssam# version 2 for more details (a copy is included in the LICENSE file that 15104477Ssam# accompanied this code). 16104477Ssam# 17104477Ssam# You should have received a copy of the GNU General Public License version 18104477Ssam# 2 along with this work; if not, write to the Free Software Foundation, 19104477Ssam# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20104477Ssam# 21104477Ssam# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22104477Ssam# or visit www.oracle.com if you need additional information or have any 23104477Ssam# questions. 24104477Ssam# 25104477Ssam 26104477Ssam################################################################################ 27104477Ssam# This is the main makefile containing most actual top level targets. It needs 28104477Ssam# to be called with a SPEC file defined. 29104477Ssam################################################################################ 30104477Ssam 31104477Ssam# Declare default target 32104477Ssamdefault: 33104477Ssam 34104477Ssamifeq ($(wildcard $(SPEC)),) 35104477Ssam $(error Main.gmk needs SPEC set to a proper spec.gmk) 36104477Ssamendif 37104477Ssam 38104477Ssam# Now load the spec 39104477Ssaminclude $(SPEC) 40104477Ssam 41104477Ssaminclude $(SRC_ROOT)/make/MainSupport.gmk 42104477Ssam 43104477Ssam# Load the vital tools for all the makefiles. 44104477Ssaminclude $(SRC_ROOT)/make/common/MakeBase.gmk 45104477Ssaminclude $(SRC_ROOT)/make/common/Modules.gmk 46104477Ssaminclude $(SRC_ROOT)/make/common/FindTests.gmk 47112124Ssam 48104477Ssam# Declare ALL_TARGETS as an immediate variable. This variable is a list of all 49104477Ssam# valid top level targets. It's used to declare them all as PHONY and to 50104477Ssam# generate the -only targets. 51104477SsamALL_TARGETS := 52104477Ssam 53104477Ssam# Hook to include the corresponding custom file, if present. 54104477Ssam$(eval $(call IncludeCustomExtension, , Main.gmk)) 55104477Ssam 56104477Ssam# All modules for the current target platform. 57104477SsamALL_MODULES := $(call FindAllModules) 58104477Ssam 59104477Ssam################################################################################ 60104477Ssam################################################################################ 61104477Ssam# 62104477Ssam# Recipes for all targets. Only recipes, dependencies are declared later. 63104477Ssam# 64104477Ssam################################################################################ 65104477Ssam 66104477Ssam################################################################################ 67104477Ssam# Interim/build tools targets, compiling tools used during the build 68104477Ssam 69104477Ssam# When creating a BUILDJDK, the buildtools and interim targets have already 70104477Ssam# been built and should not be built again. 71104477Ssamifneq ($(CREATING_BUILDJDK), true) 72104477Ssam buildtools-langtools: 73104477Ssam +($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk) 74112124Ssam 75112124Ssam interim-langtools: 76112124Ssam +($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk) 77112124Ssam 78104477Ssam interim-rmic: 79104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk) 80104477Ssam 81104477Ssam interim-cldrconverter: 82104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk) 83104477Ssam 84104477Ssam buildtools-jdk: 85104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk) 86104477Ssam 87104477Ssam buildtools-modules: 88104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk) 89104477Ssam 90104477Ssam buildtools-hotspot: 91104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk) 92104477Ssamendif 93104477Ssam 94104477SsamALL_TARGETS += buildtools-langtools interim-langtools \ 95104477Ssam interim-rmic interim-cldrconverter buildtools-jdk buildtools-modules \ 96104477Ssam buildtools-hotspot 97104477Ssam 98104477Ssam################################################################################ 99104477Ssam# Special targets for certain modules 100104477Ssam 101104477Ssamunpack-sec: 102104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk) 103104477Ssam 104104477Ssamgenerate-exported-symbols: 105104477Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk) 106104477Ssam 107104477SsamALL_TARGETS += unpack-sec generate-exported-symbols 108104477Ssam 109104477Ssam################################################################################ 110104477Ssam# Gensrc targets, generating source before java compilation can be done 111104477Ssam# 112104477Ssam# When creating a BUILDJDK, the java targets have already been built and copied 113104477Ssam# into the buildjdk so no need to generate sources. 114105251Smarkmifneq ($(CREATING_BUILDJDK), true) 115112124Ssam $(eval $(call DeclareRecipesForPhase, GENSRC, \ 116112124Ssam TARGET_SUFFIX := gensrc, \ 117112124Ssam FILE_PREFIX := Gensrc, \ 118104477Ssam MAKE_SUBDIR := gensrc, \ 119104477Ssam CHECK_MODULES := $(ALL_MODULES), \ 120104477Ssam MULTIPLE_MAKEFILES := true)) 121104477Ssam 122104477Ssam JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS)) 123104477Ssam LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS)) 124104477Ssam CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS)) 125104477Ssam HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS)) 126104477Ssam 127104477Ssam GENSRC_MODULEINFO_MODULES := $(ALL_MODULES) 128104477Ssam GENSRC_MODULEINFO_TARGETS := $(addsuffix -gensrc-moduleinfo, \ 129104477Ssam $(GENSRC_MODULEINFO_MODULES)) 130104477Ssam 131104477Ssam GENSRC_MODULES := $(GENSRC_MODULEINFO_MODULES) 132104477Ssam GENSRC_TARGETS += $(sort $(GENSRC_MODULEINFO_TARGETS) \ 133104477Ssam $(addsuffix -gensrc, $(GENSRC_MODULES))) 134104477Ssam 135104477Ssam define DeclareModuleInfoRecipe 136104477Ssam $1-gensrc-moduleinfo: 137104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \ 138104477Ssam -f GensrcModuleInfo.gmk MODULE=$1) 139104477Ssam 140104477Ssam $1-gensrc: $1-gensrc-moduleinfo 141104477Ssam endef 142104477Ssam 143104477Ssam $(foreach m, $(GENSRC_MODULEINFO_MODULES), $(eval $(call DeclareModuleInfoRecipe,$m))) 144104477Ssamendif 145104477Ssam 146104477SsamALL_TARGETS += $(GENSRC_TARGETS) 147104477Ssam 148104477Ssam################################################################################ 149104477Ssam# Generate data targets 150104477Ssam$(eval $(call DeclareRecipesForPhase, GENDATA, \ 151104477Ssam TARGET_SUFFIX := gendata, \ 152104477Ssam FILE_PREFIX := Gendata, \ 153104477Ssam MAKE_SUBDIR := gendata, \ 154104477Ssam CHECK_MODULES := $(ALL_MODULES), \ 155104477Ssam USE_WRAPPER := true)) 156104477Ssam 157104477SsamALL_TARGETS += $(GENDATA_TARGETS) 158104477Ssam 159104477Ssam################################################################################ 160104477Ssam# Copy files targets 161104477Ssam$(eval $(call DeclareRecipesForPhase, COPY, \ 162104477Ssam TARGET_SUFFIX := copy, \ 163104477Ssam FILE_PREFIX := Copy, \ 164104477Ssam MAKE_SUBDIR := copy, \ 165104477Ssam CHECK_MODULES := $(ALL_MODULES), \ 166104477Ssam USE_WRAPPER := true, \ 167104477Ssam MULTIPLE_MAKEFILES := true)) 168104477Ssam 169109596SsamALL_COPY_MODULES += $(COPY_MODULES) 170109596SsamALL_COPY_TARGETS += $(COPY_TARGETS) 171104477Ssam 172104477SsamIMPORT_COPY_MODULES := $(call FindImportedModules) 173109596SsamIMPORT_COPY_TARGETS := $(addsuffix -copy, $(IMPORT_COPY_MODULES)) 174109596SsamALL_COPY_MODULES += $(IMPORT_COPY_MODULES) 175104477SsamALL_COPY_TARGETS += $(IMPORT_COPY_TARGETS) 176104477Ssam 177104477Ssamdefine DeclareImportCopyRecipe 178109596Ssam $1-copy: 179109596Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \ 180112121Ssam -f CopyImportModules.gmk MODULE=$1) 181109596Ssamendef 182109596Ssam 183104477Ssam$(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m))) 184104477Ssam 185104477SsamALL_TARGETS += $(ALL_COPY_TARGETS) 186104477Ssam 187104477Ssam################################################################################ 188104477Ssam# Targets for compiling all java modules. Nashorn is treated separately. 189104477SsamJAVA_MODULES := $(ALL_MODULES) 190104477SsamJAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES)) 191104477Ssam 192104477Ssamdefine DeclareCompileJavaRecipe 193104477Ssam $1-java: 194104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \ 195104477Ssam -f CompileJavaModules.gmk MODULE=$1) 196104477Ssamendef 197104477Ssam 198104477Ssam$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \ 199104477Ssam $(eval $(call DeclareCompileJavaRecipe,$m))) 200104477Ssam 201104477Ssam# Build nashorn. Needs to be compiled separately from the rest of the modules 202104477Ssam# due to nasgen. 203104477Ssamjdk.scripting.nashorn-java: 204104477Ssam +($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ 205104477Ssam -f BuildNashorn.gmk compile) 206104477Ssam 207104477SsamALL_TARGETS += $(JAVA_TARGETS) 208104477Ssam 209104477Ssam################################################################################ 210104477Ssam# Targets for running rmic. 211104477Ssam$(eval $(call DeclareRecipesForPhase, RMIC, \ 212104477Ssam TARGET_SUFFIX := rmic, \ 213104477Ssam FILE_PREFIX := Rmic, \ 214104477Ssam MAKE_SUBDIR := rmic, \ 215104477Ssam CHECK_MODULES := $(ALL_MODULES))) 216104477Ssam 217104477SsamALL_TARGETS += $(RMIC_TARGETS) 218104477Ssam 219104477Ssam################################################################################ 220104477Ssam# Targets for compiling native libraries 221104477Ssam$(eval $(call DeclareRecipesForPhase, LIBS, \ 222104477Ssam TARGET_SUFFIX := libs, \ 223104477Ssam FILE_PREFIX := Lib, \ 224104477Ssam MAKE_SUBDIR := lib, \ 225104477Ssam CHECK_MODULES := $(ALL_MODULES), \ 226104477Ssam USE_WRAPPER := true)) 227104477Ssam 228104477SsamALL_TARGETS += $(LIBS_TARGETS) 229104477Ssam 230104477Ssam################################################################################ 231104477Ssam# Targets for compiling native executables 232104477Ssam$(eval $(call DeclareRecipesForPhase, LAUNCHER, \ 233104477Ssam TARGET_SUFFIX := launchers, \ 234104477Ssam FILE_PREFIX := Launcher, \ 235104477Ssam MAKE_SUBDIR := launcher, \ 236104477Ssam CHECK_MODULES := $(ALL_MODULES), \ 237104477Ssam USE_WRAPPER := true)) 238104477Ssam 239112124SsamALL_TARGETS += $(LAUNCHER_TARGETS) 240112124Ssam 241112124Ssam################################################################################ 242112124Ssam# Build hotspot target 243112124Ssam 244112124SsamHOTSPOT_VARIANT_TARGETS := $(addprefix hotspot-, $(JVM_VARIANTS)) 245104477SsamHOTSPOT_VARIANT_GENSRC_TARGETS := $(addsuffix -gensrc, $(HOTSPOT_VARIANT_TARGETS)) 246104477SsamHOTSPOT_VARIANT_LIBS_TARGETS := $(addsuffix -libs, $(HOTSPOT_VARIANT_TARGETS)) 247104477Ssam 248104477Ssamdefine DeclareHotspotGensrcRecipe 249104477Ssam hotspot-$1-gensrc: 250104477Ssam $$(call LogInfo, Building JVM variant '$1' with features '$(JVM_FEATURES_$1)') 251104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f gensrc/GenerateSources.gmk \ 252104477Ssam JVM_VARIANT=$1) 253104477Ssamendef 254104477Ssam 255104477Ssam$(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotGensrcRecipe,$v))) 256104477Ssam 257104477Ssamdefine DeclareHotspotLibsRecipe 258104477Ssam hotspot-$1-libs: 259104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \ 260104477Ssam JVM_VARIANT=$1) 261104477Ssamendef 262115748Ssam 263104477Ssam$(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotLibsRecipe,$v))) 264104477Ssam 265104477Ssamhotspot-jsig: 266104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibjsig.gmk) 267104477Ssam 268104477Ssamhotspot-ide-project: 269104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk) 270104477Ssam 271104477SsamALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \ 272104477Ssam $(HOTSPOT_VARIANT_LIBS_TARGETS) hotspot-jsig hotspot-ide-project 273104477Ssam 274104477Ssam################################################################################ 275104477Ssam# Build demos targets 276104477Ssam 277104477Ssamdemos-jdk: 278104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk) 279104477Ssam 280104477Ssamtest-image-demos-jdk: 281104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk images) 282104477Ssam 283104477SsamALL_TARGETS += demos-jdk test-image-demos-jdk 284104477Ssam 285104477Ssam################################################################################ 286104477Ssam# Jigsaw specific data and analysis targets. 287104477Ssam 288104477Ssamgenerate-summary: 289104477Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateModuleSummary.gmk) 290104477Ssam 291104477SsamALL_TARGETS += generate-summary 292104477Ssam 293104477Ssam################################################################################ 294104477Ssam# Jmod targets 295104477Ssam 296104477SsamJMOD_MODULES := $(ALL_MODULES) 297104477SsamJMOD_TARGETS := $(addsuffix -jmod, $(JMOD_MODULES)) 298104477Ssam 299104477Ssamdefine DeclareJmodRecipe 300104477Ssam $1-jmod: 301104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \ 302104477Ssam MODULE=$1) 303104477Ssamendef 304104477Ssam 305104477Ssam$(foreach m, $(JMOD_MODULES), $(eval $(call DeclareJmodRecipe,$m))) 306104477Ssam 307104477SsamALL_TARGETS += $(JMOD_TARGETS) 308104477Ssam 309104477Ssam################################################################################ 310104477Ssam# Images targets 311104477Ssam 312104477Ssamstore-source-revision: 313104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk store-source-revision) 314104477Ssam 315104477Ssamcreate-source-revision-tracker: 316104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk create-source-revision-tracker) 317104477Ssam 318104477SsamBOOTCYCLE_TARGET := product-images 319104477Ssambootcycle-images: 320104477Ssam ifneq ($(COMPILE_TYPE), cross) 321104477Ssam $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image) 322104477Ssam +$(MAKE) $(MAKE_ARGS) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \ 323104477Ssam JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main 324104477Ssam else 325104477Ssam $(call LogWarn, Boot cycle build disabled when cross compiling) 326104477Ssam endif 327104477Ssam 328104477Ssamzip-security: 329104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk) 330104477Ssam 331104477Ssamzip-source: 332104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk) 333104477Ssam 334104477Ssamjrtfs-jar: 335104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk) 336104477Ssam 337104477Ssamjdk-image: 338104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jdk) 339104477Ssam 340104477Ssamjre-image: 341104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jre) 342104477Ssam 343117126Sscottlsymbols-image: 344117126Sscottl +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols) 345104477Ssam 346104477Ssamprofiles-image: 347104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles) 348104477Ssam 349104477Ssammac-bundles-jdk: 350104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk) 351104477Ssam 352104477Ssamrelease-file: 353104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ReleaseFile.gmk) 354104477Ssam 355104477Ssamexploded-image-optimize: 356104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk) 357104477Ssam 358104477SsamALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \ 359104477Ssam zip-source jrtfs-jar jdk-image jre-image \ 360104477Ssam symbols-image profiles-image mac-bundles-jdk \ 361104477Ssam release-file exploded-image-optimize 362104477Ssam 363104477Ssam################################################################################ 364104477Ssam# Docs targets 365104477Ssam 366104477Ssam# If building full docs, to complete docs-*-api we need both the javadoc and 367104477Ssam# modulegraph targets. 368104477Ssamdocs-jdk-api-javadoc: 369104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-javadoc) 370104477Ssam 371104477Ssamdocs-jdk-api-modulegraph: 372104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-modulegraph) 373104477Ssam 374104477Ssamdocs-javase-api-javadoc: 375104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-javadoc) 376104477Ssam 377104477Ssamdocs-javase-api-modulegraph: 378104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-modulegraph) 379104477Ssam 380104477Ssamdocs-jdk-specs: 381104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-specs) 382104477Ssam 383104477Ssamdocs-jdk-index: 384104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-index) 385104477Ssam 386104477Ssamdocs-zip: 387104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-zip) 388104477Ssam 389104477Ssamupdate-build-docs: 390104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f UpdateBuildDocs.gmk) 391104477Ssam 392104477SsamALL_TARGETS += docs-jdk-api-javadoc docs-jdk-api-modulegraph \ 393104477Ssam docs-javase-api-javadoc docs-javase-api-modulegraph docs-jdk-specs \ 394104477Ssam docs-jdk-index docs-zip update-build-docs 395104477Ssam 396104477Ssam################################################################################ 397104477Ssam# Cross compilation support 398104477Ssam 399104477Ssamifeq ($(CREATING_BUILDJDK), true) 400104477Ssam # This target is only called by the recursive call below. 401104477Ssam create-buildjdk-interim-image-helper: interim-image jdk.jlink-launchers \ 402104477Ssam java.base-copy jdk.jdeps-launchers 403104477Ssamendif 404104477Ssam 405104477Ssamcreate-buildjdk-copy: 406104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateBuildJdkCopy.gmk) 407104477Ssam 408104477Ssamcreate-buildjdk-interim-image: 409104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk \ 410104477Ssam $@-helper \ 411104477Ssam SPEC=$(dir $(SPEC))buildjdk-spec.gmk \ 412104477Ssam HOTSPOT_SPEC=$(dir $(SPEC))buildjdk-spec.gmk \ 413104477Ssam CREATING_BUILDJDK=true) 414104477Ssam 415104477SsamALL_TARGETS += create-buildjdk-copy create-buildjdk-interim-image 416104477Ssam 417104477Ssam################################################################################ 418104477Ssam# The interim-image is a small jlinked image that is used to generate artifacts 419104477Ssam# at build time for use when linking the real images. 420104477Ssam 421104477SsamINTERIM_JMOD_TARGETS := $(addsuffix -interim-jmod, $(INTERIM_IMAGE_MODULES)) 422104477Ssam 423104477Ssamdefine DeclareInterimJmodRecipe 424104477Ssam $1-interim-jmod: 425104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \ 426104477Ssam MODULE=$1 \ 427104477Ssam JMODS_DIR=$(INTERIM_JMODS_DIR) \ 428115748Ssam JMODS_TEMPDIR=$(INTERIM_JMODS_DIR)/temp \ 429104477Ssam INTERIM_JMOD=true \ 430104477Ssam ) 431104477Ssamendef 432104477Ssam 433104477Ssam$(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $(call DeclareInterimJmodRecipe,$m))) 434104477Ssam 435104477Ssaminterim-image: 436104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f InterimImage.gmk) 437104477Ssam 438104477Ssamifeq ($(ENABLE_GENERATE_CLASSLIST), true) 439104477Ssam generate-link-opt-data: 440104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f GenerateLinkOptData.gmk) 441104477Ssamendif 442104477Ssam 443104477SsamALL_TARGETS += $(INTERIM_JMOD_TARGETS) interim-image generate-link-opt-data 444104477Ssam 445104477Ssam################################################################################ 446104477Ssam# Generate test names for all JTReg test groups 447104477Ssam# 448104477Ssam 449104477Ssamdefine DeclareRunTestRecipe 450104477Ssam run-test-$1: 451104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$1") 452104477Ssam 453104477Ssamendef 454104477Ssam 455104477Ssam# ALL_NAMED_TESTS is defined in FindTests.gmk 456104477Ssam$(foreach t, $(ALL_NAMED_TESTS), $(eval $(call DeclareRunTestRecipe,$t))) 457104477SsamALL_TEST_TARGETS := $(addprefix run-test-, $(ALL_NAMED_TESTS)) 458104477Ssam 459104477SsamALL_TARGETS += $(ALL_TEST_TARGETS) 460104477Ssam 461104477Ssam################################################################################ 462104477Ssam# Build tests 463104477Ssam# 464104477Ssam 465104477Ssamprepare-test-image: 466104477Ssam $(MKDIR) -p $(TEST_IMAGE_DIR) 467104477Ssam $(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image' 468104477Ssam 469104477Ssambuild-test-hotspot-jtreg-native: 470104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 471104477Ssam build-test-hotspot-jtreg-native) 472104477Ssam 473104477Ssamtest-image-hotspot-jtreg-native: 474104477Ssam +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 475104477Ssam test-image-hotspot-jtreg-native) 476104477Ssam 477104477Ssambuild-test-jdk-jtreg-native: 478104477Ssam +($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 479104477Ssam build-test-jdk-jtreg-native) 480104477Ssam 481104477Ssamtest-image-jdk-jtreg-native: 482104477Ssam +($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 483104477Ssam test-image-jdk-jtreg-native) 484104477Ssam 485104477Ssamrun-test: 486104477Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$(TEST)") 487104477Ssam 488104477Ssamifeq ($(BUILD_GTEST), true) 489104477Ssam test-image-hotspot-gtest: 490104918Ssam +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk) 491104918Ssamendif 492104477Ssam 493104477Ssambuild-test-lib: 494104477Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLib.gmk) 495104477Ssam 496104477Ssamifeq ($(BUILD_FAILURE_HANDLER), true) 497104477Ssam # Builds the failure handler jtreg extension 498104477Ssam build-test-failure-handler: 499104477Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \ 500104477Ssam -f BuildFailureHandler.gmk build) 501104477Ssam 502104477Ssam # Runs the tests for the failure handler jtreg extension 503104477Ssam test-failure-handler: 504104477Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \ 505104477Ssam -f BuildFailureHandler.gmk test) 506104477Ssam 507104477Ssam # Copies the failure handler jtreg extension into the test image 508104477Ssam test-image-failure-handler: 509104477Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \ 510104477Ssam -f BuildFailureHandler.gmk images) 511104477Ssamendif 512104477Ssam 513104477SsamALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \ 514104477Ssam test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \ 515104477Ssam test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \ 516104477Ssam test-failure-handler test-image-failure-handler test-image-hotspot-gtest \ 517104477Ssam run-test 518104477Ssam 519104477Ssam################################################################################ 520104477Ssam# Run tests 521104477Ssam 522104477Ssam# Run tests specified by $(TEST), or the default test set. 523104477Ssamtest: 524104477Ssam $(call RunTests, $(TEST), $(JDK_IMAGE_DIR)) 525104477Ssam 526104477Ssamtest-hotspot-jtreg: 527104477Ssam $(call RunTests, "hotspot_all", $(JDK_IMAGE_DIR)) 528104477Ssam 529115748Ssamtest-hotspot-jtreg-native: 530115748Ssam $(call RunTests, "hotspot_native_sanity", $(JDK_IMAGE_DIR)) 531104477Ssam 532104477Ssamtest-hotspot-internal: 533104477Ssam $(call RunTests, "hotspot_internal", $(JDK_OUTPUTDIR)) 534104477Ssam 535115848Ssamtest-hotspot-gtest: 536115848Ssam $(call RunTests, "hotspot_gtest", $(JDK_OUTPUTDIR)) 537115862Ssam 538115848Ssamtest-jdk-jtreg-native: 539104477Ssam $(call RunTests, "jdk_native_sanity", $(JDK_IMAGE_DIR)) 540104477Ssam 541104477Ssamtest-make: 542104477Ssam ($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET)) 543104477Ssam 544104477SsamALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \ 545104477Ssam test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make 546104477Ssam 547104477Ssam################################################################################ 548104477Ssam# Bundles 549104477Ssam 550104477Ssamproduct-bundles: 551104477Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk product-bundles) 552104477Ssam 553104477Ssamprofiles-bundles: 554104477Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk profiles-bundles) 555104477Ssam 556104477Ssamtest-bundles: 557104477Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk test-bundles) 558104477Ssam 559104477Ssamdocs-bundles: 560104477Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles) 561104477Ssam 562104477SsamALL_TARGETS += product-bundles profiles-bundles test-bundles docs-bundles 563104477Ssam 564104477Ssam################################################################################ 565104477Ssam# Install targets 566104477Ssam 567104477Ssaminstall: 568104477Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk) 569104477Ssam 570104477SsamALL_TARGETS += install 571104477Ssam 572104477Ssam################################################################################ 573104477Ssam# 574104477Ssam# Dependency declarations between targets. 575104477Ssam# 576104477Ssam# These are declared in two groups. First all dependencies between targets that 577104477Ssam# have recipes above as these dependencies may be disabled. Then the aggregator 578104477Ssam# targets that do not have recipes of their own, which will never have their 579104477Ssam# dependencies disabled. 580104477Ssam# 581104477Ssam################################################################################ 582104477Ssam# Targets with recipes above 583104477Ssam 584104477Ssam# If running an *-only target, parallel execution and dependencies between 585104477Ssam# recipe targets are disabled. This makes it possible to run a select set of 586104477Ssam# recipe targets in order. It's the responsibility of the user to make sure 587104477Ssam# all prerequisites are fulfilled. 588104477Ssamifneq ($(findstring -only, $(MAKECMDGOALS)), ) 589104477Ssam .NOTPARALLEL: 590104477Ssamelse 591104477Ssam $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools 592104477Ssam 593104477Ssam interim-langtools: $(LANGTOOLS_GENSRC_TARGETS) 594104477Ssam 595104477Ssam buildtools-jdk: interim-langtools interim-cldrconverter 596104477Ssam 597104477Ssam buildtools-hotspot: interim-langtools 598104477Ssam 599104477Ssam buildtools-modules: exploded-image-base 600104477Ssam 601104477Ssam $(CORBA_GENSRC_TARGETS): interim-langtools 602104477Ssam 603104477Ssam $(HOTSPOT_GENSRC_TARGETS): interim-langtools buildtools-hotspot 604104477Ssam 605104477Ssam $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk 606104477Ssam 607104477Ssam $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk 608104477Ssam 609104477Ssam $(GENDATA_TARGETS): interim-langtools buildtools-jdk 610104477Ssam 611104477Ssam interim-rmic: interim-langtools 612104477Ssam 613104477Ssam $(RMIC_TARGETS): interim-langtools interim-rmic 614104477Ssam 615104477Ssam $(JAVA_TARGETS): interim-langtools 616104477Ssam 617104477Ssam # Declare dependencies between hotspot-<variant>* targets 618104477Ssam $(foreach v, $(JVM_VARIANTS), \ 619104477Ssam $(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \ 620104477Ssam $(eval hotspot-$v-libs: hotspot-$v-gensrc) \ 621104477Ssam ) 622104477Ssam 623104477Ssam hotspot-ide-project: hotspot exploded-image 624104477Ssam 625104477Ssam generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs 626104477Ssam 627104477Ssam # Building one JVM variant is enough to start building the other libs 628104477Ssam $(LIBS_TARGETS): hotspot-$(JVM_VARIANT_MAIN)-libs 629104477Ssam 630104477Ssam $(LAUNCHER_TARGETS): java.base-libs 631104477Ssam 632104477Ssam ifeq ($(STATIC_BUILD), true) 633104477Ssam $(LAUNCHER_TARGETS): generate-exported-symbols 634104477Ssam endif 635104477Ssam 636104477Ssam # The demos are currently linking to libjvm and libjava, just like all other 637104477Ssam # jdk libs, even though they don't need to. To avoid warnings, make sure they 638104477Ssam # aren't built until after libjava and libjvm are available to link to. 639104477Ssam demos-jdk: java.base-libs exploded-image-optimize 640104477Ssam test-image-demos-jdk: demos-jdk 641112124Ssam 642112124Ssam # Declare dependency from <module>-java to <module>-gensrc 643112124Ssam $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc)) 644112124Ssam 645112124Ssam # Declare dependencies between java modules 646112124Ssam $(foreach m, $(JAVA_MODULES), \ 647112124Ssam $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \ 648112124Ssam $(call FindDepsForModule,$m))))) 649112124Ssam 650104477Ssam # Declare dependencies between <module>-rmic to <module>-java 651104477Ssam $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java)) 652104477Ssam 653104477Ssam # Declare dependencies from <module>-lib to <module>-java 654104477Ssam # Skip modules that do not have java source. 655104477Ssam # When creating a BUILDJDK, the java compilation has already been done by the 656104477Ssam # normal build and copied in. 657104477Ssam ifneq ($(CREATING_BUILDJDK), true) 658104477Ssam $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java)) 659104477Ssam endif 660104477Ssam 661104477Ssam # Declare dependencies from all other <module>-lib to java.base-lib 662104477Ssam $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \ 663104477Ssam $(eval $t: java.base-libs)) 664104477Ssam 665104477Ssam # jdk.accessibility depends on java.desktop 666104477Ssam jdk.accessibility-libs: java.desktop-libs 667104477Ssam 668104477Ssam # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a 669104477Ssam # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a 670104477Ssam # virtual target. 671104477Ssam jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc 672104477Ssam 673104477Ssam # The swing beans need to have java base properly generated to avoid errors 674104477Ssam # in javadoc. 675104477Ssam java.desktop-gensrc-jdk: java.base-gensrc 676104477Ssam 677104477Ssam # The annotation processing for jdk.internal.vm.ci and jdk.internal.vm.compiler 678104477Ssam # needs classes from the current JDK. 679104477Ssam jdk.internal.vm.ci-gensrc-hotspot: $(addsuffix -java, \ 680104477Ssam $(call FindTransitiveDepsForModule, jdk.internal.vm.ci)) 681104477Ssam jdk.internal.vm.compiler-gensrc-hotspot: $(addsuffix -java, \ 682104477Ssam $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler)) 683104477Ssam 684104477Ssam # For jdk.internal.vm.compiler, the gensrc step is generating a module-info.java.extra 685104477Ssam # file to be processed by the gensrc-moduleinfo target. 686104477Ssam jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-hotspot 687104477Ssam 688104477Ssam # Explicitly add dependencies for special targets 689104477Ssam java.base-java: unpack-sec 690105190Ssam 691105190Ssam jdk.jdeps-gendata: java rmic 692104477Ssam 693104477Ssam # Declare dependencies between jmod targets. 694104477Ssam # java.base jmod needs jrt-fs.jar and access to the other jmods to be built. 695104477Ssam # When creating a BUILDJDK, we don't need to add hashes to java.base, thus 696104477Ssam # we don't need to depend on all other jmods 697104477Ssam ifneq ($(CREATING_BUILDJDK), true) 698104477Ssam java.base-jmod: jrtfs-jar $(filter-out java.base-jmod, $(JMOD_TARGETS)) 699104477Ssam endif 700104477Ssam 701104477Ssam # Building java.base-jmod requires all of hotspot to be built. 702104477Ssam java.base-jmod: hotspot 703104477Ssam 704104477Ssam # Declare dependencies from <module>-jmod to all other module targets 705104477Ssam # When creating a BUILDJDK, the java compilation has already been done by the 706104477Ssam # normal build and copied in. 707104477Ssam ifneq ($(CREATING_BUILDJDK), true) 708104477Ssam $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java)) 709104477Ssam endif 710104477Ssam $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata)) 711104477Ssam $(foreach m, $(RMIC_MODULES), $(eval $m_JMOD_DEPS += $m-rmic)) 712104477Ssam $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs)) 713104477Ssam $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers)) 714104477Ssam $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy)) 715104477Ssam $(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS))) 716104477Ssam $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS))) 717104477Ssam 718104477Ssam # Jmods cannot be created until we have the jmod tool ready to run. During 719104477Ssam # a normal build we run it from the exploded image, but when cross compiling 720104477Ssam # it's run from the buildjdk, which is either created at build time or user 721104477Ssam # supplied. 722104477Ssam # 723104477Ssam # For the exploded image to be runnable, all java modules and 724104477Ssam # jdk.jlink-launchers need to be built. We also need to copy jvm.cfg (done 725104477Ssam # in java.base-copy) and tzdb.dat (done in java.base-gendata) to the 726104477Ssam # appropriate location otherwise jimage, jlink and jmod won't start. This 727104477Ssam # also applies when creating the buildjdk. 728104477Ssam DEFAULT_JMOD_DEPS := java.base-libs java.base-copy java.base-gendata \ 729104477Ssam jdk.jlink-launchers 730104477Ssam # When cross compiling and buildjdk is to be created, depend on creating the 731104477Ssam # buildjdk instead of the default dependencies. 732104477Ssam ifeq ($(CREATE_BUILDJDK), true) 733104477Ssam # Avoid calling create-buildjdk from within a create-buildjdk call. 734112124Ssam ifneq ($(CREATING_BUILDJDK), true) 735112124Ssam $(JMOD_TARGETS): create-buildjdk 736104477Ssam buildtools-modules: create-buildjdk 737104477Ssam else 738104477Ssam # While actually creating the buildjdk, the default deps applies. 739104477Ssam $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): $(DEFAULT_JMOD_DEPS) 740104477Ssam endif 741104477Ssam else 742104477Ssam # The normal non cross compilation case uses the default deps. 743104477Ssam # To avoid races with the optimize target, that also needs to happen first. 744112124Ssam $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): $(DEFAULT_JMOD_DEPS) \ 745112124Ssam exploded-image-optimize 746104477Ssam endif 747104477Ssam 748104477Ssam # All modules include the main license files from java.base. 749104477Ssam $(JMOD_TARGETS): java.base-copy 750104477Ssam 751104477Ssam zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \ 752104477Ssam $(filter jdk.crypto%, $(JAVA_TARGETS)) 753104477Ssam 754104477Ssam zip-source: gensrc rmic 755104477Ssam 756104477Ssam jrtfs-jar: interim-langtools 757104477Ssam 758104477Ssam ifeq ($(ENABLE_GENERATE_CLASSLIST), true) 759104477Ssam ifeq ($(CREATE_BUILDJDK), true) 760104477Ssam # If creating a buildjdk, the interim image needs to be based on that. 761104477Ssam generate-link-opt-data: create-buildjdk 762104477Ssam else ifeq ($(EXTERNAL_BUILDJDK), false) 763104477Ssam # If an external buildjdk has been provided, we skip generating an 764104477Ssam # interim-image and just use the external buildjdk for generating 765104477Ssam # classlist. 766104477Ssam generate-link-opt-data: interim-image 767104477Ssam endif 768104477Ssam generate-link-opt-data: buildtools-jdk 769104477Ssam 770104477Ssam # The generated classlist needs to go into java.base-jmod. 771104477Ssam java.base-jmod jdk.jlink-jmod jdk-image jre-image: generate-link-opt-data 772104477Ssam endif 773104477Ssam 774104477Ssam release-file: create-source-revision-tracker 775104477Ssam 776104477Ssam jdk-image: jmods zip-source demos release-file 777104477Ssam jre-image: jmods release-file 778104477Ssam symbols-image: $(LIBS_TARGETS) $(LAUNCHER_TARGETS) 779104477Ssam 780104477Ssam profiles-image: jmods release-file 781104477Ssam 782104477Ssam mac-bundles-jdk: jdk-image jre-image 783104477Ssam 784104477Ssam # The optimize target can run as soon as the modules dir has been completely 785104477Ssam # populated (java, copy and gendata targets) and the basic libs and launchers 786104477Ssam # have been built. 787104477Ssam exploded-image-optimize: java copy gendata java.base-libs java.base-launchers \ 788104477Ssam buildtools-modules 789104477Ssam 790104477Ssam bootcycle-images: jdk-image 791104477Ssam 792104477Ssam docs-jdk-api-javadoc: $(GENSRC_TARGETS) rmic 793104477Ssam 794104477Ssam docs-javase-api-javadoc: $(GENSRC_TARGETS) rmic 795104477Ssam 796104477Ssam docs-jdk-api-modulegraph: exploded-image buildtools-modules 797104477Ssam 798104477Ssam docs-javase-api-modulegraph: exploded-image buildtools-modules 799104477Ssam 800104477Ssam # The gensrc steps for hotspot and jdk.jdi create html spec files. 801104477Ssam docs-jdk-specs: hotspot-$(JVM_VARIANT_MAIN)-gensrc jdk.jdi-gensrc \ 802104477Ssam docs-jdk-index 803104477Ssam 804104477Ssam docs-jdk-index: exploded-image buildtools-modules 805104477Ssam 806104477Ssam docs-zip: docs-jdk 807104477Ssam 808104477Ssam test: jdk-image test-image 809104477Ssam 810104477Ssam run-test: jdk-image test-image 811104477Ssam 812104477Ssam # Declare dependency for all generated test targets 813104477Ssam $(foreach t, $(ALL_TEST_TARGETS), $(eval $t: jdk-image test-image)) 814104477Ssam 815104477Ssam create-buildjdk-copy: jdk.jlink-java java.base-gendata \ 816104477Ssam $(addsuffix -java, $(INTERIM_IMAGE_MODULES)) 817104477Ssam 818104477Ssam create-buildjdk-interim-image: create-buildjdk-copy 819104477Ssam 820104477Ssam interim-image: $(INTERIM_JMOD_TARGETS) 821104477Ssam 822104477Ssam test-make: clean-test-make 823104477Ssam 824104477Ssam build-test-lib: exploded-image-optimize 825104477Ssam 826104477Ssam build-test-failure-handler: interim-langtools 827104477Ssam 828104477Ssam test-failure-handler: build-test-failure-handler 829104477Ssam 830104477Ssam test-image-failure-handler: build-test-failure-handler 831104477Ssam 832104477Ssam build-test-hotspot-jtreg-native: buildtools-jdk \ 833104477Ssam hotspot-$(JVM_VARIANT_MAIN)-libs 834104477Ssam 835104477Ssam build-test-jdk-jtreg-native: buildtools-jdk 836104477Ssam 837104477Ssam test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native 838104477Ssam 839104477Ssam test-image-jdk-jtreg-native: build-test-jdk-jtreg-native 840104477Ssam 841104477Ssam test-image-hotspot-gtest: hotspot 842104477Ssam 843104477Ssam test-hotspot-internal: exploded-image 844104477Ssam 845104477Ssam test-hotspot-jtreg: jdk-image test-image 846104477Ssam 847104477Ssam test-hotspot-gtest: exploded-image test-image-hotspot-gtest 848104477Ssam 849104477Ssam install: product-images 850104477Ssam 851104477Ssam product-bundles: product-images 852104477Ssam 853104477Ssam profiles-bundles: profiles-images 854104477Ssam 855104477Ssam test-bundles: test-image 856104477Ssam 857104477Ssam docs-bundles: docs-image 858104477Ssam 859104477Ssam generate-summary: jmods buildtools-modules 860104477Ssam 861104477Ssamendif 862104477Ssam 863104477Ssam################################################################################ 864104477Ssam# Virtual targets without recipes 865104477Ssam 866104477Ssambuildtools: buildtools-langtools interim-langtools interim-rmic \ 867104477Ssam buildtools-jdk buildtools-hotspot 868104477Ssam 869104477Ssamhotspot: $(HOTSPOT_VARIANT_TARGETS) hotspot-jsig 870104477Ssam 871104477Ssamhotspot-libs: hotspot-jsig 872104477Ssam 873104477Ssam# Create targets hotspot-libs and hotspot-gensrc. 874104477Ssam$(foreach v, $(JVM_VARIANTS), \ 875104477Ssam $(eval hotspot-libs: hotspot-$v-libs) \ 876104477Ssam $(eval hotspot-gensrc: hotspot-$v-gensrc) \ 877104477Ssam) 878104477Ssam 879104477Ssamgensrc: $(GENSRC_TARGETS) 880104477Ssam 881104477Ssamgendata: $(GENDATA_TARGETS) 882104477Ssam 883104477Ssamcopy: $(ALL_COPY_TARGETS) 884104477Ssam 885104477Ssamjava: $(JAVA_TARGETS) 886104477Ssam 887104477Ssamrmic: $(RMIC_TARGETS) 888104477Ssam 889104477Ssamlibs: $(LIBS_TARGETS) 890104477Ssam 891104477Ssamlaunchers: $(LAUNCHER_TARGETS) 892104477Ssam 893104477Ssamjmods: $(JMOD_TARGETS) 894104477Ssam 895104477Ssam# Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which 896104477Ssam# is actually handled by jdk.jdi-gensrc 897104477Ssamjdk.jdwp.agent-gensrc: jdk.jdi-gensrc 898104477Ssam 899104477Ssam# Declare dependencies from <module> to all the individual targets specific 900104477Ssam# to that module <module>-*, that are needed for the exploded image. 901104477Ssam$(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc)) 902104477Ssam$(foreach m, $(JAVA_MODULES), $(eval $m: $m-java)) 903104477Ssam$(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata)) 904104477Ssam$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic)) 905104477Ssam$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs)) 906104477Ssam$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers)) 907104477Ssam$(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy)) 908104477Ssam 909104477Ssam# Building java.base includes building all of hotspot. 910104477Ssamjava.base: hotspot 911104477Ssam 912104477Ssamdemos: demos-jdk 913104477Ssam 914104477Ssam# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk. 915104477Ssamexploded-image-base: $(ALL_MODULES) 916104477Ssamexploded-image: exploded-image-base release-file 917104477Ssam# When cross compiling, no need to optimize the exploded image since it won't 918104477Ssam# be runnable on the host platform anyway. 919104477Ssamifneq ($(COMPILE_TYPE), cross) 920104477Ssam exploded-image: exploded-image-optimize 921104477Ssamendif 922104477Ssam 923104477Ssamcreate-buildjdk: create-buildjdk-copy create-buildjdk-interim-image 924104477Ssam 925104477Ssamdocs-jdk-api: docs-jdk-api-javadoc 926104477Ssamdocs-javase-api: docs-javase-api-javadoc 927104477Ssam 928104477Ssam# If we're building full docs, we must also generate the module graphs to 929104477Ssam# get non-broken api documentation. 930104477Ssamifeq ($(ENABLE_FULL_DOCS), true) 931104477Ssam docs-jdk-api: docs-jdk-api-modulegraph 932104477Ssam docs-javase-api: docs-javase-api-modulegraph 933104477Ssamendif 934104477Ssam 935104477Ssamdocs-jdk: docs-jdk-api docs-jdk-specs docs-jdk-index 936104477Ssamdocs-javase: docs-javase-api 937104477Ssam 938104477Ssam# alias for backwards compatibility 939104477Ssamdocs-javadoc: docs-jdk-api 940104477Ssam 941104477Ssammac-bundles: mac-bundles-jdk 942104477Ssam 943104477Ssam# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables, 944104477Ssam# and in line with this, our targets for creating these are named *-image[s]. 945104477Ssam 946104477Ssam# This target builds the product images, e.g. the JRE and JDK image 947104477Ssam# (and possibly other, more specific versions) 948104477Ssamproduct-images: jdk-image jre-image symbols-image exploded-image 949104477Ssam 950104477Ssam# zip-security is actually a bundle, but for now it needs to be considered 951104477Ssam# an image until this can be cleaned up properly. 952104477Ssamproduct-images: zip-security 953104477Ssam 954104477Ssam# Declare these for backwards compatiblity and convenience. 955104477Ssamprofiles profiles-images: profiles-image 956104477Ssam 957104477Ssam# The module summary cannot be run when: 958104477Ssam# * Cross compiling and building a partial BUILDJDK for the build host 959104477Ssam# * An external buildjdk has been supplied since it may not match the 960104477Ssam# module selection of the target jdk 961104477Ssamifneq ($(CREATE_BUILDJDK), true) 962104477Ssam ifeq ($(EXTERNAL_BUILDJDK), false) 963104477Ssam product-images: generate-summary 964104477Ssam endif 965104477Ssamendif 966104477Ssam 967104477Ssamifeq ($(OPENJDK_TARGET_OS), macosx) 968104477Ssam product-images: mac-bundles 969104477Ssamendif 970104477Ssam 971104477Ssam# This target builds the documentation image 972104477Ssamdocs-image: docs-jdk 973104477Ssam 974104477Ssam# This target builds the test image 975104477Ssamtest-image: prepare-test-image test-image-hotspot-jtreg-native \ 976104477Ssam test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest \ 977104477Ssam test-image-demos-jdk 978104477Ssam 979104477Ssam# all-images builds all our deliverables as images. 980104477Ssamall-images: product-images test-image docs-image 981104477Ssam 982104477Ssam# all-bundles packages all our deliverables as tar.gz bundles. 983104477Ssamall-bundles: product-bundles test-bundles docs-bundles 984104477Ssam 985104477SsamALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \ 986104477Ssam copy java rmic libs launchers jmods \ 987104477Ssam jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \ 988104477Ssam exploded-image-base exploded-image \ 989104477Ssam create-buildjdk docs-jdk-api docs-javase-api docs-jdk docs-javase \ 990104477Ssam docs-javadoc mac-bundles product-images \ 991104477Ssam profiles profiles-images \ 992104477Ssam docs-image test-image all-images \ 993104477Ssam all-bundles 994104477Ssam 995104477Ssam################################################################################ 996104477Ssam 997104477Ssam# Traditional targets typically run by users. 998104477Ssam# These can be considered aliases for the targets now named by a more 999104477Ssam# "modern" naming scheme. 1000104477Ssamdefault: $(DEFAULT_MAKE_TARGET) 1001104477Ssamjdk: exploded-image 1002104477Ssamimages: product-images 1003104477Ssamdocs: docs-image 1004104477Ssambundles: all-bundles 1005104477Ssamall: all-images 1006104477Ssam 1007104477SsamALL_TARGETS += default jdk images docs bundles all 1008104477Ssam 1009104477Ssam################################################################################ 1010104477Ssam################################################################################ 1011104477Ssam# 1012104477Ssam# Clean targets 1013104477Ssam# 1014104477Ssam################################################################################ 1015104477Ssam# Clean targets are automatically run serially by the Makefile calling this 1016104477Ssam# file. 1017104477Ssam 1018104477SsamCLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \ 1019104477Ssam images make-support test-make bundles buildjdk 1020104477SsamCLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS)) 1021104477SsamCLEAN_SUPPORT_DIRS += demos 1022104477SsamCLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS)) 1023104477SsamCLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib 1024104477SsamCLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS)) 1025104477SsamCLEAN_PHASES := gensrc java native include 1026104477SsamCLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES)) 1027104477SsamCLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES)) 1028104477Ssam# Construct targets of the form clean-$module-$phase 1029104477SsamCLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \ 1030104477Ssam $(addprefix $m-, $(CLEAN_PHASES)))) 1031104477Ssam 1032104477Ssam# Remove everything, except the output from configure. 1033104477Ssamclean: $(CLEAN_DIR_TARGETS) 1034104477Ssam ($(CD) $(OUTPUT_ROOT) && $(RM) -r build*.log*) 1035104477Ssam $(ECHO) Cleaned all build artifacts. 1036104477Ssam 1037104477Ssamclean-docs: 1038104477Ssam $(call CleanDocs) 1039104477Ssam 1040104477Ssam$(CLEAN_DIR_TARGETS): 1041104477Ssam $(call CleanDir,$(patsubst clean-%, %, $@)) 1042104477Ssam 1043104477Ssam$(CLEAN_SUPPORT_DIR_TARGETS): 1044104477Ssam $(call CleanSupportDir,$(patsubst clean-%, %, $@)) 1045104477Ssam 1046104477Ssam$(CLEAN_TEST_TARGETS): 1047104477Ssam $(call CleanTest,$(patsubst clean-test-%, %, $@)) 1048104477Ssam 1049104477Ssam$(CLEAN_PHASE_TARGETS): 1050104477Ssam $(call Clean-$(patsubst clean-%,%, $@)) 1051104477Ssam 1052104477Ssam$(CLEAN_MODULE_TARGETS): 1053104477Ssam $(call CleanModule,$(patsubst clean-%, %, $@)) 1054104477Ssam 1055104477Ssam$(CLEAN_MODULE_PHASE_TARGETS): 1056104477Ssam $(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \ 1057104477Ssam $(word 2, $(subst -,$(SPACE),$@))) 1058104477Ssam 1059104477Ssam# When removing the support dir, we must also remove jdk. Building classes has 1060104477Ssam# the side effect of generating native headers. The headers end up in support 1061104477Ssam# while classes and touch files end up in jdk. 1062104477Ssamclean-support: clean-jdk 1063104477Ssam 1064104477Ssam# Remove everything, including configure configuration. If the output 1065104477Ssam# directory was created by configure and now becomes empty, remove it as well. 1066104477Ssamdist-clean: clean 1067104477Ssam ($(CD) $(OUTPUT_ROOT) && \ 1068104477Ssam $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide) 1069104477Ssam $(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \ 1070104477Ssam if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \ 1071104477Ssam $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \ 1072104477Ssam else \ 1073104477Ssam ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \ 1074104477Ssam && $(RM) -r $(OUTPUT_ROOT)) \ 1075104477Ssam fi \ 1076104477Ssam ) 1077104477Ssam $(ECHO) Cleaned everything, you will have to re-run configure. 1078104477Ssam 1079104477SsamALL_TARGETS += clean clean-docs dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_SUPPORT_DIR_TARGETS) \ 1080104477Ssam $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) \ 1081104477Ssam $(CLEAN_MODULE_PHASE_TARGETS) 1082104477Ssam 1083104477Ssam################################################################################ 1084104477Ssam# Declare *-only targets for each normal target 1085104477Ssam$(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t))) 1086104477Ssam 1087104477SsamALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS))) 1088104477Ssam 1089104477Ssam################################################################################ 1090104477Ssam 1091104477Ssam# Include JPRT targets 1092104477Ssaminclude $(SRC_ROOT)/make/Jprt.gmk 1093104477Ssam 1094104477Ssam################################################################################ 1095104477Ssam 1096104477Ssam# The following targets are intentionally not added to ALL_TARGETS since they 1097104477Ssam# are internal only, to support Init.gmk. 1098104477Ssam 1099104477Ssamprint-targets: 1100104477Ssam @$(ECHO) $(sort $(ALL_TARGETS)) 1101104477Ssam 1102104477Ssamprint-modules: 1103104477Ssam @$(ECHO) $(sort $(ALL_MODULES)) 1104104477Ssam 1105104477Ssamprint-tests: 1106104477Ssam @$(ECHO) $(sort $(ALL_NAMED_TESTS)) 1107104477Ssam 1108104477Ssamcreate-main-targets-include: 1109104477Ssam $(call LogInfo, Generating main target list) 1110104477Ssam @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \ 1111104477Ssam $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk 1112104477Ssam 1113104477Ssam################################################################################ 1114104477Ssam 1115104477Ssam.PHONY: $(ALL_TARGETS) 1116104477Ssam 1117104477SsamFRC: # Force target 1118104477Ssam