Main.gmk revision 1303:291e59375885
152284Sobrien#
290075Sobrien# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
3117395Skan# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
490075Sobrien#
552284Sobrien# This code is free software; you can redistribute it and/or modify it
652284Sobrien# under the terms of the GNU General Public License version 2 only, as
752284Sobrien# published by the Free Software Foundation.  Oracle designates this
852284Sobrien# particular file as subject to the "Classpath" exception as provided
952284Sobrien# by Oracle in the LICENSE file that accompanied this code.
1052284Sobrien#
1152284Sobrien# This code is distributed in the hope that it will be useful, but WITHOUT
1252284Sobrien# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1352284Sobrien# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1452284Sobrien# version 2 for more details (a copy is included in the LICENSE file that
1552284Sobrien# accompanied this code).
1652284Sobrien#
1752284Sobrien# You should have received a copy of the GNU General Public License version
1852284Sobrien# 2 along with this work; if not, write to the Free Software Foundation,
1952284Sobrien# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2052284Sobrien#
2190075Sobrien# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2252284Sobrien# or visit www.oracle.com if you need additional information or have any
23117395Skan# questions.
24117395Skan#
2552284Sobrien
2652284Sobrien################################################################################
27117395Skan# This is the main makefile containing most actual top level targets. It needs
2890075Sobrien# to be called with a SPEC file defined.
2990075Sobrien
3090075Sobrien# Declare default target
31117395Skandefault:
32117395Skan
33117395Skan# Now load the spec
3452284Sobrieninclude $(SPEC)
3552284Sobrien
3652284Sobrieninclude $(SRC_ROOT)/make/MakeHelpers.gmk
37117395Skan
38117395Skan# Load the vital tools for all the makefiles.
3952284Sobrieninclude $(SRC_ROOT)/make/common/MakeBase.gmk
40117395Skaninclude $(SRC_ROOT)/make/common/Modules.gmk
4152284Sobrien
4252284Sobrien# Declare ALL_TARGETS as an immediate variable. This variable is a list of all
4352284Sobrien# valid top level targets. It's used to declare them all as PHONY and to
4452284Sobrien# generate the -only targets.
45117395SkanALL_TARGETS :=
46117395Skan
47117395Skan# Hook to include the corresponding custom file, if present.
48117395Skan$(eval $(call IncludeCustomExtension, , Main.gmk))
49117395Skan
50117395Skan# All modules for the current target platform.
51117395Skan# Manually add jdk.hotspot.agent for now.
52117395SkanALL_MODULES := $(call FindAllModules) jdk.hotspot.agent
53117395Skan
54117395Skan################################################################################
5590075Sobrien################################################################################
5652284Sobrien#
57117395Skan# Recipes for all targets. Only recipes, dependencies are declared later.
58117395Skan#
59117395Skan################################################################################
60117395Skan
61117395Skan################################################################################
62117395Skan# Interim/build tools targets, compiling tools used during the build
63117395Skan
64117395Skanbuildtools-langtools:
65117395Skan	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)
66117395Skan
67117395Skaninterim-langtools:
68117395Skan	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
69117395Skan
70117395Skaninterim-corba:
71117395Skan	+($(CD) $(CORBA_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
72117395Skan
73117395Skaninterim-rmic:
7452284Sobrien	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
7590075Sobrien
7690075Sobrienbuildtools-jdk:
7790075Sobrien	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk java-tools)
7890075Sobrien
7990075SobrienALL_TARGETS += buildtools-langtools interim-langtools interim-corba \
8090075Sobrien    interim-rmic buildtools-jdk
8190075Sobrien
8290075Sobrien################################################################################
8390075Sobrien# Special targets for certain modules
8490075Sobrien
8590075Sobrienimport-hotspot:
8690075Sobrien	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Import.gmk)
8790075Sobrien
8890075Sobrienunpack-sec:
8990075Sobrien	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk)
9090075Sobrien
9190075SobrienALL_TARGETS += import-hotspot unpack-sec
9290075Sobrien
9390075Sobrien################################################################################
9490075Sobrien# Gensrc targets, generating source before java compilation can be done
9590075Sobrien$(eval $(call DeclareRecipesForPhase, GENSRC, \
9690075Sobrien    TARGET_SUFFIX := gensrc, \
9790075Sobrien    FILE_PREFIX := Gensrc, \
9890075Sobrien    MAKE_SUBDIR := gensrc, \
9990075Sobrien    CHECK_MODULES := $(ALL_MODULES), \
10090075Sobrien    MULTIPLE_MAKEFILES := true))
10190075Sobrien
10290075SobrienJDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
10390075SobrienLANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
10490075SobrienCORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
10552284Sobrien
10652284SobrienALL_TARGETS += $(GENSRC_TARGETS)
10752284Sobrien
10852284Sobrien################################################################################
10952284Sobrien# Generate data targets
11052284Sobrien$(eval $(call DeclareRecipesForPhase, GENDATA, \
11152284Sobrien    TARGET_SUFFIX := gendata, \
11252284Sobrien    FILE_PREFIX := Gendata, \
11390075Sobrien    MAKE_SUBDIR := gendata, \
114117395Skan    CHECK_MODULES := $(ALL_MODULES), \
11590075Sobrien    USE_WRAPPER := true))
11690075Sobrien
11790075SobrienALL_TARGETS += $(GENDATA_TARGETS)
11890075Sobrien
11990075Sobrien################################################################################
12090075Sobrien# Copy files targets
12190075Sobrien$(eval $(call DeclareRecipesForPhase, COPY, \
12290075Sobrien    TARGET_SUFFIX := copy, \
12352284Sobrien    FILE_PREFIX := Copy, \
12490075Sobrien    MAKE_SUBDIR := copy, \
12590075Sobrien    CHECK_MODULES := $(ALL_MODULES), \
12690075Sobrien    USE_WRAPPER := true))
12790075Sobrien
12890075SobrienALL_TARGETS += $(COPY_TARGETS)
12990075Sobrien
13090075Sobrien################################################################################
13152284Sobrien# Targets for compiling all java modules. Nashorn is treated separately.
13252284SobrienJAVA_MODULES := $(call FindJavaModules)
13352284SobrienJAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))
13490075Sobrien
13552284Sobriendefine DeclareCompileJavaRecipe
13690075Sobrien  $1-java:
137117395Skan	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CompileJavaModules.gmk \
138117395Skan	    $1 JAVA_MODULES=$1)
13952284Sobrienendef
14052284Sobrien
14152284Sobrien$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \
14252284Sobrien    $(eval $(call DeclareCompileJavaRecipe,$m)))
14352284Sobrien
14452284Sobrien# Build nashorn. Needs to be compiled separately from the rest of the modules
14552284Sobrien# due to nasgen.
14652284Sobrienjdk.scripting.nashorn-java:
14752284Sobrien	+($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildNashorn.gmk compile)
14852284Sobrien
14952284SobrienALL_TARGETS += $(JAVA_TARGETS)
15052284Sobrien
15152284Sobrien################################################################################
15252284Sobrien# Targets for running rmic.
15352284Sobrien$(eval $(call DeclareRecipesForPhase, RMIC, \
15452284Sobrien    TARGET_SUFFIX := rmic, \
15552284Sobrien    FILE_PREFIX := Rmic, \
15652284Sobrien    MAKE_SUBDIR := rmic, \
15752284Sobrien    CHECK_MODULES := $(ALL_MODULES)))
15852284Sobrien
15952284SobrienALL_TARGETS += $(RMIC_TARGETS)
16052284Sobrien
16190075Sobrien################################################################################
16290075Sobrien# Targets for compiling native libraries
16390075Sobrien$(eval $(call DeclareRecipesForPhase, LIBS, \
16490075Sobrien    TARGET_SUFFIX := libs, \
16590075Sobrien    FILE_PREFIX := Lib, \
16690075Sobrien    MAKE_SUBDIR := lib, \
16752284Sobrien    CHECK_MODULES := $(ALL_MODULES), \
16890075Sobrien    USE_WRAPPER := true))
16990075Sobrien
17090075SobrienALL_TARGETS += $(LIBS_TARGETS)
17190075Sobrien
17290075Sobrien################################################################################
17390075Sobrien# Targets for compiling native executables
17490075Sobrien$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
17590075Sobrien    TARGET_SUFFIX := launchers, \
17690075Sobrien    FILE_PREFIX := Launcher, \
17790075Sobrien    MAKE_SUBDIR := launcher, \
17852284Sobrien    CHECK_MODULES := $(ALL_MODULES), \
17990075Sobrien    USE_WRAPPER := true))
18090075Sobrien
18152284SobrienALL_TARGETS += $(LAUNCHER_TARGETS)
18252284Sobrien
18352284Sobrien################################################################################
18452284Sobrien# Build hotspot target
18552284Sobrien
18652284Sobrienifeq ($(BUILD_HOTSPOT),true)
18752284Sobrien  hotspot:
18852284Sobrien	($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
18952284Sobrienendif
19052284Sobrien
19190075SobrienALL_TARGETS += hotspot
19290075Sobrien
19352284Sobrien################################################################################
19452284Sobrien# Build demos and samples targets
19590075Sobrien
19652284Sobriendemos:
19752284Sobrien	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk)
19852284Sobrien
19952284Sobriensamples:
20052284Sobrien	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopySamples.gmk)
20152284Sobrien
20252284SobrienALL_TARGETS += demos samples
20352284Sobrien
20452284Sobrien################################################################################
20552284Sobrien# Image targets
20652284Sobrien
20752284Sobrien# Stores the tips for each repository. This file is be used when constructing the jdk image and can be
20852284Sobrien# used to track the exact sources used to build that image.
20952284Sobriensource-tips: $(SUPPORT_OUTPUTDIR)/source_tips
21052284Sobrien$(SUPPORT_OUTPUTDIR)/source_tips: FRC
21152284Sobrien	@$(MKDIR) -p $(@D)
21290075Sobrien	@$(RM) $@
21352284Sobrien	@$(call GetSourceTips)
21452284Sobrien
21552284SobrienBOOTCYCLE_TARGET := images
21652284Sobrienbootcycle-images:
21752284Sobrien	@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
21852284Sobrien	+$(MAKE) $(MAKE_ARGS) -f Main.gmk SPEC=$(dir $(SPEC))bootcycle-spec.gmk $(BOOTCYCLE_TARGET)
21952284Sobrien
22052284Sobrienzip-security:
22190075Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk)
22252284Sobrien
22352284Sobrienzip-source:
22452284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk)
22552284Sobrien
22652284Sobrienstrip-binaries:
22752284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f StripBinaries.gmk)
22852284Sobrien
22952284Sobrienjrtfs-jar:
23052284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk)
23152284Sobrien
23252284Sobrienjimages:
23352284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jimages)
23452284Sobrien
23552284Sobrienprofiles:
23652284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)
23752284Sobrien
23890075Sobrienmac-bundles:
23952284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
24052284Sobrien
24152284Sobrienprepare-test-image:
24252284Sobrien	$(MKDIR) -p $(TEST_IMAGE_DIR)
24352284Sobrien	$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
24452284Sobrien
24552284SobrienALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \
24652284Sobrien    jrtfs-jar jimages profiles mac-bundles prepare-test-image
24752284Sobrien
24852284Sobrien################################################################################
24952284Sobrien# Docs targets
25052284Sobrien
25152284Sobriendocs-javadoc:
25252284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)
25352284Sobrien
25452284Sobriendocs-jvmtidoc:
25552284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk jvmtidocs)
25652284Sobrien
25752284SobrienALL_TARGETS += docs-javadoc docs-jvmtidoc
25852284Sobrien
25952284Sobrien################################################################################
26052284Sobrien# Test target
26152284Sobrien
26252284Sobrientest:
26352284Sobrien	($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
26452284Sobrien	    JT_HOME=$(JT_HOME) PRODUCT_HOME=$(JDK_IMAGE_DIR) \
26552284Sobrien	    ALT_OUTPUTDIR=$(OUTPUT_ROOT) CONCURRENCY=$(JOBS) $(TEST)) || true
26652284Sobrien
26752284Sobrientest-make:
268117395Skan	($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
269117395Skan
270117395SkanALL_TARGETS += test test-make
271117395Skan
27252284Sobrien################################################################################
27352284Sobrien# Verification targets
27452284Sobrien
27552284Sobrienverify-modules:
27652284Sobrien	@$(call TargetEnter)
277117395Skan	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CheckModules.gmk)
27852284Sobrien	@$(call TargetExit)
27952284Sobrien
28052284SobrienALL_TARGETS += verify-modules
28152284Sobrien
28252284Sobrien################################################################################
28352284Sobrien# Install targets
28490075Sobrien
28552284Sobrieninstall:
28652284Sobrien	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk)
28752284Sobrien
28852284SobrienALL_TARGETS += install
28952284Sobrien
29052284Sobrien################################################################################
29152284Sobrien#
29252284Sobrien# Dependency declarations between targets.
29352284Sobrien#
29452284Sobrien# These are declared in two groups. First all dependencies between targets that
29552284Sobrien# have recipes above as these dependencies may be disabled. Then the aggregator
29652284Sobrien# targets that do not have recipes of their own, which will never have their
29752284Sobrien# dependencies disabled.
29852284Sobrien#
29990075Sobrien################################################################################
30052284Sobrien# Targets with recipes above
30152284Sobrien
30252284Sobrien# If running an *-only target, parallel execution and dependencies between
30352284Sobrien# recipe targets are disabled. This makes it possible to run a select set of
30452284Sobrien# recipe targets in order. It's the responsibility of the user to make sure
30590075Sobrien# all prerequisites are fulfilled.
30652284Sobrienifneq ($(findstring -only, $(MAKECMDGOALS)), )
30752284Sobrien  .NOTPARALLEL:
30852284Sobrienelse
30952284Sobrien  $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools
310117395Skan
311117395Skan  interim-langtools: $(LANGTOOLS_GENSRC_TARGETS)
312117395Skan
31390075Sobrien  buildtools-jdk: interim-langtools
31490075Sobrien
315117395Skan  $(CORBA_GENSRC_TARGETS): interim-langtools
316117395Skan
31752284Sobrien  $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
31852284Sobrien
31952284Sobrien  interim-corba: $(CORBA_GENSRC_TARGETS)
32052284Sobrien
32152284Sobrien  $(GENDATA_TARGETS): interim-langtools buildtools-jdk
32252284Sobrien
32352284Sobrien  interim-rmic: interim-langtools
32452284Sobrien
32552284Sobrien  $(RMIC_TARGETS): interim-langtools interim-corba interim-rmic
32652284Sobrien
32752284Sobrien  import-hotspot: hotspot
32852284Sobrien
32952284Sobrien  $(LIBS_TARGETS): import-hotspot
33052284Sobrien
33152284Sobrien  $(LAUNCHER_TARGETS): java.base-libs
33290075Sobrien
333117395Skan  # The demos are currently linking to libjvm and libjava, just like all other
33452284Sobrien  # jdk libs, even though they don't need to. To avoid warnings, make sure they
33552284Sobrien  # aren't built until after libjava and libjvm are available to link to.
33652284Sobrien  demos: $(JAVA_TARGETS)
33790075Sobrien
33890075Sobrien  # Declare dependency from <module>-java to <module>-gensrc
33952284Sobrien  $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc))
34090075Sobrien
34190075Sobrien  # Declare dependencies between java modules
34290075Sobrien  $(foreach m, $(JAVA_MODULES), \
34352284Sobrien      $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \
34452284Sobrien      $(call FindDepsForModule,$m)))))
34552284Sobrien
34652284Sobrien  # Declare dependencies between <module>-rmic to <module>-java
34752284Sobrien  $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java))
34852284Sobrien
34952284Sobrien  # Declare dependencies from <module>-lib to <module>-java
35052284Sobrien  # Skip jdk.jdwp.agent as it contains no java code.
35190075Sobrien  $(foreach m, $(filter-out jdk.jdwp.agent, $(LIBS_MODULES)), $(eval $m-libs: $m-java))
35252284Sobrien
35352284Sobrien  # Declare dependencies from all other <module>-lib to java.base-lib
35452284Sobrien  $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
35552284Sobrien      $(eval $t: java.base-libs))
35652284Sobrien  # Declare the special case dependency for jdk.deploy.osx where libosx
35752284Sobrien  # links against libosxapp.
35852284Sobrien  jdk.deploy.osx-libs: java.desktop-libs
35952284Sobrien
36052284Sobrien  # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
36152284Sobrien  # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a
36252284Sobrien  # virtual target.
36352284Sobrien  jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc
36452284Sobrien
36552284Sobrien  # Until the module system is in place, jdk.jdi-gensrc needs to combine service
36652284Sobrien  # loader configuration with jdk.hotspot.agent so is dependent on importing
36752284Sobrien  # hotspot.
36852284Sobrien  jdk.jdi-gensrc-jdk: import-hotspot
36952284Sobrien
37052284Sobrien  # The swing beans need to have java base properly generated to avoid errors
37152284Sobrien  # in javadoc.
37290075Sobrien  java.desktop-gensrc-jdk: java.base-gensrc
37390075Sobrien
37490075Sobrien  # Explicitly add dependencies for special targets
37590075Sobrien  java.base-java: unpack-sec
37690075Sobrien
37752284Sobrien  jdk.dev-gendata: java rmic
37890075Sobrien
37952284Sobrien  zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
38052284Sobrien      $(filter jdk.crypto%, $(JAVA_TARGETS))
38152284Sobrien
38252284Sobrien  zip-source: gensrc rmic
38352284Sobrien
38452284Sobrien  strip-binaries: libs launchers gendata copy
385117395Skan
386117395Skan  jrtfs-jar: buildtools-jdk
387117395Skan
38896263Sobrien  jimages: exploded-image zip-source strip-binaries source-tips demos samples \
38996263Sobrien      jrtfs-jar
39090075Sobrien
39152284Sobrien  profiles: exploded-image strip-binaries source-tips
39252284Sobrien
393110611Skan  mac-bundles: jimages
394110611Skan
395110611Skan  bootcycle-images: jimages
396110611Skan
397110611Skan  docs-javadoc: gensrc rmic
39890075Sobrien
39990075Sobrien  docs-jvmtidoc: hotspot
40090075Sobrien
401110611Skan  test: jimages
40252284Sobrien
403117395Skan  verify-modules: exploded-image
404117395Skan
405117395Skanendif
406117395Skan
407117395Skan################################################################################
408117395Skan# Virtual targets without recipes
409117395Skan
410117395Skanbuildtools: buildtools-langtools interim-langtools interim-corba interim-rmic \
411117395Skan    buildtools-jdk
41252284Sobrien
41352284Sobriengensrc: $(GENSRC_TARGETS)
41490075Sobrien
41590075Sobriengendata: $(GENDATA_TARGETS)
41690075Sobrien
41790075Sobriencopy: $(COPY_TARGETS)
41890075Sobrien
41990075Sobrienjava: $(JAVA_TARGETS)
42052284Sobrien
42152284Sobrienrmic: $(RMIC_TARGETS)
42252284Sobrien
42352284Sobrienlibs: $(LIBS_TARGETS)
42452284Sobrien
42552284Sobrienlaunchers: $(LAUNCHER_TARGETS)
42652284Sobrien
42752284Sobrien# Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which
42852284Sobrien# is actually handled by jdk.jdi-gensrc
42990075Sobrienjdk.jdwp.agent-gensrc: jdk.jdi-gensrc
43090075Sobrien
43190075Sobrien# Declare dependencies from <module> to all the individual targets specific
43290075Sobrien# to that module <module>-*.
433117395Skan$(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
43490075Sobrien$(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
43590075Sobrien$(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
43690075Sobrien$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic))
43752284Sobrien$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
43890075Sobrien$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
43952284Sobrien$(foreach m, $(COPY_MODULES), $(eval $m: $m-copy))
44052284Sobrien
44190075SobrienALL_MODULE_TARGETS := $(sort $(GENSRC_MODULES) $(JAVA_MODULES) \
44252284Sobrien    $(GENDATA_MODULES) $(LIBS_MODULES) $(LAUNCHER_MODULES) $(COPY_MODULES))
44352284Sobrien
44490075Sobrienexploded-image: $(ALL_MODULE_TARGETS)
44590075Sobrien# The old 'jdk' target most closely matches the new exploded-image. Keep an
44690075Sobrien# alias for ease of use.
44790075Sobrienjdk: exploded-image
44890075Sobrien
44990075Sobrienimages: test-image jimages demos samples zip-security verify-modules
45090075Sobrien
45190075Sobrienifeq ($(OPENJDK_TARGET_OS), macosx)
45290075Sobrien  images: mac-bundles
45390075Sobrienendif
45490075Sobrien
45590075Sobriendocs: docs-javadoc docs-jvmtidoc
45690075Sobrien
45790075Sobrientest-image: prepare-test-image
45890075Sobrien
45990075SobrienALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \
46090075Sobrien    jdk.jdwp.agent-gensrc $(ALL_MODULE_TARGETS) exploded-image jdk images \
46190075Sobrien    docs test-image
46290075Sobrien
46390075Sobrien################################################################################
46490075Sobrien
46590075Sobrienall: images
46690075Sobriendefault: exploded-image
467
468ALL_TARGETS += default all
469
470################################################################################
471################################################################################
472#
473# Clean targets
474#
475################################################################################
476# Clean targets are automatically run serially by the Makefile calling this
477# file.
478
479CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
480    images make-support
481CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
482CLEAN_PHASES := gensrc java native include
483CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
484CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
485# Construct targets of the form clean-$module-$phase
486CLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \
487    $(addprefix $m-, $(CLEAN_PHASES))))
488
489# Remove everything, except the output from configure.
490clean: $(CLEAN_DIR_TARGETS)
491	($(CD) $(OUTPUT_ROOT) && $(RM) -r source_tips build.log* build-trace*.log*)
492	$(ECHO) Cleaned all build artifacts.
493
494$(CLEAN_DIR_TARGETS):
495	$(call CleanDir,$(patsubst clean-%, %, $@))
496
497$(CLEAN_PHASE_TARGETS):
498	$(call Clean-$(patsubst clean-%,%, $@))
499
500$(CLEAN_MODULE_TARGETS):
501	$(call CleanModule,$(patsubst clean-%, %, $@))
502
503$(CLEAN_MODULE_PHASE_TARGETS):
504	$(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \
505	    $(word 2, $(subst -,$(SPACE),$@)))
506
507# When removing the support dir, we must also remove jdk. Building classes has
508# the side effect of generating native headers. The headers end up in support
509# while classes and touch files end up in jdk.
510clean-support: clean-jdk
511
512clean-docs: clean-docstemp
513
514# Remove everything, including configure configuration.
515# If the output directory was created by configure and now becomes empty, remove it as well.
516dist-clean: clean
517	($(CD) $(OUTPUT_ROOT) && $(RM) -r *spec.gmk config.* configure-arguments \
518	    Makefile compare.sh tmp javacservers)
519	$(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
520	  if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
521	    $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
522	  else \
523	    ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
524	        && $(RM) -r $(OUTPUT_ROOT)) \
525	  fi \
526	)
527	$(ECHO) Cleaned everything, you will have to re-run configure.
528
529ALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_PHASE_TARGETS) \
530    $(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_TARGETS)
531
532################################################################################
533
534# Setup a rule for SPEC file that fails if executed. This check makes sure the
535# configuration is up to date after changes to configure.
536ifeq ($(findstring reconfigure, $(MAKECMDGOALS)), )
537  $(SPEC): $(wildcard $(SRC_ROOT)/common/autoconf/*)
538	@$(ECHO) "ERROR: $(SPEC) is not up to date."
539	@$(ECHO) "Please rerun configure! Easiest way to do this is by running"
540	@$(ECHO) "'make reconfigure'."
541	@$(ECHO) "It may also be ignored by setting IGNORE_OLD_CONFIG=true"
542	@if test "x$(IGNORE_OLD_CONFIG)" != "xtrue"; then exit 1; fi
543endif
544
545# The reconfigure target is automatically run serially from everything else
546# by the Makefile calling this file.
547
548reconfigure:
549        ifneq ($(CONFIGURE_COMMAND_LINE), )
550	  @$(ECHO) "Re-running configure using arguments '$(CONFIGURE_COMMAND_LINE)'"
551        else
552	  @$(ECHO) "Re-running configure using default settings"
553        endif
554	@( cd $(OUTPUT_ROOT) && $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) )
555
556ALL_TARGETS += reconfigure
557
558################################################################################
559# Declare *-only targets for each normal target
560$(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t)))
561
562ALL_TARGETS += $(addsuffix -only, $(filter-out clean%, $(ALL_TARGETS)))
563
564################################################################################
565
566.PHONY: $(ALL_TARGETS)
567
568include $(SRC_ROOT)/make/Jprt.gmk
569
570FRC: # Force target
571