Images.gmk revision 1299:8720fa7696cb
1189251Ssam#
2214734Srpaulo# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
3252726Srpaulo# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4189251Ssam#
5252726Srpaulo# This code is free software; you can redistribute it and/or modify it
6252726Srpaulo# under the terms of the GNU General Public License version 2 only, as
7189251Ssam# published by the Free Software Foundation.  Oracle designates this
8189251Ssam# particular file as subject to the "Classpath" exception as provided
9189251Ssam# by Oracle in the LICENSE file that accompanied this code.
10189251Ssam#
11189251Ssam# This code is distributed in the hope that it will be useful, but WITHOUT
12189251Ssam# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13189251Ssam# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14189251Ssam# version 2 for more details (a copy is included in the LICENSE file that
15189251Ssam# accompanied this code).
16189251Ssam#
17189251Ssam# You should have received a copy of the GNU General Public License version
18189251Ssam# 2 along with this work; if not, write to the Free Software Foundation,
19189251Ssam# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20252726Srpaulo#
21252726Srpaulo# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22189251Ssam# or visit www.oracle.com if you need additional information or have any
23189251Ssam# questions.
24189251Ssam#
25189251Ssam
26189251Ssamdefault: all
27189251Ssam
28189251Ssaminclude $(SPEC)
29189251Ssaminclude MakeBase.gmk
30189251Ssam
31189251SsamTOOL_TARGETS :=
32189251SsamJDK_TARGETS :=
33189251SsamJRE_TARGETS :=
34189251Ssam
35189251Ssam# Hook to include the corresponding custom file, if present.
36189251Ssam$(eval $(call IncludeCustomExtension, , Images-pre.gmk))
37189251Ssam
38189251Ssam############################################################################
39189251Ssam
40189251SsamMAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \
41189251Ssam               jdk.security.auth jdk.security.jgss jdk.runtime
42189251Ssam
43189251Ssam# providers
44189251SsamPROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \
45189251Ssam               jdk.naming.dns jdk.naming.rmi jdk.scripting.nashorn jdk.zipfs
46189251Ssam
47189251Ssam# tools
48189251SsamTOOLS_MODULES += jdk.attach jdk.compiler jdk.dev jdk.javadoc jdk.jcmd jdk.jconsole \
49189251Ssam               jdk.hotspot.agent jdk.hprof.agent jdk.jdi jdk.jdwp.agent jdk.rmic \
50189251Ssam               jdk.xml.bind jdk.xml.ws
51189251Ssam
52189251Ssamifeq ($(OPENJDK_TARGET_OS), windows)
53189251Ssam  PROVIDER_MODULES += jdk.crypto.mscapi
54189251Ssamendif
55189251Ssam
56189251Ssamifeq ($(OPENJDK_TARGET_OS), solaris)
57189251Ssam  PROVIDER_MODULES += jdk.crypto.ucrypto
58252726Srpauloendif
59252726Srpaulo
60252726Srpauloifeq ($(OPENJDK_TARGET_OS), macosx)
61189251Ssam  MAIN_MODULES += jdk.deploy.osx
62189251Ssamendif
63189251Ssam
64189251SsamJRE_MODULES := $(MAIN_MODULES) $(PROVIDER_MODULES)
65189251SsamJDK_MODULES := $(JRE_MODULES) $(TOOLS_MODULES)
66189251Ssam
67189251Ssam# compact3 builds have additional modules
68189251SsamJDK_COMPACT3_MODULES := java.compact3 java.smartcardio jdk.httpserver jdk.naming.dns \
69189251Ssam                       jdk.naming.rmi jdk.sctp jdk.security.auth
70189251Ssam
71189251Ssam# Replacing double-comma with a single comma is to workaround the issue
72189251Ssam# with some version of make on windows that doesn't substitute spaces
73189251Ssam# with one comma properly as with make 4.0
74189251Ssamdefine SubstComma
75189251Ssam  $(subst $(COMMA)$(COMMA),$(COMMA),$(subst $(SPACE),$(COMMA),$(strip $1)))
76189251Ssamendef
77189251SsamJRE_MODULES_LIST := $(call SubstComma, $(JRE_MODULES))
78189251SsamJDK_MODULES_LIST := $(call SubstComma, $(JDK_MODULES))
79189251Ssam
80189251Ssam################################################################################
81189251Ssam
82189251SsamJRE_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/jre-sorted-modules
83189251SsamJDK_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/jdk-sorted-modules
84189251SsamJRE_COMPACT1_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact1-sorted-modules
85189251SsamJRE_COMPACT2_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact2-sorted-modules
86189251SsamJRE_COMPACT3_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact3-sorted-modules
87189251Ssam
88189251Ssam
89189251SsamMODULES_CMDS := $(SUPPORT_OUTPUTDIR)/modules_cmds-stripped
90189251SsamMODULES_LIBS := $(SUPPORT_OUTPUTDIR)/modules_libs-stripped
91189251SsamMODULES_CONF := $(SUPPORT_OUTPUTDIR)/modules_conf
92189251Ssam
93214734SrpauloJIMAGE_TOOL := $(JAVA_SMALL) \
94214734Srpaulo    -Xbootclasspath/p:$(BUILDTOOLS_OUTPUTDIR)/interim_jimage_classes \
95214734Srpaulo    -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes build.tools.module.ImageBuilder \
96189251Ssam    --cmds $(MODULES_CMDS) \
97189251Ssam    --libs $(MODULES_LIBS) \
98189251Ssam    --configs $(MODULES_CONF) \
99189251Ssam    --classes $(JDK_OUTPUTDIR)/modules \
100189251Ssam    --endian $(OPENJDK_TARGET_CPU_ENDIAN) \
101189251Ssam    #
102189251Ssam
103189251SsamMODULES_XML += $(SRC_ROOT)/modules.xml
104189251SsamDEPENDENCIES := $(call CacheFind, \
105189251Ssam    $(SUPPORT_OUTPUTDIR)/modules_cmds \
106189251Ssam    $(SUPPORT_OUTPUTDIR)/modules_libs) \
107189251Ssam    $(wildcard $(JDK_OUTPUTDIR)/modules/*/_*) \
108189251Ssam    $(MODULES_XML)
109189251Ssam    #
110189251Ssam
111189251Ssam# Use this file inside the image as target for make rule
112189251SsamJIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX)
113189251Ssam
114189251Ssam$(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
115189251Ssam    $(call DependOnVariable, JDK_MODULES_LIST)
116189251Ssam	$(ECHO) Creating jdk jimage
117189251Ssam	$(RM) -r $(JDK_IMAGE_DIR) $(JDK_SORTED_MODULES)
118189251Ssam	$(JIMAGE_TOOL) --mods $(JDK_MODULES_LIST) --output $(JDK_IMAGE_DIR) \
119189251Ssam	    $(MODULES_XML) > $(JDK_SORTED_MODULES)
120189251Ssam	$(TOUCH) $@
121189251Ssam
122189251Ssam$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
123189251Ssam    $(call DependOnVariable, JRE_MODULES_LIST)
124189251Ssam	$(ECHO) Creating jre jimage
125189251Ssam	$(RM) -r $(JRE_IMAGE_DIR) $(JRE_SORTED_MODULES)
126189251Ssam	$(JIMAGE_TOOL) --mods $(JRE_MODULES_LIST) --output $(JRE_IMAGE_DIR) \
127189251Ssam	    $(MODULES_XML) > $(JRE_SORTED_MODULES)
128189251Ssam	$(TOUCH) $@
129189251Ssam
130189251SsamJRE_COMPACT1_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact1
131189251SsamJRE_COMPACT2_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact2
132189251SsamJRE_COMPACT3_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact3
133189251Ssam
134189251SsamCOMPACT_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec
135189251Ssam
136189251Ssam$(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
137189251Ssam    $(call DependOnVariable, JRE_COMPACT1_MODULES_LIST)
138189251Ssam	$(ECHO) Creating jre compact1 jimage
139189251Ssam	$(RM) -r $(JRE_COMPACT1_IMAGE_DIR) $(JRE_COMPACT1_SORTED_MODULES)
140189251Ssam	$(JIMAGE_TOOL) \
141189251Ssam	    --mods $(call SubstComma, java.compact1 $(COMPACT_EXTRA_MODULES)) \
142189251Ssam	    --output $(JRE_COMPACT1_IMAGE_DIR) \
143189251Ssam	    $(MODULES_XML) > $(JRE_COMPACT1_SORTED_MODULES)
144189251Ssam	$(TOUCH) $@
145189251Ssam
146189251Ssam$(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
147189251Ssam    $(call DependOnVariable, JRE_COMPACT2_MODULES_LIST)
148189251Ssam	$(ECHO) Creating jre compact2 jimage
149189251Ssam	$(RM) -r $(JRE_COMPACT2_IMAGE_DIR) $(JRE_COMPACT2_SORTED_MODULES)
150189251Ssam	$(JIMAGE_TOOL) \
151189251Ssam	    --mods $(call SubstComma, java.compact2 $(COMPACT_EXTRA_MODULES)) \
152189251Ssam	    --output $(JRE_COMPACT2_IMAGE_DIR) \
153189251Ssam	    $(MODULES_XML) > $(JRE_COMPACT2_SORTED_MODULES)
154189251Ssam	$(TOUCH) $@
155189251Ssam
156189251Ssam$(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \
157189251Ssam    $(call DependOnVariable, JRE_COMPACT3_MODULES_LIST)
158189251Ssam	$(ECHO) Creating jre compact3 jimage
159189251Ssam	$(RM) -r $(JRE_COMPACT3_IMAGE_DIR) $(JRE_COMPACT3_SORTED_MODULES)
160189251Ssam	$(JIMAGE_TOOL) \
161189251Ssam	    --mods $(call SubstComma, $(JDK_COMPACT3_MODULES) $(COMPACT_EXTRA_MODULES)) \
162189251Ssam	    --output $(JRE_COMPACT3_IMAGE_DIR) \
163189251Ssam	    $(MODULES_XML) > $(JRE_COMPACT3_SORTED_MODULES)
164189251Ssam	$(TOUCH) $@
165189251Ssam
166189251SsamTOOL_JRE_TARGETS := $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
167189251SsamTOOL_JDK_TARGETS := $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
168189251SsamTOOL_JRE_COMPACT1_TARGETS := $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
169189251SsamTOOL_JRE_COMPACT2_TARGETS := $(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
170189251SsamTOOL_JRE_COMPACT3_TARGETS := $(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
171189251Ssam
172189251Ssam################################################################################
173189251Ssam# /man dir
174189251Ssam#
175189251Ssam# All variables in this section are assigned with simple =, without :, to enable
176189251Ssam# more selective overriding from the custom version of this file.
177189251Ssam#
178189251Ssam# Avoid evaluating this whole section on windows for speed and stability
179189251Ssamifneq ($(OPENJDK_TARGET_OS), windows)
180189251Ssam  JRE_MAN_PAGES += \
181189251Ssam      java.1 \
182189251Ssam      jjs.1 \
183189251Ssam      keytool.1 \
184189251Ssam      orbd.1 \
185189251Ssam      pack200.1 \
186189251Ssam      policytool.1 \
187189251Ssam      rmid.1 \
188189251Ssam      rmiregistry.1 \
189189251Ssam      servertool.1 \
190189251Ssam      tnameserv.1 \
191189251Ssam      unpack200.1
192189251Ssam
193189251Ssam  ifndef OPENJDK
194189251Ssam    ifneq ($(OPENJDK_TARGET_OS), solaris)
195189251Ssam      JRE_MAN_PAGES += javaws.1
196189251Ssam    endif
197189251Ssam  endif
198189251Ssam
199189251Ssam  JDK_MAN_PAGES += \
200189251Ssam      $(JRE_MAN_PAGES) \
201189251Ssam      appletviewer.1 \
202189251Ssam      idlj.1 \
203189251Ssam      jar.1 \
204189251Ssam      jarsigner.1 \
205189251Ssam      javac.1 \
206189251Ssam      javadoc.1 \
207189251Ssam      javah.1 \
208214734Srpaulo      javap.1 \
209189251Ssam      jconsole.1 \
210189251Ssam      jcmd.1 \
211189251Ssam      jdb.1 \
212189251Ssam      jdeps.1 \
213189251Ssam      jhat.1 \
214214734Srpaulo      jinfo.1 \
215189251Ssam      jmap.1 \
216189251Ssam      jps.1 \
217189251Ssam      jrunscript.1 \
218189251Ssam      jsadebugd.1 \
219189251Ssam      jstack.1 \
220189251Ssam      jstat.1 \
221214734Srpaulo      jstatd.1 \
222214734Srpaulo      native2ascii.1 \
223214734Srpaulo      rmic.1 \
224189251Ssam      schemagen.1 \
225189251Ssam      serialver.1 \
226189251Ssam      wsgen.1 \
227189251Ssam      wsimport.1 \
228189251Ssam      xjc.1
229189251Ssam
230189251Ssam  # This variable is potentially overridden in the closed makefile.
231189251Ssam  MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src
232189251Ssam
233189251Ssam  ifeq ($(OPENJDK_TARGET_OS), linux)
234189251Ssam    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc
235189251Ssam    MAN1_SUBDIR = man
236189251Ssam  endif
237189251Ssam  ifeq ($(OPENJDK_TARGET_OS), solaris)
238214734Srpaulo    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc
239189251Ssam    MAN1_SUBDIR = sun/man/man1
240189251Ssam  endif
241189251Ssam  ifeq ($(OPENJDK_TARGET_OS), macosx)
242214734Srpaulo    MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc
243189251Ssam    MAN1_SUBDIR = man
244189251Ssam  endif
245189251Ssam
246189251Ssam  $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
247189251Ssam	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
248189251Ssam	$(install-file)
249189251Ssam
250189251Ssam  $(JDK_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
251252726Srpaulo	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
252252726Srpaulo	$(install-file)
253252726Srpaulo
254189251Ssam  define install-ja-manpage
255189251Ssam	$(MKDIR) -p $(@D)
256252726Srpaulo	$(CAT) $< \
257189251Ssam	    | $(NATIVE2ASCII) -encoding eucJP \
258189251Ssam	    | $(SED) 's/@@VERSION@@/$(THIS_JDK_VERSION)/g' \
259189251Ssam	    | $(NATIVE2ASCII) -reverse -encoding $1 \
260189251Ssam	    > $@
261189251Ssam  endef
262189251Ssam
263189251Ssam  $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
264189251Ssam	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
265189251Ssam	$(call install-ja-manpage, UTF-8)
266189251Ssam
267189251Ssam  $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
268189251Ssam	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
269189251Ssam	$(call install-ja-manpage, UTF-8)
270189251Ssam
271252726Srpaulo  $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
272252726Srpaulo	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
273252726Srpaulo	$(call install-ja-manpage, PCK)
274252726Srpaulo
275252726Srpaulo  $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
276252726Srpaulo	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
277252726Srpaulo	$(call install-ja-manpage, PCK)
278252726Srpaulo
279252726Srpaulo  ifeq ($(OPENJDK_TARGET_OS), solaris)
280189251Ssam    $(JRE_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
281189251Ssam	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
282189251Ssam	$(install-file)
283189251Ssam
284189251Ssam    $(JDK_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
285189251Ssam	$(ECHO) $(LOG_INFO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
286189251Ssam	$(install-file)
287252726Srpaulo  endif
288189251Ssam
289189251Ssam  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
290189251Ssam    $(JRE_IMAGE_DIR)/man/ja:
291189251Ssam	$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
292189251Ssam	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
293189251Ssam
294189251Ssam    $(JDK_IMAGE_DIR)/man/ja:
295189251Ssam	$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
296189251Ssam	$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
297189251Ssam  endif
298189251Ssam
299189251Ssam  ifeq ($(OPENJDK_TARGET_OS), solaris)
300189251Ssam    JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
301189251Ssam        $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/, $(JRE_MAN_PAGES)) \
302189251Ssam        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
303189251Ssam        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JRE_MAN_PAGES))
304189251Ssam
305189251Ssam    JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
306189251Ssam        $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/, $(JDK_MAN_PAGES)) \
307189251Ssam        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
308189251Ssam        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES))
309189251Ssam  endif
310189251Ssam
311189251Ssam  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
312189251Ssam    JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
313189251Ssam        $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
314189251Ssam        $(JRE_IMAGE_DIR)/man/ja
315189251Ssam
316189251Ssam    JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
317189251Ssam        $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
318189251Ssam        $(JDK_IMAGE_DIR)/man/ja
319189251Ssam  endif
320189251Ssam
321189251Ssam  JRE_TARGETS += $(JRE_MAN_PAGE_LIST)
322189251Ssam  JDK_TARGETS += $(JDK_MAN_PAGE_LIST)
323189251Ssamendif # Windows
324189251Ssam
325189251Ssam################################################################################
326189251Ssam# /include dir
327189251Ssam
328189251Ssam$(eval $(call SetupCopyFiles,COPY_INCLUDES, \
329189251Ssam    SRC := $(JDK_OUTPUTDIR)/include, \
330189251Ssam    DEST := $(JDK_IMAGE_DIR)/include, \
331189251Ssam    FILES := $(call CacheFind,$(JDK_OUTPUTDIR)/include)))
332189251Ssam
333189251SsamJDK_TARGETS += $(COPY_INCLUDES)
334189251Ssam
335189251Ssam################################################################################
336189251Ssam# doc files
337189251Ssam
338189251SsamJRE_DOC_FILES ?= LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
339189251SsamJDK_DOC_FILES ?= LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
340189251SsamJRE_DOC_LOCATION ?= $(JDK_TOPDIR)
341189251SsamJDK_DOC_LOCATION ?= $(JDK_TOPDIR)
342189251Ssam
343189251SsamJRE_DOC_TARGETS := $(addprefix $(JRE_IMAGE_DIR)/, $(JRE_DOC_FILES))
344189251SsamJDK_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/, $(JDK_DOC_FILES))
345189251Ssam
346189251Ssam# Processing license files from source area to image area
347189251Ssam# These are modified to have the platform specific EOL chars.
348189251Ssamdefine process-doc-file
349214734Srpaulo	$(ECHO) $(LOG_INFO) Processing $(patsubst $(OUTPUT_ROOT)/%,%,$@)
350214734Srpaulo	$(MKDIR) -p $(@D)
351189251Ssam	$(RM) $@
352189251Ssam	LC_ALL=C $(SED) 's/$$//g' $< > $@
353189251Ssam	$(CHMOD) 444 $@
354189251Ssamendef
355189251Ssam
356189251Ssam$(JRE_IMAGE_DIR)/%: $(JRE_DOC_LOCATION)/%
357189251Ssam	$(process-doc-file)
358189251Ssam
359189251Ssam$(JDK_IMAGE_DIR)/%: $(JDK_DOC_LOCATION)/%
360189251Ssam	$(process-doc-file)
361189251Ssam
362189251SsamJRE_TARGETS += $(JRE_DOC_TARGETS)
363189251SsamJDK_TARGETS += $(JDK_DOC_TARGETS)
364189251Ssam
365189251Ssam################################################################################
366189251Ssam# Release file
367189251Ssam
368189251SsamJRE_INFO_FILE := $(JRE_IMAGE_DIR)/release
369189251SsamJDK_INFO_FILE := $(JDK_IMAGE_DIR)/release
370189251SsamJRE_COMPACT1_INFO_FILE := $(JRE_COMPACT1_IMAGE_DIR)/release
371189251SsamJRE_COMPACT2_INFO_FILE := $(JRE_COMPACT2_IMAGE_DIR)/release
372189251SsamJRE_COMPACT3_INFO_FILE := $(JRE_COMPACT3_IMAGE_DIR)/release
373214734Srpaulo
374189251Ssam# Common way to emit a line into the release or info file
375189251Ssamdefine info-file-item # name value
376189251Ssam  $(PRINTF) '%s="%s"\n' $1 $2 >> $@
377189251Ssamendef
378189251Ssam
379189251Ssam# Param 1 - The file containing the MODULES list
380189251Ssamdefine create-info-file
381189251Ssam  $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
382189251Ssam  $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
383189251Ssam  $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)")
384189251Ssam  $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)")
385189251Ssam  $(if $(JDK_ARCH_ABI_PROP_NAME), \
386189251Ssam    $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)"))
387189251Ssam  $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
388189251Ssam  $(call info-file-item, "MODULES", "`$(CAT) $1`")
389189251Ssamendef
390189251Ssam
391189251Ssam# Param 1 - The file containing the MODULES list
392189251Ssamdefine prepare-info-file
393189251Ssam  $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
394189251Ssam  $(MKDIR) -p $(@D)
395189251Ssam  $(RM) $@
396189251Ssamendef
397189251Ssam
398189251Ssamdefine info-file
399189251Ssam  $(call prepare-info-file, $1)
400189251Ssam  $(call create-info-file, $1)
401189251Ssamendef
402189251Ssam
403189251Ssam# Create a variable dependency file common for all release info files. The
404189251Ssam# sorted module list will only change if the image is regenerated, which will
405189251Ssam# trigger a rebuild of these files anyway.
406189251SsamINFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file)
407189251Ssam
408189251SsamALL_SOURCE_TIPS = $(shell \
409189251Ssam    if [ -f $(SUPPORT_OUTPUTDIR)/source_tips ] ; then \
410189251Ssam      $(CAT) $(SUPPORT_OUTPUTDIR)/source_tips ; \
411189251Ssam    fi)
412189251Ssam
413189251Ssam$(JRE_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
414189251Ssam	$(call info-file, $(JRE_SORTED_MODULES))
415189251Ssam
416189251Ssam$(JDK_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
417189251Ssam	$(call info-file, $(JDK_SORTED_MODULES))
418189251Ssam
419189251Ssam$(JRE_COMPACT1_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
420189251Ssam	$(call info-file, $(JRE_COMPACT1_SORTED_MODULES))
421189251Ssam	$(call info-file-item, "JAVA_PROFILE", "compact1")
422189251Ssam
423189251Ssam$(JRE_COMPACT2_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
424189251Ssam	$(call info-file, $(JRE_COMPACT2_SORTED_MODULES))
425189251Ssam	$(call info-file-item, "JAVA_PROFILE", "compact2")
426189251Ssam
427189251Ssam$(JRE_COMPACT3_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips
428189251Ssam	$(call info-file, $(JRE_COMPACT3_SORTED_MODULES))
429189251Ssam	$(call info-file-item, "JAVA_PROFILE", "compact3")
430189251Ssam
431189251SsamJRE_TARGETS += $(JRE_INFO_FILE)
432189251SsamJDK_TARGETS += $(JDK_INFO_FILE)
433189251SsamJRE_COMPACT1_TARGETS += $(JRE_COMPACT1_INFO_FILE)
434189251SsamJRE_COMPACT2_TARGETS += $(JRE_COMPACT2_INFO_FILE)
435189251SsamJRE_COMPACT3_TARGETS += $(JRE_COMPACT3_INFO_FILE)
436189251Ssam
437189251Ssam################################################################################
438189251Ssam# src.zip
439189251Ssam
440189251Ssam$(JDK_IMAGE_DIR)/src.zip: $(SUPPORT_OUTPUTDIR)/src.zip
441189251Ssam	$(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
442189251Ssam	$(install-file)
443189251Ssam
444189251SsamJDK_TARGETS += $(JDK_IMAGE_DIR)/src.zip
445189251Ssam
446189251Ssam################################################################################
447189251Ssam# /demo dir
448189251Ssam
449189251Ssam# The db demo contains an empty dir that needs to be copied. The other
450189251Ssam# directories will always trigger the rule for recompile since
451189251Ssam# _the.list_of_packages files are touched.
452189251Ssamifneq ($(findstring images, $(MAKECMDGOALS)), )
453189251Ssam  $(JDK_IMAGE_DIR)/demo/%: $(SUPPORT_OUTPUTDIR)/demo/image/%
454189251Ssam	if [ ! -d "$@" ]; then \
455189251Ssam	  $(ECHO) $(LOG_INFO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'; \
456189251Ssam	  $(MKDIR) -p $(@D); \
457189251Ssam	  if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) '$<' '$@'; fi \
458189251Ssam	fi
459189251Ssam
460189251Ssam  # Find all files including directories
461189251Ssam  JDK_DEMO_TARGETS := $(if $(wildcard $(SUPPORT_OUTPUTDIR)/demo/image), \
462189251Ssam      $(patsubst $(SUPPORT_OUTPUTDIR)/demo/image/%, $(JDK_IMAGE_DIR)/demo/%, \
463189251Ssam      $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/demo/image \
464189251Ssam          ! \( -name "_the*" -o -name "javac_state" \) )))
465189251Ssam
466189251Ssam  JDK_TARGETS += $(JDK_DEMO_TARGETS)
467189251Ssamendif
468189251Ssam
469189251Ssam################################################################################
470189251Ssam# /sample dir
471189251Ssam
472189251Ssam$(eval $(call SetupCopyFiles,COPY_SAMPLES, \
473189251Ssam    SRC := $(SUPPORT_OUTPUTDIR)/sample, \
474189251Ssam    DEST := $(JDK_IMAGE_DIR)/sample, \
475189251Ssam    FILES := $(if $(wildcard $(SUPPORT_OUTPUTDIR)/sample), \
476189251Ssam        $(call CacheFind,$(SUPPORT_OUTPUTDIR)/sample))))
477189251Ssam
478189251SsamJDK_TARGETS += $(COPY_SAMPLES)
479189251Ssam
480189251Ssam################################################################################
481189251Ssam# jrt-fs.jar
482189251Ssam
483189251Ssam$(eval $(call SetupCopyFiles,COPY_JRTFS_JAR, \
484189251Ssam    SRC := $(SUPPORT_OUTPUTDIR), \
485189251Ssam    DEST := $(JDK_IMAGE_DIR), \
486189251Ssam    FILES := $(SUPPORT_OUTPUTDIR)/jrt-fs.jar))
487189251Ssam
488189251SsamJDK_TARGETS += $(COPY_JRTFS_JAR)
489189251Ssam
490189251Ssam################################################################################
491189251Ssam
492189251Ssam# Include custom post hook here to make it possible to augment the target lists
493189251Ssam# before actual target prerequisites are declared.
494189251Ssam$(eval $(call IncludeCustomExtension, , Images-post.gmk))
495189251Ssam
496189251Ssam################################################################################
497189251Ssam
498189251Ssam$(JRE_TARGETS): $(TOOL_JRE_TARGETS)
499189251Ssam$(JDK_TARGETS): $(TOOL_JDK_TARGETS)
500189251Ssam
501189251Ssamjimages: $(TOOL_JRE_TARGETS) $(TOOL_JDK_TARGETS) $(JRE_TARGETS) $(JDK_TARGETS)
502189251Ssam
503189251Ssam
504189251Ssam$(JRE_COMPACT1_TARGETS): $(TOOL_JRE_COMPACT1_TARGETS)
505189251Ssam$(JRE_COMPACT2_TARGETS): $(TOOL_JRE_COMPACT2_TARGETS)
506189251Ssam$(JRE_COMPACT3_TARGETS): $(TOOL_JRE_COMPACT3_TARGETS)
507189251Ssam
508189251Ssamprofiles: $(TOOL_JRE_COMPACT1_TARGETS) \
509189251Ssam    $(TOOL_JRE_COMPACT2_TARGETS) \
510189251Ssam    $(TOOL_JRE_COMPACT3_TARGETS) \
511189251Ssam    $(JRE_COMPACT1_TARGETS) \
512189251Ssam    $(JRE_COMPACT2_TARGETS) \
513189251Ssam    $(JRE_COMPACT3_TARGETS)
514189251Ssam
515189251Ssam.PHONY: default all jimages profiles
516189251Ssam