Main.gmk revision 2081:278dbe271a52
1189251Ssam# 2214734Srpaulo# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. 3214734Srpaulo# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4189251Ssam# 5252726Srpaulo# This code is free software; you can redistribute it and/or modify it 6252726Srpaulo# under the terms of the GNU General Public License version 2 only, as 7189251Ssam# published by the Free Software Foundation. Oracle designates this 8189251Ssam# particular file as subject to the "Classpath" exception as provided 9189251Ssam# by Oracle in the LICENSE file that accompanied this code. 10189251Ssam# 11189251Ssam# This code is distributed in the hope that it will be useful, but WITHOUT 12189251Ssam# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13189251Ssam# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14189251Ssam# version 2 for more details (a copy is included in the LICENSE file that 15189251Ssam# accompanied this code). 16189251Ssam# 17189251Ssam# You should have received a copy of the GNU General Public License version 18189251Ssam# 2 along with this work; if not, write to the Free Software Foundation, 19189251Ssam# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20189251Ssam# 21189251Ssam# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22189251Ssam# or visit www.oracle.com if you need additional information or have any 23189251Ssam# questions. 24189251Ssam# 25189251Ssam 26189251Ssam################################################################################ 27189251Ssam# This is the main makefile containing most actual top level targets. It needs 28189251Ssam# to be called with a SPEC file defined. 29189251Ssam################################################################################ 30189251Ssam 31189251Ssam# Declare default target 32189251Ssamdefault: 33189251Ssam 34189251Ssamifeq ($(wildcard $(SPEC)),) 35189251Ssam $(error Main.gmk needs SPEC set to a proper spec.gmk) 36189251Ssamendif 37189251Ssam 38189251Ssam# Now load the spec 39189251Ssaminclude $(SPEC) 40189251Ssam 41189251Ssaminclude $(SRC_ROOT)/make/MainSupport.gmk 42189251Ssam 43189251Ssam# Load the vital tools for all the makefiles. 44189251Ssaminclude $(SRC_ROOT)/make/common/MakeBase.gmk 45189251Ssaminclude $(SRC_ROOT)/make/common/Modules.gmk 46189251Ssam 47189251Ssam# Declare ALL_TARGETS as an immediate variable. This variable is a list of all 48189251Ssam# valid top level targets. It's used to declare them all as PHONY and to 49189251Ssam# generate the -only targets. 50189251SsamALL_TARGETS := 51189251Ssam 52189251Ssam# Hook to include the corresponding custom file, if present. 53189251Ssam$(eval $(call IncludeCustomExtension, , Main.gmk)) 54189251Ssam 55189251Ssam# All modules for the current target platform. 56189251SsamALL_MODULES := $(call FindAllModules) 57189251Ssam 58189251Ssam################################################################################ 59189251Ssam################################################################################ 60189251Ssam# 61189251Ssam# Recipes for all targets. Only recipes, dependencies are declared later. 62189251Ssam# 63189251Ssam################################################################################ 64189251Ssam 65189251Ssam################################################################################ 66189251Ssam# Interim/build tools targets, compiling tools used during the build 67189251Ssam 68189251Ssambuildtools-langtools: 69189251Ssam +($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk) 70189251Ssam 71189251Ssaminterim-langtools: 72189251Ssam +($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk) 73189251Ssam 74189251Ssaminterim-rmic: 75189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk) 76189251Ssam 77189251Ssaminterim-cldrconverter: 78189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk) 79189251Ssam 80189251Ssambuildtools-jdk: 81189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk) 82189251Ssam 83189251SsamALL_TARGETS += buildtools-langtools interim-langtools \ 84189251Ssam interim-rmic interim-cldrconverter buildtools-jdk 85189251Ssam 86189251Ssam################################################################################ 87189251Ssam# Special targets for certain modules 88189251Ssam 89189251Ssamimport-hotspot: 90189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Import.gmk) 91189251Ssam 92189251Ssamunpack-sec: 93189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk) 94189251Ssam 95189251Ssamgenerate-exported-symbols: 96189251Ssam +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk) 97189251Ssam 98189251SsamALL_TARGETS += import-hotspot unpack-sec generate-exported-symbols 99189251Ssam 100189251Ssam################################################################################ 101189251Ssam# Gensrc targets, generating source before java compilation can be done 102189251Ssam$(eval $(call DeclareRecipesForPhase, GENSRC, \ 103189251Ssam TARGET_SUFFIX := gensrc, \ 104189251Ssam FILE_PREFIX := Gensrc, \ 105189251Ssam MAKE_SUBDIR := gensrc, \ 106189251Ssam CHECK_MODULES := $(ALL_MODULES), \ 107189251Ssam MULTIPLE_MAKEFILES := true)) 108189251Ssam 109189251SsamJDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS)) 110189251SsamLANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS)) 111189251SsamCORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS)) 112189251SsamHOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS)) 113189251Ssam 114189251SsamGENSRC_MODULEINFO_MODULES := $(ALL_MODULES) 115189251SsamGENSRC_MODULEINFO_TARGETS := $(addsuffix -gensrc-moduleinfo, \ 116189251Ssam $(GENSRC_MODULEINFO_MODULES)) 117189251Ssam 118189251SsamGENSRC_MODULES := $(GENSRC_MODULEINFO_MODULES) 119189251SsamGENSRC_TARGETS += $(sort $(GENSRC_MODULEINFO_TARGETS) \ 120189251Ssam $(addsuffix -gensrc, $(GENSRC_MODULES))) 121189251Ssam 122189251Ssamdefine DeclareModuleInfoRecipe 123189251Ssam $1-gensrc-moduleinfo: 124189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \ 125189251Ssam -f GensrcModuleInfo.gmk MODULE=$1) 126189251Ssam 127189251Ssam $1-gensrc: $1-gensrc-moduleinfo 128189251Ssamendef 129189251Ssam 130189251Ssam$(foreach m, $(GENSRC_MODULEINFO_MODULES), $(eval $(call DeclareModuleInfoRecipe,$m))) 131189251Ssam 132189251SsamALL_TARGETS += $(GENSRC_TARGETS) 133189251Ssam 134189251Ssam################################################################################ 135189251Ssam# Generate data targets 136189251Ssam$(eval $(call DeclareRecipesForPhase, GENDATA, \ 137189251Ssam TARGET_SUFFIX := gendata, \ 138189251Ssam FILE_PREFIX := Gendata, \ 139189251Ssam MAKE_SUBDIR := gendata, \ 140189251Ssam CHECK_MODULES := $(ALL_MODULES), \ 141189251Ssam USE_WRAPPER := true)) 142189251Ssam 143189251SsamALL_TARGETS += $(GENDATA_TARGETS) 144189251Ssam 145189251Ssam################################################################################ 146189251Ssam# Copy files targets 147189251Ssam$(eval $(call DeclareRecipesForPhase, COPY, \ 148189251Ssam TARGET_SUFFIX := copy, \ 149189251Ssam FILE_PREFIX := Copy, \ 150189251Ssam MAKE_SUBDIR := copy, \ 151189251Ssam CHECK_MODULES := $(ALL_MODULES), \ 152189251Ssam USE_WRAPPER := true, \ 153189251Ssam MULTIPLE_MAKEFILES := true)) 154189251Ssam 155189251SsamALL_COPY_MODULES += $(COPY_MODULES) 156189251SsamALL_COPY_TARGETS += $(COPY_TARGETS) 157189251Ssam 158189251SsamIMPORT_COPY_MODULES := $(call FindImportedModules) 159189251SsamIMPORT_COPY_TARGETS := $(addsuffix -copy, $(IMPORT_COPY_MODULES)) 160189251SsamALL_COPY_MODULES += $(IMPORT_COPY_MODULES) 161189251SsamALL_COPY_TARGETS += $(IMPORT_COPY_TARGETS) 162189251Ssam 163189251Ssamdefine DeclareImportCopyRecipe 164189251Ssam $1-copy: 165189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \ 166189251Ssam -f CopyImportModules.gmk MODULE=$1) 167189251Ssamendef 168189251Ssam 169189251Ssam$(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m))) 170189251Ssam 171189251SsamALL_TARGETS += $(ALL_COPY_TARGETS) 172189251Ssam 173189251Ssam################################################################################ 174189251Ssam# Targets for compiling all java modules. Nashorn is treated separately. 175189251SsamJAVA_MODULES := $(ALL_MODULES) 176189251SsamJAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES)) 177189251Ssam 178189251Ssamdefine DeclareCompileJavaRecipe 179189251Ssam $1-java: 180189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \ 181189251Ssam -f CompileJavaModules.gmk MODULE=$1) 182189251Ssamendef 183189251Ssam 184189251Ssam$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \ 185189251Ssam $(eval $(call DeclareCompileJavaRecipe,$m))) 186189251Ssam 187189251Ssam# Build nashorn. Needs to be compiled separately from the rest of the modules 188189251Ssam# due to nasgen. 189189251Ssamjdk.scripting.nashorn-java: 190189251Ssam +($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ 191189251Ssam -f BuildNashorn.gmk compile) 192189251Ssam 193189251SsamALL_TARGETS += $(JAVA_TARGETS) 194189251Ssam 195189251Ssam################################################################################ 196189251Ssam# Targets for running rmic. 197189251Ssam$(eval $(call DeclareRecipesForPhase, RMIC, \ 198189251Ssam TARGET_SUFFIX := rmic, \ 199189251Ssam FILE_PREFIX := Rmic, \ 200189251Ssam MAKE_SUBDIR := rmic, \ 201189251Ssam CHECK_MODULES := $(ALL_MODULES))) 202189251Ssam 203189251SsamALL_TARGETS += $(RMIC_TARGETS) 204189251Ssam 205189251Ssam################################################################################ 206189251Ssam# Targets for compiling native libraries 207189251Ssam$(eval $(call DeclareRecipesForPhase, LIBS, \ 208189251Ssam TARGET_SUFFIX := libs, \ 209189251Ssam FILE_PREFIX := Lib, \ 210189251Ssam MAKE_SUBDIR := lib, \ 211189251Ssam CHECK_MODULES := $(ALL_MODULES), \ 212214734Srpaulo USE_WRAPPER := true)) 213214734Srpaulo 214189251SsamALL_TARGETS += $(LIBS_TARGETS) 215189251Ssam 216189251Ssam################################################################################ 217189251Ssam# Targets for compiling native executables 218189251Ssam$(eval $(call DeclareRecipesForPhase, LAUNCHER, \ 219189251Ssam TARGET_SUFFIX := launchers, \ 220189251Ssam FILE_PREFIX := Launcher, \ 221189251Ssam MAKE_SUBDIR := launcher, \ 222189251Ssam CHECK_MODULES := $(ALL_MODULES), \ 223189251Ssam USE_WRAPPER := true)) 224189251Ssam 225189251SsamALL_TARGETS += $(LAUNCHER_TARGETS) 226189251Ssam 227189251Ssam################################################################################ 228189251Ssam# Build hotspot target 229189251Ssam 230189251Ssamifeq ($(BUILD_HOTSPOT),true) 231189251Ssamhotspot: 232189251Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildHotspot.gmk) 233189251Ssamendif 234189251Ssam 235189251Ssamhotspot-ide-project: 236189251Ssam +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk) 237189251Ssam 238189251SsamALL_TARGETS += hotspot hotspot-ide-project 239189251Ssam 240189251Ssam################################################################################ 241189251Ssam# Build demos and samples targets 242189251Ssam 243189251Ssamdemos-jdk: 244189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk) 245189251Ssam 246189251Ssamsamples-jdk: 247189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopySamples.gmk) 248189251Ssam 249189251SsamALL_TARGETS += demos-jdk samples-jdk 250189251Ssam 251189251Ssam################################################################################ 252189251Ssam# Jigsaw specific data and analysis targets. 253189251Ssam 254189251Ssamgenerate-summary: 255189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) -f GenerateModuleSummary.gmk) 256214734Srpaulo 257189251SsamALL_TARGETS += generate-summary 258189251Ssam 259189251Ssam################################################################################ 260214734Srpaulo# Strip binaries targets 261214734Srpaulo 262189251SsamSTRIP_MODULES := $(sort $(LIBS_MODULES) $(LAUNCHER_MODULES) $(COPY_MODULES) \ 263189251Ssam $(GENDATA_MODULES)) 264189251SsamSTRIP_TARGETS := $(addsuffix -strip, $(STRIP_MODULES)) 265189251Ssam 266189251Ssamdefine DeclareStripRecipe 267189251Ssam $1-strip: 268189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f StripBinaries.gmk \ 269189251Ssam MODULE=$1) 270189251Ssamendef 271189251Ssam 272189251Ssam$(foreach m, $(STRIP_MODULES), $(eval $(call DeclareStripRecipe,$m))) 273189251Ssam 274189251SsamALL_TARGETS += $(STRIP_TARGETS) 275189251Ssam 276189251Ssam################################################################################ 277189251Ssam# Jmod targets 278189251Ssam 279189251SsamJMOD_MODULES := $(ALL_MODULES) 280189251SsamJMOD_TARGETS := $(addsuffix -jmod, $(JMOD_MODULES)) 281189251Ssam 282189251Ssamdefine DeclareJmodRecipe 283189251Ssam $1-jmod: 284189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \ 285189251Ssam MODULE=$1) 286189251Ssamendef 287189251Ssam 288189251Ssam$(foreach m, $(JMOD_MODULES), $(eval $(call DeclareJmodRecipe,$m))) 289189251Ssam 290189251SsamALL_TARGETS += $(JMOD_TARGETS) 291189251Ssam 292189251Ssam################################################################################ 293189251Ssam# Images targets 294189251Ssam 295189251Ssam# Stores the tips for each repository. This file is be used when constructing the jdk image and can be 296189251Ssam# used to track the exact sources used to build that image. 297189251Ssamsource-tips: $(SUPPORT_OUTPUTDIR)/source_tips 298189251Ssam$(SUPPORT_OUTPUTDIR)/source_tips: FRC 299189251Ssam $(call MakeDir, $(@D)) 300189251Ssam @$(RM) $@ 301189251Ssam @$(call GetSourceTips) 302189251Ssam 303189251SsamBOOTCYCLE_TARGET := product-images 304189251Ssambootcycle-images: 305189251Ssam @$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image 306189251Ssam +$(MAKE) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \ 307189251Ssam JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main 308189251Ssam 309189251Ssamzip-security: 310189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk) 311214734Srpaulo 312214734Srpaulozip-source: 313214734Srpaulo +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk) 314214734Srpaulo 315189251Ssamjrtfs-jar: 316214734Srpaulo +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk) 317189251Ssam 318189251Ssamjimages: 319189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jimages) 320189251Ssam 321189251Ssamprofiles: 322214734Srpaulo +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles) 323189251Ssam 324189251Ssammac-bundles-jdk: 325189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk) 326189251Ssam 327214734SrpauloALL_TARGETS += source-tips bootcycle-images zip-security zip-source \ 328214734Srpaulo jrtfs-jar jimages profiles mac-bundles-jdk 329189251Ssam 330189251Ssam################################################################################ 331214734Srpaulo# Docs targets 332189251Ssam 333189251Ssamdocs-javadoc: 334189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs) 335189251Ssam 336189251Ssamdocs-jvmtidoc: 337189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk jvmtidocs) 338189251Ssam 339189251Ssamzip-docs: 340214734Srpaulo +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk zip-docs) 341214734Srpaulo 342189251SsamALL_TARGETS += docs-javadoc docs-jvmtidoc zip-docs 343189251Ssam 344189251Ssam################################################################################ 345189251Ssam# Cross compilation support 346189251Ssam 347189251Ssamifeq ($(CREATING_BUILDJDK), true) 348189251Ssam # This target is only called by the recursive call below. 349189251Ssam create-buildjdk-interim-image-helper: interim-image jdk.jlink-launchers \ 350189251Ssam java.base-copy jdk.jdeps-launchers 351189251Ssamendif 352189251Ssam 353189251Ssamcreate-buildjdk-copy: 354189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateBuildJdkCopy.gmk) 355189251Ssam 356189251Ssamcreate-buildjdk-interim-image: 357189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk \ 358189251Ssam $@-helper \ 359189251Ssam SPEC=$(dir $(SPEC))buildjdk-spec.gmk \ 360189251Ssam HOTSPOT_SPEC=$(dir $(SPEC))buildjdk-spec.gmk \ 361189251Ssam CREATING_BUILDJDK=true) 362189251Ssam 363189251SsamALL_TARGETS += create-buildjdk-copy create-buildjdk-interim-image 364189251Ssam 365189251Ssam################################################################################ 366189251Ssam# The interim-image is a small jlinked image that is used to generate artifacts 367189251Ssam# at build time for use when linking the real images. 368189251Ssam 369189251Ssaminterim-image: 370189251Ssam +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f InterimImage.gmk) 371189251Ssam 372189251Ssamgenerate-classlist: 373189251Ssam +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateClasslist.gmk) 374189251Ssam 375189251SsamALL_TARGETS += interim-image generate-classlist 376189251Ssam 377189251Ssam################################################################################ 378189251Ssam# Build tests 379189251Ssam# 380189251Ssam 381189251Ssamprepare-test-image: 382189251Ssam $(MKDIR) -p $(TEST_IMAGE_DIR) 383189251Ssam $(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image' 384189251Ssam 385189251Ssambuild-test-hotspot-jtreg-native: 386214734Srpaulo +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 387214734Srpaulo build-test-hotspot-jtreg-native) 388189251Ssam 389189251Ssamtest-image-hotspot-jtreg-native: 390189251Ssam +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 391189251Ssam test-image-hotspot-jtreg-native) 392189251Ssam 393189251Ssambuild-test-jdk-jtreg-native: 394189251Ssam +($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 395189251Ssam build-test-jdk-jtreg-native) 396189251Ssam 397189251Ssamtest-image-jdk-jtreg-native: 398189251Ssam +($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \ 399189251Ssam test-image-jdk-jtreg-native) 400189251Ssam 401189251Ssamifeq ($(BUILD_GTEST), true) 402189251Ssam test-image-hotspot-gtest: 403189251Ssam +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk) 404189251Ssamendif 405189251Ssam 406189251Ssambuild-test-lib: 407189251Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLib.gmk) 408189251Ssam 409189251Ssamifeq ($(BUILD_FAILURE_HANDLER), true) 410189251Ssam # Builds the failure handler jtreg extension 411214734Srpaulo build-test-failure-handler: 412189251Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \ 413189251Ssam -f BuildFailureHandler.gmk build) 414189251Ssam 415189251Ssam # Runs the tests for the failure handler jtreg extension 416189251Ssam test-failure-handler: 417189251Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \ 418214734Srpaulo -f BuildFailureHandler.gmk test) 419214734Srpaulo 420214734Srpaulo # Copies the failure handler jtreg extension into the test image 421189251Ssam test-image-failure-handler: 422189251Ssam +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \ 423189251Ssam -f BuildFailureHandler.gmk images) 424189251Ssamendif 425189251Ssam 426189251SsamALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \ 427189251Ssam test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \ 428189251Ssam test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \ 429189251Ssam test-failure-handler test-image-failure-handler test-image-hotspot-gtest 430189251Ssam 431189251Ssam################################################################################ 432189251Ssam# Run tests 433189251Ssam 434189251Ssam# Run tests specified by $(TEST), or the default test set. 435189251Ssamtest: 436189251Ssam $(call RunTests, $(TEST)) 437189251Ssam 438189251Ssamtest-hotspot-jtreg: 439189251Ssam $(call RunTests, "hotspot_all") 440189251Ssam 441189251Ssamtest-hotspot-jtreg-native: 442189251Ssam $(call RunTests, "hotspot_native_sanity") 443189251Ssam 444189251Ssamtest-hotspot-internal: 445189251Ssam $(call RunTests, "hotspot_internal") 446189251Ssam 447189251Ssamtest-jdk-jtreg-native: 448189251Ssam $(call RunTests, "jdk_native_sanity") 449189251Ssam 450189251Ssamtest-make: 451189251Ssam ($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET)) 452189251Ssam 453189251SsamALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \ 454189251Ssam test-hotspot-internal test-jdk-jtreg-native test-make 455189251Ssam 456189251Ssam################################################################################ 457189251Ssam# Install targets 458214734Srpaulo 459214734Srpauloinstall: 460214734Srpaulo +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk) 461214734Srpaulo 462189251SsamALL_TARGETS += install 463189251Ssam 464189251Ssam################################################################################ 465189251Ssam# 466189251Ssam# Dependency declarations between targets. 467214734Srpaulo# 468214734Srpaulo# These are declared in two groups. First all dependencies between targets that 469214734Srpaulo# have recipes above as these dependencies may be disabled. Then the aggregator 470189251Ssam# targets that do not have recipes of their own, which will never have their 471214734Srpaulo# dependencies disabled. 472189251Ssam# 473189251Ssam################################################################################ 474189251Ssam# Targets with recipes above 475189251Ssam 476189251Ssam# If running an *-only target, parallel execution and dependencies between 477214734Srpaulo# recipe targets are disabled. This makes it possible to run a select set of 478189251Ssam# recipe targets in order. It's the responsibility of the user to make sure 479189251Ssam# all prerequisites are fulfilled. 480189251Ssamifneq ($(findstring -only, $(MAKECMDGOALS)), ) 481189251Ssam .NOTPARALLEL: 482189251Ssamelse 483189251Ssam $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools 484189251Ssam 485214734Srpaulo interim-langtools: $(LANGTOOLS_GENSRC_TARGETS) 486189251Ssam 487189251Ssam buildtools-jdk: interim-langtools interim-cldrconverter 488189251Ssam 489189251Ssam $(CORBA_GENSRC_TARGETS): interim-langtools 490189251Ssam 491189251Ssam $(HOTSPOT_GENSRC_TARGETS): interim-langtools 492214734Srpaulo 493214734Srpaulo $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk 494189251Ssam 495189251Ssam $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk 496214734Srpaulo 497189251Ssam $(GENDATA_TARGETS): interim-langtools buildtools-jdk 498189251Ssam 499189251Ssam interim-rmic: interim-langtools 500214734Srpaulo 501214734Srpaulo $(RMIC_TARGETS): interim-langtools interim-rmic 502214734Srpaulo 503189251Ssam $(JAVA_TARGETS): interim-langtools 504189251Ssam 505214734Srpaulo hotspot-ide-project: hotspot exploded-image 506189251Ssam 507189251Ssam import-hotspot: hotspot 508189251Ssam 509189251Ssam generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs 510189251Ssam 511189251Ssam $(LIBS_TARGETS): import-hotspot 512189251Ssam 513189251Ssam $(LAUNCHER_TARGETS): java.base-libs 514189251Ssam 515189251Ssam ifeq ($(STATIC_BUILD), true) 516189251Ssam $(LAUNCHER_TARGETS): generate-exported-symbols 517189251Ssam endif 518189251Ssam 519189251Ssam # The demos are currently linking to libjvm and libjava, just like all other 520189251Ssam # jdk libs, even though they don't need to. To avoid warnings, make sure they 521189251Ssam # aren't built until after libjava and libjvm are available to link to. 522189251Ssam demos-jdk: $(JAVA_TARGETS) 523189251Ssam 524214734Srpaulo # Declare dependency from <module>-java to <module>-gensrc 525189251Ssam $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc)) 526189251Ssam 527189251Ssam # Declare dependencies between java modules 528189251Ssam $(foreach m, $(JAVA_MODULES), \ 529189251Ssam $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \ 530189251Ssam $(call FindDepsForModule,$m))))) 531189251Ssam 532189251Ssam # Declare dependencies between <module>-rmic to <module>-java 533189251Ssam $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java)) 534189251Ssam 535189251Ssam # Declare dependencies from <module>-lib to <module>-java 536189251Ssam # Skip modules that do not have java source. 537214734Srpaulo # When creating a BUILDJDK, the java compilation has already been done by the 538214734Srpaulo # normal build and copied in. 539214734Srpaulo ifneq ($(CREATING_BUILDJDK), true) 540189251Ssam $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java)) 541189251Ssam endif 542189251Ssam 543189251Ssam # Declare dependencies from all other <module>-lib to java.base-lib 544214734Srpaulo $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \ 545214734Srpaulo $(eval $t: java.base-libs)) 546189251Ssam 547189251Ssam # jdk.accessibility depends on java.desktop 548189251Ssam jdk.accessibility-libs: java.desktop-libs 549214734Srpaulo 550214734Srpaulo # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a 551214734Srpaulo # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a 552189251Ssam # virtual target. 553214734Srpaulo jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc 554189251Ssam 555189251Ssam # The swing beans need to have java base properly generated to avoid errors 556189251Ssam # in javadoc. 557189251Ssam java.desktop-gensrc-jdk: java.base-gensrc 558214734Srpaulo 559189251Ssam # The annotation processing for jdk.vm.ci needs java.base classes from the 560214734Srpaulo # current JDK. 561214734Srpaulo jdk.vm.ci-gensrc-hotspot: java.base-java 562189251Ssam 563214734Srpaulo # Explicitly add dependencies for special targets 564214734Srpaulo java.base-java: unpack-sec 565214734Srpaulo 566214734Srpaulo # The copy target copies files generated by gensrc 567214734Srpaulo java.base-copy-hotspot: java.base-gensrc-hotspot 568189251Ssam 569189251Ssam jdk.jdeps-gendata: java rmic 570189251Ssam 571189251Ssam # Declare dependencies from <module>-strip to libs, launchers, gendata and copy 572189251Ssam $(foreach m, $(LIBS_MODULES), $(eval $m-strip: $m-libs)) 573189251Ssam $(foreach m, $(LAUNCHER_MODULES), $(eval $m-strip: $m-launchers)) 574189251Ssam $(foreach m, $(GENDATA_MODULES), $(eval $m-strip: $m-gendata)) 575189251Ssam $(foreach m, $(COPY_MODULES), $(eval $m-strip: $m-copy)) 576189251Ssam 577189251Ssam # Declare dependencies between jmod targets. Only java.base jmod needs access 578189251Ssam # to the other jmods to be built. 579189251Ssam # When creating a BUILDJDK, we don't need to add hashes to java.base, thus 580189251Ssam # we don't need to depend on all other jmods 581189251Ssam ifneq ($(CREATING_BUILDJDK), true) 582189251Ssam java.base-jmod: $(filter-out java.base-jmod, $(JMOD_TARGETS)) 583189251Ssam endif 584189251Ssam 585189251Ssam # Declare dependencies from <module>-jmod to all other module targets 586189251Ssam $(foreach m, $(STRIP_MODULES), $(eval $m-jmod: $m-strip)) 587189251Ssam # When creating a BUILDJDK, the java compilation has already been done by the 588189251Ssam # normal build and copied in. 589189251Ssam ifneq ($(CREATING_BUILDJDK), true) 590214734Srpaulo $(foreach m, $(JAVA_MODULES), $(eval $m-jmod: $m-java)) 591189251Ssam endif 592189251Ssam $(foreach m, $(GENDATA_MODULES), $(eval $m-jmod: $m-gendata)) 593189251Ssam $(foreach m, $(RMIC_MODULES), $(eval $m-jmod: $m-rmic)) 594189251Ssam $(foreach m, $(LIBS_MODULES), $(eval $m-jmod: $m-libs)) 595189251Ssam $(foreach m, $(LAUNCHER_MODULES), $(eval $m-jmod: $m-launchers)) 596189251Ssam $(foreach m, $(COPY_MODULES), $(eval $m-jmod: $m-copy)) 597189251Ssam 598189251Ssam # Jmods cannot be created until we have the jlink tool ready to run, which requires 599189251Ssam # all java modules to be compiled and jdk.jlink-launchers. 600189251Ssam $(JMOD_TARGETS): java.base-libs jdk.jlink-launchers 601189251Ssam # When creating a BUILDJDK, the java compilation has already been done by the 602189251Ssam # normal build and copied in. 603189251Ssam ifneq ($(CREATING_BUILDJDK), true) 604189251Ssam $(JMOD_TARGETS): java 605189251Ssam endif 606189251Ssam 607214734Srpaulo ifeq ($(CREATE_BUILDJDK), true) 608214734Srpaulo # Avoid calling create-buildjdk from within a create-buildjdk call 609189251Ssam ifneq ($(CREATING_BUILDJDK), true) 610189251Ssam $(JMOD_TARGETS): create-buildjdk 611189251Ssam endif 612189251Ssam endif 613214734Srpaulo 614214734Srpaulo zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \ 615214734Srpaulo $(filter jdk.crypto%, $(JAVA_TARGETS)) 616189251Ssam 617189251Ssam zip-source: gensrc rmic 618189251Ssam 619189251Ssam jrtfs-jar: interim-langtools 620214734Srpaulo 621214734Srpaulo ifeq ($(CREATE_BUILDJDK), true) 622189251Ssam # If creating a buildjdk, the interim image needs to be based on that. 623189251Ssam generate-classlist: create-buildjdk 624189251Ssam else ifeq ($(EXTERNAL_BUILDJDK), false) 625189251Ssam # If an external buildjdk has been provided, we skip generating an 626189251Ssam # interim-image and just use the external buildjdk for generating 627189251Ssam # classlist. 628189251Ssam generate-classlist: interim-image 629189251Ssam endif 630189251Ssam generate-classlist: buildtools-jdk 631189251Ssam 632189251Ssam jimages: jmods zip-source source-tips demos samples jrtfs-jar generate-classlist 633189251Ssam 634189251Ssam profiles: jmods zip-source source-tips jrtfs-jar 635189251Ssam 636189251Ssam mac-bundles-jdk: jimages 637189251Ssam 638189251Ssam bootcycle-images: jimages 639189251Ssam 640189251Ssam docs-javadoc: $(GENSRC_TARGETS) rmic 641189251Ssam 642189251Ssam docs-jvmtidoc: hotspot 643189251Ssam 644189251Ssam zip-docs: docs-javadoc docs-jvmtidoc 645189251Ssam 646189251Ssam test: jimages test-image 647189251Ssam 648189251Ssam create-buildjdk-copy: jdk.jlink-java java.base-gendata \ 649189251Ssam $(addsuffix -java, $(INTERIM_IMAGE_MODULES)) 650189251Ssam 651189251Ssam create-buildjdk-interim-image: create-buildjdk-copy 652189251Ssam 653189251Ssam interim-image: $(addsuffix -jmod, $(INTERIM_IMAGE_MODULES)) 654189251Ssam 655189251Ssam test-make: clean-test-make 656189251Ssam 657189251Ssam build-test-lib: java 658189251Ssam 659189251Ssam build-test-failure-handler: interim-langtools 660189251Ssam 661189251Ssam test-failure-handler: build-test-failure-handler 662189251Ssam 663189251Ssam test-image-failure-handler: build-test-failure-handler 664189251Ssam 665189251Ssam build-test-hotspot-jtreg-native: buildtools-jdk 666189251Ssam 667189251Ssam build-test-jdk-jtreg-native: buildtools-jdk 668189251Ssam 669189251Ssam test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native 670189251Ssam 671189251Ssam test-image-jdk-jtreg-native: build-test-jdk-jtreg-native 672189251Ssam 673189251Ssam test-image-hotspot-gtest: hotspot 674189251Ssam 675189251Ssam test-hotspot-internal: exploded-image 676189251Ssam 677189251Ssam test-hotspot-jtreg: jimages test-image 678189251Ssam 679189251Ssam install: product-images 680189251Ssam 681189251Ssam generate-summary: jmods 682189251Ssam 683189251Ssamendif 684189251Ssam 685189251Ssam################################################################################ 686189251Ssam# Virtual targets without recipes 687189251Ssam 688189251Ssambuildtools: buildtools-langtools interim-langtools interim-rmic \ 689189251Ssam buildtools-jdk 690189251Ssam 691189251Ssamgensrc: $(GENSRC_TARGETS) 692189251Ssam 693189251Ssamgendata: $(GENDATA_TARGETS) 694189251Ssam 695189251Ssamcopy: $(ALL_COPY_TARGETS) 696189251Ssam 697189251Ssamjava: $(JAVA_TARGETS) 698189251Ssam 699189251Ssamrmic: $(RMIC_TARGETS) 700189251Ssam 701189251Ssamlibs: $(LIBS_TARGETS) 702189251Ssam 703189251Ssamlaunchers: $(LAUNCHER_TARGETS) 704189251Ssam 705189251Ssamjmods: $(JMOD_TARGETS) 706189251Ssam 707189251Ssamstrip-binaries: $(STRIP_TARGETS) 708189251Ssam 709189251Ssam# Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which 710189251Ssam# is actually handled by jdk.jdi-gensrc 711189251Ssamjdk.jdwp.agent-gensrc: jdk.jdi-gensrc 712189251Ssam 713189251Ssam# Declare dependencies from <module> to all the individual targets specific 714189251Ssam# to that module <module>-*, that are needed for the exploded image. 715189251Ssam$(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc)) 716189251Ssam$(foreach m, $(JAVA_MODULES), $(eval $m: $m-java)) 717189251Ssam$(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata)) 718189251Ssam$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic)) 719189251Ssam$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs)) 720189251Ssam$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers)) 721189251Ssam$(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy)) 722189251Ssamdemos: demos-jdk 723189251Ssam 724189251Ssamsamples: samples-jdk 725189251Ssam 726189251Ssam# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk. 727189251Ssamexploded-image: $(ALL_MODULES) 728189251Ssam 729189251Ssamcreate-buildjdk: create-buildjdk-copy create-buildjdk-interim-image 730189251Ssam 731189251Ssammac-bundles: mac-bundles-jdk 732189251Ssam 733# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables, 734# and in line with this, our targets for creating these are named *-image[s]. 735 736# This target builds the product images, e.g. the JRE and JDK image 737# (and possibly other, more specific versions) 738product-images: jimages demos samples zip-security exploded-image 739 740# The module summary cannot be run when: 741# * Cross compiling and building a partial BUILDJDK for the build host 742# * An external buildjdk has been supplied since it may not match the 743# module selection of the target jdk 744ifneq ($(CREATE_BUILDJDK), true) 745 ifeq ($(EXTERNAL_BUILDJDK), false) 746 product-images: generate-summary 747 endif 748endif 749 750ifeq ($(OPENJDK_TARGET_OS), macosx) 751 product-images: mac-bundles 752endif 753 754# This target builds the documentation image 755docs-image: docs-javadoc docs-jvmtidoc 756 757# This target builds the test image 758test-image: prepare-test-image test-image-hotspot-jtreg-native \ 759 test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest 760 761# all-images is the top-most target, it builds all our deliverables ("images"). 762all-images: product-images test-image docs-image 763 764ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers jmods \ 765 jdk.jdwp.agent-gensrc $(ALL_MODULES) demos samples exploded-image \ 766 create-buildjdk mac-bundles product-images docs-image test-image all-images 767 768################################################################################ 769 770# Traditional targets typically run by users. 771# These can be considered aliases for the targets now named by a more 772# "modern" naming scheme. 773default: $(DEFAULT_MAKE_TARGET) 774jdk: exploded-image 775images: product-images 776docs: docs-image 777all: all-images 778 779ALL_TARGETS += default jdk images docs all 780 781################################################################################ 782################################################################################ 783# 784# Clean targets 785# 786################################################################################ 787# Clean targets are automatically run serially by the Makefile calling this 788# file. 789 790CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \ 791 images make-support test-make bundles buildjdk 792CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS)) 793CLEAN_SUPPORT_DIRS += demos 794CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS)) 795CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib 796CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS)) 797CLEAN_PHASES := gensrc java native include docs 798CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES)) 799CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES)) 800# Construct targets of the form clean-$module-$phase 801CLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \ 802 $(addprefix $m-, $(CLEAN_PHASES)))) 803 804# Remove everything, except the output from configure. 805clean: $(CLEAN_DIR_TARGETS) 806 ($(CD) $(OUTPUT_ROOT) && $(RM) -r build*.log*) 807 $(ECHO) Cleaned all build artifacts. 808 809$(CLEAN_DIR_TARGETS): 810 $(call CleanDir,$(patsubst clean-%, %, $@)) 811 812$(CLEAN_SUPPORT_DIR_TARGETS): 813 $(call CleanSupportDir,$(patsubst clean-%, %, $@)) 814 815$(CLEAN_TEST_TARGETS): 816 $(call CleanTest,$(patsubst clean-test-%, %, $@)) 817 818$(CLEAN_PHASE_TARGETS): 819 $(call Clean-$(patsubst clean-%,%, $@)) 820 821$(CLEAN_MODULE_TARGETS): 822 $(call CleanModule,$(patsubst clean-%, %, $@)) 823 824$(CLEAN_MODULE_PHASE_TARGETS): 825 $(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \ 826 $(word 2, $(subst -,$(SPACE),$@))) 827 828# When removing the support dir, we must also remove jdk. Building classes has 829# the side effect of generating native headers. The headers end up in support 830# while classes and touch files end up in jdk. 831clean-support: clean-jdk 832 833# Remove everything, including configure configuration. If the output 834# directory was created by configure and now becomes empty, remove it as well. 835dist-clean: clean 836 ($(CD) $(OUTPUT_ROOT) && \ 837 $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide) 838 $(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \ 839 if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \ 840 $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \ 841 else \ 842 ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \ 843 && $(RM) -r $(OUTPUT_ROOT)) \ 844 fi \ 845 ) 846 $(ECHO) Cleaned everything, you will have to re-run configure. 847 848ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_SUPPORT_DIR_TARGETS) \ 849 $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) \ 850 $(CLEAN_MODULE_PHASE_TARGETS) 851 852################################################################################ 853# Declare *-only targets for each normal target 854$(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t))) 855 856ALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS))) 857 858################################################################################ 859 860# Include JPRT targets 861include $(SRC_ROOT)/make/Jprt.gmk 862 863################################################################################ 864 865# The following targets are intentionally not added to ALL_TARGETS since they 866# are internal only, to support Init.gmk. 867 868print-targets: 869 @$(ECHO) $(sort $(ALL_TARGETS)) 870 871print-modules: 872 @$(ECHO) $(sort $(ALL_MODULES)) 873 874create-main-targets-include: 875 $(call LogInfo, Generating main target list) 876 @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \ 877 $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk 878 879################################################################################ 880 881 882# workaround issue when building open targets when closed jib-profiles.js is used 883installer: product-images test-image 884 885.PHONY: $(ALL_TARGETS) 886 887FRC: # Force target 888