63 endif |
63 endif |
64 |
64 |
65 JRE_MODULES := $(filter-out $(MODULES_FILTER), $(MAIN_MODULES) $(PROVIDER_MODULES)) |
65 JRE_MODULES := $(filter-out $(MODULES_FILTER), $(MAIN_MODULES) $(PROVIDER_MODULES)) |
66 JDK_MODULES := $(filter-out $(MODULES_FILTER), $(JRE_MODULES) $(TOOLS_MODULES)) |
66 JDK_MODULES := $(filter-out $(MODULES_FILTER), $(JRE_MODULES) $(TOOLS_MODULES)) |
67 |
67 |
68 # compact3 builds have additional modules |
68 # Param 1 - Name of module |
69 JDK_COMPACT3_MODULES := java.compact3 java.smartcardio jdk.httpserver jdk.naming.dns \ |
69 define ReadImportMetaData |
70 jdk.naming.rmi jdk.sctp jdk.security.auth jdk.management |
70 ifneq ($$(wildcard $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties), ) |
|
71 include_in_jre := |
|
72 include_in_jdk := |
|
73 include $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties |
|
74 ifeq ($$(include_in_jre), true) |
|
75 JRE_MODULES += $1 |
|
76 endif |
|
77 ifeq ($$(include_in_jdk), true) |
|
78 JDK_MODULES += $1 |
|
79 endif |
|
80 else |
|
81 # Default to include in all |
|
82 JRE_MODULES += $1 |
|
83 JDK_MODULES += $1 |
|
84 endif |
|
85 endef |
|
86 |
|
87 IMPORTED_MODULES := $(call FindImportedModules) |
|
88 $(foreach m, $(IMPORTED_MODULES), $(eval $(call ReadImportMetaData, $m))) |
|
89 |
|
90 # Compact builds have additional modules |
|
91 COMPACT_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec |
|
92 JRE_COMPACT1_MODULES := $(COMPACT_EXTRA_MODULES) java.compact1 |
|
93 JRE_COMPACT2_MODULES := $(JRE_COMPACT1_MODULES) java.compact2 jdk.xml.dom jdk.httpserver |
|
94 JRE_COMPACT3_MODULES := $(JRE_COMPACT2_MODULES) java.compact3 java.smartcardio jdk.management \ |
|
95 jdk.naming.dns jdk.naming.rmi jdk.sctp jdk.security.auth |
71 |
96 |
72 # Replacing double-comma with a single comma is to workaround the issue |
97 # Replacing double-comma with a single comma is to workaround the issue |
73 # with some version of make on windows that doesn't substitute spaces |
98 # with some version of make on windows that doesn't substitute spaces |
74 # with one comma properly as with make 4.0 |
99 # with one comma properly as with make 4.0 |
75 define SubstComma |
100 SubstComma = \ |
76 $(subst $(COMMA)$(COMMA),$(COMMA),$(subst $(SPACE),$(COMMA),$(strip $1))) |
101 $(strip \ |
77 endef |
102 $(subst $(COMMA)$(COMMA),$(COMMA),$(subst $(SPACE),$(COMMA),$(strip $1))) \ |
|
103 ) |
|
104 |
78 JRE_MODULES_LIST := $(call SubstComma, $(JRE_MODULES)) |
105 JRE_MODULES_LIST := $(call SubstComma, $(JRE_MODULES)) |
79 JDK_MODULES_LIST := $(call SubstComma, $(JDK_MODULES)) |
106 JDK_MODULES_LIST := $(call SubstComma, $(JDK_MODULES)) |
80 |
107 JRE_COMPACT1_MODULES_LIST := $(call SubstComma, $(JRE_COMPACT1_MODULES)) |
81 ################################################################################ |
108 JRE_COMPACT2_MODULES_LIST := $(call SubstComma, $(JRE_COMPACT2_MODULES)) |
82 |
109 JRE_COMPACT3_MODULES_LIST := $(call SubstComma, $(JRE_COMPACT3_MODULES)) |
83 JRE_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/jre-sorted-modules |
110 |
84 JDK_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/jdk-sorted-modules |
111 ################################################################################ |
85 JRE_COMPACT1_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact1-sorted-modules |
112 # Release file |
86 JRE_COMPACT2_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact2-sorted-modules |
113 |
87 JRE_COMPACT3_SORTED_MODULES := $(SUPPORT_OUTPUTDIR)/compact3-sorted-modules |
114 BASE_RELEASE_FILE := $(JDK_OUTPUTDIR)/release |
88 |
115 |
89 |
116 # Common way to emit a line into the release or info file |
90 MODULES_CMDS := $(SUPPORT_OUTPUTDIR)/modules_cmds-stripped |
117 define info-file-item # name value |
91 MODULES_LIBS := $(SUPPORT_OUTPUTDIR)/modules_libs-stripped |
118 $(PRINTF) '%s="%s"\n' $1 $2 >> $@ |
92 MODULES_CONF := $(SUPPORT_OUTPUTDIR)/modules_conf |
119 endef |
93 |
120 |
94 JIMAGE_TOOL := $(JAVA_SMALL) \ |
121 # Param 1 - The file containing the MODULES list |
95 -Xbootclasspath/p:$(BUILDTOOLS_OUTPUTDIR)/interim_jimage_classes \ |
122 define create-info-file |
96 -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes build.tools.module.ImageBuilder \ |
123 $(call info-file-item, "JAVA_VERSION", "$(VERSION_NUMBER)") |
97 --cmds $(MODULES_CMDS) \ |
124 $(call info-file-item, "JAVA_FULL_VERSION", "$(VERSION_STRING)") |
98 --libs $(MODULES_LIBS) \ |
125 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)") |
99 --configs $(MODULES_CONF) \ |
126 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)") |
100 --classes $(JDK_OUTPUTDIR)/modules \ |
127 $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)") |
101 --endian $(OPENJDK_TARGET_CPU_ENDIAN) \ |
128 $(if $(JDK_ARCH_ABI_PROP_NAME), \ |
102 # |
129 $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)")) |
103 |
130 $(call info-file-item, "SOURCE", "$(strip $(ALL_SOURCE_TIPS))") |
104 MODULES_XML += $(SRC_ROOT)/modules.xml |
131 endef |
105 DEPENDENCIES := $(call CacheFind, \ |
132 |
106 $(SUPPORT_OUTPUTDIR)/modules_cmds \ |
133 # Param 1 - The file containing the MODULES list |
107 $(SUPPORT_OUTPUTDIR)/modules_conf \ |
134 define prepare-info-file |
108 $(SUPPORT_OUTPUTDIR)/modules_libs) \ |
135 $(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@) |
109 $(wildcard $(JDK_OUTPUTDIR)/modules/*/_*) \ |
136 $(MKDIR) -p $(@D) |
110 $(MODULES_XML) |
137 $(RM) $@ |
111 # |
138 endef |
|
139 |
|
140 define info-file |
|
141 $(call prepare-info-file) |
|
142 $(call create-info-file) |
|
143 endef |
|
144 |
|
145 # Create a variable dependency file common for all release info files. |
|
146 INFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file) |
|
147 |
|
148 ALL_SOURCE_TIPS = $(shell \ |
|
149 if [ -f $(SUPPORT_OUTPUTDIR)/source_tips ] ; then \ |
|
150 $(CAT) $(SUPPORT_OUTPUTDIR)/source_tips ; \ |
|
151 fi) |
|
152 |
|
153 $(BASE_RELEASE_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips |
|
154 $(info-file) |
|
155 |
|
156 ################################################################################ |
|
157 |
|
158 JMODS := $(wildcard $(IMAGES_OUTPUTDIR)/jmods/*.jmod) |
112 |
159 |
113 # Use this file inside the image as target for make rule |
160 # Use this file inside the image as target for make rule |
114 JIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX) |
161 JIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX) |
115 |
162 |
116 $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \ |
163 JLINK_TOOL := $(JLINK) --modulepath $(IMAGES_OUTPUTDIR)/jmods \ |
117 $(call DependOnVariable, JDK_MODULES_LIST) |
164 --endian $(OPENJDK_BUILD_CPU_ENDIAN) \ |
|
165 --release-info $(BASE_RELEASE_FILE) |
|
166 |
|
167 ifeq ($(JLINK_KEEP_PACKAGED_MODULES), true) |
|
168 JLINK_EXTRA_OPTS := --keep-packaged-modules $(JDK_IMAGE_DIR)/jmods |
|
169 endif |
|
170 |
|
171 $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \ |
|
172 $(call DependOnVariable, JDK_MODULES_LIST) $(BASE_RELEASE_FILE) |
118 $(ECHO) Creating jdk jimage |
173 $(ECHO) Creating jdk jimage |
119 $(RM) -r $(JDK_IMAGE_DIR) $(JDK_SORTED_MODULES) |
174 $(RM) -r $(JDK_IMAGE_DIR) |
120 $(JIMAGE_TOOL) --mods $(JDK_MODULES_LIST) --output $(JDK_IMAGE_DIR) \ |
175 $(JLINK_TOOL) --output $(JDK_IMAGE_DIR) \ |
121 $(MODULES_XML) > $(JDK_SORTED_MODULES) |
176 --addmods $(JDK_MODULES_LIST) $(JLINK_EXTRA_OPTS) |
122 $(TOUCH) $@ |
177 $(TOUCH) $@ |
123 |
178 |
124 $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \ |
179 $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \ |
125 $(call DependOnVariable, JRE_MODULES_LIST) |
180 $(call DependOnVariable, JRE_MODULES_LIST) $(BASE_RELEASE_FILE) |
126 $(ECHO) Creating jre jimage |
181 $(ECHO) Creating jre jimage |
127 $(RM) -r $(JRE_IMAGE_DIR) $(JRE_SORTED_MODULES) |
182 $(RM) -r $(JRE_IMAGE_DIR) |
128 $(JIMAGE_TOOL) --mods $(JRE_MODULES_LIST) --output $(JRE_IMAGE_DIR) \ |
183 $(JLINK_TOOL) --output $(JRE_IMAGE_DIR) \ |
129 $(MODULES_XML) > $(JRE_SORTED_MODULES) |
184 --addmods $(JRE_MODULES_LIST) |
130 $(TOUCH) $@ |
185 $(TOUCH) $@ |
131 |
186 |
132 JRE_COMPACT1_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact1 |
187 JRE_COMPACT1_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact1 |
133 JRE_COMPACT2_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact2 |
188 JRE_COMPACT2_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact2 |
134 JRE_COMPACT3_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact3 |
189 JRE_COMPACT3_IMAGE_DIR := $(JRE_IMAGE_DIR)-compact3 |
135 |
190 |
136 COMPACT_EXTRA_MODULES := jdk.localedata jdk.crypto.pkcs11 jdk.crypto.ec |
191 $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \ |
137 |
192 $(call DependOnVariable, JRE_COMPACT1_MODULES_LIST) $(BASE_RELEASE_FILE) |
138 $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \ |
|
139 $(call DependOnVariable, JRE_COMPACT1_MODULES_LIST) |
|
140 $(ECHO) Creating jre compact1 jimage |
193 $(ECHO) Creating jre compact1 jimage |
141 $(RM) -r $(JRE_COMPACT1_IMAGE_DIR) $(JRE_COMPACT1_SORTED_MODULES) |
194 $(RM) -r $(JRE_COMPACT1_IMAGE_DIR) |
142 $(JIMAGE_TOOL) \ |
195 $(JLINK_TOOL) --addmods $(JRE_COMPACT1_MODULES_LIST) \ |
143 --mods $(call SubstComma, java.compact1 $(COMPACT_EXTRA_MODULES)) \ |
196 --output $(JRE_COMPACT1_IMAGE_DIR) |
144 --output $(JRE_COMPACT1_IMAGE_DIR) \ |
|
145 $(MODULES_XML) > $(JRE_COMPACT1_SORTED_MODULES) |
|
146 $(TOUCH) $@ |
197 $(TOUCH) $@ |
147 |
198 |
148 $(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \ |
199 $(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \ |
149 $(call DependOnVariable, JRE_COMPACT2_MODULES_LIST) |
200 $(call DependOnVariable, JRE_COMPACT2_MODULES_LIST) $(BASE_RELEASE_FILE) |
150 $(ECHO) Creating jre compact2 jimage |
201 $(ECHO) Creating jre compact2 jimage |
151 $(RM) -r $(JRE_COMPACT2_IMAGE_DIR) $(JRE_COMPACT2_SORTED_MODULES) |
202 $(RM) -r $(JRE_COMPACT2_IMAGE_DIR) |
152 $(JIMAGE_TOOL) \ |
203 $(JLINK_TOOL) --addmods $(JRE_COMPACT2_MODULES_LIST) \ |
153 --mods $(call SubstComma, java.compact2 $(COMPACT_EXTRA_MODULES)) \ |
204 --output $(JRE_COMPACT2_IMAGE_DIR) |
154 --output $(JRE_COMPACT2_IMAGE_DIR) \ |
|
155 $(MODULES_XML) > $(JRE_COMPACT2_SORTED_MODULES) |
|
156 $(TOUCH) $@ |
205 $(TOUCH) $@ |
157 |
206 |
158 $(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(DEPENDENCIES) \ |
207 $(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \ |
159 $(call DependOnVariable, JRE_COMPACT3_MODULES_LIST) |
208 $(call DependOnVariable, JRE_COMPACT3_MODULES_LIST) $(BASE_RELEASE_FILE) |
160 $(ECHO) Creating jre compact3 jimage |
209 $(ECHO) Creating jre compact3 jimage |
161 $(RM) -r $(JRE_COMPACT3_IMAGE_DIR) $(JRE_COMPACT3_SORTED_MODULES) |
210 $(RM) -r $(JRE_COMPACT3_IMAGE_DIR) |
162 $(JIMAGE_TOOL) \ |
211 $(JLINK_TOOL) --addmods $(JRE_COMPACT3_MODULES_LIST) \ |
163 --mods $(call SubstComma, $(JDK_COMPACT3_MODULES) $(COMPACT_EXTRA_MODULES)) \ |
212 --output $(JRE_COMPACT3_IMAGE_DIR) |
164 --output $(JRE_COMPACT3_IMAGE_DIR) \ |
|
165 $(MODULES_XML) > $(JRE_COMPACT3_SORTED_MODULES) |
|
166 $(TOUCH) $@ |
213 $(TOUCH) $@ |
167 |
214 |
168 TOOL_JRE_TARGETS := $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) |
215 TOOL_JRE_TARGETS := $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) |
169 TOOL_JDK_TARGETS := $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) |
216 TOOL_JDK_TARGETS := $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) |
170 TOOL_JRE_COMPACT1_TARGETS := $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) |
217 TOOL_JRE_COMPACT1_TARGETS := $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) |
344 |
391 |
345 JRE_TARGETS += $(JRE_DOC_TARGETS) |
392 JRE_TARGETS += $(JRE_DOC_TARGETS) |
346 JDK_TARGETS += $(JDK_DOC_TARGETS) |
393 JDK_TARGETS += $(JDK_DOC_TARGETS) |
347 |
394 |
348 ################################################################################ |
395 ################################################################################ |
349 # Release file |
|
350 |
|
351 JRE_INFO_FILE := $(JRE_IMAGE_DIR)/release |
|
352 JDK_INFO_FILE := $(JDK_IMAGE_DIR)/release |
|
353 JRE_COMPACT1_INFO_FILE := $(JRE_COMPACT1_IMAGE_DIR)/release |
|
354 JRE_COMPACT2_INFO_FILE := $(JRE_COMPACT2_IMAGE_DIR)/release |
|
355 JRE_COMPACT3_INFO_FILE := $(JRE_COMPACT3_IMAGE_DIR)/release |
|
356 |
|
357 # Common way to emit a line into the release or info file |
|
358 define info-file-item # name value |
|
359 $(PRINTF) '%s="%s"\n' $1 $2 >> $@ |
|
360 endef |
|
361 |
|
362 # Param 1 - The file containing the MODULES list |
|
363 define create-info-file |
|
364 $(call info-file-item, "JAVA_VERSION", "$(VERSION_NUMBER)") |
|
365 $(call info-file-item, "JAVA_FULL_VERSION", "$(VERSION_STRING)") |
|
366 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)") |
|
367 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)") |
|
368 $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)") |
|
369 $(if $(JDK_ARCH_ABI_PROP_NAME), \ |
|
370 $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)")) |
|
371 $(call info-file-item, "SOURCE", "$(strip $(ALL_SOURCE_TIPS))") |
|
372 $(call info-file-item, "MODULES", "`$(CAT) $1`") |
|
373 endef |
|
374 |
|
375 # Param 1 - The file containing the MODULES list |
|
376 define prepare-info-file |
|
377 $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)) |
|
378 $(MKDIR) -p $(@D) |
|
379 $(RM) $@ |
|
380 endef |
|
381 |
|
382 define info-file |
|
383 $(call prepare-info-file, $1) |
|
384 $(call create-info-file, $1) |
|
385 endef |
|
386 |
|
387 # Create a variable dependency file common for all release info files. The |
|
388 # sorted module list will only change if the image is regenerated, which will |
|
389 # trigger a rebuild of these files anyway. |
|
390 INFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file) |
|
391 |
|
392 ALL_SOURCE_TIPS = $(shell \ |
|
393 if [ -f $(SUPPORT_OUTPUTDIR)/source_tips ] ; then \ |
|
394 $(CAT) $(SUPPORT_OUTPUTDIR)/source_tips ; \ |
|
395 fi) |
|
396 |
|
397 $(JRE_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips |
|
398 $(call info-file, $(JRE_SORTED_MODULES)) |
|
399 |
|
400 $(JDK_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips |
|
401 $(call info-file, $(JDK_SORTED_MODULES)) |
|
402 |
|
403 $(JRE_COMPACT1_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips |
|
404 $(call info-file, $(JRE_COMPACT1_SORTED_MODULES)) |
|
405 $(call info-file-item, "JAVA_PROFILE", "compact1") |
|
406 |
|
407 $(JRE_COMPACT2_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips |
|
408 $(call info-file, $(JRE_COMPACT2_SORTED_MODULES)) |
|
409 $(call info-file-item, "JAVA_PROFILE", "compact2") |
|
410 |
|
411 $(JRE_COMPACT3_INFO_FILE): $(INFO_FILE_VARDEPS) $(SUPPORT_OUTPUTDIR)/source_tips |
|
412 $(call info-file, $(JRE_COMPACT3_SORTED_MODULES)) |
|
413 $(call info-file-item, "JAVA_PROFILE", "compact3") |
|
414 |
|
415 JRE_TARGETS += $(JRE_INFO_FILE) |
|
416 JDK_TARGETS += $(JDK_INFO_FILE) |
|
417 JRE_COMPACT1_TARGETS += $(JRE_COMPACT1_INFO_FILE) |
|
418 JRE_COMPACT2_TARGETS += $(JRE_COMPACT2_INFO_FILE) |
|
419 JRE_COMPACT3_TARGETS += $(JRE_COMPACT3_INFO_FILE) |
|
420 |
|
421 ################################################################################ |
|
422 # src.zip |
396 # src.zip |
423 |
397 |
424 $(JDK_IMAGE_DIR)/src.zip: $(SUPPORT_OUTPUTDIR)/src.zip |
398 $(JDK_IMAGE_DIR)/src.zip: $(SUPPORT_OUTPUTDIR)/src.zip |
425 $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)) |
399 $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)) |
426 $(install-file) |
400 $(install-file) |