Main.gmk revision 1256:9bbdf9dff4eb
1204076Spjd#
2204076Spjd# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
3219351Spjd# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4204076Spjd#
5204076Spjd# This code is free software; you can redistribute it and/or modify it
6204076Spjd# under the terms of the GNU General Public License version 2 only, as
7204076Spjd# published by the Free Software Foundation.  Oracle designates this
8204076Spjd# particular file as subject to the "Classpath" exception as provided
9204076Spjd# by Oracle in the LICENSE file that accompanied this code.
10204076Spjd#
11204076Spjd# This code is distributed in the hope that it will be useful, but WITHOUT
12204076Spjd# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13204076Spjd# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14204076Spjd# version 2 for more details (a copy is included in the LICENSE file that
15204076Spjd# accompanied this code).
16204076Spjd#
17204076Spjd# You should have received a copy of the GNU General Public License version
18204076Spjd# 2 along with this work; if not, write to the Free Software Foundation,
19204076Spjd# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20204076Spjd#
21204076Spjd# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22204076Spjd# or visit www.oracle.com if you need additional information or have any
23204076Spjd# questions.
24204076Spjd#
25204076Spjd
26204076Spjd################################################################################
27204076Spjd# This is the main makefile containing most actual top level targets. It needs
28204076Spjd# to be called with a SPEC file defined.
29204076Spjd
30204076Spjd# Declare default target
31204076Spjddefault:
32204076Spjd
33204076Spjd# Now load the spec
34204076Spjdinclude $(SPEC)
35204076Spjd
36204076Spjdinclude $(SRC_ROOT)/make/MakeHelpers.gmk
37218044Spjd
38204076Spjd# Load the vital tools for all the makefiles.
39204076Spjdinclude $(SRC_ROOT)/make/common/MakeBase.gmk
40204076Spjdinclude $(SRC_ROOT)/make/common/Modules.gmk
41204076Spjd
42204076Spjd# Declare ALL_TARGETS as an immediate variable. This variable is a list of all
43204076Spjd# valid top level targets. It's used to declare them all as PHONY and to
44204076Spjd# generate the -only targets.
45204076SpjdALL_TARGETS :=
46204076Spjd
47204076Spjd# Hook to include the corresponding custom file, if present.
48204076Spjd$(eval $(call IncludeCustomExtension, , Main.gmk))
49219813Spjd
50204076Spjd# All modules for the current target platform.
51204076Spjd# Manually add jdk.hotspot.agent for now.
52204076SpjdALL_MODULES := $(call FindAllModules) jdk.hotspot.agent
53204076Spjd
54204076Spjd################################################################################
55204076Spjd################################################################################
56212038Spjd#
57204076Spjd# Recipes for all targets. Only recipes, dependencies are declared later.
58204076Spjd#
59204076Spjd################################################################################
60211977Spjd
61204076Spjd################################################################################
62204076Spjd# Interim/build tools targets, compiling tools used during the build
63204076Spjd
64210886Spjdbuildtools-langtools:
65204076Spjd	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)
66204076Spjd
67204076Spjdinterim-langtools:
68204076Spjd	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
69234294Strociny
70234294Strocinyinterim-corba:
71249236Strociny	+($(CD) $(CORBA_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
72204076Spjd
73231017Strocinyinterim-rmic:
74231017Strociny	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
75204076Spjd
76211977Spjdbuildtools-jdk:
77213430Spjd	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk java-tools)
78211977Spjd
79204076SpjdALL_TARGETS += buildtools-langtools interim-langtools interim-corba \
80204076Spjd    interim-rmic buildtools-jdk
81204076Spjd
82204076Spjd################################################################################
83204076Spjd# Special targets for certain modules
84204076Spjd
85204076Spjdimport-hotspot:
86204076Spjd	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Import.gmk)
87204076Spjd
88204076Spjdunpack-sec:
89204076Spjd	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk)
90204076Spjd
91204076SpjdALL_TARGETS += import-hotspot unpack-sec
92204076Spjd
93204076Spjd################################################################################
94204076Spjd# Gensrc targets, generating source before java compilation can be done
95204076Spjd$(eval $(call DeclareRecipesForPhase, GENSRC, \
96204076Spjd    TARGET_SUFFIX := gensrc, \
97204076Spjd    FILE_PREFIX := Gensrc, \
98204076Spjd    MAKE_SUBDIR := gensrc, \
99204076Spjd    CHECK_MODULES := $(ALL_MODULES), \
100204076Spjd    MULTIPLE_MAKEFILES := true))
101218041Spjd
102218041SpjdJDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
103218041SpjdLANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
104231017StrocinyCORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
105222108Spjd
106218041SpjdALL_TARGETS += $(GENSRC_TARGETS)
107231017Strociny
108218041Spjd################################################################################
109218041Spjd# Generate data targets
110218041Spjd$(eval $(call DeclareRecipesForPhase, GENDATA, \
111218041Spjd    TARGET_SUFFIX := gendata, \
112218041Spjd    FILE_PREFIX := Gendata, \
113218041Spjd    MAKE_SUBDIR := gendata, \
114218041Spjd    CHECK_MODULES := $(ALL_MODULES), \
115218041Spjd    USE_WRAPPER := true))
116218041Spjd
117218041SpjdALL_TARGETS += $(GENDATA_TARGETS)
118218370Spjd
119218370Spjd################################################################################
120218370Spjd# Copy files targets
121218370Spjd$(eval $(call DeclareRecipesForPhase, COPY, \
122218370Spjd    TARGET_SUFFIX := copy, \
123218370Spjd    FILE_PREFIX := Copy, \
124231017Strociny    MAKE_SUBDIR := copy, \
125231017Strociny    CHECK_MODULES := $(ALL_MODULES), \
126218041Spjd    USE_WRAPPER := true))
127218041Spjd
128218041SpjdALL_TARGETS += $(COPY_TARGETS)
129218041Spjd
130231017Strociny################################################################################
131231017Strociny# Targets for compiling all java modules. Nashorn is treated separately.
132222108SpjdJAVA_MODULES := $(call FindJavaModules)
133222108SpjdJAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))
134231017Strociny
135222108Spjddefine DeclareCompileJavaRecipe
136218041Spjd  $1-java:
137218041Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CompileJavaModules.gmk \
138218041Spjd	    $1 JAVA_MODULES=$1)
139218041Spjdendef
140218041Spjd
141218044Spjd$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \
142218044Spjd    $(eval $(call DeclareCompileJavaRecipe,$m)))
143218044Spjd
144218044Spjd# Build nashorn. Needs to be compiled separately from the rest of the modules
145218044Spjd# due to nasgen.
146218044Spjdjdk.scripting.nashorn-java:
147219864Spjd	+($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildNashorn.gmk compile)
148218044Spjd
149219864SpjdALL_TARGETS += $(JAVA_TARGETS)
150218044Spjd
151218044Spjd################################################################################
152218044Spjd# Targets for running rmic.
153219864Spjd$(eval $(call DeclareRecipesForPhase, RMIC, \
154218044Spjd    TARGET_SUFFIX := rmic, \
155219864Spjd    FILE_PREFIX := Rmic, \
156218044Spjd    MAKE_SUBDIR := rmic, \
157218044Spjd    CHECK_MODULES := $(ALL_MODULES)))
158218044Spjd
159219864SpjdALL_TARGETS += $(RMIC_TARGETS)
160218044Spjd
161218044Spjd################################################################################
162218044Spjd# Targets for compiling native libraries
163218044Spjd$(eval $(call DeclareRecipesForPhase, LIBS, \
164218044Spjd    TARGET_SUFFIX := libs, \
165218044Spjd    FILE_PREFIX := Lib, \
166218044Spjd    MAKE_SUBDIR := lib, \
167218044Spjd    CHECK_MODULES := $(ALL_MODULES), \
168218044Spjd    USE_WRAPPER := true))
169218044Spjd
170218044SpjdALL_TARGETS += $(LIBS_TARGETS)
171218044Spjd
172218044Spjd################################################################################
173218044Spjd# Targets for compiling native executables
174218044Spjd$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
175218044Spjd    TARGET_SUFFIX := launchers, \
176218044Spjd    FILE_PREFIX := Launcher, \
177218044Spjd    MAKE_SUBDIR := launcher, \
178218044Spjd    CHECK_MODULES := $(ALL_MODULES), \
179218044Spjd    USE_WRAPPER := true))
180218044Spjd
181218044SpjdALL_TARGETS += $(LAUNCHER_TARGETS)
182218044Spjd
183231017Strociny################################################################################
184218373Spjd# Build hotspot target
185218373Spjd
186218373Spjdifeq ($(BUILD_HOTSPOT),true)
187218044Spjd  hotspot:
188218373Spjd	($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
189218044Spjdendif
190218044Spjd
191218044SpjdALL_TARGETS += hotspot
192218044Spjd
193218044Spjd################################################################################
194218044Spjd# Build demos and samples targets
195218044Spjd
196218044Spjddemos:
197218044Spjd	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk)
198218044Spjd
199218375Spjdsamples:
200218044Spjd	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopySamples.gmk)
201218044Spjd
202218374SpjdALL_TARGETS += demos samples
203218044Spjd
204218044Spjd################################################################################
205218044Spjd# Image targets
206218044Spjd
207218375Spjd# Stores the tips for each repository. This file is be used when constructing the jdk image and can be
208218044Spjd# used to track the exact sources used to build that image.
209218044Spjdsource-tips: $(SUPPORT_OUTPUTDIR)/source_tips
210218044Spjd$(SUPPORT_OUTPUTDIR)/source_tips: FRC
211218044Spjd	@$(MKDIR) -p $(@D)
212218044Spjd	@$(RM) $@
213218044Spjd	@$(call GetSourceTips)
214218044Spjd
215218375SpjdBOOTCYCLE_TARGET := images
216218044Spjdbootcycle-images:
217218044Spjd	@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
218218044Spjd	+$(MAKE) $(MAKE_ARGS) -f Main.gmk SPEC=$(dir $(SPEC))bootcycle-spec.gmk $(BOOTCYCLE_TARGET)
219218044Spjd
220218044Spjdzip-security:
221218375Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk)
222218044Spjd
223218044Spjdzip-source:
224218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk)
225218044Spjd
226218044Spjdstrip-binaries:
227218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f StripBinaries.gmk)
228218375Spjd
229218044Spjdjrtfs-jar:
230218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk)
231218044Spjd
232218044Spjdjimages:
233218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jimages)
234218375Spjd
235218044Spjdprofiles:
236218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)
237218044Spjd
238218044Spjdmac-bundles:
239219900Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
240219900Spjd
241218218SpjdALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \
242218375Spjd    jrtfs-jar jimages profiles mac-bundles
243218218Spjd
244218218Spjd################################################################################
245218218Spjd# Docs targets
246218218Spjd
247218218Spjddocs-javadoc:
248218375Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)
249218218Spjd
250218218Spjddocs-jvmtidoc:
251218218Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk jvmtidocs)
252218218Spjd
253218044SpjdALL_TARGETS += docs-javadoc docs-jvmtidoc
254219900Spjd
255219900Spjd################################################################################
256219900Spjd# Test target
257219900Spjd
258219900Spjdtest:
259219900Spjd	($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
260219900Spjd	    JT_HOME=$(JT_HOME) PRODUCT_HOME=$(JDK_OUTPUTDIR) \
261219900Spjd	    ALT_OUTPUTDIR=$(OUTPUT_ROOT) CONCURRENCY=$(JOBS) $(TEST)) || true
262219900Spjd
263218044Spjdtest-make:
264218044Spjd	($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
265218375Spjd
266218044SpjdALL_TARGETS += test test-make
267218044Spjd
268218044Spjd################################################################################
269218044Spjd# Verification targets
270218044Spjd
271218375Spjdverify-modules:
272218044Spjd	@$(call TargetEnter)
273218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CheckModules.gmk)
274218044Spjd	@$(call TargetExit)
275218044Spjd
276218044SpjdALL_TARGETS += verify-modules
277218044Spjd
278218044Spjd################################################################################
279218375Spjd# Install targets
280218044Spjd
281218044Spjdinstall:
282218044Spjd	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk)
283218044Spjd
284218044SpjdALL_TARGETS += install
285218375Spjd
286218044Spjd################################################################################
287218044Spjd#
288218044Spjd# Dependency declarations between targets.
289218044Spjd#
290218044Spjd# These are declared in two groups. First all dependencies between targets that
291218044Spjd# have recipes above as these dependencies may be disabled. Then the aggregator
292218375Spjd# targets that do not have recipes of their own, which will never have their
293218044Spjd# dependencies disabled.
294218044Spjd#
295218044Spjd################################################################################
296218044Spjd# Targets with recipes above
297218044Spjd
298218044Spjd# If running an *-only target, parallel execution and dependencies between
299218044Spjd# recipe targets are disabled. This makes it possible to run a select set of
300218044Spjd# recipe targets in order. It's the responsibility of the user to make sure
301218044Spjd# all prerequisites are fulfilled.
302218044Spjdifneq ($(findstring -only, $(MAKECMDGOALS)), )
303218044Spjd  .NOTPARALLEL:
304218044Spjdelse
305218044Spjd  $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools
306218044Spjd
307204076Spjd  interim-langtools: $(LANGTOOLS_GENSRC_TARGETS)
308207372Spjd
309207372Spjd  buildtools-jdk: interim-langtools
310207372Spjd
311207372Spjd  $(CORBA_GENSRC_TARGETS): interim-langtools
312207372Spjd
313207372Spjd  $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
314207372Spjd
315207372Spjd  interim-corba: $(CORBA_GENSRC_TARGETS)
316207372Spjd
317207372Spjd  $(GENDATA_TARGETS): interim-langtools buildtools-jdk
318207372Spjd
319207372Spjd  interim-rmic: interim-langtools
320207372Spjd
321207372Spjd  $(RMIC_TARGETS): interim-langtools interim-corba interim-rmic
322207372Spjd
323207372Spjd  import-hotspot: hotspot
324204076Spjd
325204076Spjd  $(LIBS_TARGETS): import-hotspot
326204076Spjd
327204076Spjd  $(LAUNCHER_TARGETS): java.base-libs
328204076Spjd
329204076Spjd  # The demos are currently linking to libjvm and libjava, just like all other
330204076Spjd  # jdk libs, even though they don't need to. To avoid warnings, make sure they
331204076Spjd  # aren't built until after libjava and libjvm are available to link to.
332204076Spjd  demos: $(JAVA_TARGETS)
333204076Spjd
334204076Spjd  # Declare dependency from <module>-java to <module>-gensrc
335204076Spjd  $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc))
336204076Spjd
337204076Spjd  # Declare dependencies between java modules
338204076Spjd  $(foreach m, $(JAVA_MODULES), \
339211977Spjd      $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \
340211977Spjd      $(call FindDepsForModule,$m)))))
341204076Spjd
342211977Spjd  # Declare dependencies between <module>-rmic to <module>-java
343204076Spjd  $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java))
344204076Spjd
345204076Spjd  # Declare dependencies from <module>-lib to <module>-java
346204076Spjd  # Skip jdk.jdwp.agent as it contains no java code.
347207372Spjd  $(foreach m, $(filter-out jdk.jdwp.agent, $(LIBS_MODULES)), $(eval $m-libs: $m-java))
348213006Spjd
349204076Spjd  # Declare dependencies from all other <module>-lib to java.base-lib
350207372Spjd  $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
351207372Spjd      $(eval $t: java.base-libs))
352207372Spjd  # Declare the special case dependency for jdk.deploy.osx where libosx
353207372Spjd  # links against libosxapp.
354207372Spjd  jdk.deploy.osx-libs: java.desktop-libs
355207372Spjd
356207372Spjd  # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
357207348Spjd  # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a
358207348Spjd  # virtual target.
359207348Spjd  jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc
360207348Spjd
361207348Spjd  # Until the module system is in place, jdk.jdi-gensrc needs to combine service
362207348Spjd  # loader configuration with jdk.hotspot.agent so is dependent on importing
363207348Spjd  # hotspot.
364207348Spjd  jdk.jdi-gensrc-jdk: import-hotspot
365204076Spjd
366204076Spjd  # The swing beans need to have java base properly generated to avoid errors
367204076Spjd  # in javadoc.
368204076Spjd  java.desktop-gensrc-jdk: java.base-gensrc
369204076Spjd
370210886Spjd  # Explicitly add dependencies for special targets
371210886Spjd  java.base-java: unpack-sec
372210886Spjd
373210886Spjd  jdk.dev-gendata: java rmic
374210886Spjd
375218138Spjd  zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
376210886Spjd      $(filter jdk.crypto%, $(JAVA_TARGETS))
377210886Spjd
378210886Spjd  zip-source: gensrc rmic
379210886Spjd
380210886Spjd  strip-binaries: libs launchers gendata copy
381210886Spjd
382210886Spjd  jrtfs-jar: buildtools-jdk
383210886Spjd
384210886Spjd  jimages: exploded-image zip-source strip-binaries source-tips demos samples \
385219818Spjd      jrtfs-jar
386219818Spjd
387210886Spjd  profiles: exploded-image strip-binaries source-tips
388210886Spjd
389219351Spjd  mac-bundles: jimages
390219351Spjd
391219354Spjd  bootcycle-images: jimages
392219354Spjd
393210886Spjd  docs-javadoc: gensrc rmic
394210886Spjd
395211886Spjd  docs-jvmtidoc: hotspot
396211886Spjd
397229509Strociny  test: exploded-image
398229509Strociny
399229509Strociny  verify-modules: exploded-image
400229509Strociny
401229509Strocinyendif
402229509Strociny
403210886Spjd################################################################################
404210886Spjd# Virtual targets without recipes
405210886Spjd
406210886Spjdbuildtools: buildtools-langtools interim-langtools interim-corba interim-rmic \
407210886Spjd    buildtools-jdk
408210886Spjd
409210886Spjdgensrc: $(GENSRC_TARGETS)
410210886Spjd
411210886Spjdgendata: $(GENDATA_TARGETS)
412218138Spjd
413218138Spjdcopy: $(COPY_TARGETS)
414218138Spjd
415210886Spjdjava: $(JAVA_TARGETS)
416210886Spjd
417210886Spjdrmic: $(RMIC_TARGETS)
418210886Spjd
419210886Spjdlibs: $(LIBS_TARGETS)
420210886Spjd
421219818Spjdlaunchers: $(LAUNCHER_TARGETS)
422219818Spjd
423210886Spjd# Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which
424210886Spjd# is actually handled by jdk.jdi-gensrc
425219351Spjdjdk.jdwp.agent-gensrc: jdk.jdi-gensrc
426219351Spjd
427219354Spjd# Declare dependencies from <module> to all the individual targets specific
428219354Spjd# to that module <module>-*.
429210886Spjd$(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
430210886Spjd$(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
431211886Spjd$(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
432211886Spjd$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic))
433229509Strociny$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
434229509Strociny$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
435210886Spjd$(foreach m, $(COPY_MODULES), $(eval $m: $m-copy))
436210886Spjd
437210886SpjdALL_MODULE_TARGETS := $(sort $(GENSRC_MODULES) $(JAVA_MODULES) \
438204076Spjd    $(GENDATA_MODULES) $(LIBS_MODULES) $(LAUNCHER_MODULES) $(COPY_MODULES))
439217784Spjd
440217784Spjdexploded-image: $(ALL_MODULE_TARGETS)
441217784Spjd# The old 'jdk' target most closely matches the new exploded-image. Keep an
442217784Spjd# alias for ease of use.
443217784Spjdjdk: exploded-image
444218138Spjd
445217784Spjdimages: jimages demos samples zip-security verify-modules
446217784Spjd
447221076Strocinyifeq ($(OPENJDK_TARGET_OS), macosx)
448217784Spjd  images: mac-bundles
449219818Spjdendif
450217784Spjd
451219351Spjddocs: docs-javadoc docs-jvmtidoc
452219354Spjd
453217784SpjdALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \
454217784Spjd    jdk.jdwp.agent-gensrc $(ALL_MODULE_TARGETS) exploded-image jdk images \
455229509Strociny    docs
456217784Spjd
457217784Spjd################################################################################
458217784Spjd
459217784Spjdall: images
460217784Spjddefault: exploded-image
461231017Strociny
462217784SpjdALL_TARGETS += default all
463217784Spjd
464217784Spjd################################################################################
465217784Spjd################################################################################
466217784Spjd#
467217784Spjd# Clean targets
468217784Spjd#
469231017Strociny################################################################################
470217784Spjd# Clean targets are automatically run serially by the Makefile calling this
471217784Spjd# file.
472217784Spjd
473217784SpjdCLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
474217784Spjd    images make-support
475217784SpjdCLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
476217784SpjdCLEAN_PHASES := gensrc java native include
477217784SpjdCLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
478217784SpjdCLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
479217784Spjd# Construct targets of the form clean-$module-$phase
480217784SpjdCLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \
481217784Spjd    $(addprefix $m-, $(CLEAN_PHASES))))
482204076Spjd
483204076Spjd# Remove everything, except the output from configure.
484210886Spjdclean: $(CLEAN_DIR_TARGETS)
485210886Spjd	($(CD) $(OUTPUT_ROOT) && $(RM) -r source_tips build.log* build-trace*.log*)
486222108Spjd	$(ECHO) Cleaned all build artifacts.
487229509Strociny
488222108Spjd$(CLEAN_DIR_TARGETS):
489210886Spjd	$(call CleanDir,$(patsubst clean-%, %, $@))
490229509Strociny
491204076Spjd$(CLEAN_PHASE_TARGETS):
492210886Spjd	$(call Clean-$(patsubst clean-%,%, $@))
493210886Spjd
494229509Strociny$(CLEAN_MODULE_TARGETS):
495229509Strociny	$(call CleanModule,$(patsubst clean-%, %, $@))
496210886Spjd
497210886Spjd$(CLEAN_MODULE_PHASE_TARGETS):
498210886Spjd	$(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \
499210886Spjd	    $(word 2, $(subst -,$(SPACE),$@)))
500210886Spjd
501210886Spjd# When removing the support dir, we must also remove jdk. Building classes has
502210886Spjd# the side effect of generating native headers. The headers end up in support
503210886Spjd# while classes and touch files end up in jdk.
504210886Spjdclean-support: clean-jdk
505231017Strociny
506210886Spjdclean-docs: clean-docstemp
507210886Spjd
508210886Spjd# Remove everything, including configure configuration.
509210886Spjd# If the output directory was created by configure and now becomes empty, remove it as well.
510210886Spjddist-clean: clean
511210886Spjd	($(CD) $(OUTPUT_ROOT) && $(RM) -r *spec.gmk config.* configure-arguments \
512210886Spjd	    Makefile compare.sh tmp javacservers)
513222108Spjd	$(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
514210886Spjd	  if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
515222108Spjd	    $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
516222108Spjd	  else \
517222108Spjd	    ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
518222108Spjd	        && $(RM) -r $(OUTPUT_ROOT)) \
519222108Spjd	  fi \
520210886Spjd	)
521222108Spjd	$(ECHO) Cleaned everything, you will have to re-run configure.
522222108Spjd
523222108SpjdALL_TARGETS += clean dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_PHASE_TARGETS) \
524222108Spjd    $(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_TARGETS)
525222108Spjd
526222108Spjd################################################################################
527222108Spjd
528222108Spjd# Setup a rule for SPEC file that fails if executed. This check makes sure the
529222108Spjd# configuration is up to date after changes to configure.
530222108Spjdifeq ($(findstring reconfigure, $(MAKECMDGOALS)), )
531222108Spjd  $(SPEC): $(wildcard $(SRC_ROOT)/common/autoconf/*)
532222108Spjd	@$(ECHO) "ERROR: $(SPEC) is not up to date."
533222108Spjd	@$(ECHO) "Please rerun configure! Easiest way to do this is by running"
534210886Spjd	@$(ECHO) "'make reconfigure'."
535222108Spjd	@$(ECHO) "It may also be ignored by setting IGNORE_OLD_CONFIG=true"
536222108Spjd	@if test "x$(IGNORE_OLD_CONFIG)" != "xtrue"; then exit 1; fi
537222108Spjdendif
538222108Spjd
539229509Strociny# The reconfigure target is automatically run serially from everything else
540229509Strociny# by the Makefile calling this file.
541229509Strociny
542234294Strocinyreconfigure:
543234294Strociny        ifneq ($(CONFIGURE_COMMAND_LINE), )
544229509Strociny	  @$(ECHO) "Re-running configure using arguments '$(CONFIGURE_COMMAND_LINE)'"
545229509Strociny        else
546229509Strociny	  @$(ECHO) "Re-running configure using default settings"
547229509Strociny        endif
548229509Strociny	@( cd $(OUTPUT_ROOT) && $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) )
549229509Strociny
550229509StrocinyALL_TARGETS += reconfigure
551229509Strociny
552229509Strociny################################################################################
553229509Strociny# Declare *-only targets for each normal target
554229509Strociny$(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t)))
555231017Strociny
556229509StrocinyALL_TARGETS += $(addsuffix -only, $(filter-out clean%, $(ALL_TARGETS)))
557229509Strociny
558229509Strociny################################################################################
559229509Strociny
560229509Strociny.PHONY: $(ALL_TARGETS)
561229509Strociny
562229509Strocinyinclude $(SRC_ROOT)/make/Jprt.gmk
563229509Strociny
564229509StrocinyFRC: # Force target
565222108Spjd