Images.gmk revision 1474:76f24d2c01ed
1122394Sharti#
2122394Sharti# Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved.
3122394Sharti# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4122394Sharti#
5122394Sharti# This code is free software; you can redistribute it and/or modify it
6122394Sharti# under the terms of the GNU General Public License version 2 only, as
7122394Sharti# published by the Free Software Foundation.  Oracle designates this
8122394Sharti# particular file as subject to the "Classpath" exception as provided
9122394Sharti# by Oracle in the LICENSE file that accompanied this code.
10122394Sharti#
11122394Sharti# This code is distributed in the hope that it will be useful, but WITHOUT
12122394Sharti# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13122394Sharti# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14122394Sharti# version 2 for more details (a copy is included in the LICENSE file that
15122394Sharti# accompanied this code).
16122394Sharti#
17122394Sharti# You should have received a copy of the GNU General Public License version
18122394Sharti# 2 along with this work; if not, write to the Free Software Foundation,
19122394Sharti# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20122394Sharti#
21122394Sharti# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22122394Sharti# or visit www.oracle.com if you need additional information or have any
23122394Sharti# questions.
24122394Sharti#
25122394Sharti
26122394Shartidefault: all
27122394Sharti
28122394Shartiinclude $(SPEC)
29122394Shartiinclude MakeBase.gmk
30122394Sharti
31122394ShartiTOOL_TARGETS :=
32122394ShartiJDK_TARGETS :=
33128237ShartiJRE_TARGETS :=
34122394Sharti
35122394Sharti# Hook to include the corresponding custom file, if present.
36122394Sharti$(eval $(call IncludeCustomExtension, , Images-pre.gmk))
37122394Sharti
38122394Sharti############################################################################
39122394Sharti
40122394ShartiMAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \
41122394Sharti               jdk.security.auth jdk.security.jgss jdk.pack200 jdk.xml.dom
42122394Sharti
43122394Sharti# providers
44122394ShartiPROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \
45122394Sharti               jdk.naming.dns jdk.naming.rmi jdk.scripting.nashorn jdk.zipfs
46122394Sharti
47122394Sharti# tools
48122394ShartiTOOLS_MODULES += jdk.attach jdk.compiler jdk.dev jdk.javadoc jdk.jcmd jdk.jconsole \
49122394Sharti               jdk.hotspot.agent jdk.hprof.agent jdk.jartool jdk.jdi jdk.jdwp.agent \
50122394Sharti               jdk.policytool jdk.rmic jdk.xml.bind jdk.xml.ws
51122394Sharti
52122394Shartiifeq ($(OPENJDK_TARGET_OS), windows)
53122394Sharti  PROVIDER_MODULES += jdk.crypto.mscapi
54122394Shartiendif
55122394Sharti
56122394Shartiifeq ($(OPENJDK_TARGET_OS), solaris)
57122394Sharti  PROVIDER_MODULES += jdk.crypto.ucrypto
58122394Shartiendif
59122394Sharti
60122394Shartiifeq ($(OPENJDK_TARGET_OS), windows)
61122394Sharti  MAIN_MODULES += jdk.accessibility
62122394Shartiendif
63122394Sharti
64122394Shartiifeq ($(OPENJDK_TARGET_OS), macosx)
65122394Sharti  MAIN_MODULES += jdk.deploy.osx
66122394Shartiendif
67122394Sharti
68122394ShartiJRE_MODULES := $(MAIN_MODULES) $(PROVIDER_MODULES)
69122394ShartiJDK_MODULES := $(JRE_MODULES) $(TOOLS_MODULES)
70122394Sharti
71122394Sharti# compact3 builds have additional modules
72122394ShartiJDK_COMPACT3_MODULES := java.compact3 java.smartcardio jdk.httpserver jdk.naming.dns \
73122394Sharti                       jdk.naming.rmi jdk.sctp jdk.security.auth jdk.management
74122394Sharti
75122394Sharti# Replacing double-comma with a single comma is to workaround the issue
76122394Sharti# with some version of make on windows that doesn't substitute spaces
77122394Sharti# with one comma properly as with make 4.0
78122394Shartidefine SubstComma
79122394Sharti  $(subst $(COMMA)$(COMMA),$(COMMA),$(subst $(SPACE),$(COMMA),$(strip $1)))
80122394Shartiendef
81122394ShartiJRE_MODULES_LIST := $(call SubstComma, $(JRE_MODULES))
82122394ShartiJDK_MODULES_LIST := $(call SubstComma, $(JDK_MODULES))
83122394Sharti
84122394Sharti################################################################################
85122394Sharti
86122394ShartiJRE_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/jre-sorted-modules
87122394ShartiJDK_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/jdk-sorted-modules
88122394ShartiJRE_COMPACT1_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact1-sorted-modules
89122394ShartiJRE_COMPACT2_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact2-sorted-modules
90122394ShartiJRE_COMPACT3_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact3-sorted-modules
91122394Sharti
92122394Sharti
93122394ShartiMODULES_CMDS := $(SUPPORT_OUTPUTDIR)/modules_cmds-stripped
94122394ShartiMODULES_LIBS := $(SUPPORT_OUTPUTDIR)/modules_libs-stripped
95122394ShartiMODULES_CONF := $(SUPPORT_OUTPUTDIR)/modules_conf
96122394Sharti
97122394ShartiJIMAGE_TOOL := $(JAVA_SMALL) \
98122394Sharti    -Xbootclasspath/p:$(BUILDTOOLS_OUTPUTDIR)/interim_jimage_classes \
99122394Sharti    -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes build.tools.module.ImageBuilder \
100122394Sharti    --cmds $(MODULES_CMDS) \
101122394Sharti    --libs $(MODULES_LIBS) \
102122394Sharti    --configs $(MODULES_CONF) \
103122394Sharti    --classes $(JDK_OUTPUTDIR)/modules \
104122394Sharti    --endian $(OPENJDK_TARGET_CPU_ENDIAN) \
105122394Sharti    #
106122394Sharti
107122394ShartiMODULES_XML += $(SRC_ROOT)/modules.xml
108122394ShartiDEPENDENCIES := $(call CacheFind, \
109122394Sharti    $(SUPPORT_OUTPUTDIR)/modules_cmds \
110122394Sharti    $(SUPPORT_OUTPUTDIR)/modules_libs) \
111122394Sharti    $(wildcard $(JDK_OUTPUTDIR)/modules/*/_*) \
112122394Sharti    $(MODULES_XML)
113122394Sharti    #
114122394Sharti
115122394Sharti# Use this file inside the image as target for make rule
116122394ShartiJIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX)
117122394Sharti
118122394Sharti$(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
119122394Sharti    $(call DependOnVariable, JDK_MODULES_LIST)
120122394Sharti	$(ECHO) Creating jdk jimage
121122394Sharti	$(RM) -r $(JDK_IMAGE_DIR) $(JDK_SORTED_MODULES)
122122394Sharti	$(JIMAGE_TOOL) --mods $(JDK_MODULES_LIST) --output $(JDK_IMAGE_DIR) \
123122394Sharti	    $(MODULES_XML) > $(JDK_SORTED_MODULES)
124122394Sharti	$(TOUCH) $@
125122394Sharti
126122394Sharti$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
127122394Sharti    $(call DependOnVariable, JRE_MODULES_LIST)
128122394Sharti	$(ECHO) Creating jre jimage
129122394Sharti	$(RM) -r $(JRE_IMAGE_DIR) $(JRE_SORTED_MODULES)
130122394Sharti	$(JIMAGE_TOOL) --mods $(JRE_MODULES_LIST) --output $(JRE_IMAGE_DIR) \
131122394Sharti	    $(MODULES_XML) > $(JRE_SORTED_MODULES)
132122394Sharti	$(TOUCH) $@
133122394Sharti
134122394ShartiJRE_COMPACT1_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact1
135122394ShartiJRE_COMPACT2_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact2
136122394ShartiJRE_COMPACT3_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact3
137122394Sharti
138122394ShartiCOMPACT_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec
139122394Sharti
140122394Sharti$(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
141122394Sharti    $(call DependOnVariable, JRE_COMPACT1_MODULES_LIST)
142122394Sharti	$(ECHO) Creating jre compact1 jimage
143122394Sharti	$(RM) -r $(JRE_COMPACT1_IMAGE_DIR) $(JRE_COMPACT1_SORTED_MODULES)
144122394Sharti	$(JIMAGE_TOOL) \
145122394Sharti	    --mods $(call SubstComma, java.compact1 $(COMPACT_EXTRA_MODULES)) \
146122394Sharti	    --output $(JRE_COMPACT1_IMAGE_DIR) \
147122394Sharti	    $(MODULES_XML) > $(JRE_COMPACT1_SORTED_MODULES)
148122394Sharti	$(TOUCH) $@
149122394Sharti
150122394Sharti$(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
151122394Sharti    $(call DependOnVariable, JRE_COMPACT2_MODULES_LIST)
152122394Sharti	$(ECHO) Creating jre compact2 jimage
153122394Sharti	$(RM) -r $(JRE_COMPACT2_IMAGE_DIR) $(JRE_COMPACT2_SORTED_MODULES)
154122394Sharti	$(JIMAGE_TOOL) \
155122394Sharti	    --mods $(call SubstComma, java.compact2 $(COMPACT_EXTRA_MODULES)) \
156122394Sharti	    --output $(JRE_COMPACT2_IMAGE_DIR) \
157122394Sharti	    $(MODULES_XML) > $(JRE_COMPACT2_SORTED_MODULES)
158122394Sharti	$(TOUCH) $@
159122394Sharti
160122394Sharti$(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
161122394Sharti    $(call DependOnVariable, JRE_COMPACT3_MODULES_LIST)
162122394Sharti	$(ECHO) Creating jre compact3 jimage
163122394Sharti	$(RM) -r $(JRE_COMPACT3_IMAGE_DIR) $(JRE_COMPACT3_SORTED_MODULES)
164122394Sharti	$(JIMAGE_TOOL) \
165122394Sharti	    --mods $(call SubstComma, $(JDK_COMPACT3_MODULES) $(COMPACT_EXTRA_MODULES)) \
166122394Sharti	    --output $(JRE_COMPACT3_IMAGE_DIR) \
167122394Sharti	    $(MODULES_XML) > $(JRE_COMPACT3_SORTED_MODULES)
168122394Sharti	$(TOUCH) $@
169122394Sharti
170122394ShartiTOOL_JRE_TARGETS := $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
171122394ShartiTOOL_JDK_TARGETS := $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
172122394ShartiTOOL_JRE_COMPACT1_TARGETS := $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
173122394ShartiTOOL_JRE_COMPACT2_TARGETS := $(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
174122394ShartiTOOL_JRE_COMPACT3_TARGETS := $(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
175122394Sharti
176122394Sharti################################################################################
177122394Sharti# /man dir
178122394Sharti#
179122394Sharti# All variables in this section are assigned with simple =, without :, to enable
180122394Sharti# more selective overriding from the custom version of this file.
181122394Sharti#
182122394Sharti# Avoid evaluating this whole section on windows for speed and stability
183122394Shartiifneq ($(OPENJDK_TARGET_OS), windows)
184122394Sharti  JRE_MAN_PAGES += \
185122394Sharti      java.1 \
186122394Sharti      jjs.1 \
187122394Sharti      keytool.1 \
188122394Sharti      orbd.1 \
189122394Sharti      pack200.1 \
190122394Sharti      rmid.1 \
191122394Sharti      rmiregistry.1 \
192122394Sharti      servertool.1 \
193122394Sharti      tnameserv.1 \
194122394Sharti      unpack200.1
195122394Sharti
196122394Sharti  ifndef OPENJDK
197122394Sharti    ifneq ($(OPENJDK_TARGET_OS), solaris)
198122394Sharti      JRE_MAN_PAGES += javaws.1
199122394Sharti    endif
200122394Sharti  endif
201122394Sharti
202122394Sharti  JDK_MAN_PAGES += \
203122394Sharti      $(JRE_MAN_PAGES) \
204122394Sharti      appletviewer.1 \
205122394Sharti      idlj.1 \
206122394Sharti      jar.1 \
207122394Sharti      jarsigner.1 \
208122394Sharti      javac.1 \
209122394Sharti      javadoc.1 \
210122394Sharti      javah.1 \
211122394Sharti      javap.1 \
212122394Sharti      jconsole.1 \
213122394Sharti      jcmd.1 \
214122394Sharti      jdb.1 \
215122394Sharti      jdeps.1 \
216122394Sharti      jhat.1 \
217122394Sharti      jinfo.1 \
218122394Sharti      jmap.1 \
219122394Sharti      jps.1 \
220122394Sharti      jrunscript.1 \
221122394Sharti      jsadebugd.1 \
222122394Sharti      jstack.1 \
223122394Sharti      jstat.1 \
224122394Sharti      jstatd.1 \
225122394Sharti      native2ascii.1 \
226122394Sharti      policytool.1 \
227122394Sharti      rmic.1 \
228122394Sharti      schemagen.1 \
229122394Sharti      serialver.1 \
230122394Sharti      wsgen.1 \
231122394Sharti      wsimport.1 \
232122394Sharti      xjc.1
233122394Sharti
234122394Sharti  # This variable is potentially overridden in the closed makefile.
235122394Sharti  MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src
236122394Sharti
237122394Sharti  ifeq ($(OPENJDK_TARGET_OS), linux)
238122394Sharti    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc
239122394Sharti    MAN1_SUBDIR = man
240122394Sharti  endif
241122394Sharti  ifeq ($(OPENJDK_TARGET_OS), solaris)
242122394Sharti    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc
243122394Sharti    MAN1_SUBDIR = sun/man/man1
244122394Sharti  endif
245122394Sharti  ifeq ($(OPENJDK_TARGET_OS), macosx)
246122394Sharti    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc
247122394Sharti    MAN1_SUBDIR = man
248122394Sharti  endif
249122394Sharti
250122394Sharti  $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
251122394Sharti	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
252122394Sharti	$(install-file)
253122394Sharti
254122394Sharti  $(JDK_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
255122394Sharti	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
256122394Sharti	$(install-file)
257122394Sharti
258122394Sharti  $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
259122394Sharti	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
260122394Sharti	$(install-file)
261122394Sharti
262122394Sharti  $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
263122394Sharti	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
264122394Sharti	$(install-file)
265122394Sharti
266122394Sharti  ifeq ($(OPENJDK_TARGET_OS), solaris)
267122394Sharti    $(JRE_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
268122394Sharti	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
269122394Sharti	$(install-file)
270122394Sharti
271122394Sharti    $(JDK_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
272122394Sharti	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
273122394Sharti	$(install-file)
274122394Sharti  endif
275122394Sharti
276122394Sharti  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
277122394Sharti    $(JRE_IMAGE_DIR)/man/ja:
278122394Sharti	$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
279122394Sharti	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
280122394Sharti
281122394Sharti    $(JDK_IMAGE_DIR)/man/ja:
282122394Sharti	$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
283122394Sharti	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
284122394Sharti  endif
285122394Sharti
286122394Sharti  ifeq ($(OPENJDK_TARGET_OS), solaris)
287122394Sharti    JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
288122394Sharti        $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/, $(JRE_MAN_PAGES)) \
289122394Sharti        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
290122394Sharti        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JRE_MAN_PAGES))
291122394Sharti
292122394Sharti    JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
293122394Sharti        $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/, $(JDK_MAN_PAGES)) \
294122394Sharti        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
295122394Sharti        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES))
296122394Sharti  endif
297122394Sharti
298122394Sharti  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
299122394Sharti    JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
300122394Sharti        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
301122394Sharti        $(JRE_IMAGE_DIR)/man/ja
302122394Sharti
303122394Sharti    JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
304122394Sharti        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
305122394Sharti        $(JDK_IMAGE_DIR)/man/ja
306122394Sharti  endif
307122394Sharti
308122394Sharti  JRE_TARGETS += $(JRE_MAN_PAGE_LIST)
309122394Sharti  JDK_TARGETS += $(JDK_MAN_PAGE_LIST)
310122394Shartiendif # Windows
311122394Sharti
312122394Sharti################################################################################
313122394Sharti# /include dir
314122394Sharti
315122394Sharti$(eval $(call SetupCopyFiles,COPY_INCLUDES, \
316122394Sharti    SRC := $(JDK_OUTPUTDIR)/include, \
317122394Sharti    DEST := $(JDK_IMAGE_DIR)/include, \
318122394Sharti    FILES := $(call CacheFind,$(JDK_OUTPUTDIR)/include)))
319122394Sharti
320122394ShartiJDK_TARGETS += $(COPY_INCLUDES)
321122394Sharti
322122394Sharti################################################################################
323122394Sharti# doc files
324122394Sharti
325122394ShartiJRE_DOC_FILES ?= LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
326122394ShartiJDK_DOC_FILES ?= LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
327122394ShartiJRE_DOC_LOCATION ?= $(JDK_TOPDIR)
328122394ShartiJDK_DOC_LOCATION ?= $(JDK_TOPDIR)
329122394Sharti
330122394ShartiJRE_DOC_TARGETS := $(addprefix $(JRE_IMAGE_DIR)/, $(JRE_DOC_FILES))
331122394ShartiJDK_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/, $(JDK_DOC_FILES))
332122394Sharti
333122394Sharti# Processing license files from source area to image area
334122394Sharti# These are modified to have the platform specific EOL chars.
335122394Shartidefine process-doc-file
336122394Sharti	$(ECHO) $(LOG_INFO) Processing $(patsubst $(OUTPUT_ROOT)/%,%,$@)
337122394Sharti	$(MKDIR) -p $(@D)
338122394Sharti	$(RM) $@
339122394Sharti	LC_ALL=C $(SED) 's/$$//g' $< > $@
340122394Sharti	$(CHMOD) 444 $@
341122394Shartiendef
342122394Sharti
343122394Sharti$(JRE_IMAGE_DIR)/%: $(JRE_DOC_LOCATION)/%
344122394Sharti	$(process-doc-file)
345122394Sharti
346122394Sharti$(JDK_IMAGE_DIR)/%: $(JDK_DOC_LOCATION)/%
347122394Sharti	$(process-doc-file)
348122394Sharti
349122394ShartiJRE_TARGETS += $(JRE_DOC_TARGETS)
350122394ShartiJDK_TARGETS += $(JDK_DOC_TARGETS)
351122394Sharti
352122394Sharti################################################################################
353122394Sharti# Release file
354122394Sharti
355122394ShartiJRE_INFO_FILE := $(JRE_IMAGE_DIR)/release
356122394ShartiJDK_INFO_FILE := $(JDK_IMAGE_DIR)/release
357122394ShartiJRE_COMPACT1_INFO_FILE := $(JRE_COMPACT1_IMAGE_DIR)/release
358122394ShartiJRE_COMPACT2_INFO_FILE := $(JRE_COMPACT2_IMAGE_DIR)/release
359122394ShartiJRE_COMPACT3_INFO_FILE := $(JRE_COMPACT3_IMAGE_DIR)/release
360122394Sharti
361122394Sharti# Common way to emit a line into the release or info file
362122394Shartidefine info-file-item # name value
363122394Sharti  $(PRINTF) '%s="%s"\n' $1 $2 >> $@
364122394Shartiendef
365122394Sharti
366122394Sharti# Param 1 - The file containing the MODULES list
367122394Shartidefine create-info-file
368122394Sharti  $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
369122394Sharti  $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
370122394Sharti  $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)")
371122394Sharti  $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)")
372122394Sharti  $(if $(JDK_ARCH_ABI_PROP_NAME), \
373122394Sharti    $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)"))
374122394Sharti  $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
375122394Sharti  $(call info-file-item, "MODULES", "`$(CAT) $1`")
376122394Shartiendef
377122394Sharti
378122394Sharti# Param 1 - The file containing the MODULES list
379122394Shartidefine prepare-info-file
380122394Sharti  $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
381122394Sharti  $(MKDIR) -p $(@D)
382122394Sharti  $(RM) $@
383122394Shartiendef
384122394Sharti
385122394Shartidefine info-file
386122394Sharti  $(call prepare-info-file, $1)
387122394Sharti  $(call create-info-file, $1)
388122394Shartiendef
389122394Sharti
390122394Sharti# Create a variable dependency file common for all release info files. The
391122394Sharti# sorted module list will only change if the image is regenerated, which will
392122394Sharti# trigger a rebuild of these files anyway.
393122394ShartiINFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file)
394122394Sharti
395122394ShartiALL_SOURCE_TIPS = $(shell \
396122394Sharti    if [ -f $(SUPPORT_OUTPUTDIR)/source_tips ] ; then \
397122394Sharti      $(CAT) $(SUPPORT_OUTPUTDIR)/source_tips ; \
398122394Sharti    fi)
399122394Sharti
400122394Sharti$(JRE_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
401122394Sharti	$(call info-file, $(JRE_SORTED_MODULES))
402122394Sharti
403122394Sharti$(JDK_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
404122394Sharti	$(call info-file, $(JDK_SORTED_MODULES))
405122394Sharti
406122394Sharti$(JRE_COMPACT1_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
407122394Sharti	$(call info-file, $(JRE_COMPACT1_SORTED_MODULES))
408122394Sharti	$(call info-file-item, "JAVA_PROFILE", "compact1")
409122394Sharti
410122394Sharti$(JRE_COMPACT2_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
411122394Sharti	$(call info-file, $(JRE_COMPACT2_SORTED_MODULES))
412122394Sharti	$(call info-file-item, "JAVA_PROFILE", "compact2")
413122394Sharti
414122394Sharti$(JRE_COMPACT3_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
415122394Sharti	$(call info-file, $(JRE_COMPACT3_SORTED_MODULES))
416122394Sharti	$(call info-file-item, "JAVA_PROFILE", "compact3")
417122394Sharti
418122394ShartiJRE_TARGETS += $(JRE_INFO_FILE)
419122394ShartiJDK_TARGETS += $(JDK_INFO_FILE)
420122394ShartiJRE_COMPACT1_TARGETS += $(JRE_COMPACT1_INFO_FILE)
421122394ShartiJRE_COMPACT2_TARGETS += $(JRE_COMPACT2_INFO_FILE)
422122394ShartiJRE_COMPACT3_TARGETS += $(JRE_COMPACT3_INFO_FILE)
423122394Sharti
424122394Sharti################################################################################
425122394Sharti# src.zip
426122394Sharti
427122394Sharti$(JDK_IMAGE_DIR)/src.zip: $(SUPPORT_OUTPUTDIR)/src.zip
428122394Sharti	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
429122394Sharti	$(install-file)
430122394Sharti
431122394ShartiJDK_TARGETS += $(JDK_IMAGE_DIR)/src.zip
432122394Sharti
433122394Sharti################################################################################
434122394Sharti# /demo dir
435122394Sharti
436122394Sharti# The db demo contains an empty dir that needs to be copied. The other
437122394Sharti# directories will always trigger the rule for recompile since
438122394Sharti# _the.list_of_packages files are touched.
439122394Shartiifneq ($(findstring images, $(MAKECMDGOALS)), )
440122394Sharti  $(JDK_IMAGE_DIR)/demo/%: $(SUPPORT_OUTPUTDIR)/demo/image/%
441122394Sharti	if [ ! -d "$@" ]; then \
442122394Sharti	  $(ECHO) $(LOG_INFO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'; \
443122394Sharti	  $(MKDIR) -p $(@D); \
444122394Sharti	  if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) '$<' '$@'; fi \
445122394Sharti	fi
446122394Sharti
447122394Sharti  # Find all files including directories
448122394Sharti  JDK_DEMO_TARGETS := $(if $(wildcard $(SUPPORT_OUTPUTDIR)/demo/image), \
449122394Sharti      $(patsubst $(SUPPORT_OUTPUTDIR)/demo/image/%, $(JDK_IMAGE_DIR)/demo/%, \
450122394Sharti      $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/demo/image \
451122394Sharti          ! \( -name "_the*" -o -name "javac_state" \) )))
452122394Sharti
453122394Sharti  JDK_TARGETS += $(JDK_DEMO_TARGETS)
454122394Shartiendif
455122394Sharti
456122394Sharti################################################################################
457122394Sharti# /sample dir
458122394Sharti
459122394Sharti$(eval $(call SetupCopyFiles,COPY_SAMPLES, \
460122394Sharti    SRC := $(SUPPORT_OUTPUTDIR)/sample, \
461122394Sharti    DEST := $(JDK_IMAGE_DIR)/sample, \
462122394Sharti    FILES := $(if $(wildcard $(SUPPORT_OUTPUTDIR)/sample), \
463122394Sharti        $(call CacheFind,$(SUPPORT_OUTPUTDIR)/sample))))
464122394Sharti
465122394ShartiJDK_TARGETS += $(COPY_SAMPLES)
466122394Sharti
467122394Sharti################################################################################
468122394Sharti# jrt-fs.jar
469122394Sharti
470122394Sharti$(eval $(call SetupCopyFiles,COPY_JRTFS_JAR, \
471122394Sharti    SRC := $(SUPPORT_OUTPUTDIR), \
472122394Sharti    DEST := $(JDK_IMAGE_DIR), \
473122394Sharti    FILES := $(SUPPORT_OUTPUTDIR)/jrt-fs.jar))
474122394Sharti
475122394ShartiJDK_TARGETS += $(COPY_JRTFS_JAR)
476122394Sharti
477122394Sharti################################################################################
478122394Sharti# Code coverage data files
479122394Sharti
480122394Shartiifeq ($(GCOV_ENABLED), true)
481122394Sharti
482122394Sharti  GCOV_FIND_EXPR := -type f -name "*.gcno"
483122394Sharti
484122394Sharti  $(eval $(call SetupCopyFiles,COPY_HOTSPOT_GCOV_GCNO, \
485122394Sharti      SRC := $(OUTPUT_ROOT), \
486122394Sharti      DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
487122394Sharti      FILES := $(shell $(FIND) $(HOTSPOT_OUTPUTDIR) $(GCOV_FIND_EXPR))))
488122394Sharti
489122394Sharti  SYMBOLS_TARGETS += $(COPY_HOTSPOT_GCOV_GCNO)
490122394Sharti
491122394Sharti  $(eval $(call SetupCopyFiles,COPY_JDK_GCOV_GCNO, \
492122394Sharti      SRC := $(OUTPUT_ROOT), \
493122394Sharti      DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
494122394Sharti      FILES := $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/native $(GCOV_FIND_EXPR))))
495122394Sharti
496122394Sharti  SYMBOLS_TARGETS += $(COPY_JDK_GCOV_GCNO)
497122394Sharti
498122394Shartiendif
499122394Sharti
500122394Sharti################################################################################
501122394Sharti
502122394Sharti# Include custom post hook here to make it possible to augment the target lists
503122394Sharti# before actual target prerequisites are declared.
504122394Sharti$(eval $(call IncludeCustomExtension, , Images-post.gmk))
505122394Sharti
506122394Sharti################################################################################
507122394Sharti
508122394Sharti$(JRE_TARGETS): $(TOOL_JRE_TARGETS)
509122394Sharti$(JDK_TARGETS): $(TOOL_JDK_TARGETS)
510122394Sharti
511122394Shartijimages: $(TOOL_JRE_TARGETS) $(TOOL_JDK_TARGETS) $(JRE_TARGETS) $(JDK_TARGETS) \
512122394Sharti    $(SYMBOLS_TARGETS)
513122394Sharti
514122394Sharti
515122394Sharti$(JRE_COMPACT1_TARGETS): $(TOOL_JRE_COMPACT1_TARGETS)
516122394Sharti$(JRE_COMPACT2_TARGETS): $(TOOL_JRE_COMPACT2_TARGETS)
517122394Sharti$(JRE_COMPACT3_TARGETS): $(TOOL_JRE_COMPACT3_TARGETS)
518122394Sharti
519122394Shartiprofiles: $(TOOL_JRE_COMPACT1_TARGETS) \
520122394Sharti    $(TOOL_JRE_COMPACT2_TARGETS) \
521122394Sharti    $(TOOL_JRE_COMPACT3_TARGETS) \
522122394Sharti    $(JRE_COMPACT1_TARGETS) \
523122394Sharti    $(JRE_COMPACT2_TARGETS) \
524122394Sharti    $(JRE_COMPACT3_TARGETS)
525128237Sharti
526122394Sharti.PHONY: default all jimages profiles
527122394Sharti