1 # 2 # Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 ################################################################################ 27 # This is the main makefile containing most actual top level targets. 28 ################################################################################ 29 30 # Declare ALL_TARGETS as an immediate variable. This variable is a list of all 31 # valid top level targets. It's used to declare them all as PHONY and to 32 # generate the -only targets. 33 34 ALL_TARGETS := 35 36 DEFAULT_TARGET := default-target 37 38 include MakeFileStart.gmk 39 40 ################################################################################ 41 42 include $(TOPDIR)/make/MainSupport.gmk 43 44 include FindTests.gmk 45 46 ifeq ($(UPDATE_MODULE_DEPS), true) 47 # Update module-deps.gmk if requested. This is read in Modules.gmk. 48 GENERATE_MODULE_DEPS_FILE := true 49 endif 50 51 include Modules.gmk 52 53 # Are we requested to ignore dependencies? 54 ifneq ($(findstring -only, $(MAKECMDGOALS)), ) 55 DEPS := none 56 endif 57 58 59 # All modules for the current target platform. 60 ALL_MODULES := $(call FindAllModules) 61 62 ################################################################################ 63 # 64 # Recipes for all targets. Only recipes, dependencies are declared later. 65 # 66 ################################################################################ 67 68 ################################################################################ 69 # Interim/build tools targets, compiling tools used during the build 70 71 $(eval $(call SetupTarget, buildtools-langtools, \ 72 MAKEFILE := ToolsLangtools, \ 73 )) 74 75 $(eval $(call SetupTarget, interim-langtools, \ 76 MAKEFILE := CompileInterimLangtools, \ 77 )) 78 79 $(eval $(call SetupTarget, interim-tzdb, \ 80 MAKEFILE := CopyInterimTZDB, \ 81 )) 82 83 $(eval $(call SetupTarget, buildtools-jdk, \ 84 MAKEFILE := CompileToolsJdk, \ 85 DEPS := interim-langtools interim-tzdb, \ 86 )) 87 88 $(eval $(call SetupTarget, buildtools-modules, \ 89 MAKEFILE := CompileModuleTools, \ 90 )) 91 92 $(eval $(call SetupTarget, buildtools-hotspot, \ 93 MAKEFILE := CompileToolsHotspot, \ 94 )) 95 96 ################################################################################ 97 # Gensrc targets, generating source before java compilation can be done 98 # 99 $(eval $(call DeclareRecipesForPhase, GENSRC, \ 100 TARGET_SUFFIX := gensrc-src, \ 101 FILE_PREFIX := Gensrc, \ 102 CHECK_MODULES := $(ALL_MODULES), \ 103 )) 104 105 $(foreach m, $(GENSRC_MODULES), $(eval $m-gensrc: $m-gensrc-src)) 106 107 LANGTOOLS_GENSRC_TARGETS := $(filter $(addsuffix -%, $(LANGTOOLS_MODULES)), $(GENSRC_TARGETS)) 108 INTERIM_LANGTOOLS_GENSRC_TARGETS := $(filter $(addsuffix -%, \ 109 $(INTERIM_LANGTOOLS_BASE_MODULES)), $(GENSRC_TARGETS)) 110 HOTSPOT_GENSRC_TARGETS := $(filter $(addsuffix -%, $(HOTSPOT_MODULES)), $(GENSRC_TARGETS)) 111 JDK_GENSRC_TARGETS := $(filter-out $(LANGTOOLS_GENSRC_TARGETS) \ 112 $(HOTSPOT_GENSRC_TARGETS), $(GENSRC_TARGETS)) 113 114 GENSRC_MODULEINFO_MODULES := $(ALL_MODULES) 115 GENSRC_MODULEINFO_TARGETS := $(addsuffix -gensrc-moduleinfo, \ 116 $(GENSRC_MODULEINFO_MODULES)) 117 118 GENSRC_MODULES := $(GENSRC_MODULEINFO_MODULES) 119 GENSRC_TARGETS += $(sort $(GENSRC_MODULEINFO_TARGETS) \ 120 $(addsuffix -gensrc, $(GENSRC_MODULES))) 121 122 define DeclareModuleInfoRecipe 123 $1-gensrc-moduleinfo: 124 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ 125 -f common/modules/GensrcModuleInfo.gmk MODULE=$1) 126 127 $1-gensrc: $1-gensrc-moduleinfo 128 endef 129 130 $(foreach m, $(GENSRC_MODULEINFO_MODULES), $(eval $(call DeclareModuleInfoRecipe,$m))) 131 132 ALL_TARGETS += $(GENSRC_TARGETS) 133 134 ################################################################################ 135 # Generate data targets 136 $(eval $(call DeclareRecipesForPhase, GENDATA, \ 137 TARGET_SUFFIX := gendata, \ 138 FILE_PREFIX := Gendata, \ 139 CHECK_MODULES := $(ALL_MODULES), \ 140 )) 141 142 ALL_TARGETS += $(GENDATA_TARGETS) 143 144 ################################################################################ 145 # Copy files targets 146 $(eval $(call DeclareRecipesForPhase, COPY, \ 147 TARGET_SUFFIX := copy, \ 148 FILE_PREFIX := Copy, \ 149 CHECK_MODULES := $(ALL_MODULES), \ 150 )) 151 152 ALL_COPY_MODULES += $(COPY_MODULES) 153 ALL_COPY_TARGETS += $(COPY_TARGETS) 154 155 IMPORT_COPY_MODULES := $(call FindImportedModules) 156 IMPORT_COPY_TARGETS := $(addsuffix -copy, $(IMPORT_COPY_MODULES)) 157 ALL_COPY_MODULES += $(IMPORT_COPY_MODULES) 158 ALL_COPY_TARGETS += $(IMPORT_COPY_TARGETS) 159 160 define DeclareImportCopyRecipe 161 $1-copy: 162 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ 163 -f CopyImportModules.gmk MODULE=$1) 164 endef 165 166 $(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m))) 167 168 ALL_TARGETS += $(ALL_COPY_TARGETS) 169 170 ################################################################################ 171 # Targets for compiling all java modules. 172 JAVA_MODULES := $(ALL_MODULES) 173 JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES)) 174 175 define DeclareCompileJavaRecipe 176 $1-java: 177 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ 178 $(patsubst %,-I%/modules/$1,$(PHASE_MAKEDIRS)) \ 179 -f CompileJavaModules.gmk MODULE=$1) 180 endef 181 182 $(foreach m, $(JAVA_MODULES), $(eval $(call DeclareCompileJavaRecipe,$m))) 183 184 ALL_TARGETS += $(JAVA_TARGETS) 185 186 ################################################################################ 187 # Targets for compiling native libraries 188 $(eval $(call DeclareRecipesForPhase, LIBS, \ 189 TARGET_SUFFIX := libs, \ 190 FILE_PREFIX := Lib, \ 191 CHECK_MODULES := $(ALL_MODULES), \ 192 )) 193 194 ALL_TARGETS += $(LIBS_TARGETS) 195 196 ################################################################################ 197 # Targets for compiling static versions of certain native libraries. These do 198 # not end up in the jmods or the normal JDK image, but are instead bundled into 199 # a special deliverable. 200 $(eval $(call DeclareRecipesForPhase, STATIC_LIBS, \ 201 TARGET_SUFFIX := static-libs, \ 202 FILE_PREFIX := Lib, \ 203 CHECK_MODULES := $(ALL_MODULES), \ 204 EXTRA_ARGS := STATIC_LIBS=true, \ 205 )) 206 207 ALL_TARGETS += $(STATIC_LIBS_TARGETS) 208 209 ################################################################################ 210 # Targets for compiling native executables 211 $(eval $(call DeclareRecipesForPhase, LAUNCHER, \ 212 TARGET_SUFFIX := launchers, \ 213 FILE_PREFIX := Launcher, \ 214 CHECK_MODULES := $(ALL_MODULES), \ 215 )) 216 217 ALL_TARGETS += $(LAUNCHER_TARGETS) 218 219 ################################################################################ 220 # Build hotspot target 221 222 HOTSPOT_VARIANT_TARGETS := $(addprefix hotspot-, $(JVM_VARIANTS)) 223 HOTSPOT_VARIANT_GENSRC_TARGETS := $(addsuffix -gensrc, $(HOTSPOT_VARIANT_TARGETS)) 224 HOTSPOT_VARIANT_LIBS_TARGETS := $(addsuffix -libs, $(HOTSPOT_VARIANT_TARGETS)) 225 HOTSPOT_VARIANT_STATIC_LIBS_TARGETS := $(addsuffix -static-libs, $(HOTSPOT_VARIANT_TARGETS)) 226 227 define DeclareHotspotGensrcRecipe 228 hotspot-$1-gensrc: 229 $$(call LogInfo, Building JVM variant '$1' with features '$(JVM_FEATURES_$1)') 230 +($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f gensrc/GenerateSources.gmk \ 231 JVM_VARIANT=$1) 232 endef 233 234 $(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotGensrcRecipe,$v))) 235 236 define DeclareHotspotLibsRecipe 237 hotspot-$1-libs: 238 +($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \ 239 JVM_VARIANT=$1) 240 endef 241 242 $(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotLibsRecipe,$v))) 243 244 define DeclareHotspotStaticLibsRecipe 245 hotspot-$1-static-libs: 246 +($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \ 247 JVM_VARIANT=$1 STATIC_LIBS=true) 248 endef 249 250 $(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotStaticLibsRecipe,$v))) 251 252 $(eval $(call SetupTarget, hotspot-ide-project, \ 253 MAKEFILE := ide/visualstudio/hotspot/CreateVSProject, \ 254 DEPS := hotspot exploded-image, \ 255 ARGS := -I$(TOPDIR)/make/hotspot, \ 256 )) 257 258 $(eval $(call SetupTarget, eclipse-java-env, \ 259 MAKEFILE := ide/eclipse/CreateWorkspace, \ 260 ARGS := --always-make WORKSPACE=java, \ 261 )) 262 263 $(eval $(call SetupTarget, eclipse-hotspot-env, \ 264 MAKEFILE := ide/eclipse/CreateWorkspace, \ 265 ARGS := --always-make WORKSPACE=hotspot, \ 266 )) 267 268 $(eval $(call SetupTarget, eclipse-native-env, \ 269 MAKEFILE := ide/eclipse/CreateWorkspace, \ 270 ARGS := --always-make WORKSPACE=native, \ 271 )) 272 273 $(eval $(call SetupTarget, eclipse-mixed-env, \ 274 MAKEFILE := ide/eclipse/CreateWorkspace, \ 275 ARGS := --always-make, \ 276 )) 277 278 $(eval $(call SetupTarget, hotspot-xcode-project, \ 279 MAKEFILE := ide/xcode/hotspot/CreateXcodeProject, \ 280 TARGET := build, \ 281 DEPS := hotspot compile-commands-hotspot jdk-image, \ 282 )) 283 284 $(eval $(call SetupTarget, open-hotspot-xcode-project, \ 285 MAKEFILE := ide/xcode/hotspot/CreateXcodeProject, \ 286 TARGET := open, \ 287 DEPS := hotspot-xcode-project, \ 288 )) 289 290 ALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \ 291 $(HOTSPOT_VARIANT_LIBS_TARGETS) $(HOTSPOT_VARIANT_STATIC_LIBS_TARGETS) 292 293 ################################################################################ 294 # Help and user support 295 296 $(eval $(call SetupTarget, doctor, \ 297 MAKEFILE := Doctor, \ 298 )) 299 300 ################################################################################ 301 # Generate libs and launcher targets for creating compile_commands.json fragments 302 define DeclareCompileCommandsRecipe 303 $1-compile-commands: 304 $$(call LogInfo, Generating compile_commands.json fragments for $1) 305 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk $1-only \ 306 GENERATE_COMPILE_COMMANDS_ONLY=true) 307 308 COMPILE_COMMANDS_TARGETS_$2 += $1-compile-commands 309 endef 310 311 $(foreach t, $(HOTSPOT_VARIANT_LIBS_TARGETS), \ 312 $(eval $(call DeclareCompileCommandsRecipe,$t,HOTSPOT)) \ 313 ) 314 315 $(foreach t, $(LIBS_TARGETS) $(LAUNCHER_TARGETS), \ 316 $(eval $(call DeclareCompileCommandsRecipe,$t,JDK)) \ 317 ) 318 319 $(eval $(call SetupTarget, compile-commands, \ 320 MAKEFILE := CompileCommands, \ 321 )) 322 323 $(eval $(call SetupTarget, compile-commands-hotspot, \ 324 MAKEFILE := CompileCommands, \ 325 )) 326 327 ALL_TARGETS += $(COMPILE_COMMANDS_TARGETS_HOTSPOT) $(COMPILE_COMMANDS_TARGETS_JDK) 328 329 ################################################################################ 330 # VS Code projects 331 332 $(eval $(call SetupTarget, vscode-project, \ 333 MAKEFILE := ide/vscode/hotspot/CreateVSCodeProject, \ 334 ARGS := VSCODE_INDEXER=cpptools, \ 335 DEPS := compile-commands, \ 336 )) 337 338 $(eval $(call SetupTarget, vscode-project-clangd, \ 339 MAKEFILE := ide/vscode/hotspot/CreateVSCodeProject, \ 340 ARGS := VSCODE_INDEXER=clangd, \ 341 DEPS := compile-commands, \ 342 )) 343 344 $(eval $(call SetupTarget, vscode-project-rtags, \ 345 MAKEFILE := ide/vscode/hotspot/CreateVSCodeProject, \ 346 ARGS := VSCODE_INDEXER=rtags, \ 347 DEPS := compile-commands, \ 348 )) 349 350 $(eval $(call SetupTarget, vscode-project-ccls, \ 351 MAKEFILE := ide/vscode/hotspot/CreateVSCodeProject, \ 352 ARGS := VSCODE_INDEXER=ccls, \ 353 DEPS := compile-commands, \ 354 )) 355 356 ################################################################################ 357 # IDEA IntelliJ projects 358 359 $(eval $(call SetupTarget, idea-gen-config, \ 360 MAKEFILE := ide/idea/jdk/IdeaGenConfig, \ 361 ARGS := IDEA_OUTPUT="$(IDEA_OUTPUT)" MODULES="$(MODULES)", \ 362 )) 363 364 ################################################################################ 365 # Build demos targets 366 367 # The demos are currently linking to libjvm and libjava, just like all other 368 # jdk libs, even though they don't need to. To avoid warnings, make sure they 369 # aren't built until after libjava and libjvm are available to link to. 370 $(eval $(call SetupTarget, demos-jdk, \ 371 MAKEFILE := CompileDemos, \ 372 DEPS := java.base-libs exploded-image buildtools-jdk, \ 373 )) 374 375 $(eval $(call SetupTarget, test-image-demos-jdk, \ 376 MAKEFILE := CompileDemos, \ 377 TARGET := images, \ 378 DEPS := demos-jdk, \ 379 )) 380 381 ################################################################################ 382 # Jigsaw specific data and analysis targets. 383 384 $(eval $(call SetupTarget, generate-summary, \ 385 MAKEFILE := GenerateModuleSummary, \ 386 DEPS := jmods buildtools-modules runnable-buildjdk, \ 387 )) 388 389 ################################################################################ 390 # Jmod targets 391 392 JMOD_MODULES := $(ALL_MODULES) 393 JMOD_TARGETS := $(addsuffix -jmod, $(JMOD_MODULES)) 394 395 define DeclareJmodRecipe 396 $1-jmod: 397 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ 398 $(patsubst %,-I%/modules/$1,$(PHASE_MAKEDIRS)) \ 399 -f CreateJmods.gmk MODULE=$1) 400 endef 401 402 $(foreach m, $(JMOD_MODULES), $(eval $(call DeclareJmodRecipe,$m))) 403 404 ALL_TARGETS += $(JMOD_TARGETS) 405 406 ################################################################################ 407 # Images targets 408 409 $(eval $(call SetupTarget, store-source-revision, \ 410 MAKEFILE := SourceRevision, \ 411 TARGET := store-source-revision, \ 412 )) 413 414 $(eval $(call SetupTarget, create-source-revision-tracker, \ 415 MAKEFILE := SourceRevision, \ 416 TARGET := create-source-revision-tracker, \ 417 )) 418 419 BOOTCYCLE_TARGET := product-images 420 BOOTCYCLE_SPEC := $(dir $(SPEC))bootcycle-spec.gmk 421 422 bootcycle-images: 423 ifneq ($(COMPILE_TYPE), cross) 424 $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image) 425 $(call MakeDir, $(OUTPUTDIR)/bootcycle-build) 426 +$(MAKE) $(MAKE_ARGS) -f $(TOPDIR)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \ 427 LOG_PREFIX="[bootcycle] " JOBS= SPEC=$(BOOTCYCLE_SPEC) main 428 else 429 $(call LogWarn, Boot cycle build disabled when cross compiling) 430 endif 431 432 $(eval $(call SetupTarget, zip-security, \ 433 MAKEFILE := ZipSecurity, \ 434 DEPS := buildtools-jdk java.base-java java.security.jgss-java java.security.jgss-libs, \ 435 )) 436 437 $(eval $(call SetupTarget, zip-source, \ 438 MAKEFILE := ZipSource, \ 439 DEPS := buildtools-jdk gensrc, \ 440 )) 441 442 $(eval $(call SetupTarget, jrtfs-jar, \ 443 MAKEFILE := JrtfsJar, \ 444 DEPS := interim-langtools, \ 445 )) 446 447 $(eval $(call SetupTarget, jdk-image, \ 448 MAKEFILE := Images, \ 449 TARGET := jdk, \ 450 DEPS := jmods zip-source demos release-file, \ 451 )) 452 453 $(eval $(call SetupTarget, legacy-jre-image, \ 454 MAKEFILE := Images, \ 455 TARGET := jre, \ 456 DEPS := jmods release-file, \ 457 )) 458 459 $(eval $(call SetupTarget, symbols-image, \ 460 MAKEFILE := Images, \ 461 TARGET := symbols, \ 462 )) 463 464 $(eval $(call SetupTarget, static-launchers, \ 465 MAKEFILE := StaticLibs, \ 466 TARGET := static-launchers, \ 467 DEPS := hotspot-static-libs static-libs, \ 468 )) 469 470 $(eval $(call SetupTarget, static-jdk-image, \ 471 MAKEFILE := StaticLibs, \ 472 TARGET := static-jdk-image, \ 473 DEPS := static-exploded-image jdk-image, \ 474 )) 475 476 $(eval $(call SetupTarget, static-libs-image, \ 477 MAKEFILE := StaticLibsImage, \ 478 TARGET := static-libs-image, \ 479 )) 480 481 $(eval $(call SetupTarget, mac-jdk-bundle, \ 482 MAKEFILE := MacBundles, \ 483 TARGET := jdk-bundle, \ 484 DEPS := jdk-image, \ 485 )) 486 487 $(eval $(call SetupTarget, mac-legacy-jre-bundle, \ 488 MAKEFILE := MacBundles, \ 489 TARGET := jre-bundle, \ 490 DEPS := legacy-jre-image, \ 491 )) 492 493 $(eval $(call SetupTarget, release-file, \ 494 MAKEFILE := ReleaseFile, \ 495 DEPS := create-source-revision-tracker, \ 496 )) 497 498 $(eval $(call SetupTarget, exploded-image-optimize, \ 499 MAKEFILE := ExplodedImageOptimize, \ 500 DEPS := java copy gendata java.base-libs java.base-launchers \ 501 buildtools-modules, \ 502 )) 503 504 ifeq ($(JCOV_ENABLED), true) 505 $(eval $(call SetupTarget, jcov-image, \ 506 MAKEFILE := Coverage, \ 507 TARGET := jcov-image, \ 508 DEPS := jdk-image, \ 509 )) 510 endif 511 512 ALL_TARGETS += bootcycle-images 513 514 ################################################################################ 515 # Docs targets 516 517 # If building full docs, to complete docs-*-api we need both the javadoc and 518 # graphs targets. 519 $(eval $(call SetupTarget, docs-jdk-api-javadoc, \ 520 MAKEFILE := Docs, \ 521 TARGET := docs-jdk-api-javadoc, \ 522 )) 523 524 $(eval $(call SetupTarget, docs-jdk-api-graphs, \ 525 MAKEFILE := Docs, \ 526 TARGET := docs-jdk-api-graphs, \ 527 DEPS := buildtools-modules runnable-buildjdk, \ 528 )) 529 530 $(eval $(call SetupTarget, docs-javase-api-javadoc, \ 531 MAKEFILE := Docs, \ 532 TARGET := docs-javase-api-javadoc, \ 533 )) 534 535 $(eval $(call SetupTarget, docs-javase-api-graphs, \ 536 MAKEFILE := Docs, \ 537 TARGET := docs-javase-api-graphs, \ 538 DEPS := buildtools-modules runnable-buildjdk, \ 539 )) 540 541 $(eval $(call SetupTarget, docs-reference-api-javadoc, \ 542 MAKEFILE := Docs, \ 543 TARGET := docs-reference-api-javadoc, \ 544 )) 545 546 $(eval $(call SetupTarget, docs-reference-api-graphs, \ 547 MAKEFILE := Docs, \ 548 TARGET := docs-reference-api-graphs, \ 549 DEPS := buildtools-modules runnable-buildjdk, \ 550 )) 551 552 # The gensrc steps for jdk.jdi create html spec files. 553 $(eval $(call SetupTarget, docs-jdk-specs, \ 554 MAKEFILE := Docs, \ 555 TARGET := docs-jdk-specs, \ 556 DEPS := buildtools-jdk jdk.jdi-gensrc docs-jdk-index, \ 557 )) 558 559 $(eval $(call SetupTarget, docs-jdk-index, \ 560 MAKEFILE := Docs, \ 561 TARGET := docs-jdk-index, \ 562 )) 563 564 $(eval $(call SetupTarget, docs-zip, \ 565 MAKEFILE := Docs, \ 566 TARGET := docs-zip, \ 567 DEPS := docs-jdk buildtools-jdk, \ 568 )) 569 570 $(eval $(call SetupTarget, docs-specs-zip, \ 571 MAKEFILE := Docs, \ 572 TARGET := docs-specs-zip, \ 573 DEPS := docs-jdk-specs buildtools-jdk, \ 574 )) 575 576 $(eval $(call SetupTarget, update-build-docs, \ 577 MAKEFILE := UpdateBuildDocs, \ 578 )) 579 580 $(eval $(call SetupTarget, update-sleef-source, \ 581 MAKEFILE := UpdateSleefSource, \ 582 )) 583 584 $(eval $(call SetupTarget, update-x11wrappers, \ 585 MAKEFILE := UpdateX11Wrappers, \ 586 DEPS := java.base-copy buildtools-jdk, \ 587 )) 588 589 ifneq ($(HSDIS_BACKEND), none) 590 $(eval $(call SetupTarget, build-hsdis, \ 591 MAKEFILE := Hsdis, \ 592 TARGET := build, \ 593 )) 594 595 $(eval $(call SetupTarget, install-hsdis, \ 596 MAKEFILE := Hsdis, \ 597 TARGET := install, \ 598 DEPS := jdk-image, \ 599 )) 600 endif 601 602 ################################################################################ 603 # Cross compilation support 604 605 ifeq ($(CREATING_BUILDJDK), true) 606 # This target is only called by the recursive call below. 607 create-buildjdk-interim-image-helper: interim-image jdk.jlink-launchers \ 608 java.base-copy jdk.jdeps-launchers jdk.compiler-launchers 609 endif 610 611 BUILDJDK_MODULES := $(sort $(foreach m, jdk.jlink jdk.compiler \ 612 $(INTERIM_IMAGE_MODULES), $(call FindTransitiveDepsForModule, $m) $m)) 613 614 $(eval $(call SetupTarget, create-buildjdk-interim-image, \ 615 MAKEFILE := Main, \ 616 TARGET := create-buildjdk-interim-image-helper, \ 617 ARGS := SPEC=$(dir $(SPEC))buildjdk-spec.gmk \ 618 HOTSPOT_SPEC=$(dir $(SPEC))buildjdk-spec.gmk \ 619 CREATING_BUILDJDK=true \ 620 LOG_PREFIX="[buildjdk] " \ 621 JAVA_MODULES="$(BUILDJDK_MODULES)", \ 622 )) 623 624 ################################################################################ 625 # The interim-image is a small jlinked image that is used to generate artifacts 626 # at build time for use when linking the real images. 627 628 INTERIM_JMOD_TARGETS := $(addsuffix -interim-jmod, $(INTERIM_IMAGE_MODULES)) 629 630 define DeclareInterimJmodRecipe 631 $1-interim-jmod: 632 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \ 633 MODULE=$1 \ 634 JMODS_DIR=$(INTERIM_JMODS_DIR) \ 635 JMODS_SUPPORT_DIR=$(INTERIM_JMODS_DIR)/support \ 636 INTERIM_JMOD=true \ 637 ) 638 endef 639 640 $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $(call DeclareInterimJmodRecipe,$m))) 641 642 $(eval $(call SetupTarget, interim-image, \ 643 MAKEFILE := InterimImage, \ 644 )) 645 646 ifeq ($(ENABLE_GENERATE_CLASSLIST), true) 647 $(eval $(call SetupTarget, generate-link-opt-data, \ 648 MAKEFILE := GenerateLinkOptData, \ 649 )) 650 endif 651 652 ################################################################################ 653 # Generate test names for all JTReg test groups 654 # 655 656 define DeclareRunTestRecipe 657 test-$1: 658 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk \ 659 TEST="$1") 660 661 exploded-test-$1: 662 +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk \ 663 TEST="$1" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR)) 664 endef 665 666 # ALL_NAMED_TESTS is defined in FindTests.gmk 667 $(foreach t, $(ALL_NAMED_TESTS), $(eval $(call DeclareRunTestRecipe,$t))) 668 ALL_TEST_TARGETS := $(addprefix test-, $(ALL_NAMED_TESTS)) 669 670 # We only support the "exploded-test-gtest" shortcut 671 ALL_EXPLODED_TESTS := gtest 672 ALL_EXPLODED_TEST_TARGETS := $(addprefix exploded-test-, $(ALL_EXPLODED_TESTS)) 673 674 ALL_TARGETS += $(ALL_TEST_TARGETS) $(ALL_EXPLODED_TEST_TARGETS) 675 676 ################################################################################ 677 # Build tests and microbenchmarks 678 # 679 680 $(eval $(call SetupTarget, prepare-test-image, \ 681 MAKEFILE := TestImage, \ 682 TARGET := prepare-test-image, \ 683 )) 684 685 $(eval $(call SetupTarget, build-test-hotspot-jtreg-native, \ 686 MAKEFILE := test/JtregNativeHotspot, \ 687 TARGET := build-test-hotspot-jtreg-native, \ 688 DEPS := buildtools-jdk, \ 689 )) 690 691 $(eval $(call SetupTarget, test-image-hotspot-jtreg-native, \ 692 MAKEFILE := test/JtregNativeHotspot, \ 693 TARGET := test-image-hotspot-jtreg-native, \ 694 DEPS := build-test-hotspot-jtreg-native, \ 695 )) 696 697 $(eval $(call SetupTarget, build-test-jdk-jtreg-native, \ 698 MAKEFILE := test/JtregNativeJdk, \ 699 TARGET := build-test-jdk-jtreg-native, \ 700 DEPS := buildtools-jdk java.base-libs, \ 701 )) 702 703 $(eval $(call SetupTarget, test-image-jdk-jtreg-native, \ 704 MAKEFILE := test/JtregNativeJdk, \ 705 TARGET := test-image-jdk-jtreg-native, \ 706 DEPS := build-test-jdk-jtreg-native, \ 707 )) 708 709 # Native files needed by the testlib 710 $(eval $(call SetupTarget, build-test-lib-native, \ 711 MAKEFILE := test/BuildTestLibNative, \ 712 TARGET := build-test-lib-native, \ 713 DEPS := buildtools-jdk java.base-libs, \ 714 )) 715 716 $(eval $(call SetupTarget, test-image-lib-native, \ 717 MAKEFILE := test/BuildTestLibNative, \ 718 TARGET := test-image-lib-native, \ 719 DEPS := build-test-lib-native, \ 720 )) 721 722 # Native files needed when testing the testlib itself 723 $(eval $(call SetupTarget, build-test-libtest-jtreg-native, \ 724 MAKEFILE := test/JtregNativeLibTest, \ 725 TARGET := build-test-libtest-jtreg-native, \ 726 DEPS := buildtools-jdk, \ 727 )) 728 729 $(eval $(call SetupTarget, test-image-libtest-jtreg-native, \ 730 MAKEFILE := test/JtregNativeLibTest, \ 731 TARGET := test-image-libtest-jtreg-native, \ 732 DEPS := build-test-libtest-jtreg-native, \ 733 )) 734 735 ifneq ($(GTEST_FRAMEWORK_SRC), ) 736 $(eval $(call SetupTarget, test-image-hotspot-gtest, \ 737 MAKEFILE := hotspot/test/GtestImage, \ 738 DEPS := hotspot, \ 739 )) 740 endif 741 742 $(eval $(call SetupTarget, build-test-lib, \ 743 MAKEFILE := test/BuildTestLib, \ 744 TARGET := build-test-lib, \ 745 DEPS := exploded-image, \ 746 )) 747 748 $(eval $(call SetupTarget, test-image-lib, \ 749 MAKEFILE := test/BuildTestLib, \ 750 TARGET := test-image-lib, \ 751 DEPS := build-test-lib, \ 752 )) 753 754 $(eval $(call SetupTarget, build-test-setup-aot, \ 755 MAKEFILE := test/BuildTestSetupAOT, \ 756 DEPS := interim-langtools exploded-image, \ 757 )) 758 759 $(eval $(call SetupTarget, test-image-setup-aot, \ 760 MAKEFILE := test/BuildTestSetupAOT, \ 761 TARGET := images, \ 762 DEPS := build-test-setup-aot, \ 763 )) 764 765 ifeq ($(BUILD_FAILURE_HANDLER), true) 766 # Builds the failure handler jtreg extension 767 $(eval $(call SetupTarget, build-test-failure-handler, \ 768 MAKEFILE := test/BuildFailureHandler, \ 769 TARGET := build, \ 770 DEPS := interim-langtools, \ 771 )) 772 773 # Copies the failure handler jtreg extension into the test image 774 $(eval $(call SetupTarget, test-image-failure-handler, \ 775 MAKEFILE := test/BuildFailureHandler, \ 776 TARGET := images, \ 777 DEPS := build-test-failure-handler, \ 778 )) 779 endif 780 781 ifeq ($(BUILD_JTREG_TEST_THREAD_FACTORY), true) 782 # Builds the test thread factory jtreg extension 783 $(eval $(call SetupTarget, build-test-test-thread-factory, \ 784 MAKEFILE := test/BuildJtregTestThreadFactory, \ 785 TARGET := build, \ 786 DEPS := interim-langtools exploded-image, \ 787 )) 788 789 # Copies the jtreg test thread factory into the test image 790 $(eval $(call SetupTarget, test-image-test-thread-factory, \ 791 MAKEFILE := test/BuildJtregTestThreadFactory, \ 792 TARGET := images, \ 793 DEPS := build-test-test-thread-factory, \ 794 )) 795 endif 796 797 $(eval $(call SetupTarget, build-microbenchmark, \ 798 MAKEFILE := test/BuildMicrobenchmark, \ 799 DEPS := interim-langtools exploded-image build-test-lib, \ 800 )) 801 802 ################################################################################ 803 # Run tests 804 805 $(eval $(call SetupTarget, test, \ 806 MAKEFILE := RunTests, \ 807 ARGS := TEST="$(TEST)", \ 808 DEPS := jdk-image test-image $(TEST_DEPS), \ 809 )) 810 811 $(eval $(call SetupTarget, exploded-test, \ 812 MAKEFILE := RunTests, \ 813 ARGS := TEST="$(TEST)" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR), \ 814 DEPS := exploded-image test-image $(TEST_DEPS), \ 815 )) 816 817 ifeq ($(JCOV_ENABLED), true) 818 $(eval $(call SetupTarget, jcov-test, \ 819 MAKEFILE := RunTests, \ 820 ARGS := TEST="$(TEST)" TEST_OPTS_JCOV=true, \ 821 DEPS := jcov-image test-image, \ 822 )) 823 endif 824 825 ################################################################################ 826 # Bundles 827 828 $(eval $(call SetupTarget, product-bundles, \ 829 MAKEFILE := Bundles, \ 830 TARGET := product-bundles, \ 831 DEPS := product-images, \ 832 )) 833 834 $(eval $(call SetupTarget, legacy-bundles, \ 835 MAKEFILE := Bundles, \ 836 TARGET := legacy-bundles, \ 837 DEPS := legacy-images, \ 838 )) 839 840 $(eval $(call SetupTarget, test-bundles, \ 841 MAKEFILE := Bundles, \ 842 TARGET := test-bundles, \ 843 DEPS := test-image, \ 844 )) 845 846 $(eval $(call SetupTarget, docs-jdk-bundles, \ 847 MAKEFILE := Bundles, \ 848 TARGET := docs-jdk-bundles, \ 849 DEPS := docs-image, \ 850 )) 851 852 $(eval $(call SetupTarget, docs-javase-bundles, \ 853 MAKEFILE := Bundles, \ 854 TARGET := docs-javase-bundles, \ 855 DEPS := docs-javase-image, \ 856 )) 857 858 $(eval $(call SetupTarget, docs-reference-bundles, \ 859 MAKEFILE := Bundles, \ 860 TARGET := docs-reference-bundles, \ 861 DEPS := docs-reference-image, \ 862 )) 863 864 $(eval $(call SetupTarget, static-libs-bundles, \ 865 MAKEFILE := Bundles, \ 866 TARGET := static-libs-bundles, \ 867 DEPS := static-libs-image, \ 868 )) 869 870 $(eval $(call SetupTarget, static-jdk-bundles, \ 871 MAKEFILE := Bundles, \ 872 TARGET := static-jdk-bundles, \ 873 DEPS := static-jdk-image, \ 874 )) 875 876 ifeq ($(JCOV_ENABLED), true) 877 $(eval $(call SetupTarget, jcov-bundles, \ 878 MAKEFILE := Bundles, \ 879 TARGET := jcov-bundles, \ 880 DEPS := jcov-image, \ 881 )) 882 endif 883 884 ################################################################################ 885 # 886 # Dependency declarations between targets. 887 # 888 # These are declared in two groups. First all dependencies between targets that 889 # have recipes above as these dependencies may be disabled. Then the aggregator 890 # targets that do not have recipes of their own, which will never have their 891 # dependencies disabled. 892 # 893 ################################################################################ 894 # Targets with recipes above 895 896 # If running an *-only target, parallel execution and dependencies between 897 # recipe targets are disabled. This makes it possible to run a select set of 898 # recipe targets in order. It's the responsibility of the user to make sure 899 # all prerequisites are fulfilled. 900 ifeq ($(DEPS), none) 901 .NOTPARALLEL: 902 else 903 $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools 904 905 interim-langtools: $(INTERIM_LANGTOOLS_GENSRC_TARGETS) 906 907 $(HOTSPOT_GENSRC_TARGETS): interim-langtools buildtools-hotspot 908 909 $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk 910 911 $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk 912 913 $(GENDATA_TARGETS): interim-langtools buildtools-jdk 914 915 $(JAVA_TARGETS): interim-langtools 916 917 # Declare dependencies between hotspot-<variant>* targets 918 $(foreach v, $(JVM_VARIANTS), \ 919 $(eval hotspot-$v-gensrc: java.base-copy buildtools-hotspot) \ 920 $(eval hotspot-$v-libs: hotspot-$v-gensrc java.base-copy) \ 921 $(eval hotspot-$v-static-libs: hotspot-$v-gensrc java.base-copy) \ 922 ) 923 924 # If not already set, set the JVM variant target so that the JVM will be built. 925 JVM_MAIN_LIB_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-libs 926 JVM_MAIN_GENSRC_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc 927 928 # Building one JVM variant is enough to start building the other libs 929 $(LIBS_TARGETS): $(JVM_MAIN_LIB_TARGETS) 930 931 # Static libs depend on hotspot gensrc 932 $(STATIC_LIBS_TARGETS): $(JVM_MAIN_GENSRC_TARGETS) 933 934 $(LAUNCHER_TARGETS): java.base-libs 935 936 # Declare dependency from <module>-java to <module>-gensrc 937 $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc)) 938 939 # Declare dependencies between java modules 940 $(foreach m, $(JAVA_MODULES), \ 941 $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \ 942 $(call FindDepsForModule,$m))))) 943 # Declare dependencies between the module meta targets 944 $(foreach m, $(ALL_MODULES), $(eval $m: $(call FindDepsForModule,$m))) 945 946 # Declare dependencies from <module>-lib to <module>-java 947 # Skip modules that do not have java source. 948 $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java)) 949 950 # Declare dependencies from all other <module>-lib to java.base-lib 951 $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \ 952 $(eval $t: java.base-libs)) 953 954 ifeq ($(ENABLE_HSDIS_BUNDLING), true) 955 java.base-copy: build-hsdis 956 endif 957 958 # On Windows, we need to copy tzmappings generated by gensrc 959 ifeq ($(call isTargetOs, windows), true) 960 java.base-copy: java.base-gensrc 961 endif 962 963 # jdk.accessibility depends on java.desktop 964 jdk.accessibility-libs: java.desktop-libs 965 966 # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a 967 # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a 968 # virtual target. 969 jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc 970 971 # jdk.jfr-gendata uses TOOL_JFR_GEN from buildtools-hotspot 972 jdk.jfr-gendata: buildtools-hotspot 973 974 # The swing beans need to have java base properly generated to avoid errors 975 # in javadoc. The X11 wrappers need the java.base include files to have been 976 # copied and processed. 977 java.desktop-gensrc-src: java.base-gensrc java.base-copy 978 979 jdk.jdeps-gendata: java 980 981 # jdk.compiler gendata generates ct.sym, which requires all generated 982 # java source and compiled classes present. 983 jdk.compiler-gendata: $(JAVA_TARGETS) 984 985 # jdk.javadoc gendata generates element-list, which requires all java sources 986 # but not compiled classes. 987 jdk.javadoc-gendata: $(GENSRC_TARGETS) 988 989 # ct.sym and element-list generation also needs the BUILD_JDK. If the 990 # BUILD_JDK was supplied externally, no extra prerequisites are needed. 991 ifeq ($(CREATE_BUILDJDK), true) 992 ifneq ($(CREATING_BUILDJDK), true) 993 # When cross compiling and an external BUILD_JDK wasn't supplied, it's 994 # produced by the create-buildjdk target. 995 jdk.compiler-gendata: create-buildjdk 996 jdk.javadoc-gendata: create-buildjdk 997 endif 998 else ifeq ($(EXTERNAL_BUILDJDK), false) 999 # When not cross compiling, the BUILD_JDK is the interim jdk image, and 1000 # the javac launcher is needed. 1001 jdk.compiler-gendata: jdk.compiler-launchers java.base-launchers 1002 jdk.javadoc-gendata: jdk.compiler-launchers 1003 endif 1004 1005 # Declare dependencies between jmod targets. 1006 # java.base jmod needs jrt-fs.jar and access to the jmods for all non 1007 # upgradeable modules and their transitive dependencies. 1008 # When creating the BUILDJDK, we don't need to add hashes to java.base, thus 1009 # we don't need to depend on all other jmods 1010 ifneq ($(CREATING_BUILDJDK), true) 1011 java.base-jmod: jrtfs-jar $(addsuffix -jmod, $(filter-out java.base, $(sort \ 1012 $(foreach m, $(filter-out $(call FindAllUpgradeableModules), $(JMOD_MODULES)), \ 1013 $m $(call FindTransitiveDepsForModules, $m) \ 1014 )))) 1015 endif 1016 1017 # If not already set, set the JVM target so that the JVM will be built. 1018 JVM_MAIN_TARGETS ?= hotspot 1019 1020 # Building java.base-jmod requires all of VM (ie hotspot) to be built. 1021 java.base-jmod: $(JVM_MAIN_TARGETS) 1022 1023 # Declare dependencies from <module>-jmod to all other module targets 1024 $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java)) 1025 $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata)) 1026 $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs)) 1027 $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers)) 1028 $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy)) 1029 $(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS))) 1030 $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS))) 1031 1032 # Setup the minimal set of generated native source dependencies for hotspot 1033 $(foreach v, $(JVM_VARIANTS), \ 1034 $(eval hotspot-$v-libs-compile-commands: hotspot-$v-gensrc) \ 1035 $(foreach m, $(filter java.desktop jdk.hotspot.agent, $(GENSRC_MODULES)), \ 1036 $(eval hotspot-$v-libs-compile-commands: $m-gensrc)) \ 1037 ) 1038 1039 # For the full JDK compile commands, create all possible generated sources 1040 $(foreach m, $(GENSRC_MODULES), $(eval $m-libs-compile-commands: $m-gensrc)) 1041 $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs-compile-commands: $m-java)) 1042 1043 $(COMPILE_COMMANDS_TARGETS_HOTSPOT): clean-compile-commands 1044 $(COMPILE_COMMANDS_TARGETS_JDK): clean-compile-commands 1045 compile-commands-hotspot: $(COMPILE_COMMANDS_TARGETS_HOTSPOT) 1046 compile-commands: $(COMPILE_COMMANDS_TARGETS_HOTSPOT) $(COMPILE_COMMANDS_TARGETS_JDK) 1047 1048 # The -static-libs targets depend on -java as well as java.base-copy. 1049 $(foreach m, $(filter $(JAVA_MODULES), $(STATIC_LIBS_MODULES)), \ 1050 $(eval $m-static-libs: $m-java java.base-copy)) 1051 1052 # Jmods cannot be created until we have the jmod tool ready to run. During 1053 # a normal build we run it from the exploded image, but when cross compiling 1054 # it's run from the buildjdk, which is either created at build time or user 1055 # supplied. 1056 ifeq ($(CREATE_BUILDJDK), true) 1057 ifneq ($(CREATING_BUILDJDK), true) 1058 # When cross compiling and buildjdk is to be created, simply depend on 1059 # creating the buildjdk. 1060 $(JMOD_TARGETS): create-buildjdk 1061 buildtools-modules: create-buildjdk 1062 else 1063 # While actually creating the buildjdk, we need to list the bare 1064 # minimum dependencies needed before running jmod, to avoid building 1065 # more than necessary. This includes: 1066 # * all java modules 1067 # * jdk.jlink-launchers 1068 # * copy jvm.cfg (done in java.base-copy) 1069 # * tzdb.dat (done in java.base-gendata) 1070 # Without all of these jimage, jlink and jmod won't start. 1071 $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): java.base-libs java.base-copy \ 1072 java.base-gendata jdk.jlink-launchers java 1073 endif 1074 else ifeq ($(EXTERNAL_BUILDJDK), false) 1075 # The normal non cross compilation usecase needs to wait for the full 1076 # exploded-image to avoid a race with the optimize target. 1077 $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): exploded-image 1078 # The buildtools-modules are used for the exploded-image-optimize target, 1079 # but can be built either using the exploded-image or an external BUILDJDK. 1080 buildtools-modules: exploded-image-base 1081 endif 1082 1083 # All modules include the main license files from java.base. 1084 $(JMOD_TARGETS): java.base-copy 1085 1086 # jdk.javadoc uses an internal copy of the main license files from java.base. 1087 jdk.javadoc-copy: java.base-copy 1088 1089 zip-security: $(filter jdk.crypto%, $(JAVA_TARGETS)) 1090 1091 ifeq ($(ENABLE_GENERATE_CLASSLIST), true) 1092 ifeq ($(CREATE_BUILDJDK), true) 1093 # If creating a buildjdk, the interim image needs to be based on that. 1094 generate-link-opt-data: create-buildjdk 1095 else ifeq ($(EXTERNAL_BUILDJDK), false) 1096 # If an external buildjdk has been provided, we skip generating an 1097 # interim-image and just use the external buildjdk for generating 1098 # classlist. 1099 generate-link-opt-data: interim-image 1100 endif 1101 generate-link-opt-data: buildtools-jdk 1102 1103 # The generated classlist needs to go into java.base-jmod. 1104 java.base-jmod jdk.jlink-jmod jdk-image legacy-jre-image: generate-link-opt-data 1105 endif 1106 1107 symbols-image: $(LIBS_TARGETS) $(LAUNCHER_TARGETS) 1108 1109 static-libs-image: hotspot-static-libs static-libs 1110 1111 bootcycle-images: jdk-image 1112 1113 docs-jdk-api-javadoc: $(GENSRC_TARGETS) 1114 1115 docs-javase-api-javadoc: $(GENSRC_TARGETS) 1116 1117 docs-reference-api-javadoc: $(GENSRC_TARGETS) 1118 1119 # If not already set, then set the JVM specific docs targets 1120 JVM_DOCS_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc 1121 1122 # The gensrc steps for hotspot create html spec files. 1123 docs-jdk-specs: $(JVM_DOCS_TARGETS) 1124 1125 # Tests 1126 test-make: clean-test-make compile-commands 1127 1128 test-make-compile-commands: compile-commands 1129 1130 # Declare dependency for all generated test targets 1131 $(foreach t, $(filter-out test-make%, $(ALL_TEST_TARGETS)), $(eval $t: jdk-image test-image $(TEST_DEPS))) 1132 $(foreach t, $(ALL_EXPLODED_TEST_TARGETS), $(eval $t: exploded-image test-image $(TEST_DEPS))) 1133 1134 interim-image: $(INTERIM_JMOD_TARGETS) 1135 1136 build-test-hotspot-jtreg-native: hotspot-$(JVM_VARIANT_MAIN)-libs 1137 build-test-libtest-jtreg-native: hotspot-$(JVM_VARIANT_MAIN)-libs 1138 1139 endif 1140 1141 ################################################################################ 1142 # Virtual targets without recipes 1143 1144 # If not already set, set the JVM specific tools targets 1145 JVM_TOOLS_TARGETS ?= buildtools-hotspot 1146 buildtools: buildtools-langtools interim-langtools \ 1147 buildtools-jdk $(JVM_TOOLS_TARGETS) 1148 1149 # Declare dependencies from hotspot-<variant> targets 1150 $(foreach v, $(JVM_VARIANTS), \ 1151 $(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \ 1152 ) 1153 hotspot: $(HOTSPOT_VARIANT_TARGETS) 1154 1155 # Create targets hotspot-libs and hotspot-gensrc. 1156 $(foreach v, $(JVM_VARIANTS), \ 1157 $(eval hotspot-libs: hotspot-$v-libs) \ 1158 $(eval hotspot-gensrc: hotspot-$v-gensrc) \ 1159 $(eval hotspot-static-libs: hotspot-$v-static-libs) \ 1160 ) 1161 1162 gensrc: $(GENSRC_TARGETS) 1163 1164 gendata: $(GENDATA_TARGETS) 1165 1166 copy: $(ALL_COPY_TARGETS) 1167 1168 java: $(JAVA_TARGETS) 1169 1170 libs: $(LIBS_TARGETS) 1171 1172 static-libs: $(STATIC_LIBS_TARGETS) 1173 1174 launchers: $(LAUNCHER_TARGETS) 1175 1176 jmods: $(JMOD_TARGETS) 1177 1178 # Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which 1179 # is actually handled by jdk.jdi-gensrc 1180 jdk.jdwp.agent-gensrc: jdk.jdi-gensrc 1181 1182 # Declare dependencies from <module> to all the individual targets specific 1183 # to that module <module>-*, that are needed for the exploded image. 1184 $(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc)) 1185 $(foreach m, $(JAVA_MODULES), $(eval $m: $m-java)) 1186 $(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata)) 1187 $(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs)) 1188 $(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers)) 1189 $(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy)) 1190 1191 # Building java.base includes building all of hotspot. 1192 java.base: $(JVM_MAIN_TARGETS) 1193 1194 demos: demos-jdk 1195 1196 # The "exploded image" is a locally runnable JDK in $(OUTPUTDIR)/jdk. 1197 exploded-image-base: $(ALL_MODULES) 1198 exploded-image: exploded-image-base release-file 1199 # When cross compiling, no need to optimize the exploded image since it won't 1200 # be runnable on the host platform anyway. 1201 ifneq ($(COMPILE_TYPE), cross) 1202 exploded-image: exploded-image-optimize 1203 endif 1204 1205 # The runnable-buildjdk target guarantees that the buildjdk is done 1206 # building and ready to be used. The exact set of dependencies it needs 1207 # depends on what kind of buildjdk is used for the current configuration. 1208 runnable-buildjdk: 1209 ifeq ($(CREATE_BUILDJDK), true) 1210 ifneq ($(CREATING_BUILDJDK), true) 1211 runnable-buildjdk: create-buildjdk 1212 endif 1213 else ifeq ($(EXTERNAL_BUILDJDK), false) 1214 runnable-buildjdk: exploded-image 1215 endif 1216 1217 create-buildjdk: create-buildjdk-interim-image 1218 1219 docs-jdk-api: docs-jdk-api-javadoc 1220 docs-javase-api: docs-javase-api-javadoc 1221 docs-reference-api: docs-reference-api-javadoc 1222 1223 # If we're building full docs, we must also generate the module graphs to 1224 # get non-broken api documentation. 1225 ifeq ($(ENABLE_FULL_DOCS), true) 1226 docs-jdk-api: docs-jdk-api-graphs 1227 docs-javase-api: docs-javase-api-graphs 1228 docs-reference-api: docs-reference-api-graphs 1229 1230 # We must generate javadoc first so we know what graphs are needed 1231 docs-jdk-api-graphs: docs-jdk-api-javadoc 1232 docs-javase-api-graphs: docs-javase-api-javadoc 1233 docs-reference-api-graphs: docs-reference-api-javadoc 1234 endif 1235 1236 docs-jdk: docs-jdk-api docs-jdk-specs docs-jdk-index 1237 docs-javase: docs-javase-api 1238 docs-reference: docs-reference-api 1239 1240 # alias for backwards compatibility 1241 docs-javadoc: docs-jdk-api 1242 1243 mac-bundles: mac-jdk-bundle 1244 1245 # The $(OUTPUTDIR)/images directory contain the resulting deliverables, 1246 # and in line with this, our targets for creating these are named *-image[s]. 1247 1248 # This target builds the product images, e.g. the JDK image 1249 # (and possibly other, more specific versions) 1250 product-images: jdk-image symbols-image exploded-image 1251 1252 # This target builds the legacy images, e.g. the legacy JRE image 1253 legacy-images: legacy-jre-image 1254 1255 # zip-security is actually a bundle, but for now it needs to be considered 1256 # an image until this can be cleaned up properly. 1257 product-images: zip-security 1258 1259 # The module summary cannot be run when: 1260 # * Cross compiling and building a partial BUILDJDK for the build host 1261 # * An external buildjdk has been supplied since it may not match the 1262 # module selection of the target jdk 1263 ifneq ($(CREATE_BUILDJDK), true) 1264 ifeq ($(EXTERNAL_BUILDJDK), false) 1265 product-images: generate-summary 1266 endif 1267 endif 1268 1269 ifeq ($(call isTargetOs, macosx), true) 1270 product-images: mac-jdk-bundle 1271 1272 legacy-images: mac-legacy-jre-bundle 1273 endif 1274 1275 static-exploded-image: static-launchers exploded-image 1276 1277 # These targets build the various documentation images 1278 docs-jdk-image: docs-jdk 1279 docs-javase-image: docs-javase 1280 docs-reference-image: docs-reference 1281 # The docs-jdk-image is what most users expect to be built 1282 docs-image: docs-jdk-image 1283 all-docs-images: docs-jdk-image docs-javase-image docs-reference-image 1284 1285 docs-bundles: docs-jdk-bundles 1286 all-docs-bundles: docs-jdk-bundles docs-javase-bundles docs-reference-bundles 1287 1288 # This target builds the test image 1289 test-image: prepare-test-image test-image-jdk-jtreg-native \ 1290 test-image-demos-jdk test-image-libtest-jtreg-native \ 1291 test-image-lib test-image-lib-native \ 1292 test-image-setup-aot 1293 1294 ifneq ($(JVM_TEST_IMAGE_TARGETS), ) 1295 # If JVM_TEST_IMAGE_TARGETS is externally defined, use it instead of the 1296 # standard hotspot set of tests. 1297 test-image: $(JVM_TEST_IMAGE_TARGETS) 1298 else 1299 test-image: test-image-hotspot-jtreg-native 1300 ifneq ($(GTEST_FRAMEWORK_SRC), ) 1301 test-image: test-image-hotspot-gtest 1302 endif 1303 endif 1304 1305 ifeq ($(BUILD_FAILURE_HANDLER), true) 1306 test-image: test-image-failure-handler 1307 endif 1308 1309 ifeq ($(BUILD_JTREG_TEST_THREAD_FACTORY), true) 1310 test-image: test-image-test-thread-factory 1311 endif 1312 1313 ifneq ($(JMH_CORE_JAR), ) 1314 test-image: build-microbenchmark 1315 endif 1316 1317 ################################################################################ 1318 1319 # all-images builds all our deliverables as images. 1320 all-images: product-images static-jdk-image test-image all-docs-images 1321 1322 # all-bundles packages all our deliverables as tar.gz bundles. 1323 all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles 1324 1325 ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-static-libs \ 1326 hotspot-gensrc gensrc gendata \ 1327 copy java libs static-libs launchers jmods \ 1328 jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \ 1329 exploded-image-base exploded-image runnable-buildjdk \ 1330 create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \ 1331 docs-javase docs-reference docs-javadoc mac-bundles product-images legacy-images \ 1332 docs-image docs-javase-image docs-reference-image all-docs-images \ 1333 docs-bundles all-docs-bundles test-image all-images static-exploded-image \ 1334 all-bundles 1335 1336 ################################################################################ 1337 1338 # Traditional targets typically run by users. 1339 # These can be considered aliases for the targets now named by a more 1340 # "modern" naming scheme. 1341 default-target: $(DEFAULT_MAKE_TARGET) 1342 jdk: exploded-image 1343 images: product-images 1344 docs: docs-image 1345 bundles: all-bundles 1346 all: all-images 1347 1348 ALL_TARGETS += default jdk images docs bundles all 1349 1350 # Aliases used for running tests. 1351 1352 # Let "run-test" be an alias for "test" 1353 $(foreach t, $(ALL_NAMED_TESTS), $(eval run-test-$t: test-$t)) 1354 RUN_TEST_TARGETS := $(addprefix run-test-, $(ALL_NAMED_TESTS)) 1355 1356 run-test: test 1357 exploded-run-test: exploded-test 1358 1359 # "make check" is a common idiom for running basic testing 1360 check: test-tier1 1361 1362 # Keep some old names as aliases 1363 test-hotspot-jtreg: test-hotspot_all 1364 test-hotspot-jtreg-native: test-hotspot_native_sanity 1365 test-hotspot-gtest: exploded-test-gtest 1366 test-jdk-jtreg-native: test-jdk_native_sanity 1367 1368 # Set dependencies for doc tests 1369 $(eval $(call AddTestDependency, docs_all, docs-jdk)) 1370 test-docs: test-docs_all 1371 1372 ALL_TARGETS += $(RUN_TEST_TARGETS) run-test exploded-run-test check \ 1373 test-hotspot-jtreg test-hotspot-jtreg-native test-hotspot-gtest \ 1374 test-jdk-jtreg-native test-docs 1375 1376 ################################################################################ 1377 # 1378 # Clean targets 1379 # 1380 ################################################################################ 1381 # Clean targets are automatically run serially by the Makefile calling this 1382 # file. 1383 1384 CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \ 1385 images make-support test-make bundles buildjdk test-results test-support \ 1386 support/images 1387 CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS)) 1388 CLEAN_SUPPORT_DIRS += demos 1389 CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS)) 1390 CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib 1391 CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS)) 1392 CLEAN_PHASES += gensrc java native include 1393 CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES)) 1394 CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES)) 1395 # Construct targets of the form clean-$module-$phase 1396 CLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \ 1397 $(addprefix $m-, $(CLEAN_PHASES)))) 1398 1399 # Remove everything, except the output from configure. 1400 clean: $(CLEAN_DIR_TARGETS) 1401 ($(CD) $(OUTPUTDIR) && $(RM) -r build*.log* compile_commands.json) 1402 $(ECHO) Cleaned all build artifacts. 1403 1404 clean-docs: 1405 $(call CleanDocs) 1406 1407 clean-compile-commands: 1408 $(call CleanMakeSupportDir,compile-commands) 1409 1410 $(CLEAN_DIR_TARGETS): 1411 $(call CleanDir,$(patsubst clean-%, %, $@)) 1412 1413 $(CLEAN_SUPPORT_DIR_TARGETS): 1414 $(call CleanSupportDir,$(patsubst clean-%, %, $@)) 1415 1416 $(CLEAN_TEST_TARGETS): 1417 $(call CleanTest,$(patsubst clean-test-%, %, $@)) 1418 1419 $(CLEAN_PHASE_TARGETS): 1420 $(call Clean-$(patsubst clean-%,%, $@)) 1421 1422 $(CLEAN_MODULE_TARGETS): 1423 $(call CleanModule,$(patsubst clean-%, %, $@)) 1424 1425 $(CLEAN_MODULE_PHASE_TARGETS): 1426 $(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \ 1427 $(word 2, $(subst -,$(SPACE),$@))) 1428 1429 # When removing the support dir, we must also remove jdk. Building classes has 1430 # the side effect of generating native headers. The headers end up in support 1431 # while classes and touch files end up in jdk. 1432 clean-support: clean-jdk 1433 1434 clean-test: clean-test-results clean-test-support 1435 1436 # When cleaning images, also clean the support/images directory. 1437 clean-images: clean-support/images 1438 1439 # Remove everything, including configure configuration. If the output 1440 # directory was created by configure and now becomes empty, remove it as well. 1441 dist-clean: clean 1442 ($(CD) $(OUTPUTDIR) && \ 1443 $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide \ 1444 configure.log* build.log*) 1445 $(if $(filter $(CONF_NAME), $(notdir $(OUTPUTDIR))), \ 1446 if test "x`$(LS) $(OUTPUTDIR)`" != x; then \ 1447 $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \ 1448 else \ 1449 ($(CD) $(TOPDIR) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \ 1450 && $(RM) -r $(OUTPUTDIR)) \ 1451 fi \ 1452 ) 1453 $(ECHO) Cleaned everything, you will have to re-run configure. 1454 1455 ALL_TARGETS += clean clean-docs clean-compile-commands dist-clean $(CLEAN_DIR_TARGETS) \ 1456 $(CLEAN_SUPPORT_DIR_TARGETS) $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) \ 1457 $(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_TARGETS) 1458 1459 ################################################################################ 1460 # Declare *-only targets for each normal target 1461 $(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t))) 1462 1463 ALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS))) 1464 1465 ################################################################################ 1466 1467 # The following targets are intentionally not added to ALL_TARGETS since they 1468 # are internal only, to support Init.gmk. 1469 1470 print-targets: 1471 $(info $(subst $(SPACE),$(NEWLINE),$(sort $(ALL_TARGETS)))) 1472 1473 print-modules: 1474 $(info $(subst $(SPACE),$(NEWLINE),$(sort $(ALL_MODULES)))) 1475 1476 print-tests: 1477 $(info $(subst $(SPACE),$(NEWLINE),$(sort $(ALL_NAMED_TESTS)))) 1478 1479 create-main-targets-include: 1480 $(call LogInfo, Generating main target list) 1481 $(call MakeDir, $(MAKESUPPORT_OUTPUTDIR)) 1482 @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \ 1483 $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk 1484 1485 .PHONY: $(ALL_TARGETS) 1486 1487 FRC: # Force target 1488 1489 include MakeFileEnd.gmk --- EOF ---