Main.gmk 31.9 KB
Newer Older
O
ohair 已提交
1
#
2
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
O
ohair 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

C
chegar 已提交
26 27 28
################################################################################
# This is the main makefile containing most actual top level targets. It needs
# to be called with a SPEC file defined.
I
ihse 已提交
29
################################################################################
C
chegar 已提交
30 31 32

# Declare default target
default:
O
ohair 已提交
33

I
ihse 已提交
34 35 36 37
ifeq ($(wildcard $(SPEC)),)
  $(error Main.gmk needs SPEC set to a proper spec.gmk)
endif

O
ohair 已提交
38 39 40
# Now load the spec
include $(SPEC)

I
ihse 已提交
41
include $(SRC_ROOT)/make/MainSupport.gmk
C
chegar 已提交
42

43
# Load the vital tools for all the makefiles.
I
ihse 已提交
44
include $(SRC_ROOT)/make/common/MakeBase.gmk
45
include $(SRC_ROOT)/make/common/Modules.gmk
O
ohair 已提交
46

C
chegar 已提交
47
# Declare ALL_TARGETS as an immediate variable. This variable is a list of all
48
# valid top level targets. It's used to declare them all as PHONY and to
C
chegar 已提交
49 50 51
# generate the -only targets.
ALL_TARGETS :=

52 53
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, , Main.gmk))
O
ohair 已提交
54

C
chegar 已提交
55
# All modules for the current target platform.
56
ALL_MODULES := $(call FindAllModules)
O
ohair 已提交
57

C
chegar 已提交
58 59 60 61 62 63
################################################################################
################################################################################
#
# Recipes for all targets. Only recipes, dependencies are declared later.
#
################################################################################
O
ohair 已提交
64

C
chegar 已提交
65 66
################################################################################
# Interim/build tools targets, compiling tools used during the build
O
ohair 已提交
67

68 69 70 71
# When creating a BUILDJDK, the buildtools and interim targets have already
# been built and should not be built again.
ifneq ($(CREATING_BUILDJDK), true)
  buildtools-langtools:
C
chegar 已提交
72 73
	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)

74
  interim-langtools:
C
chegar 已提交
75
	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
O
ohair 已提交
76

77
  interim-rmic:
C
chegar 已提交
78
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
79

80
  interim-cldrconverter:
N
naoto 已提交
81 82
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk)

83
  buildtools-jdk:
E
erikj 已提交
84
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
85 86 87

  buildtools-modules:
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
88
endif
O
ohair 已提交
89

90
ALL_TARGETS += buildtools-langtools interim-langtools \
91
    interim-rmic interim-cldrconverter buildtools-jdk buildtools-modules
C
chegar 已提交
92 93 94 95 96 97 98

################################################################################
# Special targets for certain modules

unpack-sec:
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk)

99 100 101
generate-exported-symbols:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk)

102
ALL_TARGETS += unpack-sec generate-exported-symbols
C
chegar 已提交
103 104 105

################################################################################
# Gensrc targets, generating source before java compilation can be done
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
#
# When creating a BUILDJDK, the java targets have already been built and copied
# into the buildjdk so no need to generate sources.
ifneq ($(CREATING_BUILDJDK), true)
  $(eval $(call DeclareRecipesForPhase, GENSRC, \
      TARGET_SUFFIX := gensrc, \
      FILE_PREFIX := Gensrc, \
      MAKE_SUBDIR := gensrc, \
      CHECK_MODULES := $(ALL_MODULES), \
      MULTIPLE_MAKEFILES := true))

  JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
  LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
  CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
  HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))

  GENSRC_MODULEINFO_MODULES := $(ALL_MODULES)
  GENSRC_MODULEINFO_TARGETS := $(addsuffix -gensrc-moduleinfo, \
      $(GENSRC_MODULEINFO_MODULES))

  GENSRC_MODULES := $(GENSRC_MODULEINFO_MODULES)
  GENSRC_TARGETS += $(sort $(GENSRC_MODULEINFO_TARGETS) \
      $(addsuffix -gensrc, $(GENSRC_MODULES)))

  define DeclareModuleInfoRecipe
    $1-gensrc-moduleinfo:
A
alanb 已提交
132 133 134
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
	    -f GensrcModuleInfo.gmk MODULE=$1)

135 136
    $1-gensrc: $1-gensrc-moduleinfo
  endef
A
alanb 已提交
137

138 139
  $(foreach m, $(GENSRC_MODULEINFO_MODULES), $(eval $(call DeclareModuleInfoRecipe,$m)))
endif
A
alanb 已提交
140

C
chegar 已提交
141 142 143 144
ALL_TARGETS += $(GENSRC_TARGETS)

################################################################################
# Generate data targets
C
chegar 已提交
145 146 147 148 149 150
$(eval $(call DeclareRecipesForPhase, GENDATA, \
    TARGET_SUFFIX := gendata, \
    FILE_PREFIX := Gendata, \
    MAKE_SUBDIR := gendata, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
151 152 153 154 155

ALL_TARGETS += $(GENDATA_TARGETS)

################################################################################
# Copy files targets
C
chegar 已提交
156 157 158 159 160
$(eval $(call DeclareRecipesForPhase, COPY, \
    TARGET_SUFFIX := copy, \
    FILE_PREFIX := Copy, \
    MAKE_SUBDIR := copy, \
    CHECK_MODULES := $(ALL_MODULES), \
161 162
    USE_WRAPPER := true, \
    MULTIPLE_MAKEFILES := true))
C
chegar 已提交
163

A
alanb 已提交
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
ALL_COPY_MODULES += $(COPY_MODULES)
ALL_COPY_TARGETS += $(COPY_TARGETS)

IMPORT_COPY_MODULES := $(call FindImportedModules)
IMPORT_COPY_TARGETS := $(addsuffix -copy, $(IMPORT_COPY_MODULES))
ALL_COPY_MODULES += $(IMPORT_COPY_MODULES)
ALL_COPY_TARGETS += $(IMPORT_COPY_TARGETS)

define DeclareImportCopyRecipe
  $1-copy:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
	    -f CopyImportModules.gmk MODULE=$1)
endef

$(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m)))

ALL_TARGETS += $(ALL_COPY_TARGETS)
C
chegar 已提交
181 182 183

################################################################################
# Targets for compiling all java modules. Nashorn is treated separately.
A
alanb 已提交
184
JAVA_MODULES := $(ALL_MODULES)
C
chegar 已提交
185 186 187 188
JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))

define DeclareCompileJavaRecipe
  $1-java:
189 190
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
	    -f CompileJavaModules.gmk MODULE=$1)
C
chegar 已提交
191 192 193 194 195 196 197 198
endef

$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \
    $(eval $(call DeclareCompileJavaRecipe,$m)))

# Build nashorn. Needs to be compiled separately from the rest of the modules
# due to nasgen.
jdk.scripting.nashorn-java:
199 200
	+($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
	    -f BuildNashorn.gmk compile)
C
chegar 已提交
201 202 203 204 205

ALL_TARGETS += $(JAVA_TARGETS)

################################################################################
# Targets for running rmic.
C
chegar 已提交
206 207 208 209 210
$(eval $(call DeclareRecipesForPhase, RMIC, \
    TARGET_SUFFIX := rmic, \
    FILE_PREFIX := Rmic, \
    MAKE_SUBDIR := rmic, \
    CHECK_MODULES := $(ALL_MODULES)))
C
chegar 已提交
211 212 213 214 215

ALL_TARGETS += $(RMIC_TARGETS)

################################################################################
# Targets for compiling native libraries
C
chegar 已提交
216 217 218 219 220 221
$(eval $(call DeclareRecipesForPhase, LIBS, \
    TARGET_SUFFIX := libs, \
    FILE_PREFIX := Lib, \
    MAKE_SUBDIR := lib, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
222

C
chegar 已提交
223
ALL_TARGETS += $(LIBS_TARGETS)
224

C
chegar 已提交
225 226
################################################################################
# Targets for compiling native executables
C
chegar 已提交
227 228 229 230 231 232
$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
    TARGET_SUFFIX := launchers, \
    FILE_PREFIX := Launcher, \
    MAKE_SUBDIR := launcher, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
233 234 235 236 237

ALL_TARGETS += $(LAUNCHER_TARGETS)

################################################################################
# Build hotspot target
O
ohair 已提交
238

239
ifeq ($(BUILD_HOTSPOT),true)
240
  hotspot:
241
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildHotspot.gmk)
242
endif
O
ohair 已提交
243

E
erikj 已提交
244
hotspot-ide-project:
245
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk)
E
erikj 已提交
246 247

ALL_TARGETS += hotspot hotspot-ide-project
248

C
chegar 已提交
249 250
################################################################################
# Build demos and samples targets
251

E
erikj 已提交
252
demos-jdk:
C
chegar 已提交
253 254
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk)

E
erikj 已提交
255
samples-jdk:
C
chegar 已提交
256 257
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopySamples.gmk)

E
erikj 已提交
258
ALL_TARGETS += demos-jdk samples-jdk
O
ohair 已提交
259

C
chegar 已提交
260
################################################################################
A
alanb 已提交
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285
# Jigsaw specific data and analysis targets.

generate-summary:
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) -f GenerateModuleSummary.gmk)

ALL_TARGETS += generate-summary

################################################################################
# Jmod targets

JMOD_MODULES := $(ALL_MODULES)
JMOD_TARGETS := $(addsuffix -jmod, $(JMOD_MODULES))

define DeclareJmodRecipe
  $1-jmod:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
	    MODULE=$1)
endef

$(foreach m, $(JMOD_MODULES), $(eval $(call DeclareJmodRecipe,$m)))

ALL_TARGETS += $(JMOD_TARGETS)

################################################################################
# Images targets
O
ohair 已提交
286

287 288 289
# Stores the tips for each repository. This file is be used when constructing
# the jdk image and can be used to track the exact sources used to build that
# image.
C
chegar 已提交
290 291
source-tips: $(SUPPORT_OUTPUTDIR)/source_tips
$(SUPPORT_OUTPUTDIR)/source_tips: FRC
E
erikj 已提交
292
	$(call MakeDir, $(@D))
293 294 295 296
	$(call GetSourceTips)

create-hgtip-files:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateHgtipFiles.gmk)
O
ohair 已提交
297

298
BOOTCYCLE_TARGET := product-images
C
chegar 已提交
299
bootcycle-images:
300 301 302 303 304 305 306
        ifneq ($(COMPILE_TYPE), cross)
	  $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image)
	  +$(MAKE) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
	      JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main
        else
	  $(call LogWarn, Boot cycle build disabled when cross compiling)
        endif
C
chegar 已提交
307

C
chegar 已提交
308 309
zip-security:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk)
C
chegar 已提交
310

C
chegar 已提交
311 312
zip-source:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk)
C
chegar 已提交
313

C
chegar 已提交
314 315
jrtfs-jar:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk)
C
chegar 已提交
316

317 318 319 320 321 322 323 324
jdk-image:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jdk)

jre-image:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jre)

symbols-image:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols)
C
chegar 已提交
325 326 327 328

profiles:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)

E
erikj 已提交
329
mac-bundles-jdk:
C
chegar 已提交
330
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
C
chegar 已提交
331

332 333 334
exploded-image-optimize:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)

335
ALL_TARGETS += source-tips create-hgtip-files bootcycle-images zip-security \
336 337
    zip-source jrtfs-jar jdk-image jre-image \
    symbols-image profiles mac-bundles-jdk \
338
    exploded-image-optimize
C
chegar 已提交
339 340 341 342 343 344 345 346 347 348

################################################################################
# Docs targets

docs-javadoc:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)

docs-jvmtidoc:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk jvmtidocs)

349
zip-docs:
350 351
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk zip-docs)

352
ALL_TARGETS += docs-javadoc docs-jvmtidoc zip-docs
C
chegar 已提交
353

A
alanb 已提交
354 355 356
################################################################################
# Cross compilation support

357
ifeq ($(CREATING_BUILDJDK), true)
A
alanb 已提交
358
  # This target is only called by the recursive call below.
359 360
  create-buildjdk-interim-image-helper: interim-image jdk.jlink-launchers \
      java.base-copy jdk.jdeps-launchers
A
alanb 已提交
361 362 363 364 365
endif

create-buildjdk-copy:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateBuildJdkCopy.gmk)

366
create-buildjdk-interim-image:
A
alanb 已提交
367 368 369 370 371 372
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk \
	    $@-helper \
	    SPEC=$(dir $(SPEC))buildjdk-spec.gmk \
	    HOTSPOT_SPEC=$(dir $(SPEC))buildjdk-spec.gmk \
	    CREATING_BUILDJDK=true)

373 374 375
ALL_TARGETS += create-buildjdk-copy create-buildjdk-interim-image

################################################################################
376
# The interim-image is a small jlinked image that is used to generate artifacts
377 378 379 380 381
# at build time for use when linking the real images.

interim-image:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f InterimImage.gmk)

382 383
ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
  generate-classlist:
384
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateClasslist.gmk)
385
endif
386 387

ALL_TARGETS += interim-image generate-classlist
A
alanb 已提交
388

C
chegar 已提交
389
################################################################################
390 391 392 393 394 395 396 397 398 399 400 401 402 403
# Build tests
#

prepare-test-image:
	$(MKDIR) -p $(TEST_IMAGE_DIR)
	$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'

build-test-hotspot-jtreg-native:
	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
	    build-test-hotspot-jtreg-native)

test-image-hotspot-jtreg-native:
	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
	    test-image-hotspot-jtreg-native)
C
chegar 已提交
404

405 406 407 408 409 410 411 412
build-test-jdk-jtreg-native:
	+($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
	    build-test-jdk-jtreg-native)

test-image-jdk-jtreg-native:
	+($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
	    test-image-jdk-jtreg-native)

413 414 415 416 417
ifeq ($(BUILD_GTEST), true)
  test-image-hotspot-gtest:
	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk)
endif

418 419 420
build-test-lib:
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLib.gmk)

421 422 423
ifeq ($(BUILD_FAILURE_HANDLER), true)
  # Builds the failure handler jtreg extension
  build-test-failure-handler:
424 425 426
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
	    -f BuildFailureHandler.gmk build)

427 428
  # Runs the tests for the failure handler jtreg extension
  test-failure-handler:
429 430 431
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
	    -f BuildFailureHandler.gmk test)

432 433
  # Copies the failure handler jtreg extension into the test image
  test-image-failure-handler:
434 435
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
	     -f BuildFailureHandler.gmk images)
436
endif
437

438 439
ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
    test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
440
    test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
441
    test-failure-handler test-image-failure-handler test-image-hotspot-gtest
442 443 444 445 446

################################################################################
# Run tests

# Run tests specified by $(TEST), or the default test set.
C
chegar 已提交
447
test:
448
	$(call RunTests, $(TEST), $(JDK_IMAGE_DIR))
449

450
test-hotspot-jtreg:
451
	$(call RunTests, "hotspot_all", $(JDK_IMAGE_DIR))
452

453
test-hotspot-jtreg-native:
454
	$(call RunTests, "hotspot_native_sanity", $(JDK_IMAGE_DIR))
455

456
test-hotspot-internal:
457 458 459 460
	$(call RunTests, "hotspot_internal", $(JDK_OUTPUTDIR))

test-hotspot-gtest:
	$(call RunTests, "hotspot_gtest", $(JDK_OUTPUTDIR))
461

462
test-jdk-jtreg-native:
463
	$(call RunTests, "jdk_native_sanity", $(JDK_IMAGE_DIR))
C
chegar 已提交
464 465 466 467

test-make:
	($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))

468
ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
469
    test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make
C
chegar 已提交
470

E
erikj 已提交
471 472 473 474 475 476 477 478 479 480 481 482 483 484
################################################################################
# Bundles

product-bundles:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk product-bundles)

test-bundles:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk test-bundles)

docs-bundles:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles)

ALL_TARGETS += product-bundles test-bundles docs-bundles

C
chegar 已提交
485 486 487 488 489 490 491 492 493 494
################################################################################
# Install targets

install:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk)

ALL_TARGETS += install

################################################################################
#
495
# Dependency declarations between targets.
C
chegar 已提交
496
#
497
# These are declared in two groups. First all dependencies between targets that
C
chegar 已提交
498 499 500 501 502 503 504
# have recipes above as these dependencies may be disabled. Then the aggregator
# targets that do not have recipes of their own, which will never have their
# dependencies disabled.
#
################################################################################
# Targets with recipes above

505 506
# If running an *-only target, parallel execution and dependencies between
# recipe targets are disabled. This makes it possible to run a select set of
C
chegar 已提交
507
# recipe targets in order. It's the responsibility of the user to make sure
508
# all prerequisites are fulfilled.
C
chegar 已提交
509 510 511
ifneq ($(findstring -only, $(MAKECMDGOALS)), )
  .NOTPARALLEL:
else
C
chegar 已提交
512 513
  $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools

C
chegar 已提交
514 515
  interim-langtools: $(LANGTOOLS_GENSRC_TARGETS)

N
naoto 已提交
516
  buildtools-jdk: interim-langtools interim-cldrconverter
C
chegar 已提交
517

518 519
  buildtools-modules: exploded-image-base

C
chegar 已提交
520 521
  $(CORBA_GENSRC_TARGETS): interim-langtools

522 523
  $(HOTSPOT_GENSRC_TARGETS): interim-langtools

C
chegar 已提交
524
  $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
C
chegar 已提交
525

A
alanb 已提交
526 527
  $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk

C
chegar 已提交
528
  $(GENDATA_TARGETS): interim-langtools buildtools-jdk
C
chegar 已提交
529 530 531

  interim-rmic: interim-langtools

532
  $(RMIC_TARGETS): interim-langtools interim-rmic
C
chegar 已提交
533

E
erikj 已提交
534 535
  $(JAVA_TARGETS): interim-langtools

E
erikj 已提交
536 537
  hotspot-ide-project: hotspot exploded-image

538 539
  generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs

540
  $(LIBS_TARGETS): hotspot
C
chegar 已提交
541 542 543

  $(LAUNCHER_TARGETS): java.base-libs

544 545 546 547
  ifeq ($(STATIC_BUILD), true)
    $(LAUNCHER_TARGETS): generate-exported-symbols
  endif

548 549 550
  # The demos are currently linking to libjvm and libjava, just like all other
  # jdk libs, even though they don't need to. To avoid warnings, make sure they
  # aren't built until after libjava and libjvm are available to link to.
E
erikj 已提交
551
  demos-jdk: $(JAVA_TARGETS)
C
chegar 已提交
552 553 554 555 556 557 558 559 560 561 562 563 564

  # Declare dependency from <module>-java to <module>-gensrc
  $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc))

  # Declare dependencies between java modules
  $(foreach m, $(JAVA_MODULES), \
      $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \
      $(call FindDepsForModule,$m)))))

  # Declare dependencies between <module>-rmic to <module>-java
  $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java))

  # Declare dependencies from <module>-lib to <module>-java
565 566 567
  # Skip modules that do not have java source.
  # When creating a BUILDJDK, the java compilation has already been done by the
  # normal build and copied in.
A
alanb 已提交
568
  ifneq ($(CREATING_BUILDJDK), true)
569
    $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
A
alanb 已提交
570
  endif
C
chegar 已提交
571 572

  # Declare dependencies from all other <module>-lib to java.base-lib
C
chegar 已提交
573
  $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
C
chegar 已提交
574 575
      $(eval $t: java.base-libs))

576 577 578
  # jdk.accessibility depends on java.desktop
  jdk.accessibility-libs: java.desktop-libs

579
  # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
C
chegar 已提交
580 581 582 583
  # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a
  # virtual target.
  jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc

584 585
  # The swing beans need to have java base properly generated to avoid errors
  # in javadoc.
C
chegar 已提交
586
  java.desktop-gensrc-jdk: java.base-gensrc
587

588 589
  # The annotation processing for jdk.vm.ci needs java.base classes from the
  # current JDK.
590
  jdk.vm.ci-gensrc-hotspot: java.base-java
591

C
chegar 已提交
592 593 594
  # Explicitly add dependencies for special targets
  java.base-java: unpack-sec

595
  jdk.jdeps-gendata: java rmic
596

597 598
  # Declare dependencies between jmod targets. Only java.base jmod needs access
  # to the other jmods to be built.
599 600 601
  # When creating a BUILDJDK, we don't need to add hashes to java.base, thus
  # we don't need to depend on all other jmods
  ifneq ($(CREATING_BUILDJDK), true)
602 603
    java.base-jmod: $(filter-out java.base-jmod \
        $(addsuffix -jmod, $(call FindAllUpgradeableModules)), $(JMOD_TARGETS))
604
  endif
A
alanb 已提交
605 606

  # Declare dependencies from <module>-jmod to all other module targets
607 608 609 610 611
  # When creating a BUILDJDK, the java compilation has already been done by the
  # normal build and copied in.
  ifneq ($(CREATING_BUILDJDK), true)
    $(foreach m, $(JAVA_MODULES), $(eval $m-jmod: $m-java))
  endif
A
alanb 已提交
612 613 614 615 616 617
  $(foreach m, $(GENDATA_MODULES), $(eval $m-jmod: $m-gendata))
  $(foreach m, $(RMIC_MODULES), $(eval $m-jmod: $m-rmic))
  $(foreach m, $(LIBS_MODULES), $(eval $m-jmod: $m-libs))
  $(foreach m, $(LAUNCHER_MODULES), $(eval $m-jmod: $m-launchers))
  $(foreach m, $(COPY_MODULES), $(eval $m-jmod: $m-copy))

618 619 620 621 622 623 624 625 626 627 628 629 630 631
  # Jmods cannot be created until we have the jmod tool ready to run. During
  # a normal build we run it from the exploded image, but when cross compiling
  # it's run from the buildjdk, which is either created at build time or user
  # supplied.
  #
  # For the exploded image to be runnable, all java modules and
  # jdk.jlink-launchers need to be built. We also need to copy jvm.cfg (done
  # in java.base-copy) and tzdb.dat (done in java.base-gendata) to the
  # appropriate location otherwise jimage, jlink and jmod won't start. This
  # also applies when creating the buildjdk.
  DEFAULT_JMOD_DEPS := java.base-libs java.base-copy java.base-gendata \
      jdk.jlink-launchers
  # When cross compiling and buildjdk is to be created, depend on creating the
  # buildjdk instead of the default dependencies.
A
alanb 已提交
632
  ifeq ($(CREATE_BUILDJDK), true)
633
    # Avoid calling create-buildjdk from within a create-buildjdk call.
634 635
    ifneq ($(CREATING_BUILDJDK), true)
      $(JMOD_TARGETS): create-buildjdk
636
      buildtools-modules: create-buildjdk
637 638 639
    else
      # While actually creating the buildjdk, the default deps applies.
      $(JMOD_TARGETS): $(DEFAULT_JMOD_DEPS)
640
    endif
641 642 643 644
  else
    # The normal non cross compilation case uses the default deps.
    # To avoid races with the optimize target, that also needs to happen first.
    $(JMOD_TARGETS): $(DEFAULT_JMOD_DEPS) exploded-image-optimize
A
alanb 已提交
645 646
  endif

C
chegar 已提交
647 648
  zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
      $(filter jdk.crypto%, $(JAVA_TARGETS))
C
chegar 已提交
649

C
chegar 已提交
650
  zip-source: gensrc rmic
C
chegar 已提交
651

A
alanb 已提交
652
  jrtfs-jar: interim-langtools
C
chegar 已提交
653

654 655 656 657 658 659 660 661 662 663 664 665
  ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
    ifeq ($(CREATE_BUILDJDK), true)
      # If creating a buildjdk, the interim image needs to be based on that.
      generate-classlist: create-buildjdk
    else ifeq ($(EXTERNAL_BUILDJDK), false)
      # If an external buildjdk has been provided, we skip generating an
      # interim-image and just use the external buildjdk for generating
      # classlist.
      generate-classlist: interim-image
    endif
    generate-classlist: buildtools-jdk

666
    jdk-image jre-image: generate-classlist
667 668
  endif

669 670
  jdk-image: jmods zip-source source-tips demos samples jrtfs-jar
  jre-image: jmods source-tips jrtfs-jar
C
chegar 已提交
671

A
alanb 已提交
672
  profiles: jmods zip-source source-tips jrtfs-jar
C
chegar 已提交
673

674
  mac-bundles-jdk: jdk-image jre-image
C
chegar 已提交
675

676 677 678 679 680
  # The optimize target can run as soon as the modules dir has been completely
  # populated (java, copy and gendata targets) and the basic libs and launchers
  # have been built.
  exploded-image-optimize: java copy gendata java.base-libs java.base-launchers \
      buildtools-modules
681

682
  bootcycle-images: jdk-image
C
chegar 已提交
683

A
alanb 已提交
684
  docs-javadoc: $(GENSRC_TARGETS) rmic
C
chegar 已提交
685 686 687

  docs-jvmtidoc: hotspot

688 689
  zip-docs: docs-javadoc docs-jvmtidoc

690
  test: jdk-image test-image
C
chegar 已提交
691

692 693
  create-buildjdk-copy: jdk.jlink-java java.base-gendata \
      $(addsuffix -java, $(INTERIM_IMAGE_MODULES))
A
alanb 已提交
694

695 696 697
  create-buildjdk-interim-image: create-buildjdk-copy

  interim-image: $(addsuffix -jmod, $(INTERIM_IMAGE_MODULES))
C
chegar 已提交
698

699 700
  test-make: clean-test-make

E
erikj 已提交
701 702
  build-test-lib: java

703 704 705 706 707 708
  build-test-failure-handler: interim-langtools

  test-failure-handler: build-test-failure-handler

  test-image-failure-handler: build-test-failure-handler

709
  build-test-hotspot-jtreg-native: buildtools-jdk hotspot
710 711 712

  build-test-jdk-jtreg-native: buildtools-jdk

713 714 715 716
  test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native

  test-image-jdk-jtreg-native: build-test-jdk-jtreg-native

717 718
  test-image-hotspot-gtest: hotspot

719 720
  test-hotspot-internal: exploded-image

721
  test-hotspot-jtreg: jdk-image test-image
722

723 724
  test-hotspot-gtest: exploded-image test-image-hotspot-gtest

725 726
  install: product-images

E
erikj 已提交
727 728 729 730 731 732
  product-bundles: product-images

  test-bundles: test-image

  docs-bundles: docs-image

733
  generate-summary: jmods buildtools-modules
A
alanb 已提交
734

C
chegar 已提交
735 736 737 738 739
endif

################################################################################
# Virtual targets without recipes

740
buildtools: buildtools-langtools interim-langtools interim-rmic \
C
chegar 已提交
741 742
    buildtools-jdk

C
chegar 已提交
743 744 745 746
gensrc: $(GENSRC_TARGETS)

gendata: $(GENDATA_TARGETS)

A
alanb 已提交
747
copy: $(ALL_COPY_TARGETS)
C
chegar 已提交
748 749 750 751 752

java: $(JAVA_TARGETS)

rmic: $(RMIC_TARGETS)

C
chegar 已提交
753
libs: $(LIBS_TARGETS)
C
chegar 已提交
754 755 756

launchers: $(LAUNCHER_TARGETS)

A
alanb 已提交
757 758
jmods: $(JMOD_TARGETS)

C
chegar 已提交
759 760 761
# Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which
# is actually handled by jdk.jdi-gensrc
jdk.jdwp.agent-gensrc: jdk.jdi-gensrc
C
chegar 已提交
762 763

# Declare dependencies from <module> to all the individual targets specific
764
# to that module <module>-*, that are needed for the exploded image.
C
chegar 已提交
765 766 767 768
$(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
$(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
$(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic))
C
chegar 已提交
769
$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
C
chegar 已提交
770
$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
A
alanb 已提交
771
$(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy))
E
erikj 已提交
772 773 774 775
demos: demos-jdk

samples: samples-jdk

776
# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk.
777
exploded-image-base: $(ALL_MODULES)
778 779 780 781 782 783
exploded-image: exploded-image-base
# When cross compiling, no need to optimize the exploded image since it won't
# be runnable on the host platform anyway.
ifneq ($(COMPILE_TYPE), cross)
  exploded-image: exploded-image-optimize
endif
C
chegar 已提交
784

785
create-buildjdk: create-buildjdk-copy create-buildjdk-interim-image
A
alanb 已提交
786

E
erikj 已提交
787 788
mac-bundles: mac-bundles-jdk

789
# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables,
790 791 792 793
# and in line with this, our targets for creating these are named *-image[s].

# This target builds the product images, e.g. the JRE and JDK image
# (and possibly other, more specific versions)
794 795 796 797 798
product-images: jdk-image jre-image symbols-image exploded-image

# zip-security is actually a bundle, but for now it needs to be considered
# an image until this can be cleaned up properly.
product-images: zip-security
A
alanb 已提交
799

800 801 802 803
# The module summary cannot be run when:
# * Cross compiling and building a partial BUILDJDK for the build host
# * An external buildjdk has been supplied since it may not match the
#   module selection of the target jdk
A
alanb 已提交
804
ifneq ($(CREATE_BUILDJDK), true)
805 806 807
  ifeq ($(EXTERNAL_BUILDJDK), false)
    product-images: generate-summary
  endif
A
alanb 已提交
808
endif
C
chegar 已提交
809

C
chegar 已提交
810
ifeq ($(OPENJDK_TARGET_OS), macosx)
811
  product-images: mac-bundles
C
chegar 已提交
812
endif
C
chegar 已提交
813

814
# This target builds the documentation image
815
docs-image: docs-javadoc docs-jvmtidoc
C
chegar 已提交
816

817
# This target builds the test image
818
test-image: prepare-test-image test-image-hotspot-jtreg-native \
819
    test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest
820

E
erikj 已提交
821
# all-images builds all our deliverables as images.
822 823
all-images: product-images test-image docs-image

E
erikj 已提交
824 825 826
# all-bundles packages all our deliverables as tar.gz bundles.
all-bundles: product-bundles test-bundles docs-bundles

A
alanb 已提交
827
ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers jmods \
828 829
    jdk.jdwp.agent-gensrc $(ALL_MODULES) demos samples \
    exploded-image-base exploded-image \
E
erikj 已提交
830 831
    create-buildjdk mac-bundles product-images docs-image test-image all-images \
    all-bundles
C
chegar 已提交
832 833 834

################################################################################

835 836 837
# Traditional targets typically run by users.
# These can be considered aliases for the targets now named by a more
# "modern" naming scheme.
838
default: $(DEFAULT_MAKE_TARGET)
839 840 841
jdk: exploded-image
images: product-images
docs: docs-image
E
erikj 已提交
842
bundles: all-bundles
843
all: all-images
C
chegar 已提交
844

E
erikj 已提交
845
ALL_TARGETS += default jdk images docs bundles all
C
chegar 已提交
846 847 848 849 850 851 852

################################################################################
################################################################################
#
# Clean targets
#
################################################################################
853
# Clean targets are automatically run serially by the Makefile calling this
854
# file.
C
chegar 已提交
855

C
chegar 已提交
856
CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
A
alanb 已提交
857
    images make-support test-make bundles buildjdk
C
chegar 已提交
858
CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
I
ihse 已提交
859 860
CLEAN_SUPPORT_DIRS += demos
CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS))
861
CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib
862
CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
E
erikj 已提交
863
CLEAN_PHASES := gensrc java native include docs
C
chegar 已提交
864 865 866 867 868
CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
# Construct targets of the form clean-$module-$phase
CLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \
    $(addprefix $m-, $(CLEAN_PHASES))))
O
ohair 已提交
869 870

# Remove everything, except the output from configure.
C
chegar 已提交
871
clean: $(CLEAN_DIR_TARGETS)
E
erikj 已提交
872
	($(CD) $(OUTPUT_ROOT) && $(RM) -r build*.log*)
C
chegar 已提交
873 874
	$(ECHO) Cleaned all build artifacts.

C
chegar 已提交
875 876 877
$(CLEAN_DIR_TARGETS):
	$(call CleanDir,$(patsubst clean-%, %, $@))

I
ihse 已提交
878 879 880
$(CLEAN_SUPPORT_DIR_TARGETS):
	$(call CleanSupportDir,$(patsubst clean-%, %, $@))

881 882 883
$(CLEAN_TEST_TARGETS):
	$(call CleanTest,$(patsubst clean-test-%, %, $@))

C
chegar 已提交
884 885 886 887 888 889 890 891 892 893 894 895 896 897
$(CLEAN_PHASE_TARGETS):
	$(call Clean-$(patsubst clean-%,%, $@))

$(CLEAN_MODULE_TARGETS):
	$(call CleanModule,$(patsubst clean-%, %, $@))

$(CLEAN_MODULE_PHASE_TARGETS):
	$(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \
	    $(word 2, $(subst -,$(SPACE),$@)))

# When removing the support dir, we must also remove jdk. Building classes has
# the side effect of generating native headers. The headers end up in support
# while classes and touch files end up in jdk.
clean-support: clean-jdk
C
chegar 已提交
898

E
erikj 已提交
899 900
# Remove everything, including configure configuration. If the output
# directory was created by configure and now becomes empty, remove it as well.
O
ohair 已提交
901
dist-clean: clean
E
erikj 已提交
902 903
	($(CD) $(OUTPUT_ROOT) && \
	    $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide)
C
chegar 已提交
904
	$(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
905 906 907
	  if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
	    $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
	  else \
C
chegar 已提交
908 909
	    ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
	        && $(RM) -r $(OUTPUT_ROOT)) \
910 911
	  fi \
	)
C
chegar 已提交
912 913
	$(ECHO) Cleaned everything, you will have to re-run configure.

I
ihse 已提交
914 915 916
ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_SUPPORT_DIR_TARGETS) \
    $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) \
    $(CLEAN_MODULE_PHASE_TARGETS)
C
chegar 已提交
917 918

################################################################################
I
ihse 已提交
919 920
# Declare *-only targets for each normal target
$(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t)))
C
chegar 已提交
921

I
ihse 已提交
922
ALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS)))
923

I
ihse 已提交
924
################################################################################
O
ohair 已提交
925

I
ihse 已提交
926 927
# Include JPRT targets
include $(SRC_ROOT)/make/Jprt.gmk
C
chegar 已提交
928 929 930

################################################################################

I
ihse 已提交
931 932 933
# The following targets are intentionally not added to ALL_TARGETS since they
# are internal only, to support Init.gmk.

I
ihse 已提交
934 935 936 937 938 939
print-targets:
	  @$(ECHO) $(sort $(ALL_TARGETS))

print-modules:
	  @$(ECHO) $(sort $(ALL_MODULES))

I
ihse 已提交
940
create-main-targets-include:
E
erikj 已提交
941
	  $(call LogInfo, Generating main target list)
I
ihse 已提交
942 943
	  @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \
	      $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk
C
chegar 已提交
944 945 946 947

################################################################################

.PHONY: $(ALL_TARGETS)
O
ohair 已提交
948 949

FRC: # Force target