Main.gmk 21.8 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
E
erikj 已提交
45 46
# Explicitly generate module deps makefile data
include $(SRC_ROOT)/make/GenerateModuleDeps.gmk
47
include $(SRC_ROOT)/make/common/Modules.gmk
O
ohair 已提交
48

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

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

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

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

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

C
chegar 已提交
70 71 72
buildtools-langtools:
	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)

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

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

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

C
chegar 已提交
82
buildtools-jdk:
E
erikj 已提交
83
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
O
ohair 已提交
84

85
ALL_TARGETS += buildtools-langtools interim-langtools \
N
naoto 已提交
86
    interim-rmic interim-cldrconverter buildtools-jdk
C
chegar 已提交
87 88 89 90 91 92 93 94 95 96

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

import-hotspot:
	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Import.gmk)

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

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

ALL_TARGETS += import-hotspot unpack-sec generate-exported-symbols
C
chegar 已提交
101 102 103

################################################################################
# Gensrc targets, generating source before java compilation can be done
C
chegar 已提交
104 105 106 107 108 109 110 111 112 113
$(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))
114
HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
C
chegar 已提交
115 116 117 118 119

ALL_TARGETS += $(GENSRC_TARGETS)

################################################################################
# Generate data targets
C
chegar 已提交
120 121 122 123 124 125
$(eval $(call DeclareRecipesForPhase, GENDATA, \
    TARGET_SUFFIX := gendata, \
    FILE_PREFIX := Gendata, \
    MAKE_SUBDIR := gendata, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
126 127 128 129 130

ALL_TARGETS += $(GENDATA_TARGETS)

################################################################################
# Copy files targets
C
chegar 已提交
131 132 133 134 135
$(eval $(call DeclareRecipesForPhase, COPY, \
    TARGET_SUFFIX := copy, \
    FILE_PREFIX := Copy, \
    MAKE_SUBDIR := copy, \
    CHECK_MODULES := $(ALL_MODULES), \
136 137
    USE_WRAPPER := true, \
    MULTIPLE_MAKEFILES := true))
C
chegar 已提交
138 139 140 141 142 143 144 145 146 147

ALL_TARGETS += $(COPY_TARGETS)

################################################################################
# Targets for compiling all java modules. Nashorn is treated separately.
JAVA_MODULES := $(call FindJavaModules)
JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))

define DeclareCompileJavaRecipe
  $1-java:
148 149
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
	    -f CompileJavaModules.gmk MODULE=$1)
C
chegar 已提交
150 151 152 153 154 155 156 157
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:
158 159
	+($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
	    -f BuildNashorn.gmk compile)
C
chegar 已提交
160 161 162 163 164

ALL_TARGETS += $(JAVA_TARGETS)

################################################################################
# Targets for running rmic.
C
chegar 已提交
165 166 167 168 169
$(eval $(call DeclareRecipesForPhase, RMIC, \
    TARGET_SUFFIX := rmic, \
    FILE_PREFIX := Rmic, \
    MAKE_SUBDIR := rmic, \
    CHECK_MODULES := $(ALL_MODULES)))
C
chegar 已提交
170 171 172 173 174

ALL_TARGETS += $(RMIC_TARGETS)

################################################################################
# Targets for compiling native libraries
C
chegar 已提交
175 176 177 178 179 180
$(eval $(call DeclareRecipesForPhase, LIBS, \
    TARGET_SUFFIX := libs, \
    FILE_PREFIX := Lib, \
    MAKE_SUBDIR := lib, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
181

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

C
chegar 已提交
184 185
################################################################################
# Targets for compiling native executables
C
chegar 已提交
186 187 188 189 190 191
$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
    TARGET_SUFFIX := launchers, \
    FILE_PREFIX := Launcher, \
    MAKE_SUBDIR := launcher, \
    CHECK_MODULES := $(ALL_MODULES), \
    USE_WRAPPER := true))
C
chegar 已提交
192 193 194 195 196

ALL_TARGETS += $(LAUNCHER_TARGETS)

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

198
ifeq ($(BUILD_HOTSPOT),true)
C
chegar 已提交
199
  hotspot:
200
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
201
endif
O
ohair 已提交
202

C
chegar 已提交
203
ALL_TARGETS += hotspot
204

C
chegar 已提交
205 206
################################################################################
# Build demos and samples targets
207

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

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

E
erikj 已提交
214
ALL_TARGETS += demos-jdk samples-jdk
O
ohair 已提交
215

C
chegar 已提交
216 217
################################################################################
# Image targets
O
ohair 已提交
218 219 220

# 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 已提交
221 222
source-tips: $(SUPPORT_OUTPUTDIR)/source_tips
$(SUPPORT_OUTPUTDIR)/source_tips: FRC
E
erikj 已提交
223
	$(call MakeDir, $(@D))
O
ohair 已提交
224
	@$(RM) $@
225
	@$(call GetSourceTips)
O
ohair 已提交
226

227
BOOTCYCLE_TARGET := product-images
C
chegar 已提交
228 229
bootcycle-images:
	@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
230 231
	+$(MAKE) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
	    JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main
C
chegar 已提交
232

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

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

C
chegar 已提交
239 240
strip-binaries:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f StripBinaries.gmk)
C
chegar 已提交
241

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

C
chegar 已提交
245 246 247 248 249 250
jimages:
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jimages)

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

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

C
chegar 已提交
254
ALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \
E
erikj 已提交
255
    jrtfs-jar jimages profiles mac-bundles-jdk
C
chegar 已提交
256 257 258 259 260 261 262 263 264 265 266 267 268

################################################################################
# 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)

ALL_TARGETS += docs-javadoc docs-jvmtidoc

################################################################################
269 270 271 272 273 274 275 276 277 278 279 280 281 282
# 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 已提交
283

284 285 286 287 288 289 290 291
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)

292 293 294
build-test-lib:
	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLib.gmk)

295 296
ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
    test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
297
    test-image-jdk-jtreg-native build-test-lib
298 299 300 301 302

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

# Run tests specified by $(TEST), or the default test set.
C
chegar 已提交
303
test:
304 305
	$(call RunTests, $(TEST))

306 307 308
test-hotspot-jtreg:
	$(call RunTests, "hotspot_all")

309 310 311
test-hotspot-jtreg-native:
	$(call RunTests, "hotspot_native_sanity")

312 313 314
test-hotspot-internal:
	$(call RunTests, "hotspot_internal")

315 316
test-jdk-jtreg-native:
	$(call RunTests, "jdk_native_sanity")
C
chegar 已提交
317 318 319 320

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

321 322
ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
    test-hotspot-internal test-jdk-jtreg-native test-make
C
chegar 已提交
323 324 325 326 327

################################################################################
# Verification targets

verify-modules:
328
	@$(call TargetEnter)
329
	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CheckModules.gmk)
330
	@$(call TargetExit)
C
chegar 已提交
331

332
ALL_TARGETS += verify-modules
C
chegar 已提交
333 334 335 336 337 338 339 340 341 342 343

################################################################################
# Install targets

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

ALL_TARGETS += install

################################################################################
#
344
# Dependency declarations between targets.
C
chegar 已提交
345
#
346
# These are declared in two groups. First all dependencies between targets that
C
chegar 已提交
347 348 349 350 351 352 353
# 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

354 355
# 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 已提交
356
# recipe targets in order. It's the responsibility of the user to make sure
357
# all prerequisites are fulfilled.
C
chegar 已提交
358 359 360
ifneq ($(findstring -only, $(MAKECMDGOALS)), )
  .NOTPARALLEL:
else
C
chegar 已提交
361 362
  $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools

C
chegar 已提交
363 364
  interim-langtools: $(LANGTOOLS_GENSRC_TARGETS)

N
naoto 已提交
365
  buildtools-jdk: interim-langtools interim-cldrconverter
C
chegar 已提交
366 367 368

  $(CORBA_GENSRC_TARGETS): interim-langtools

369 370
  $(HOTSPOT_GENSRC_TARGETS): interim-langtools

C
chegar 已提交
371
  $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
C
chegar 已提交
372

C
chegar 已提交
373
  $(GENDATA_TARGETS): interim-langtools buildtools-jdk
C
chegar 已提交
374 375 376

  interim-rmic: interim-langtools

377
  $(RMIC_TARGETS): interim-langtools interim-rmic
C
chegar 已提交
378

E
erikj 已提交
379 380
  $(JAVA_TARGETS): interim-langtools

C
chegar 已提交
381 382
  import-hotspot: hotspot

383 384
  generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs

C
chegar 已提交
385
  $(LIBS_TARGETS): import-hotspot
C
chegar 已提交
386 387 388

  $(LAUNCHER_TARGETS): java.base-libs

389 390 391 392
  ifeq ($(STATIC_BUILD), true)
    $(LAUNCHER_TARGETS): generate-exported-symbols
  endif

393 394 395
  # 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 已提交
396
  demos-jdk: $(JAVA_TARGETS)
C
chegar 已提交
397 398 399 400 401 402 403 404 405 406 407 408 409

  # 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
410 411
  # Skip modules that do not have java source.
  $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
C
chegar 已提交
412 413

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

417 418 419
  # jdk.accessibility depends on java.desktop
  jdk.accessibility-libs: java.desktop-libs

420
  # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
C
chegar 已提交
421 422 423 424
  # 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

425 426
  # The swing beans need to have java base properly generated to avoid errors
  # in javadoc.
C
chegar 已提交
427
  java.desktop-gensrc-jdk: java.base-gensrc
428

429 430
  # The annotation processing for jdk.vm.ci needs java.base classes from the
  # current JDK.
431
  jdk.vm.ci-gensrc-hotspot: java.base-java
432

C
chegar 已提交
433 434 435
  # Explicitly add dependencies for special targets
  java.base-java: unpack-sec

436 437 438
  # The copy target copies files generated by gensrc
  java.base-copy-hotspot: java.base-gensrc-hotspot

439
  jdk.jdeps-gendata: java rmic
440

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

C
chegar 已提交
444
  zip-source: gensrc rmic
C
chegar 已提交
445

C
chegar 已提交
446
  strip-binaries: libs launchers gendata copy
C
chegar 已提交
447

C
chegar 已提交
448
  jrtfs-jar: buildtools-jdk
C
chegar 已提交
449

C
chegar 已提交
450 451
  jimages: exploded-image zip-source strip-binaries source-tips demos samples \
      jrtfs-jar
C
chegar 已提交
452

C
chegar 已提交
453
  profiles: exploded-image strip-binaries source-tips
C
chegar 已提交
454

E
erikj 已提交
455
  mac-bundles-jdk: jimages
C
chegar 已提交
456

C
chegar 已提交
457
  bootcycle-images: jimages
C
chegar 已提交
458

C
chegar 已提交
459
  docs-javadoc: gensrc rmic
C
chegar 已提交
460 461 462

  docs-jvmtidoc: hotspot

463
  test: jimages test-image
C
chegar 已提交
464

465
  verify-modules: exploded-image
C
chegar 已提交
466

467 468
  test-make: clean-test-make

E
erikj 已提交
469 470
  build-test-lib: java

471 472 473 474
  build-test-hotspot-jtreg-native: buildtools-jdk

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

475 476 477 478
  test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native

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

479 480
  test-hotspot-internal: exploded-image

481 482
  test-hotspot-jtreg: jimages test-image

483 484
  install: product-images

C
chegar 已提交
485 486 487 488 489
endif

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

490
buildtools: buildtools-langtools interim-langtools interim-rmic \
C
chegar 已提交
491 492
    buildtools-jdk

C
chegar 已提交
493 494 495 496 497 498 499 500 501 502
gensrc: $(GENSRC_TARGETS)

gendata: $(GENDATA_TARGETS)

copy: $(COPY_TARGETS)

java: $(JAVA_TARGETS)

rmic: $(RMIC_TARGETS)

C
chegar 已提交
503
libs: $(LIBS_TARGETS)
C
chegar 已提交
504 505 506

launchers: $(LAUNCHER_TARGETS)

C
chegar 已提交
507 508 509
# 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 已提交
510 511

# Declare dependencies from <module> to all the individual targets specific
512
# to that module <module>-*, that are needed for the exploded image.
C
chegar 已提交
513 514 515 516
$(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 已提交
517
$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
C
chegar 已提交
518 519 520
$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
$(foreach m, $(COPY_MODULES), $(eval $m: $m-copy))

E
erikj 已提交
521 522 523 524
demos: demos-jdk

samples: samples-jdk

525
# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk.
526
exploded-image: $(ALL_MODULES)
C
chegar 已提交
527

E
erikj 已提交
528 529
mac-bundles: mac-bundles-jdk

530
# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables,
531 532 533 534 535
# 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)
product-images: jimages demos samples zip-security verify-modules
C
chegar 已提交
536

C
chegar 已提交
537
ifeq ($(OPENJDK_TARGET_OS), macosx)
538
  product-images: mac-bundles
C
chegar 已提交
539
endif
C
chegar 已提交
540

541 542
# This target builds the documentation image
docs-image: docs-javadoc docs-jvmtidoc
C
chegar 已提交
543

544
# This target builds the test image
545 546
test-image: prepare-test-image test-image-hotspot-jtreg-native \
    test-image-jdk-jtreg-native
547

548 549 550
# all-images is the top-most target, it builds all our deliverables ("images").
all-images: product-images test-image docs-image

C
chegar 已提交
551
ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \
552
    jdk.jdwp.agent-gensrc $(ALL_MODULES) demos samples exploded-image \
E
erikj 已提交
553
    mac-bundles product-images docs-image test-image all-images
C
chegar 已提交
554 555 556

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

557 558 559
# Traditional targets typically run by users.
# These can be considered aliases for the targets now named by a more
# "modern" naming scheme.
560
default: $(DEFAULT_MAKE_TARGET)
561 562 563 564
jdk: exploded-image
images: product-images
docs: docs-image
all: all-images
C
chegar 已提交
565

566
ALL_TARGETS += default jdk images docs all
C
chegar 已提交
567 568 569 570 571 572 573

################################################################################
################################################################################
#
# Clean targets
#
################################################################################
574
# Clean targets are automatically run serially by the Makefile calling this
575
# file.
C
chegar 已提交
576

C
chegar 已提交
577
CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
578
    images make-support test-make bundles
C
chegar 已提交
579
CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
I
ihse 已提交
580 581
CLEAN_SUPPORT_DIRS += demos
CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS))
582
CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib
583
CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
E
erikj 已提交
584
CLEAN_PHASES := gensrc java native include docs
C
chegar 已提交
585 586 587 588 589
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 已提交
590 591

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

C
chegar 已提交
596 597 598
$(CLEAN_DIR_TARGETS):
	$(call CleanDir,$(patsubst clean-%, %, $@))

I
ihse 已提交
599 600 601
$(CLEAN_SUPPORT_DIR_TARGETS):
	$(call CleanSupportDir,$(patsubst clean-%, %, $@))

602 603 604
$(CLEAN_TEST_TARGETS):
	$(call CleanTest,$(patsubst clean-test-%, %, $@))

C
chegar 已提交
605 606 607 608 609 610 611 612 613 614 615 616 617 618
$(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 已提交
619

E
erikj 已提交
620 621
# Remove everything, including configure configuration. If the output
# directory was created by configure and now becomes empty, remove it as well.
O
ohair 已提交
622
dist-clean: clean
E
erikj 已提交
623 624
	($(CD) $(OUTPUT_ROOT) && \
	    $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide)
C
chegar 已提交
625
	$(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
626 627 628
	  if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
	    $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
	  else \
C
chegar 已提交
629 630
	    ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
	        && $(RM) -r $(OUTPUT_ROOT)) \
631 632
	  fi \
	)
C
chegar 已提交
633 634
	$(ECHO) Cleaned everything, you will have to re-run configure.

I
ihse 已提交
635 636 637
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 已提交
638 639

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

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

I
ihse 已提交
645
################################################################################
O
ohair 已提交
646

I
ihse 已提交
647 648
# Include JPRT targets
include $(SRC_ROOT)/make/Jprt.gmk
C
chegar 已提交
649 650 651

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

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

I
ihse 已提交
655 656 657 658 659 660
print-targets:
	  @$(ECHO) $(sort $(ALL_TARGETS))

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

I
ihse 已提交
661
create-main-targets-include:
E
erikj 已提交
662
	  $(call LogInfo, Generating main target list)
I
ihse 已提交
663 664
	  @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \
	      $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk
C
chegar 已提交
665 666 667 668

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

.PHONY: $(ALL_TARGETS)
O
ohair 已提交
669 670

FRC: # Force target