Images.gmk revision 2352:f34963dc0f1d
1177867Sjfv#
2169240Sjfv# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
3176667Sjfv# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4169240Sjfv#
5169240Sjfv# This code is free software; you can redistribute it and/or modify it
6169240Sjfv# under the terms of the GNU General Public License version 2 only, as
7169240Sjfv# published by the Free Software Foundation.  Oracle designates this
8169240Sjfv# particular file as subject to the "Classpath" exception as provided
9169240Sjfv# by Oracle in the LICENSE file that accompanied this code.
10169240Sjfv#
11169240Sjfv# This code is distributed in the hope that it will be useful, but WITHOUT
12169240Sjfv# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13169240Sjfv# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14169240Sjfv# version 2 for more details (a copy is included in the LICENSE file that
15169240Sjfv# accompanied this code).
16169240Sjfv#
17169240Sjfv# You should have received a copy of the GNU General Public License version
18169240Sjfv# 2 along with this work; if not, write to the Free Software Foundation,
19169240Sjfv# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20169240Sjfv#
21169240Sjfv# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22169240Sjfv# or visit www.oracle.com if you need additional information or have any
23169240Sjfv# questions.
24169240Sjfv#
25169240Sjfv
26169240Sjfvdefault: all
27169240Sjfv
28169240Sjfvinclude $(SPEC)
29169240Sjfvinclude MakeBase.gmk
30169240Sjfvinclude Modules.gmk
31169240Sjfv
32177867SjfvTOOL_TARGETS :=
33177867SjfvJDK_TARGETS :=
34169240SjfvJRE_TARGETS :=
35169240Sjfv
36169240Sjfv# Hook to include the corresponding custom file, if present.
37169240Sjfv$(eval $(call IncludeCustomExtension, , Images-pre.gmk))
38169240Sjfv
39169589Sjfv############################################################################
40169240Sjfv
41169240Sjfv# All modules for the current target platform.
42177867SjfvALL_MODULES := $(call FindAllModules)
43177867Sjfv
44177867Sjfv$(eval $(call ReadImportMetaData))
45177867Sjfv
46177867SjfvJRE_MODULES += $(filter $(ALL_MODULES), $(BOOT_MODULES) \
47177867Sjfv    $(PLATFORM_MODULES) $(JRE_TOOL_MODULES))
48177867SjfvJDK_MODULES += $(ALL_MODULES)
49177867Sjfv
50177867Sjfv# Compact builds have additional modules
51177867SjfvCOMPACT1_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec
52177867SjfvCOMPACT2_EXTRA_MODULES := jdk.xml.dom jdk.httpserver
53177867SjfvCOMPACT3_EXTRA_MODULES := java.smartcardio jdk.management \
54173788Sjfv    jdk.naming.dns jdk.naming.rmi jdk.sctp jdk.security.auth
55177867Sjfv
56173788SjfvJRE_COMPACT1_MODULES := java.compact1 $(COMPACT1_EXTRA_MODULES)
57177867SjfvJRE_COMPACT2_MODULES := $(JRE_COMPACT1_MODULES) java.compact2 $(COMPACT2_EXTRA_MODULES)
58173788SjfvJRE_COMPACT3_MODULES := $(JRE_COMPACT2_MODULES) java.compact3 $(COMPACT3_EXTRA_MODULES)
59177867Sjfv
60173788SjfvJRE_MODULES_LIST := $(call CommaList, $(JRE_MODULES))
61177867SjfvJDK_MODULES_LIST := $(call CommaList, $(JDK_MODULES))
62177867SjfvJRE_COMPACT1_MODULES_LIST := $(call CommaList, $(JRE_COMPACT1_MODULES))
63177867SjfvJRE_COMPACT2_MODULES_LIST := $(call CommaList, $(JRE_COMPACT2_MODULES))
64173788SjfvJRE_COMPACT3_MODULES_LIST := $(call CommaList, $(JRE_COMPACT3_MODULES))
65177867Sjfv
66177867Sjfv################################################################################
67177867Sjfv
68177867SjfvBASE_RELEASE_FILE := $(JDK_OUTPUTDIR)/release
69177867Sjfv
70177867SjfvJMODS := $(wildcard $(IMAGES_OUTPUTDIR)/jmods/*.jmod)
71173788Sjfv
72177867Sjfv# Use this file inside the image as target for make rule
73177867SjfvJIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX)
74177867Sjfv
75177867SjfvJLINK_ORDER_RESOURCES := **module-info.class
76177867SjfvJLINK_JLI_CLASSES :=
77173788Sjfvifeq ($(ENABLE_GENERATE_CLASSLIST), true)
78173788Sjfv  JLINK_ORDER_RESOURCES += @$(SUPPORT_OUTPUTDIR)/link_opt/classlist
79173788Sjfv  JLINK_JLI_CLASSES := --generate-jli-classes=@$(SUPPORT_OUTPUTDIR)/link_opt/jli_trace.out
80173788Sjfvendif
81173788SjfvJLINK_ORDER_RESOURCES += \
82178523Sjfv    /java.base/java/** \
83178523Sjfv    /java.base/jdk/** \
84173788Sjfv    /java.base/sun/** \
85173788Sjfv    /java.base/com/** \
86177867Sjfv    /jdk.localedata/** \
87173788Sjfv    #
88173788Sjfv
89173788SjfvJLINK_TOOL := $(JLINK) -J-Djlink.debug=true \
90177867Sjfv    --module-path $(IMAGES_OUTPUTDIR)/jmods \
91173788Sjfv    --endian $(OPENJDK_BUILD_CPU_ENDIAN) \
92173788Sjfv    --release-info $(BASE_RELEASE_FILE) \
93173788Sjfv    --order-resources=$(call CommaList, $(JLINK_ORDER_RESOURCES)) \
94177867Sjfv    $(JLINK_JLI_CLASSES) \
95177867Sjfv    #
96169240Sjfv
97169240SjfvJLINK_JRE_EXTRA_OPTS := --no-man-pages --no-header-files --strip-debug
98169240Sjfv
99169240Sjfvifeq ($(JLINK_KEEP_PACKAGED_MODULES), true)
100169240Sjfv  JLINK_JDK_EXTRA_OPTS := --keep-packaged-modules $(JDK_IMAGE_DIR)/jmods
101169240Sjfvendif
102169240Sjfv
103169240Sjfv$(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
104169240Sjfv    $(call DependOnVariable, JDK_MODULES_LIST) $(BASE_RELEASE_FILE)
105169240Sjfv	$(ECHO) Creating jdk jimage
106169240Sjfv	$(RM) -r $(JDK_IMAGE_DIR)
107169240Sjfv	$(JLINK_TOOL) --add-modules $(JDK_MODULES_LIST) \
108169240Sjfv	    $(JLINK_JDK_EXTRA_OPTS) \
109169240Sjfv	    --output $(JDK_IMAGE_DIR)
110169240Sjfv	$(TOUCH) $@
111169240Sjfv
112169240Sjfv$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
113169240Sjfv    $(call DependOnVariable, JRE_MODULES_LIST) $(BASE_RELEASE_FILE)
114169240Sjfv	$(ECHO) Creating jre jimage
115169240Sjfv	$(RM) -r $(JRE_IMAGE_DIR)
116169240Sjfv	$(JLINK_TOOL) --add-modules $(JRE_MODULES_LIST) \
117169240Sjfv	    $(JLINK_JRE_EXTRA_OPTS) \
118169240Sjfv	    --output $(JRE_IMAGE_DIR)
119169240Sjfv	$(TOUCH) $@
120169240Sjfv
121169240SjfvJRE_COMPACT1_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact1
122169240SjfvJRE_COMPACT2_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact2
123169240SjfvJRE_COMPACT3_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact3
124169240Sjfv
125169240Sjfv
126169240Sjfv$(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
127169240Sjfv    $(call DependOnVariable, JRE_COMPACT1_MODULES_LIST) $(BASE_RELEASE_FILE)
128169240Sjfv	$(ECHO) Creating jre compact1 jimage
129169240Sjfv	$(RM) -r $(JRE_COMPACT1_IMAGE_DIR)
130169240Sjfv	$(JLINK_TOOL) --add-modules $(JRE_COMPACT1_MODULES_LIST) \
131169240Sjfv	    $(JLINK_JRE_EXTRA_OPTS) \
132169240Sjfv	    --output $(JRE_COMPACT1_IMAGE_DIR)
133169240Sjfv	$(TOUCH) $@
134169240Sjfv
135169240Sjfv$(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
136169240Sjfv    $(call DependOnVariable, JRE_COMPACT2_MODULES_LIST) $(BASE_RELEASE_FILE)
137169240Sjfv	$(ECHO) Creating jre compact2 jimage
138169240Sjfv	$(RM) -r $(JRE_COMPACT2_IMAGE_DIR)
139169240Sjfv	$(JLINK_TOOL) --add-modules $(JRE_COMPACT2_MODULES_LIST) \
140173788Sjfv	    $(JLINK_JRE_EXTRA_OPTS) \
141169240Sjfv	    --output $(JRE_COMPACT2_IMAGE_DIR)
142169240Sjfv	$(TOUCH) $@
143169240Sjfv
144173788Sjfv$(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
145169240Sjfv    $(call DependOnVariable, JRE_COMPACT3_MODULES_LIST) $(BASE_RELEASE_FILE)
146169240Sjfv	$(ECHO) Creating jre compact3 jimage
147169240Sjfv	$(RM) -r $(JRE_COMPACT3_IMAGE_DIR)
148169240Sjfv	$(JLINK_TOOL) --add-modules $(JRE_COMPACT3_MODULES_LIST) \
149169240Sjfv	    $(JLINK_JRE_EXTRA_OPTS) \
150169589Sjfv	    --output $(JRE_COMPACT3_IMAGE_DIR)
151169240Sjfv	$(TOUCH) $@
152169240Sjfv
153169240SjfvTOOL_JRE_TARGETS := $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
154177867SjfvTOOL_JDK_TARGETS := $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
155169240SjfvTOOL_JRE_COMPACT1_TARGETS := $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
156169240SjfvTOOL_JRE_COMPACT2_TARGETS := $(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
157169240SjfvTOOL_JRE_COMPACT3_TARGETS := $(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
158169589Sjfv
159169240Sjfv################################################################################
160169240Sjfv# /man dir
161169240Sjfv#
162177867Sjfv# All variables in this section are assigned with simple =, without :, to enable
163177867Sjfv# more selective overriding from the custom version of this file.
164169240Sjfv#
165177867Sjfv# Avoid evaluating this whole section on windows for speed and stability
166177867Sjfvifneq ($(OPENJDK_TARGET_OS), windows)
167177867Sjfv  JRE_MAN_PAGES += \
168177867Sjfv      java.1 \
169177867Sjfv      jjs.1 \
170177867Sjfv      keytool.1 \
171177867Sjfv      orbd.1 \
172177867Sjfv      pack200.1 \
173177867Sjfv      rmid.1 \
174177867Sjfv      rmiregistry.1 \
175177867Sjfv      servertool.1 \
176177867Sjfv      tnameserv.1 \
177177867Sjfv      unpack200.1
178177867Sjfv
179177867Sjfv  JDK_MAN_PAGES += \
180169240Sjfv      $(JRE_MAN_PAGES) \
181176667Sjfv      appletviewer.1 \
182176667Sjfv      idlj.1 \
183176667Sjfv      jar.1 \
184176667Sjfv      jarsigner.1 \
185176667Sjfv      javac.1 \
186176667Sjfv      javadoc.1 \
187177867Sjfv      javah.1 \
188177867Sjfv      javap.1 \
189176667Sjfv      jconsole.1 \
190176667Sjfv      jcmd.1 \
191176667Sjfv      jdb.1 \
192176667Sjfv      jdeps.1 \
193176667Sjfv      jinfo.1 \
194176667Sjfv      jmap.1 \
195169240Sjfv      jps.1 \
196169589Sjfv      jrunscript.1 \
197169589Sjfv      jstack.1 \
198169589Sjfv      jstat.1 \
199169589Sjfv      jstatd.1 \
200169589Sjfv      policytool.1 \
201169589Sjfv      rmic.1 \
202169589Sjfv      schemagen.1 \
203169589Sjfv      serialver.1 \
204169589Sjfv      wsgen.1 \
205169240Sjfv      wsimport.1 \
206169240Sjfv      xjc.1
207169240Sjfv
208169240Sjfv  # This variable is potentially overridden in the closed makefile.
209169240Sjfv  MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src
210169240Sjfv
211169240Sjfv  ifeq ($(OPENJDK_TARGET_OS), linux)
212169240Sjfv    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc
213169240Sjfv    MAN1_SUBDIR = man
214169240Sjfv  endif
215169240Sjfv  ifeq ($(OPENJDK_TARGET_OS), solaris)
216169240Sjfv    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc
217176667Sjfv    MAN1_SUBDIR = sun/man/man1
218176667Sjfv  endif
219176667Sjfv  ifeq ($(OPENJDK_TARGET_OS), macosx)
220177867Sjfv    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc
221177867Sjfv    MAN1_SUBDIR = man
222177867Sjfv  endif
223176667Sjfv
224169240Sjfv  $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
225169240Sjfv	$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
226169240Sjfv	$(install-file)
227169240Sjfv
228169240Sjfv  $(JDK_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
229169240Sjfv	$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
230169240Sjfv	$(install-file)
231169240Sjfv
232169240Sjfv  $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
233169240Sjfv	$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
234169240Sjfv	$(install-file)
235169589Sjfv
236169240Sjfv  $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
237169240Sjfv	$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
238169240Sjfv	$(install-file)
239169240Sjfv
240177867Sjfv  ifeq ($(OPENJDK_TARGET_OS), solaris)
241169240Sjfv    $(JRE_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
242169240Sjfv	$(call LogInfo, Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@))
243169240Sjfv	$(install-file)
244169240Sjfv
245173788Sjfv    $(JDK_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
246169240Sjfv	$(call LogInfo, Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@))
247169240Sjfv	$(install-file)
248169240Sjfv  endif
249169240Sjfv
250173788Sjfv  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
251169240Sjfv    $(JRE_IMAGE_DIR)/man/ja:
252169240Sjfv	$(call LogInfo, Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@))
253169240Sjfv	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
254169240Sjfv
255169240Sjfv    $(JDK_IMAGE_DIR)/man/ja:
256169240Sjfv	$(call LogInfo, Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@))
257169240Sjfv	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
258169240Sjfv  endif
259169240Sjfv
260169240Sjfv  ifeq ($(OPENJDK_TARGET_OS), solaris)
261173788Sjfv    JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
262173788Sjfv        $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/, $(JRE_MAN_PAGES)) \
263169240Sjfv        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
264173788Sjfv        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JRE_MAN_PAGES))
265173788Sjfv
266169240Sjfv    JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
267169240Sjfv        $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/, $(JDK_MAN_PAGES)) \
268169240Sjfv        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
269169240Sjfv        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES))
270169240Sjfv  endif
271169240Sjfv
272173788Sjfv  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
273173788Sjfv    JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
274173788Sjfv        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
275173788Sjfv        $(JRE_IMAGE_DIR)/man/ja
276169240Sjfv
277169240Sjfv    JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
278169240Sjfv        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
279169240Sjfv        $(JDK_IMAGE_DIR)/man/ja
280169240Sjfv  endif
281169240Sjfv
282169240Sjfv  JRE_TARGETS += $(JRE_MAN_PAGE_LIST)
283169240Sjfv  JDK_TARGETS += $(JDK_MAN_PAGE_LIST)
284169240Sjfvendif # Windows
285169240Sjfv
286173788Sjfv################################################################################
287169240Sjfv# doc files
288169240Sjfv
289169240SjfvJRE_DOC_FILES ?= LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
290169240SjfvJDK_DOC_FILES ?= LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
291169240SjfvJRE_DOC_LOCATION ?= $(JDK_TOPDIR)
292169240SjfvJDK_DOC_LOCATION ?= $(JDK_TOPDIR)
293169240Sjfv
294169240SjfvJRE_DOC_TARGETS := $(addprefix $(JRE_IMAGE_DIR)/, $(JRE_DOC_FILES))
295169240SjfvJDK_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/, $(JDK_DOC_FILES))
296169240Sjfv
297169240Sjfv# Processing license files from source area to image area
298169240Sjfv# These are modified to have the platform specific EOL chars.
299177867Sjfvdefine process-doc-file
300177867Sjfv	$(call LogInfo, Processing $(patsubst $(OUTPUT_ROOT)/%,%,$@))
301177867Sjfv	$(MKDIR) -p $(@D)
302177867Sjfv	$(RM) $@
303177867Sjfv	LC_ALL=C $(SED) 's/$$//g' $< > $@
304177867Sjfv	$(CHMOD) 444 $@
305177867Sjfvendef
306169240Sjfv
307169240Sjfv$(JRE_IMAGE_DIR)/%: $(JRE_DOC_LOCATION)/%
308169240Sjfv	$(process-doc-file)
309169240Sjfv
310169240Sjfv$(JDK_IMAGE_DIR)/%: $(JDK_DOC_LOCATION)/%
311169240Sjfv	$(process-doc-file)
312169240Sjfv
313169589SjfvJRE_TARGETS += $(JRE_DOC_TARGETS)
314169240SjfvJDK_TARGETS += $(JDK_DOC_TARGETS)
315169240Sjfv
316169240Sjfv################################################################################
317169240Sjfv# src.zip
318177867Sjfv
319169240Sjfv$(JDK_IMAGE_DIR)/src.zip: $(SUPPORT_OUTPUTDIR)/src.zip
320169240Sjfv	$(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
321169240Sjfv	$(install-file)
322169240Sjfv
323169240SjfvJDK_TARGETS += $(JDK_IMAGE_DIR)/src.zip
324169240Sjfv
325169240Sjfv################################################################################
326173788Sjfv# /demo dir
327169240Sjfv# Avoid doing the expensive find unless called with "jdk" as target.
328169240Sjfvifneq ($(filter jdk, $(MAKECMDGOALS)), )
329169240Sjfv
330169240Sjfv  DEMO_FILES := \
331169240Sjfv      $(if $(wildcard $(SUPPORT_OUTPUTDIR)/demos/image), \
332169240Sjfv        $(call DoubleDollar, \
333169240Sjfv        $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/demos/image \
334169240Sjfv            -type f -a ! \( -name "_the*" -o -name "javac_state" \) )) \
335169240Sjfv      )
336169240Sjfv
337169240Sjfv  ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), true)
338169240Sjfv    ifeq ($(OPENJDK_TARGET_OS), macosx)
339169240Sjfv      DEMO_FILES := $(call not-containing, .dSYM, $(DEMO_FILES))
340169240Sjfv    else
341169240Sjfv      DEMO_FILES := $(filter-out %.debuginfo %.pdb %.map, $(DEMO_FILES))
342177867Sjfv    endif
343169240Sjfv  endif
344177867Sjfv
345169240Sjfv  $(eval $(call SetupCopyFiles, JDK_COPY_DEMOS, \
346177867Sjfv      SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
347169240Sjfv      DEST := $(JDK_IMAGE_DIR)/demo, \
348177867Sjfv      FILES := $(DEMO_FILES), \
349169240Sjfv  ))
350177867Sjfv
351169240Sjfv  JDK_TARGETS += $(JDK_COPY_DEMOS)
352177867Sjfvendif
353169240Sjfv
354177867Sjfv################################################################################
355169240Sjfv# /sample dir
356177867Sjfv
357169240Sjfv$(eval $(call SetupCopyFiles, COPY_SAMPLES, \
358177867Sjfv    SRC := $(SUPPORT_OUTPUTDIR)/sample/image, \
359169240Sjfv    DEST := $(JDK_IMAGE_DIR)/sample, \
360177867Sjfv    FILES := $(if $(wildcard $(SUPPORT_OUTPUTDIR)/sample/image), \
361169240Sjfv        $(call CacheFind,$(SUPPORT_OUTPUTDIR)/sample/image))))
362177867Sjfv
363169240SjfvJDK_TARGETS += $(COPY_SAMPLES)
364177867Sjfv
365169240Sjfv################################################################################
366177867Sjfv# Code coverage data files
367169240Sjfv
368177867Sjfvifeq ($(GCOV_ENABLED), true)
369177867Sjfv
370169240Sjfv  GCOV_FIND_EXPR := -type f -name "*.gcno"
371177867Sjfv
372169240Sjfv  $(eval $(call SetupCopyFiles,COPY_HOTSPOT_GCOV_GCNO, \
373177867Sjfv      SRC := $(OUTPUT_ROOT), \
374169240Sjfv      DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
375169240Sjfv      FILES := $(shell $(FIND) $(HOTSPOT_OUTPUTDIR) $(GCOV_FIND_EXPR))))
376169240Sjfv
377169240Sjfv  SYMBOLS_TARGETS += $(COPY_HOTSPOT_GCOV_GCNO)
378169240Sjfv
379169240Sjfv  $(eval $(call SetupCopyFiles,COPY_JDK_GCOV_GCNO, \
380169240Sjfv      SRC := $(OUTPUT_ROOT), \
381169240Sjfv      DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
382169240Sjfv      FILES := $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/native $(GCOV_FIND_EXPR))))
383169240Sjfv
384169240Sjfv  SYMBOLS_TARGETS += $(COPY_JDK_GCOV_GCNO)
385169240Sjfv
386169240Sjfvendif
387169240Sjfv
388169240Sjfv################################################################################
389169240Sjfv# Debug symbols
390169240Sjfv# Since debug symbols are not included in the jmod files, they need to be copied
391169240Sjfv# in manually after generating the images.
392169240Sjfv
393169589SjfvALL_JDK_MODULES := $(JDK_MODULES)
394169240SjfvALL_JRE_MODULES := $(sort $(JRE_MODULES), $(foreach m, $(JRE_MODULES), \
395169240Sjfv    $(call FindTransitiveDepsForModule, $m)))
396169240Sjfv
397173788Sjfvifeq ($(OPENJDK_TARGET_OS), windows)
398169240Sjfv  LIBS_TARGET_SUBDIR := bin
399169240Sjfvelse
400169240Sjfv  LIBS_TARGET_SUBDIR := lib
401177867Sjfvendif
402177867Sjfv
403177867Sjfv# Param 1 - dir to find debuginfo files in
404169240SjfvFindDebuginfoFiles = \
405169240Sjfv    $(wildcard $(addprefix $1/*, $(DEBUGINFO_SUFFIXES)) \
406169240Sjfv        $(addprefix $1/*/*, $(DEBUGINFO_SUFFIXES)) \
407169240Sjfv        $(addprefix $1/*/*/*, $(DEBUGINFO_SUFFIXES)))
408169589Sjfv
409169240Sjfv# Pick the correct debug info files to copy, either zipped or not.
410169240Sjfvifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), true)
411169240Sjfv  DEBUGINFO_SUFFIXES += .diz
412169240Sjfvelse
413169240Sjfv  DEBUGINFO_SUFFIXES := .debuginfo .pdb .map
414177867Sjfv  # On Macosx, if debug symbols have not been zipped, find all files inside *.dSYM
415169240Sjfv  # dirs.
416169240Sjfv  ifeq ($(OPENJDK_TARGET_OS), macosx)
417169240Sjfv    $(eval $(call FillCacheFind, \
418169240Sjfv        $(SUPPORT_OUTPUTDIR)/modules_cmds $(SUPPORT_OUTPUTDIR)/modules_libs))
419169240Sjfv    FindDebuginfoFiles = \
420169240Sjfv        $(if $(wildcard $1), $(call containing, .dSYM/, $(call CacheFind, $1)))
421169240Sjfv  endif
422169240Sjfvendif
423169240Sjfv
424169240Sjfv# Param 1 - either JDK or JRE
425169240SjfvSetupCopyDebuginfo = \
426169240Sjfv    $(foreach m, $(ALL_$1_MODULES), \
427169240Sjfv      $(eval $(call SetupCopyFiles, COPY_$1_LIBS_DEBUGINFO_$m, \
428169240Sjfv          SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$m, \
429169240Sjfv          DEST := $($1_IMAGE_DIR)/$(LIBS_TARGET_SUBDIR), \
430169240Sjfv          FILES := $(call FindDebuginfoFiles, \
431169240Sjfv              $(SUPPORT_OUTPUTDIR)/modules_libs/$m), \
432169240Sjfv      )) \
433169240Sjfv      $(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
434169240Sjfv    )
435173788Sjfv
436173788Sjfv# No space before argument to avoid having to put $(strip ) everywhere in
437169240Sjfv# implementation above.
438169240Sjfv$(call SetupCopyDebuginfo,JDK)
439169240Sjfv$(call SetupCopyDebuginfo,JRE)
440169240Sjfv
441169240Sjfv################################################################################
442169240Sjfv
443169240Sjfv# Include custom post hook here to make it possible to augment the target lists
444169240Sjfv# before actual target prerequisites are declared.
445169240Sjfv$(eval $(call IncludeCustomExtension, , Images-post.gmk))
446169240Sjfv
447169589Sjfv################################################################################
448169240Sjfv
449169240Sjfv$(JRE_TARGETS): $(TOOL_JRE_TARGETS)
450169240Sjfv$(JDK_TARGETS): $(TOOL_JDK_TARGETS)
451169240Sjfv
452169240Sjfvjdk: $(JDK_TARGETS)
453177867Sjfvjre: $(JRE_TARGETS)
454169240Sjfvsymbols: $(SYMBOLS_TARGETS)
455169240Sjfv
456169240Sjfvall: jdk jre symbols
457169240Sjfv
458169240Sjfv$(JRE_COMPACT1_TARGETS): $(TOOL_JRE_COMPACT1_TARGETS)
459169240Sjfv$(JRE_COMPACT2_TARGETS): $(TOOL_JRE_COMPACT2_TARGETS)
460169240Sjfv$(JRE_COMPACT3_TARGETS): $(TOOL_JRE_COMPACT3_TARGETS)
461169240Sjfv
462169240Sjfvprofiles: $(TOOL_JRE_COMPACT1_TARGETS) \
463169240Sjfv    $(TOOL_JRE_COMPACT2_TARGETS) \
464169240Sjfv    $(TOOL_JRE_COMPACT3_TARGETS) \
465169240Sjfv    $(JRE_COMPACT1_TARGETS) \
466169240Sjfv    $(JRE_COMPACT2_TARGETS) \
467169240Sjfv    $(JRE_COMPACT3_TARGETS)
468169589Sjfv
469169240Sjfv.PHONY: default all jdk jre symbols profiles
470169240Sjfv