17 # You should have received a copy of the GNU General Public License version
18 # 2 along with this work; if not, write to the Free Software Foundation,
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 #
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 # or visit www.oracle.com if you need additional information or have any
23 # questions.
24 #
25
26 include $(SPEC)
27 include MakeBase.gmk
28 include JavaCompilation.gmk
29 include Setup.gmk
30
31 default: images
32
33 include Tools.gmk
34
35 images: jre-image jdk-image
36
37 ifeq ($(HOST_OS),solaris)
38 define install-file
39 $(MKDIR) -p $(@D)
40 $(CP) -r -P '$<' '$(@D)'
41 endef
42 else
43 define install-file
44 $(MKDIR) -p $(@D)
45 $(CP) -P '$<' '$@'
46 endef
47 endif
48
49 ################################################################################
50 #
51 # JRE and JDK build rules
52 #
53 ################################################################################
54
55 ################################################################################
56 # /bin dir
57
58 $(JRE_IMAGE_DIR)/bin/%: $(JDK_OUTPUTDIR)/bin/%
59 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
60 $(install-file)
61
62 $(JDK_IMAGE_DIR)/bin/%: $(JDK_OUTPUTDIR)/bin/%
63 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
64 $(install-file)
65
66 $(JDK_IMAGE_DIR)/jre/bin/%: $(JDK_OUTPUTDIR)/bin/%
67 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
68 $(install-file)
69
70 NOT_JRE_BIN_FILES = \
71 appletviewer$(EXE_SUFFIX) \
72 extcheck$(EXE_SUFFIX) \
73 idlj$(EXE_SUFFIX) \
74 jar$(EXE_SUFFIX) \
75 jarsigner$(EXE_SUFFIX) \
76 java-rmi.cgi \
77 javac$(EXE_SUFFIX) \
78 javadoc$(EXE_SUFFIX) \
79 javah$(EXE_SUFFIX) \
80 javap$(EXE_SUFFIX) \
81 jcmd$(EXE_SUFFIX) \
82 jdb$(EXE_SUFFIX) \
83 jps$(EXE_SUFFIX) \
84 jrunscript$(EXE_SUFFIX) \
85 jstat$(EXE_SUFFIX) \
86 jstatd$(EXE_SUFFIX) \
87 jstack$(EXE_SUFFIX) \
88 packagebean$(SCRIPT_SUFFIX) \
89 rmic$(EXE_SUFFIX) \
90 serialver$(EXE_SUFFIX) \
91 unregbean$(EXE_SUFFIX) \
92 jconsole$(EXE_SUFFIX) \
93 jinfo$(EXE_SUFFIX) \
94 jmap$(EXE_SUFFIX) \
95 native2ascii$(EXE_SUFFIX) \
96 xjc$(EXE_SUFFIX) \
97 wsgen$(EXE_SUFFIX) \
98 wsimport$(EXE_SUFFIX) \
99 schemagen$(EXE_SUFFIX) \
100 jsadebugd$(EXE_SUFFIX) \
101 jhat$(EXE_SUFFIX)
102
103 WINDOWS_JDK_BIN_FILES = \
104 $(EXE_SUFFIX) \
105 $(LIB_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \
106 $(MSVCRNN_DLL)
107
108 # Find all files in bin dir
109 ALL_BIN_LIST := $(shell $(FIND) $(JDK_OUTPUTDIR)/bin -type f)
110 ifeq ($(HOST_OS),windows)
111 JDK_BIN_LIST := $(filter $(addprefix %,$(WINDOWS_JDK_BIN_FILES)), $(ALL_BIN_LIST))
112 else
113 JDK_BIN_LIST := $(ALL_BIN_LIST)
114 endif
115 JRE_BIN_LIST := $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES)), $(ALL_BIN_LIST))
116
117 JRE_BIN_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JRE_IMAGE_DIR)/%, $(JRE_BIN_LIST))
118 JDK_BIN_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/%, $(JDK_BIN_LIST))
119 JDKJRE_BIN_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/jre/%, $(JRE_BIN_LIST))
120
121 ################################################################################
122 # /lib dir
123
124 $(JRE_IMAGE_DIR)/lib/%: $(JDK_OUTPUTDIR)/lib/%
125 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
126 $(install-file)
127
128 $(JDK_IMAGE_DIR)/lib/%: $(JDK_OUTPUTDIR)/lib/%
129 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
130 $(install-file)
131
132 $(JDK_IMAGE_DIR)/jre/lib/%: $(JDK_OUTPUTDIR)/lib/%
133 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
134 $(install-file)
135
136 JDKJRE_LIB_FILES := \
137 $(LIB_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \
138 $(SALIB_NAME)
139
140 NOT_JRE_LIB_FILES := \
141 tools.jar \
142 jconsole.jar \
143 sa-jdi.jar \
144 dt.jar \
145 orb.idl \
146 ir.idl \
147 ct.sym
148
149 JDK_LIB_FILES := $(NOT_JRE_LIB_FILES)
150 ifeq ($(HOST_OS), linux)
151 JDK_LIB_FILES += jexec
152 endif
153
154 ALL_LIB_LIST := $(shell $(FIND) $(JDK_OUTPUTDIR)/lib \( -type f -o -type l \) ! -name "_the*")
155 JRE_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),$(ALL_LIB_LIST))
156 JDKJRE_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES)),$(ALL_LIB_LIST))
157 JDK_LIB_LIST := $(filter $(addprefix %,$(JDK_LIB_FILES)),$(ALL_LIB_LIST))
158
159 JRE_LIB_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JRE_IMAGE_DIR)/%,$(JRE_LIB_LIST))
160 JDK_LIB_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/%,$(JDK_LIB_LIST))
161 JDKJRE_LIB_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/jre/%,$(JDKJRE_LIB_LIST))
162
163 # CTE plugin security change require new empty directory lib/applet
164 $(JRE_IMAGE_DIR)/lib/applet:
165 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
166 $(MKDIR) -p $@
167
168 $(JDK_IMAGE_DIR)/jre/lib/applet:
169 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
170 $(MKDIR) -p $@
219 jcmd.1 \
220 jdb.1 \
221 jhat.1 \
222 jinfo.1 \
223 jmap.1 \
224 jps.1 \
225 jrunscript.1 \
226 jsadebugd.1 \
227 jstack.1 \
228 jstat.1 \
229 jstatd.1 \
230 jvisualvm.1 \
231 native2ascii.1 \
232 rmic.1 \
233 schemagen.1 \
234 serialver.1 \
235 wsgen.1 \
236 wsimport.1 \
237 xjc.1
238
239 ifeq ($(HOST_OS), linux)
240 MAN_SRC_DIR:=$(JDK_TOPDIR)/src/linux/doc
241 MAN1_SUBDIR:=man
242 endif
243 ifeq ($(HOST_OS), solaris)
244 MAN_SRC_DIR:=$(JDK_TOPDIR)/src/solaris/doc
245 MAN1_SUBDIR:=sun/man/man1
246 endif
247
248 $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
249 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
250 $(install-file)
251
252 $(JDK_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
253 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
254 $(install-file)
255
256 $(JRE_IMAGE_DIR)/man/man1/%: $(JDK_OUTPUTDIR)/impdoc/$(MAN1_SUBDIR)/%
257 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
258 $(install-file)
259
260 $(JDK_IMAGE_DIR)/man/man1/%: $(JDK_OUTPUTDIR)/impdoc/$(MAN1_SUBDIR)/%
261 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
262 $(install-file)
263
264 define install-ja-manpage
265 $(MKDIR) -p $(@D)
266 $(CAT) $< \
269 | $(NATIVE2ASCII) -reverse -encoding $1 \
270 > $@
271 endef
272
273 $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
274 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
275 $(call install-ja-manpage,UTF-8)
276
277 $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
278 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
279 $(call install-ja-manpage,UTF-8)
280
281 $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
282 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
283 $(call install-ja-manpage,PCK)
284
285 $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
286 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
287 $(call install-ja-manpage,PCK)
288
289 ifeq ($(HOST_OS), solaris)
290 $(JRE_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
291 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
292 $(install-file)
293
294 $(JDK_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
295 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
296 $(install-file)
297 endif
298
299 # Old build creates empty man page for this, mimicing behaviour.
300 $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/jcmd.1 $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/jcmd.1 $(JDK_IMAGE_DIR)/man/ja/man1/jcmd.1:
301 $(ECHO) Creating dummy $(patsubst $(OUTPUT_ROOT)/%,%,$@)
302 $(MKDIR) -p $(@D)
303 $(TOUCH) $@
304
305 ifeq ($(HOST_OS), linux)
306 $(JRE_IMAGE_DIR)/man/ja:
307 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
308 $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
309
310 $(JDK_IMAGE_DIR)/man/ja:
311 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
312 $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
313 endif
314
315 ifeq ($(HOST_OS), linux)
316 JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/,$(JRE_MAN_PAGES)) \
317 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JRE_MAN_PAGES)) \
318 $(JRE_IMAGE_DIR)/man/ja
319
320 JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/,$(JDK_MAN_PAGES)) \
321 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JDK_MAN_PAGES)) \
322 $(JDK_IMAGE_DIR)/man/ja
323 endif
324
325 ifeq ($(HOST_OS), solaris)
326 JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/,$(JRE_MAN_PAGES)) \
327 $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/,$(JRE_MAN_PAGES)) \
328 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JRE_MAN_PAGES)) \
329 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/,$(JRE_MAN_PAGES))
330
331 JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/,$(JDK_MAN_PAGES)) \
332 $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/,$(JDK_MAN_PAGES)) \
333 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JDK_MAN_PAGES)) \
334 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/,$(JDK_MAN_PAGES))
335 endif
336
337 ################################################################################
338 # /demo dir
339
340 ifndef NO_DEMOS
341 # FIXME: newdemo/applets/GraphLayout/GraphPanel$2.class is sometimes not copied.
342
343 # The db demo contains an empty dir that needs to be copied. The other
344 # directories will always trigger the rule for recompile since
345 # _the.list_of_packages files are touched.
346 $(JDK_IMAGE_DIR)/demo/%: $(JDK_OUTPUTDIR)/newdemo/%
347 if [ ! -d "$@" ]; then \
348 $(ECHO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'; \
349 $(MKDIR) -p $(@D); \
350 if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) '$<' '$@'; fi \
351 fi
352
353 # Find all files including directories
354 JDK_DEMO_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/newdemo/%,$(JDK_IMAGE_DIR)/demo/%,\
355 $(shell $(FIND) $(JDK_OUTPUTDIR)/newdemo ! -name "_the.*"))
356
366
367 JDK_SAMPLE_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/sample/%,$(JDK_IMAGE_DIR)/sample/%,\
368 $(shell $(FIND) $(JDK_OUTPUTDIR)/sample -type f))
369
370 endif
371
372 ################################################################################
373 # /db dir
374
375 ifndef OPENJDK
376 $(IMAGES_OUTPUTDIR)/_unzip/%.unzipped: $(JDK_TOPDIR)/src/closed/share/db/%
377 $(ECHO) Unzipping $(patsubst $(SRC_ROOT)/%,%,$<)
378 $(MKDIR) -p $(JDK_IMAGE_DIR)/db
379 cd $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $< -x index.html 2> /dev/null
380 $(MKDIR) -p $(@D)
381 $(TOUCH) $@
382
383 $(JDK_IMAGE_DIR)/db/README-JDK.html: $(JDK_TOPDIR)/src/closed/share/db/README-JDK.html
384 $(ECHO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'
385 $(install-file)
386
387 JDK_DB_TARGETS := $(patsubst $(JDK_TOPDIR)/src/closed/share/db/%,$(IMAGES_OUTPUTDIR)/_unzip/%.unzipped,\
388 $(shell $(FIND) $(JDK_TOPDIR)/src/closed/share/db -name "*.zip" ! -name "*demo*")) \
389 $(JDK_IMAGE_DIR)/db/README-JDK.html
390
391 endif
392
393 ################################################################################
394 # /include dir
395
396 $(JDK_IMAGE_DIR)/include/%: $(JDK_OUTPUTDIR)/include/%
397 $(ECHO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'
398 $(install-file)
399
400 JDK_INCLUDE_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/include/%,$(JDK_IMAGE_DIR)/include/%,\
401 $(shell $(FIND) $(JDK_OUTPUTDIR)/include -type f))
402
403 ################################################################################
404 # doc files
405
406 ifdef OPENJDK
407 JRE_DOC_FILES := LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
408 JDK_DOC_FILES := LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
409 JRE_DOC_LOCATION := $(JDK_TOPDIR)
410 JDK_DOC_LOCATION := $(JDK_TOPDIR)
411 else
412 JRE_DOC_FILES := COPYRIGHT Welcome.html LICENSE THIRDPARTYLICENSEREADME.txt
413 JDK_DOC_FILES := COPYRIGHT README.html LICENSE THIRDPARTYLICENSEREADME.txt
414 ifeq ($(HOST_OS), windows)
415 JRE_DOC_FILES += README.txt
416 else
417 JRE_DOC_FILES += README
418 endif
419 ifndef NO_DEMOS
420 JDK_DOC_FILES += demo/DEMOS_LICENSE
421 endif
422 ifndef NO_SAMPLES
423 JDK_DOC_FILES += sample/SAMPLES_LICENSE
424 endif
425 JRE_DOC_LOCATION := $(JDK_TOPDIR)/src/closed/share/doc/jre
426 JDK_DOC_LOCATION := $(JDK_TOPDIR)/src/closed/share/doc/jdk
427 endif
428 JRE_DOC_TARGETS := $(addprefix $(JRE_IMAGE_DIR)/,$(JRE_DOC_FILES))
429 JDKJRE_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/jre/,$(JRE_DOC_FILES))
430 JDK_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/,$(JDK_DOC_FILES))
431
432 $(JRE_IMAGE_DIR)/%: $(JRE_DOC_LOCATION)/%
433 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
434 $(install-file)
435
436 $(JDK_IMAGE_DIR)/jre/%: $(JRE_DOC_LOCATION)/%
437 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
438 $(install-file)
439
440 $(JRE_IMAGE_DIR)/README.txt: $(JRE_DOC_LOCATION)/README
441 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
442 $(MKDIR) -p $(@D)
443 $(CP) $< $@
444
445 $(JDK_IMAGE_DIR)/jre/README.txt: $(JRE_DOC_LOCATION)/README
446 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
447 $(MKDIR) -p $(@D)
448 $(CP) $< $@
449
450 $(JDK_IMAGE_DIR)/%: $(JDK_DOC_LOCATION)/%
451 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
452 $(install-file)
453
454 $(JDK_IMAGE_DIR)/demo/%: $(JDK_DOC_LOCATION)/%
455 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
456 $(install-file)
457
458 $(JDK_IMAGE_DIR)/sample/%: $(JDK_DOC_LOCATION)/%
459 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
460 $(install-file)
461
462 JRE_INFO_FILE := $(JRE_IMAGE_DIR)/release
463 JDK_INFO_FILE := $(JDK_IMAGE_DIR)/release
464
465 # Common way to emit a line into the release or info file
466 define info-file-item # name value
467 $(PRINTF) '%s="%s"\n' $1 $2 >> $@
468 endef
469
470 ALL_SOURCE_TIPS = $(shell \
471 if [ -f $(OUTPUT_ROOT)/source_tips ] ; then \
472 $(CAT) $(OUTPUT_ROOT)/source_tips ; \
473 fi)
474
475 $(JRE_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips
476 $(ECHO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
477 $(MKDIR) -p $(@D)
478 $(RM) $@
479 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
480 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
483 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
484
485 $(JDK_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips
486 $(ECHO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
487 $(MKDIR) -p $(@D)
488 $(RM) $@
489 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
490 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
491 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)")
492 $(call info-file-item, "OS_ARCH", "$(ARCH)")
493 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
494
495 $(JDK_IMAGE_DIR)/src.zip: $(IMAGES_OUTPUTDIR)/src.zip
496 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
497 $(install-file)
498
499 ################################################################################
500 # Post processing (strip etc)
501
502 ifneq ($(POST_STRIP_CMD),)
503 ifeq ($(HOST_OS), windows)
504 EXEC_LIST:=$(shell $(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*.exe \
505 -o -name \*.dll | $(EGREP) -v -i "$(MSVCRNN_DLL)")
506 else
507 # Find all executables in JDK_OUTPUTDIR since they exist when this makefile is parsed
508 EXEC_LIST:=$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f -name \*$(SHARED_LIBRARY_SUFFIX) && \
509 $(FILE) `$(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*$(EXE_SUFFIX)` \
510 | $(EGREP) 'ELF' | $(CUT) -d':' -f1)
511 endif
512 # Filter out non JRE files and convert to unique touch files to depend on
513 JRE_EXEC_TOUCH_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip/%.stripped,\
514 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST)))
515
516 # Setup a rule for stripping files based on touch files
517 $(IMAGES_OUTPUTDIR)/_strip/%.stripped: $(JRE_IMAGE_DIR)/%
518 $(ECHO) Stripping $(patsubst $(OUTPUT_ROOT)/%,%,$<)
519 $(CHMOD) u+w $<
520 $(POST_STRIP_CMD) $<
521 $(CHMOD) go-w $<
522 $(MKDIR) -p $(@D)
523 $(TOUCH) $@
524 endif
525
526 ################################################################################
527 # Main targets
528
529 jre-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) $(JRE_IMAGE_DIR)/lib/applet \
530 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \
531 $(JRE_MAN_PAGE_LIST) $(JRE_DOC_TARGETS) $(JRE_INFO_FILE) $(JRE_EXEC_TOUCH_LIST)
532
533 jdk-image: $(JDK_BIN_TARGETS) $(JDKJRE_BIN_TARGETS) \
534 $(JDK_LIB_TARGETS) $(JDKJRE_LIB_TARGETS) \
535 $(JDK_IMAGE_DIR)/jre/lib/applet \
536 $(JDK_DEMO_TARGETS) \
537 $(JDK_IMAGE_DIR)/jre/lib/meta-index $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index \
538 $(JDK_MAN_PAGE_LIST) $(JDK_SAMPLE_TARGETS) \
539 $(JDK_DB_TARGETS) $(JDK_INCLUDE_TARGETS) \
540 $(JDKJRE_DOC_TARGETS) $(JDK_DOC_TARGETS) \
541 $(JDK_INFO_FILE) $(JDK_IMAGE_DIR)/src.zip
542
543 ################################################################################
544
545 .PHONY: default images jre-image jdk-image
|
17 # You should have received a copy of the GNU General Public License version
18 # 2 along with this work; if not, write to the Free Software Foundation,
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 #
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 # or visit www.oracle.com if you need additional information or have any
23 # questions.
24 #
25
26 include $(SPEC)
27 include MakeBase.gmk
28 include JavaCompilation.gmk
29 include Setup.gmk
30
31 default: images
32
33 include Tools.gmk
34
35 images: jre-image jdk-image
36
37 ifeq ($(OPENJDK_TARGET_OS),solaris)
38 define install-file
39 $(MKDIR) -p $(@D)
40 $(CP) -f -r -P '$<' '$(@D)'
41 endef
42 else ifeq ($(OPENJDK_TARGET_OS),macosx)
43 define install-file
44 $(MKDIR) -p $(@D)
45 $(CP) -fpRP '$<' '$@'
46 endef
47 else
48 define install-file
49 $(MKDIR) -p $(@D)
50 $(CP) -fP '$<' '$@'
51 endef
52 endif
53
54 ################################################################################
55 #
56 # JRE and JDK build rules
57 #
58 ################################################################################
59
60 ################################################################################
61 # /bin dir
62
63 $(JRE_IMAGE_DIR)/bin/%: $(JDK_OUTPUTDIR)/bin/%
64 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
65 $(install-file)
66
67 $(JDK_IMAGE_DIR)/bin/%: $(JDK_OUTPUTDIR)/bin/%
68 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
69 $(install-file)
70
71 $(JDK_IMAGE_DIR)/jre/bin/%: $(JDK_OUTPUTDIR)/bin/%
72 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
73 $(install-file)
74
75 NOT_JRE_BIN_FILES := \
76 appletviewer$(EXE_SUFFIX) \
77 extcheck$(EXE_SUFFIX) \
78 idlj$(EXE_SUFFIX) \
79 jar$(EXE_SUFFIX) \
80 jarsigner$(EXE_SUFFIX) \
81 java-rmi.cgi \
82 javac$(EXE_SUFFIX) \
83 javadoc$(EXE_SUFFIX) \
84 javah$(EXE_SUFFIX) \
85 javap$(EXE_SUFFIX) \
86 jcmd$(EXE_SUFFIX) \
87 jdb$(EXE_SUFFIX) \
88 jps$(EXE_SUFFIX) \
89 jrunscript$(EXE_SUFFIX) \
90 jstat$(EXE_SUFFIX) \
91 jstatd$(EXE_SUFFIX) \
92 jstack$(EXE_SUFFIX) \
93 packagebean$(SCRIPT_SUFFIX) \
94 rmic$(EXE_SUFFIX) \
95 serialver$(EXE_SUFFIX) \
96 unregbean$(EXE_SUFFIX) \
97 jconsole$(EXE_SUFFIX) \
98 jinfo$(EXE_SUFFIX) \
99 jmap$(EXE_SUFFIX) \
100 native2ascii$(EXE_SUFFIX) \
101 xjc$(EXE_SUFFIX) \
102 wsgen$(EXE_SUFFIX) \
103 wsimport$(EXE_SUFFIX) \
104 schemagen$(EXE_SUFFIX) \
105 jsadebugd$(EXE_SUFFIX) \
106 jhat$(EXE_SUFFIX)
107
108 WINDOWS_JDK_BIN_FILES = \
109 $(EXE_SUFFIX) \
110 $(LIB_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) \
111 $(MSVCRNN_DLL)
112
113 # Find all files in bin dir
114 ALL_BIN_LIST := $(shell $(FIND) $(JDK_OUTPUTDIR)/bin -type f)
115
116 # For unknown reason the debuginfo files for binaries are not put into images
117 # e.g filter them out
118 ALL_BIN_LIST := $(filter-out %.debuginfo %.diz, $(ALL_BIN_LIST))
119
120 ifeq ($(OPENJDK_TARGET_OS),windows)
121 JDK_BIN_LIST := $(filter $(addprefix %,$(WINDOWS_JDK_BIN_FILES)), $(ALL_BIN_LIST))
122 else
123 JDK_BIN_LIST := $(ALL_BIN_LIST)
124 endif
125 JRE_BIN_LIST := $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES)), $(ALL_BIN_LIST))
126
127 JRE_BIN_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JRE_IMAGE_DIR)/%, $(JRE_BIN_LIST))
128 JDK_BIN_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/%, $(JDK_BIN_LIST))
129 JDKJRE_BIN_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/jre/%, $(JRE_BIN_LIST))
130
131 ################################################################################
132 # /lib dir
133
134 $(JRE_IMAGE_DIR)/lib/%: $(JDK_OUTPUTDIR)/lib/%
135 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
136 $(install-file)
137
138 $(JDK_IMAGE_DIR)/lib/%: $(JDK_OUTPUTDIR)/lib/%
139 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
140 $(install-file)
141
142 $(JDK_IMAGE_DIR)/jre/lib/%: $(JDK_OUTPUTDIR)/lib/%
143 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
144 $(install-file)
145
146 JDKJRE_LIB_FILES := \
147 $(LIB_PREFIX)attach$(SHARED_LIBRARY_SUFFIX) \
148 $(SALIB_NAME)
149
150 NOT_JRE_LIB_FILES := \
151 tools.jar \
152 jconsole.jar \
153 sa-jdi.jar \
154 dt.jar \
155 orb.idl \
156 ir.idl \
157 ct.sym
158
159 JDK_LIB_FILES := $(NOT_JRE_LIB_FILES)
160 ifeq ($(OPENJDK_TARGET_OS), linux)
161 JDK_LIB_FILES += jexec
162 endif
163
164 ALL_LIB_LIST := $(shell $(FIND) $(JDK_OUTPUTDIR)/lib \( -type f -o -type l \) ! -name "_the*")
165 JRE_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES) $(JDKJRE_LIB_FILES)),$(ALL_LIB_LIST))
166 JDKJRE_LIB_LIST := $(filter-out $(addprefix %,$(NOT_JRE_LIB_FILES)),$(ALL_LIB_LIST))
167 JDK_LIB_LIST := $(filter $(addprefix %,$(JDK_LIB_FILES)),$(ALL_LIB_LIST))
168
169 JRE_LIB_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JRE_IMAGE_DIR)/%,$(JRE_LIB_LIST))
170 JDK_LIB_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/%,$(JDK_LIB_LIST))
171 JDKJRE_LIB_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/%,$(JDK_IMAGE_DIR)/jre/%,$(JDKJRE_LIB_LIST))
172
173 # CTE plugin security change require new empty directory lib/applet
174 $(JRE_IMAGE_DIR)/lib/applet:
175 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
176 $(MKDIR) -p $@
177
178 $(JDK_IMAGE_DIR)/jre/lib/applet:
179 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
180 $(MKDIR) -p $@
229 jcmd.1 \
230 jdb.1 \
231 jhat.1 \
232 jinfo.1 \
233 jmap.1 \
234 jps.1 \
235 jrunscript.1 \
236 jsadebugd.1 \
237 jstack.1 \
238 jstat.1 \
239 jstatd.1 \
240 jvisualvm.1 \
241 native2ascii.1 \
242 rmic.1 \
243 schemagen.1 \
244 serialver.1 \
245 wsgen.1 \
246 wsimport.1 \
247 xjc.1
248
249 ifeq ($(OPENJDK_TARGET_OS), linux)
250 MAN_SRC_DIR:=$(JDK_TOPDIR)/src/linux/doc
251 MAN1_SUBDIR:=man
252 endif
253 ifeq ($(OPENJDK_TARGET_OS), solaris)
254 MAN_SRC_DIR:=$(JDK_TOPDIR)/src/solaris/doc
255 MAN1_SUBDIR:=sun/man/man1
256 endif
257 ifeq ($(OPENJDK_TARGET_OS), macosx)
258 MAN_SRC_DIR:=$(JDK_TOPDIR)/src/bsd/doc
259 MAN1_SUBDIR:=man
260 JDK_MAN_PAGES := $(filter-out jcmd.1, $(JDK_MAN_PAGES))
261 JDK_MAN_PAGES := $(filter-out jvisualvm.1, $(JDK_MAN_PAGES))
262 endif
263
264
265 $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
266 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
267 $(install-file)
268
269 $(JDK_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
270 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
271 $(install-file)
272
273 $(JRE_IMAGE_DIR)/man/man1/%: $(JDK_OUTPUTDIR)/impdoc/$(MAN1_SUBDIR)/%
274 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
275 $(install-file)
276
277 $(JDK_IMAGE_DIR)/man/man1/%: $(JDK_OUTPUTDIR)/impdoc/$(MAN1_SUBDIR)/%
278 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
279 $(install-file)
280
281 define install-ja-manpage
282 $(MKDIR) -p $(@D)
283 $(CAT) $< \
286 | $(NATIVE2ASCII) -reverse -encoding $1 \
287 > $@
288 endef
289
290 $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
291 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
292 $(call install-ja-manpage,UTF-8)
293
294 $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
295 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
296 $(call install-ja-manpage,UTF-8)
297
298 $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
299 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
300 $(call install-ja-manpage,PCK)
301
302 $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
303 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
304 $(call install-ja-manpage,PCK)
305
306 ifeq ($(OPENJDK_TARGET_OS), solaris)
307 $(JRE_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
308 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
309 $(install-file)
310
311 $(JDK_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
312 $(ECHO) Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@)
313 $(install-file)
314 endif
315
316 # Old build creates empty man page for this, mimicing behaviour.
317 $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/jcmd.1 $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/jcmd.1 $(JDK_IMAGE_DIR)/man/ja/man1/jcmd.1:
318 $(ECHO) Creating dummy $(patsubst $(OUTPUT_ROOT)/%,%,$@)
319 $(MKDIR) -p $(@D)
320 $(TOUCH) $@
321
322 ifeq ($(OPENJDK_TARGET_OS), linux)
323 $(JRE_IMAGE_DIR)/man/ja:
324 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
325 $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
326
327 $(JDK_IMAGE_DIR)/man/ja:
328 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
329 $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
330 endif
331
332 ifeq ($(OPENJDK_TARGET_OS), macosx)
333 $(JRE_IMAGE_DIR)/man/ja:
334 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
335 $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
336
337 $(JDK_IMAGE_DIR)/man/ja:
338 $(ECHO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
339 $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
340 endif
341
342 ifeq ($(OPENJDK_TARGET_OS), linux)
343 JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/,$(JRE_MAN_PAGES)) \
344 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JRE_MAN_PAGES)) \
345 $(JRE_IMAGE_DIR)/man/ja
346
347 JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/,$(JDK_MAN_PAGES)) \
348 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JDK_MAN_PAGES)) \
349 $(JDK_IMAGE_DIR)/man/ja
350 endif
351
352 ifeq ($(OPENJDK_TARGET_OS), solaris)
353 JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/,$(JRE_MAN_PAGES)) \
354 $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/,$(JRE_MAN_PAGES)) \
355 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JRE_MAN_PAGES)) \
356 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/,$(JRE_MAN_PAGES))
357
358 JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/,$(JDK_MAN_PAGES)) \
359 $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/,$(JDK_MAN_PAGES)) \
360 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JDK_MAN_PAGES)) \
361 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/,$(JDK_MAN_PAGES))
362 endif
363
364 ifeq ($(OPENJDK_TARGET_OS), macosx)
365 JRE_MAN_PAGE_LIST := $(addprefix $(JRE_IMAGE_DIR)/man/man1/,$(JRE_MAN_PAGES)) \
366 $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JRE_MAN_PAGES)) \
367 $(JRE_IMAGE_DIR)/man/ja
368
369 JDK_MAN_PAGE_LIST := $(addprefix $(JDK_IMAGE_DIR)/man/man1/,$(JDK_MAN_PAGES)) \
370 $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,$(JDK_MAN_PAGES)) \
371 $(JDK_IMAGE_DIR)/man/ja
372 endif
373
374 ################################################################################
375 # /demo dir
376
377 ifndef NO_DEMOS
378 # FIXME: newdemo/applets/GraphLayout/GraphPanel$2.class is sometimes not copied.
379
380 # The db demo contains an empty dir that needs to be copied. The other
381 # directories will always trigger the rule for recompile since
382 # _the.list_of_packages files are touched.
383 $(JDK_IMAGE_DIR)/demo/%: $(JDK_OUTPUTDIR)/newdemo/%
384 if [ ! -d "$@" ]; then \
385 $(ECHO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'; \
386 $(MKDIR) -p $(@D); \
387 if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) '$<' '$@'; fi \
388 fi
389
390 # Find all files including directories
391 JDK_DEMO_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/newdemo/%,$(JDK_IMAGE_DIR)/demo/%,\
392 $(shell $(FIND) $(JDK_OUTPUTDIR)/newdemo ! -name "_the.*"))
393
403
404 JDK_SAMPLE_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/sample/%,$(JDK_IMAGE_DIR)/sample/%,\
405 $(shell $(FIND) $(JDK_OUTPUTDIR)/sample -type f))
406
407 endif
408
409 ################################################################################
410 # /db dir
411
412 ifndef OPENJDK
413 $(IMAGES_OUTPUTDIR)/_unzip/%.unzipped: $(JDK_TOPDIR)/src/closed/share/db/%
414 $(ECHO) Unzipping $(patsubst $(SRC_ROOT)/%,%,$<)
415 $(MKDIR) -p $(JDK_IMAGE_DIR)/db
416 cd $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $< -x index.html 2> /dev/null
417 $(MKDIR) -p $(@D)
418 $(TOUCH) $@
419
420 $(JDK_IMAGE_DIR)/db/README-JDK.html: $(JDK_TOPDIR)/src/closed/share/db/README-JDK.html
421 $(ECHO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'
422 $(install-file)
423 $(CHMOD) 644 $(@)
424
425 JDK_DB_TARGETS := $(patsubst $(JDK_TOPDIR)/src/closed/share/db/%,$(IMAGES_OUTPUTDIR)/_unzip/%.unzipped,\
426 $(shell $(FIND) $(JDK_TOPDIR)/src/closed/share/db -name "*.zip" ! -name "*demo*")) \
427 $(JDK_IMAGE_DIR)/db/README-JDK.html
428
429 endif
430
431 ################################################################################
432 # /include dir
433
434 $(JDK_IMAGE_DIR)/include/%: $(JDK_OUTPUTDIR)/include/%
435 $(ECHO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)'
436 $(install-file)
437
438 JDK_INCLUDE_TARGETS := $(patsubst $(JDK_OUTPUTDIR)/include/%,$(JDK_IMAGE_DIR)/include/%,\
439 $(shell $(FIND) $(JDK_OUTPUTDIR)/include -type f))
440
441 ################################################################################
442 # doc files
443
444 ifdef OPENJDK
445 JRE_DOC_FILES := LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
446 JDK_DOC_FILES := LICENSE ASSEMBLY_EXCEPTION THIRD_PARTY_README
447 JRE_DOC_LOCATION := $(JDK_TOPDIR)
448 JDK_DOC_LOCATION := $(JDK_TOPDIR)
449 else
450 JRE_DOC_FILES := COPYRIGHT Welcome.html LICENSE THIRDPARTYLICENSEREADME.txt
451 JDK_DOC_FILES := COPYRIGHT README.html LICENSE THIRDPARTYLICENSEREADME.txt
452 ifeq ($(OPENJDK_TARGET_OS), windows)
453 JRE_DOC_FILES += README.txt
454 else
455 JRE_DOC_FILES += README
456 endif
457 ifndef NO_DEMOS
458 JDK_DOC_FILES += demo/DEMOS_LICENSE
459 endif
460 ifndef NO_SAMPLES
461 JDK_DOC_FILES += sample/SAMPLES_LICENSE
462 endif
463 JRE_DOC_LOCATION := $(JDK_TOPDIR)/src/closed/share/doc/jre
464 JDK_DOC_LOCATION := $(JDK_TOPDIR)/src/closed/share/doc/jdk
465 endif
466 JRE_DOC_TARGETS := $(addprefix $(JRE_IMAGE_DIR)/,$(JRE_DOC_FILES))
467 JDKJRE_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/jre/,$(JRE_DOC_FILES))
468 JDK_DOC_TARGETS := $(addprefix $(JDK_IMAGE_DIR)/,$(JDK_DOC_FILES))
469
470 $(JRE_IMAGE_DIR)/%: $(JRE_DOC_LOCATION)/%
471 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
472 $(install-file)
473 $(CHMOD) 444 $(@)
474
475 $(JDK_IMAGE_DIR)/jre/%: $(JRE_DOC_LOCATION)/%
476 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
477 $(install-file)
478 $(CHMOD) 444 $(@)
479
480 $(JRE_IMAGE_DIR)/README.txt: $(JRE_DOC_LOCATION)/README
481 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
482 $(MKDIR) -p $(@D)
483 $(CP) $< $@
484 $(CHMOD) 444 $(@)
485
486 $(JDK_IMAGE_DIR)/jre/README.txt: $(JRE_DOC_LOCATION)/README
487 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
488 $(MKDIR) -p $(@D)
489 $(CP) $< $@
490 $(CHMOD) 444 $(@)
491
492 $(JDK_IMAGE_DIR)/%: $(JDK_DOC_LOCATION)/%
493 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
494 $(install-file)
495 $(CHMOD) 444 $(@)
496
497 $(JDK_IMAGE_DIR)/demo/%: $(JDK_DOC_LOCATION)/%
498 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
499 $(install-file)
500 $(CHMOD) 444 $(@)
501
502 $(JDK_IMAGE_DIR)/sample/%: $(JDK_DOC_LOCATION)/%
503 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
504 $(install-file)
505 $(CHMOD) 444 $(@)
506
507 JRE_INFO_FILE := $(JRE_IMAGE_DIR)/release
508 JDK_INFO_FILE := $(JDK_IMAGE_DIR)/release
509
510 # Common way to emit a line into the release or info file
511 define info-file-item # name value
512 $(PRINTF) '%s="%s"\n' $1 $2 >> $@
513 endef
514
515 ALL_SOURCE_TIPS = $(shell \
516 if [ -f $(OUTPUT_ROOT)/source_tips ] ; then \
517 $(CAT) $(OUTPUT_ROOT)/source_tips ; \
518 fi)
519
520 $(JRE_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips
521 $(ECHO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
522 $(MKDIR) -p $(@D)
523 $(RM) $@
524 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
525 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
528 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
529
530 $(JDK_INFO_FILE): $(OUTPUT_ROOT)/spec.gmk $(OUTPUT_ROOT)/source_tips
531 $(ECHO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
532 $(MKDIR) -p $(@D)
533 $(RM) $@
534 $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
535 $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
536 $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)")
537 $(call info-file-item, "OS_ARCH", "$(ARCH)")
538 $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
539
540 $(JDK_IMAGE_DIR)/src.zip: $(IMAGES_OUTPUTDIR)/src.zip
541 $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
542 $(install-file)
543
544 ################################################################################
545 # Post processing (strip etc)
546
547 ifneq ($(POST_STRIP_CMD),)
548 ifeq ($(OPENJDK_TARGET_OS), windows)
549 EXEC_LIST:=$(shell $(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*.exe \
550 -o -name \*.dll | $(EGREP) -v -i "$(MSVCRNN_DLL)")
551 else
552 # Find all executables in JDK_OUTPUTDIR since they exist when this makefile is parsed
553 EXEC_LIST:=$(shell $(FIND) $(JDK_OUTPUTDIR)/lib -type f -name \*$(SHARED_LIBRARY_SUFFIX) && \
554 $(FILE) `$(FIND) $(JDK_OUTPUTDIR)/bin -type f -name \*$(EXE_SUFFIX)` \
555 | $(EGREP) 'ELF' | $(CUT) -d':' -f1)
556 endif
557 # Filter out non JRE files and convert to unique touch files to depend on
558 JRE_EXEC_TOUCH_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%,$(IMAGES_OUTPUTDIR)/_strip_jre/%.stripped,\
559 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST)))
560
561 JDK_JRE_EXEC_TOUCH_LIST:=$(patsubst $(JDK_OUTPUTDIR)/%, \
562 $(IMAGES_OUTPUTDIR)/_strip_jdk/jre/%.stripped, \
563 $(filter-out $(addprefix %,$(NOT_JRE_BIN_FILES) $(NOT_JRE_LIB_FILES)), $(EXEC_LIST)))
564
565 JDK_BIN_EXEC_TOUCH_LIST := $(patsubst $(JDK_OUTPUTDIR)/%, \
566 $(IMAGES_OUTPUTDIR)/_strip_jdk/%.stripped, \
567 $(filter-out $(JDK_OUTPUTDIR)/lib/%, $(EXEC_LIST)))
568
569 # Setup a rule for stripping files based on touch files
570 $(IMAGES_OUTPUTDIR)/_strip_jre/%.stripped: $(JRE_IMAGE_DIR)/%
571 $(ECHO) Stripping $(patsubst $(OUTPUT_ROOT)/%,%,$<)
572 $(CHMOD) u+w $<
573 $(POST_STRIP_CMD) $<
574 $(CHMOD) go-w $<
575 $(MKDIR) -p $(@D)
576 $(TOUCH) $@
577
578 $(IMAGES_OUTPUTDIR)/_strip_jdk/bin/%.stripped: $(JDK_IMAGE_DIR)/bin/%
579 $(ECHO) Stripping $(patsubst $(OUTPUT_ROOT)/%,%,$<)
580 $(CHMOD) u+w $<
581 $(POST_STRIP_CMD) $<
582 $(CHMOD) go-w $<
583 $(MKDIR) -p $(@D)
584 $(TOUCH) $@
585
586 # Setup a rule for stripping files based on touch files
587 $(IMAGES_OUTPUTDIR)/_strip_jdk/jre/%.stripped: $(JDK_IMAGE_DIR)/jre/%
588 $(ECHO) Stripping $(patsubst $(OUTPUT_ROOT)/%,%,$<)
589 $(CHMOD) u+w $<
590 $(POST_STRIP_CMD) $<
591 $(CHMOD) go-w $<
592 $(MKDIR) -p $(@D)
593 $(TOUCH) $@
594
595 endif
596
597 ################################################################################
598 # Main targets
599
600 jre-image: $(JRE_BIN_TARGETS) $(JRE_LIB_TARGETS) $(JRE_IMAGE_DIR)/lib/applet \
601 $(JRE_IMAGE_DIR)/lib/meta-index $(JRE_IMAGE_DIR)/lib/ext/meta-index \
602 $(JRE_MAN_PAGE_LIST) $(JRE_DOC_TARGETS) $(JRE_INFO_FILE) $(JRE_EXEC_TOUCH_LIST)
603
604 jdk-image: $(JDK_BIN_TARGETS) $(JDKJRE_BIN_TARGETS) \
605 $(JDK_LIB_TARGETS) $(JDKJRE_LIB_TARGETS) \
606 $(JDK_IMAGE_DIR)/jre/lib/applet \
607 $(JDK_DEMO_TARGETS) \
608 $(JDK_IMAGE_DIR)/jre/lib/meta-index $(JDK_IMAGE_DIR)/jre/lib/ext/meta-index \
609 $(JDK_MAN_PAGE_LIST) $(JDK_SAMPLE_TARGETS) \
610 $(JDK_DB_TARGETS) $(JDK_INCLUDE_TARGETS) \
611 $(JDKJRE_DOC_TARGETS) $(JDK_DOC_TARGETS) \
612 $(JDK_INFO_FILE) $(JDK_JRE_EXEC_TOUCH_LIST) $(JDK_BIN_EXEC_TOUCH_LIST) \
613 $(JDK_IMAGE_DIR)/src.zip
614
615 ################################################################################
616
617 .PHONY: default images jre-image jdk-image
|