Main.gmk 36.4 KB
Newer Older
O
ohair 已提交
1
#
2
# Copyright (c) 2011, 2017, 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
46
include $(SRC_ROOT)/make/common/FindTests.gmk
O
ohair 已提交
47

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

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

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

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

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

69 70 71 72
# 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 已提交
73 74
	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)

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

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

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

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

  buildtools-modules:
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
89 90 91

  buildtools-hotspot:
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
92
endif
O
ohair 已提交
93

94
ALL_TARGETS += buildtools-langtools interim-langtools \
95 96
    interim-rmic interim-cldrconverter buildtools-jdk buildtools-modules \
    buildtools-hotspot
C
chegar 已提交
97 98 99 100 101 102 103

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

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

104 105 106
generate-exported-symbols:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk)

107
ALL_TARGETS += unpack-sec generate-exported-symbols
C
chegar 已提交
108 109 110

################################################################################
# Gensrc targets, generating source before java compilation can be done
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
#
# 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 已提交
137 138 139
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
	    -f GensrcModuleInfo.gmk MODULE=$1)

140 141
    $1-gensrc: $1-gensrc-moduleinfo
  endef
A
alanb 已提交
142

143 144
  $(foreach m, $(GENSRC_MODULEINFO_MODULES), $(eval $(call DeclareModuleInfoRecipe,$m)))
endif
A
alanb 已提交
145

C
chegar 已提交
146 147 148 149
ALL_TARGETS += $(GENSRC_TARGETS)

################################################################################
# Generate data targets
C
chegar 已提交
150 151 152 153 154 155
$(eval $(call DeclareRecipesForPhase, GENDATA, \
    TARGET_SUFFIX := gendata, \
    FILE_PREFIX := Gendata, \
    MAKE_SUBDIR := gendata, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
156 157 158 159 160

ALL_TARGETS += $(GENDATA_TARGETS)

################################################################################
# Copy files targets
C
chegar 已提交
161 162 163 164 165
$(eval $(call DeclareRecipesForPhase, COPY, \
    TARGET_SUFFIX := copy, \
    FILE_PREFIX := Copy, \
    MAKE_SUBDIR := copy, \
    CHECK_MODULES := $(ALL_MODULES), \
166 167
    USE_WRAPPER := true, \
    MULTIPLE_MAKEFILES := true))
C
chegar 已提交
168

A
alanb 已提交
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
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 已提交
186 187 188

################################################################################
# Targets for compiling all java modules. Nashorn is treated separately.
A
alanb 已提交
189
JAVA_MODULES := $(ALL_MODULES)
C
chegar 已提交
190 191 192 193
JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))

define DeclareCompileJavaRecipe
  $1-java:
194 195
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
	    -f CompileJavaModules.gmk MODULE=$1)
C
chegar 已提交
196 197 198 199 200 201 202 203
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:
204 205
	+($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
	    -f BuildNashorn.gmk compile)
C
chegar 已提交
206 207 208 209 210

ALL_TARGETS += $(JAVA_TARGETS)

################################################################################
# Targets for running rmic.
C
chegar 已提交
211 212 213 214 215
$(eval $(call DeclareRecipesForPhase, RMIC, \
    TARGET_SUFFIX := rmic, \
    FILE_PREFIX := Rmic, \
    MAKE_SUBDIR := rmic, \
    CHECK_MODULES := $(ALL_MODULES)))
C
chegar 已提交
216 217 218 219 220

ALL_TARGETS += $(RMIC_TARGETS)

################################################################################
# Targets for compiling native libraries
C
chegar 已提交
221 222 223 224 225 226
$(eval $(call DeclareRecipesForPhase, LIBS, \
    TARGET_SUFFIX := libs, \
    FILE_PREFIX := Lib, \
    MAKE_SUBDIR := lib, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
227

C
chegar 已提交
228
ALL_TARGETS += $(LIBS_TARGETS)
229

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

ALL_TARGETS += $(LAUNCHER_TARGETS)

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

244 245 246 247 248 249 250
HOTSPOT_VARIANT_TARGETS := $(addprefix hotspot-, $(JVM_VARIANTS))
HOTSPOT_VARIANT_GENSRC_TARGETS := $(addsuffix -gensrc, $(HOTSPOT_VARIANT_TARGETS))
HOTSPOT_VARIANT_LIBS_TARGETS := $(addsuffix -libs, $(HOTSPOT_VARIANT_TARGETS))

define DeclareHotspotGensrcRecipe
  hotspot-$1-gensrc:
	$$(call LogInfo, Building JVM variant '$1' with features '$(JVM_FEATURES_$1)')
251
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f gensrc/GenerateSources.gmk \
252 253 254 255 256 257 258
	    JVM_VARIANT=$1)
endef

$(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotGensrcRecipe,$v)))

define DeclareHotspotLibsRecipe
  hotspot-$1-libs:
259
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \
260 261 262 263 264 265
	    JVM_VARIANT=$1)
endef

$(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotLibsRecipe,$v)))

hotspot-jsig:
266
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibjsig.gmk)
O
ohair 已提交
267

E
erikj 已提交
268
hotspot-ide-project:
269
	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk)
E
erikj 已提交
270

271 272
ALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \
    $(HOTSPOT_VARIANT_LIBS_TARGETS) hotspot-jsig hotspot-ide-project
273

C
chegar 已提交
274 275
################################################################################
# Build demos and samples targets
276

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

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

E
erikj 已提交
283
ALL_TARGETS += demos-jdk samples-jdk
O
ohair 已提交
284

C
chegar 已提交
285
################################################################################
A
alanb 已提交
286 287 288
# Jigsaw specific data and analysis targets.

generate-summary:
289
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateModuleSummary.gmk)
A
alanb 已提交
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310

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 已提交
311

312 313
store-source-revision:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk store-source-revision)
314

315 316
create-source-revision-tracker:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk create-source-revision-tracker)
O
ohair 已提交
317

318
BOOTCYCLE_TARGET := product-images
C
chegar 已提交
319
bootcycle-images:
320 321
        ifneq ($(COMPILE_TYPE), cross)
	  $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image)
322
	  +$(MAKE) $(MAKE_ARGS) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
323 324 325 326
	      JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main
        else
	  $(call LogWarn, Boot cycle build disabled when cross compiling)
        endif
C
chegar 已提交
327

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

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

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

337 338 339 340 341 342 343 344
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 已提交
345

346
profiles-image:
C
chegar 已提交
347 348
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)

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

352 353 354
release-file:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ReleaseFile.gmk)

355 356 357
exploded-image-optimize:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)

358
ALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \
359
    zip-source jrtfs-jar jdk-image jre-image \
360
    symbols-image profiles-image mac-bundles-jdk \
361
    release-file exploded-image-optimize
C
chegar 已提交
362 363 364 365 366

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

docs-javadoc:
367
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs-javadoc)
C
chegar 已提交
368

369 370
docs-copy:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs-copy)
C
chegar 已提交
371

372 373
docs-zip:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs-zip)
374

375
ALL_TARGETS += docs-javadoc docs-copy docs-zip
C
chegar 已提交
376

A
alanb 已提交
377 378 379
################################################################################
# Cross compilation support

380
ifeq ($(CREATING_BUILDJDK), true)
A
alanb 已提交
381
  # This target is only called by the recursive call below.
382 383
  create-buildjdk-interim-image-helper: interim-image jdk.jlink-launchers \
      java.base-copy jdk.jdeps-launchers
A
alanb 已提交
384 385 386 387 388
endif

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

389
create-buildjdk-interim-image:
A
alanb 已提交
390 391 392 393 394 395
	+($(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)

396 397 398
ALL_TARGETS += create-buildjdk-copy create-buildjdk-interim-image

################################################################################
399
# The interim-image is a small jlinked image that is used to generate artifacts
400 401
# at build time for use when linking the real images.

402 403 404 405 406 407 408 409 410 411 412 413 414 415
INTERIM_JMOD_TARGETS := $(addsuffix -interim-jmod, $(INTERIM_IMAGE_MODULES))

define DeclareInterimJmodRecipe
  $1-interim-jmod:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
	    MODULE=$1 \
	    JMODS_DIR=$(INTERIM_JMODS_DIR) \
	    JMODS_TEMPDIR=$(INTERIM_JMODS_DIR)/temp \
	    INTERIM_JMOD=true \
	)
endef

$(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $(call DeclareInterimJmodRecipe,$m)))

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

419
ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
420 421
  generate-link-opt-data:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f GenerateLinkOptData.gmk)
422
endif
423

424
ALL_TARGETS += $(INTERIM_JMOD_TARGETS) interim-image generate-link-opt-data
A
alanb 已提交
425

426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441
################################################################################
# Generate test names for all JTReg test groups
#

define DeclareRunTestRecipe
  run-test-$1:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$1")

endef

# ALL_NAMED_TESTS is defined in FindTests.gmk
$(foreach t, $(ALL_NAMED_TESTS), $(eval $(call DeclareRunTestRecipe,$t)))
ALL_TEST_TARGETS := $(addprefix run-test-, $(ALL_NAMED_TESTS))

ALL_TARGETS += $(ALL_TEST_TARGETS)

C
chegar 已提交
442
################################################################################
443 444 445 446 447 448 449 450 451 452 453 454 455 456
# 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 已提交
457

458 459 460 461 462 463 464 465
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)

466 467 468
run-test:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$(TEST)")

469 470 471 472 473
ifeq ($(BUILD_GTEST), true)
  test-image-hotspot-gtest:
	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk)
endif

474 475 476
build-test-lib:
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLib.gmk)

477 478 479
ifeq ($(BUILD_FAILURE_HANDLER), true)
  # Builds the failure handler jtreg extension
  build-test-failure-handler:
480 481 482
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
	    -f BuildFailureHandler.gmk build)

483 484
  # Runs the tests for the failure handler jtreg extension
  test-failure-handler:
485 486 487
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
	    -f BuildFailureHandler.gmk test)

488 489
  # Copies the failure handler jtreg extension into the test image
  test-image-failure-handler:
490 491
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
	     -f BuildFailureHandler.gmk images)
492
endif
493

494 495
ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
    test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
496
    test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
497 498
    test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
    run-test
499 500 501 502 503

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

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

507
test-hotspot-jtreg:
508
	$(call RunTests, "hotspot_all", $(JDK_IMAGE_DIR))
509

510
test-hotspot-jtreg-native:
511
	$(call RunTests, "hotspot_native_sanity", $(JDK_IMAGE_DIR))
512

513
test-hotspot-internal:
514 515 516 517
	$(call RunTests, "hotspot_internal", $(JDK_OUTPUTDIR))

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

519
test-jdk-jtreg-native:
520
	$(call RunTests, "jdk_native_sanity", $(JDK_IMAGE_DIR))
C
chegar 已提交
521 522 523 524

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

525
ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
526
    test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make
C
chegar 已提交
527

E
erikj 已提交
528 529 530 531 532 533
################################################################################
# Bundles

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

534 535 536
profiles-bundles:
	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk profiles-bundles)

E
erikj 已提交
537 538 539 540 541 542
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)

543
ALL_TARGETS += product-bundles profiles-bundles test-bundles docs-bundles
E
erikj 已提交
544

C
chegar 已提交
545 546 547 548 549 550 551 552 553 554
################################################################################
# Install targets

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

ALL_TARGETS += install

################################################################################
#
555
# Dependency declarations between targets.
C
chegar 已提交
556
#
557
# These are declared in two groups. First all dependencies between targets that
C
chegar 已提交
558 559 560 561 562 563 564
# 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

565 566
# 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 已提交
567
# recipe targets in order. It's the responsibility of the user to make sure
568
# all prerequisites are fulfilled.
C
chegar 已提交
569 570 571
ifneq ($(findstring -only, $(MAKECMDGOALS)), )
  .NOTPARALLEL:
else
C
chegar 已提交
572 573
  $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools

C
chegar 已提交
574 575
  interim-langtools: $(LANGTOOLS_GENSRC_TARGETS)

N
naoto 已提交
576
  buildtools-jdk: interim-langtools interim-cldrconverter
C
chegar 已提交
577

578 579
  buildtools-hotspot: interim-langtools

580 581
  buildtools-modules: exploded-image-base

C
chegar 已提交
582 583
  $(CORBA_GENSRC_TARGETS): interim-langtools

584
  $(HOTSPOT_GENSRC_TARGETS): interim-langtools buildtools-hotspot
585

C
chegar 已提交
586
  $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
C
chegar 已提交
587

A
alanb 已提交
588 589
  $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk

C
chegar 已提交
590
  $(GENDATA_TARGETS): interim-langtools buildtools-jdk
C
chegar 已提交
591 592 593

  interim-rmic: interim-langtools

594
  $(RMIC_TARGETS): interim-langtools interim-rmic
C
chegar 已提交
595

E
erikj 已提交
596 597
  $(JAVA_TARGETS): interim-langtools

598 599 600 601 602 603
  # Declare dependencies between hotspot-<variant>* targets
  $(foreach v, $(JVM_VARIANTS), \
      $(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \
      $(eval hotspot-$v-libs: hotspot-$v-gensrc) \
  )

E
erikj 已提交
604 605
  hotspot-ide-project: hotspot exploded-image

606 607
  generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs

608 609
  # Building one JVM variant is enough to start building the other libs
  $(LIBS_TARGETS): hotspot-$(JVM_VARIANT_MAIN)-libs
C
chegar 已提交
610 611 612

  $(LAUNCHER_TARGETS): java.base-libs

613 614 615 616
  ifeq ($(STATIC_BUILD), true)
    $(LAUNCHER_TARGETS): generate-exported-symbols
  endif

617 618 619
  # 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.
620
  demos-jdk: java.base-libs exploded-image-optimize
C
chegar 已提交
621 622 623 624 625 626 627 628 629 630 631 632 633

  # 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
634 635 636
  # 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 已提交
637
  ifneq ($(CREATING_BUILDJDK), true)
638
    $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
A
alanb 已提交
639
  endif
C
chegar 已提交
640 641

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

645 646 647
  # jdk.accessibility depends on java.desktop
  jdk.accessibility-libs: java.desktop-libs

648
  # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
C
chegar 已提交
649 650 651 652
  # 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

653 654
  # The swing beans need to have java base properly generated to avoid errors
  # in javadoc.
C
chegar 已提交
655
  java.desktop-gensrc-jdk: java.base-gensrc
656

657 658 659 660 661 662 663 664
  # The annotation processing for jdk.internal.vm.ci and jdk.internal.vm.compiler
  # needs classes from the current JDK.
  jdk.internal.vm.ci-gensrc-hotspot: $(addsuffix -java, \
      $(call FindTransitiveDepsForModule, jdk.internal.vm.ci))
  jdk.internal.vm.compiler-gensrc-hotspot: $(addsuffix -java, \
      $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))

  # For jdk.internal.vm.compiler, the gensrc step is generating a module-info.java.extra
665
  # file to be processed by the gensrc-moduleinfo target.
666
  jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-hotspot
667

C
chegar 已提交
668 669 670
  # Explicitly add dependencies for special targets
  java.base-java: unpack-sec

671
  jdk.jdeps-gendata: java rmic
672

673 674
  # Declare dependencies between jmod targets.
  # java.base jmod needs jrt-fs.jar and access to the other jmods to be built.
675 676 677
  # 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)
678
    java.base-jmod: jrtfs-jar $(filter-out java.base-jmod, $(JMOD_TARGETS))
679
  endif
A
alanb 已提交
680

681 682 683
  # Building java.base-jmod requires all of hotspot to be built.
  java.base-jmod: hotspot

A
alanb 已提交
684
  # Declare dependencies from <module>-jmod to all other module targets
685 686 687
  # When creating a BUILDJDK, the java compilation has already been done by the
  # normal build and copied in.
  ifneq ($(CREATING_BUILDJDK), true)
688
    $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java))
689
  endif
690 691 692 693 694 695 696
  $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata))
  $(foreach m, $(RMIC_MODULES), $(eval $m_JMOD_DEPS += $m-rmic))
  $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs))
  $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers))
  $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy))
  $(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS)))
  $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS)))
A
alanb 已提交
697

698 699 700 701 702 703 704 705 706 707 708 709 710 711
  # 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 已提交
712
  ifeq ($(CREATE_BUILDJDK), true)
713
    # Avoid calling create-buildjdk from within a create-buildjdk call.
714 715
    ifneq ($(CREATING_BUILDJDK), true)
      $(JMOD_TARGETS): create-buildjdk
716
      buildtools-modules: create-buildjdk
717 718
    else
      # While actually creating the buildjdk, the default deps applies.
719
      $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): $(DEFAULT_JMOD_DEPS)
720
    endif
721 722 723
  else
    # The normal non cross compilation case uses the default deps.
    # To avoid races with the optimize target, that also needs to happen first.
724 725
    $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): $(DEFAULT_JMOD_DEPS) \
        exploded-image-optimize
A
alanb 已提交
726 727
  endif

728 729 730
  # All modules include the main license files from java.base.
  $(JMOD_TARGETS): java.base-copy

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

C
chegar 已提交
734
  zip-source: gensrc rmic
C
chegar 已提交
735

A
alanb 已提交
736
  jrtfs-jar: interim-langtools
C
chegar 已提交
737

738 739 740
  ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
    ifeq ($(CREATE_BUILDJDK), true)
      # If creating a buildjdk, the interim image needs to be based on that.
741
      generate-link-opt-data: create-buildjdk
742 743 744 745
    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.
746
      generate-link-opt-data: interim-image
747
    endif
748
    generate-link-opt-data: buildtools-jdk
749

750
    # The generated classlist needs to go into java.base-jmod.
751
    java.base-jmod jdk.jlink-jmod jdk-image jre-image: generate-link-opt-data
752 753
  endif

754 755 756 757
  release-file: create-source-revision-tracker

  jdk-image: jmods zip-source demos samples release-file
  jre-image: jmods release-file
758
  symbols-image: $(LIBS_TARGETS) $(LAUNCHER_TARGETS)
C
chegar 已提交
759

760
  profiles-image: jmods release-file
C
chegar 已提交
761

762
  mac-bundles-jdk: jdk-image jre-image
C
chegar 已提交
763

764 765 766 767 768
  # 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
769

770
  bootcycle-images: jdk-image
C
chegar 已提交
771

A
alanb 已提交
772
  docs-javadoc: $(GENSRC_TARGETS) rmic
C
chegar 已提交
773

E
erikj 已提交
774
  # The gensrc step for jdk.jdi creates an html file that is used by docs-copy.
775
  docs-copy: hotspot-$(JVM_VARIANT_MAIN)-gensrc jdk.jdi-gensrc
C
chegar 已提交
776

777
  docs-zip: docs-javadoc docs-copy
778

779
  test: jdk-image test-image
C
chegar 已提交
780

781 782 783 784 785
  run-test: jdk-image test-image

  # Declare dependency for all generated test targets
  $(foreach t, $(ALL_TEST_TARGETS), $(eval $t: jdk-image test-image))

786 787
  create-buildjdk-copy: jdk.jlink-java java.base-gendata \
      $(addsuffix -java, $(INTERIM_IMAGE_MODULES))
A
alanb 已提交
788

789 790
  create-buildjdk-interim-image: create-buildjdk-copy

791
  interim-image: $(INTERIM_JMOD_TARGETS)
C
chegar 已提交
792

793 794
  test-make: clean-test-make

795
  build-test-lib: exploded-image-optimize
E
erikj 已提交
796

797 798 799 800 801 802
  build-test-failure-handler: interim-langtools

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

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

803 804
  build-test-hotspot-jtreg-native: buildtools-jdk \
      hotspot-$(JVM_VARIANT_MAIN)-libs
805 806 807

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

808 809 810 811
  test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native

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

812 813
  test-image-hotspot-gtest: hotspot

814 815
  test-hotspot-internal: exploded-image

816
  test-hotspot-jtreg: jdk-image test-image
817

818 819
  test-hotspot-gtest: exploded-image test-image-hotspot-gtest

820 821
  install: product-images

E
erikj 已提交
822 823
  product-bundles: product-images

824 825
  profiles-bundles: profiles-images

E
erikj 已提交
826 827 828 829
  test-bundles: test-image

  docs-bundles: docs-image

830
  generate-summary: jmods buildtools-modules
A
alanb 已提交
831

C
chegar 已提交
832 833 834 835 836
endif

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

837
buildtools: buildtools-langtools interim-langtools interim-rmic \
838
    buildtools-jdk buildtools-hotspot
C
chegar 已提交
839

840 841 842 843 844 845 846 847 848 849
hotspot: $(HOTSPOT_VARIANT_TARGETS) hotspot-jsig

hotspot-libs: hotspot-jsig

# Create targets hotspot-libs and hotspot-gensrc.
$(foreach v, $(JVM_VARIANTS), \
  $(eval hotspot-libs: hotspot-$v-libs) \
  $(eval hotspot-gensrc: hotspot-$v-gensrc) \
)

C
chegar 已提交
850 851 852 853
gensrc: $(GENSRC_TARGETS)

gendata: $(GENDATA_TARGETS)

A
alanb 已提交
854
copy: $(ALL_COPY_TARGETS)
C
chegar 已提交
855 856 857 858 859

java: $(JAVA_TARGETS)

rmic: $(RMIC_TARGETS)

C
chegar 已提交
860
libs: $(LIBS_TARGETS)
C
chegar 已提交
861 862 863

launchers: $(LAUNCHER_TARGETS)

A
alanb 已提交
864 865
jmods: $(JMOD_TARGETS)

C
chegar 已提交
866 867 868
# 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 已提交
869 870

# Declare dependencies from <module> to all the individual targets specific
871
# to that module <module>-*, that are needed for the exploded image.
C
chegar 已提交
872 873 874 875
$(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 已提交
876
$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
C
chegar 已提交
877
$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
A
alanb 已提交
878
$(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy))
879 880 881 882

# Building java.base includes building all of hotspot.
java.base: hotspot

E
erikj 已提交
883 884 885 886
demos: demos-jdk

samples: samples-jdk

887
# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk.
888
exploded-image-base: $(ALL_MODULES)
889
exploded-image: exploded-image-base release-file
890 891 892 893 894
# 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 已提交
895

896
create-buildjdk: create-buildjdk-copy create-buildjdk-interim-image
A
alanb 已提交
897

E
erikj 已提交
898 899
mac-bundles: mac-bundles-jdk

900
# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables,
901 902 903 904
# 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)
905 906 907 908 909
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 已提交
910

911 912 913
# Declare these for backwards compatiblity and convenience.
profiles profiles-images: profiles-image

914 915 916 917
# 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 已提交
918
ifneq ($(CREATE_BUILDJDK), true)
919 920 921
  ifeq ($(EXTERNAL_BUILDJDK), false)
    product-images: generate-summary
  endif
A
alanb 已提交
922
endif
C
chegar 已提交
923

C
chegar 已提交
924
ifeq ($(OPENJDK_TARGET_OS), macosx)
925
  product-images: mac-bundles
C
chegar 已提交
926
endif
C
chegar 已提交
927

928
# This target builds the documentation image
929
docs-image: docs-javadoc docs-copy
C
chegar 已提交
930

931
# This target builds the test image
932
test-image: prepare-test-image test-image-hotspot-jtreg-native \
933
    test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest
934

E
erikj 已提交
935
# all-images builds all our deliverables as images.
936 937
all-images: product-images test-image docs-image

E
erikj 已提交
938 939 940
# all-bundles packages all our deliverables as tar.gz bundles.
all-bundles: product-bundles test-bundles docs-bundles

941 942
ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
    copy java rmic libs launchers jmods \
943 944
    jdk.jdwp.agent-gensrc $(ALL_MODULES) demos samples \
    exploded-image-base exploded-image \
945 946 947
    create-buildjdk mac-bundles product-images \
    profiles profiles-images \
    docs-image test-image all-images \
E
erikj 已提交
948
    all-bundles
C
chegar 已提交
949 950 951

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

952 953 954
# Traditional targets typically run by users.
# These can be considered aliases for the targets now named by a more
# "modern" naming scheme.
955
default: $(DEFAULT_MAKE_TARGET)
956 957 958
jdk: exploded-image
images: product-images
docs: docs-image
E
erikj 已提交
959
bundles: all-bundles
960
all: all-images
C
chegar 已提交
961

E
erikj 已提交
962
ALL_TARGETS += default jdk images docs bundles all
C
chegar 已提交
963 964 965 966 967 968 969

################################################################################
################################################################################
#
# Clean targets
#
################################################################################
970
# Clean targets are automatically run serially by the Makefile calling this
971
# file.
C
chegar 已提交
972

C
chegar 已提交
973
CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
A
alanb 已提交
974
    images make-support test-make bundles buildjdk
C
chegar 已提交
975
CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
I
ihse 已提交
976 977
CLEAN_SUPPORT_DIRS += demos
CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS))
978
CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib
979
CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
980
CLEAN_PHASES := gensrc java native include
C
chegar 已提交
981 982 983 984 985
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 已提交
986 987

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

992 993 994
clean-docs:
	$(call CleanDocs)

C
chegar 已提交
995 996 997
$(CLEAN_DIR_TARGETS):
	$(call CleanDir,$(patsubst clean-%, %, $@))

I
ihse 已提交
998 999 1000
$(CLEAN_SUPPORT_DIR_TARGETS):
	$(call CleanSupportDir,$(patsubst clean-%, %, $@))

1001 1002 1003
$(CLEAN_TEST_TARGETS):
	$(call CleanTest,$(patsubst clean-test-%, %, $@))

C
chegar 已提交
1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017
$(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 已提交
1018

E
erikj 已提交
1019 1020
# Remove everything, including configure configuration. If the output
# directory was created by configure and now becomes empty, remove it as well.
O
ohair 已提交
1021
dist-clean: clean
E
erikj 已提交
1022 1023
	($(CD) $(OUTPUT_ROOT) && \
	    $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide)
C
chegar 已提交
1024
	$(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
1025 1026 1027
	  if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
	    $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
	  else \
C
chegar 已提交
1028 1029
	    ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
	        && $(RM) -r $(OUTPUT_ROOT)) \
1030 1031
	  fi \
	)
C
chegar 已提交
1032 1033
	$(ECHO) Cleaned everything, you will have to re-run configure.

1034
ALL_TARGETS += clean clean-docs dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_SUPPORT_DIR_TARGETS) \
I
ihse 已提交
1035 1036
    $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) \
    $(CLEAN_MODULE_PHASE_TARGETS)
C
chegar 已提交
1037 1038

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

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

I
ihse 已提交
1044
################################################################################
O
ohair 已提交
1045

I
ihse 已提交
1046 1047
# Include JPRT targets
include $(SRC_ROOT)/make/Jprt.gmk
C
chegar 已提交
1048 1049 1050

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

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

I
ihse 已提交
1054 1055 1056 1057 1058 1059
print-targets:
	  @$(ECHO) $(sort $(ALL_TARGETS))

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

1060 1061 1062
print-tests:
	  @$(ECHO) $(sort $(ALL_NAMED_TESTS))

I
ihse 已提交
1063
create-main-targets-include:
E
erikj 已提交
1064
	  $(call LogInfo, Generating main target list)
I
ihse 已提交
1065 1066
	  @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \
	      $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk
C
chegar 已提交
1067 1068 1069 1070

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

.PHONY: $(ALL_TARGETS)
O
ohair 已提交
1071 1072

FRC: # Force target