blob: f3a6c626d3b64d9c06974dac678e8bfbc300de9d [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#
2# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# This code is free software; you can redistribute it and/or modify it
6# under the terms of the GNU General Public License version 2 only, as
7# published by the Free Software Foundation. Sun designates this
8# particular file as subject to the "Classpath" exception as provided
9# by Sun in the LICENSE file that accompanied this code.
10#
11# This code is distributed in the hope that it will be useful, but WITHOUT
12# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14# version 2 for more details (a copy is included in the LICENSE file that
15# accompanied this code).
16#
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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any questions.
24#
25
26include $(JDK_TOPDIR)/make/docs/CORE_PKGS.gmk
27include $(JDK_TOPDIR)/make/docs/NON_CORE_PKGS.gmk
28
29#
30# Perform release engineering tasks.
31#
32# images An image is what the product looks like when it is
33# installed.
34#
35
36IMAGE_BINDIR = bin
37
38# The compiler should not issue a "Sun Propietary" warning when compiling
39# classes in the com.sun.java.swing.plaf packages, since we've always
40# allowed, and even advocated, extending them (see bug 6476749).
41#
42# This approach is NOT to be used as a general purpose way to avoid such
43# compiler warnings for non-core packages. The correct way is to document
44# the packages in NON_CORE_PKGS.gmk, and include them in the NON_CORE_PKGS
45# definition.
46#
47# Swing has taken this approach only as a temporary measure to avoid
48# the compiler warnings until we can properly document these packages.
49# This is covered under 6491853.
50EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf \
51 com.sun.java.swing.plaf.windows \
52 com.sun.java.swing.plaf.motif \
53 com.sun.java.swing.plaf.gtk
54
55# 64-bit solaris has a few special cases. We define the variable
56# SOLARIS64 for use in this Makefile to easily test those cases
57ifeq ($(PLATFORM), solaris)
58 ifeq ($(ARCH_DATA_MODEL), 64)
59 SOLARIS64 = true
60 IMAGE_BINDIR = bin/$(ARCH)
61 endif
62endif
63
64JTG_DOCS = $(JDK_TOPDIR)/src/solaris/doc
65
66# Choose the right set of documents for the images
67ifdef OPENJDK
68 SHARE_JDK_DOC_SRC = $(JDK_TOPDIR)/make
69 SHARE_JRE_DOC_SRC = $(JDK_TOPDIR)/make
70else
71 SHARE_JDK_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jdk
72 SHARE_JRE_DOC_SRC = $(CLOSED_SHARE_SRC)/doc/jre
73endif
74
75#We use this for man page header
76jdkversion := $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
77
78# Text documents on windows use this suffix
79ifeq ($(PLATFORM), windows)
80 TEXT_SUFFIX = .txt
81endif
82
83# The base names of all the license and document files for the jdk and jre
84ifdef OPENJDK
85 # Same files for jdk and jre, no name changes
86 LICENSE_DOCLIST_JDK = LICENSE ASSEMBLY_EXCEPTION
87 LICENSE_DOCLIST_JRE = LICENSE ASSEMBLY_EXCEPTION
88 OTHER_DOCLIST_JDK = README.html THIRD_PARTY_README
89 OTHER_DOCLIST_JRE = README.html THIRD_PARTY_README
90else
91 # Select the pre-release or FCS license version based on the build milestone.
92 LICENSE_VERSION=.pre
93 ifeq ($(MILESTONE), fcs)
94 LICENSE_VERSION=.fcs
95 endif
96 ifeq ($(PLATFORM), windows)
97 LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
98 $(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
99 $(LS) *LICENSE*$(LICENSE_VERSION)))
100 LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
101 $(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
102 $(LS) *LICENSE*$(LICENSE_VERSION)))
103 else
104 LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
105 $(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
106 $(LS) *LICENSE*$(LICENSE_VERSION) | $(GREP) -v rtf))
107 LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
108 $(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
109 $(LS) *LICENSE*$(LICENSE_VERSION) | $(GREP) -v rtf))
110 endif
111 OTHER_DOCLIST_JDK = COPYRIGHT README.html README_ja.html README_zh_CN.html
112 OTHER_DOCLIST_JRE = COPYRIGHT Welcome.html
113 JRE_NAMECHANGE_DOCLIST = README
114endif
115
116# Paths to these files we need
117JDK_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_IMAGE_DIR)/%)
118JDK64_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_IMAGE_DIR)/%64)
119JDK_DOCFILES = $(OTHER_DOCLIST_JDK:%=$(JDK_IMAGE_DIR)/%)
120
121JRE_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_IMAGE_DIR)/%)
122JRE64_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_IMAGE_DIR)/%64)
123JRE_DOCFILES = $(OTHER_DOCLIST_JRE:%=$(JRE_IMAGE_DIR)/%)
124JRE_DOCFILES += $(JRE_NAMECHANGE_DOCLIST:%=$(JRE_IMAGE_DIR)/%$(TEXT_SUFFIX))
125
126# absolute directory names: note, these must exist prior to build
127# time - they are created in the main Makefile.
128JRE_IMAGE_BINDIR = $(JRE_IMAGE_DIR)/bin
129JRE_IMAGE_THREADIR = $(JRE_IMAGE_DIR)/bin/*/native_threads
130
131MAINMANIFEST = $(JDK_TOPDIR)/make/tools/manifest.mf
132BEANMANIFEST = $(JDK_TOPDIR)/make/javax/swing/beaninfo/manifest
133
134#
135# Man pages
136#
137
138JRE_MAN_PAGES = \
139 java.1 \
140 keytool.1 \
141 orbd.1 \
142 pack200.1 \
143 policytool.1 \
144 rmid.1 \
145 rmiregistry.1 \
146 servertool.1 \
147 tnameserv.1 \
148 unpack200.1
149
150ifeq ($(ARCH_DATA_MODEL),32)
151 JRE_MAN_PAGES += javaws.1
152endif
153
154JDK_MAN_PAGES = \
155 $(JRE_MAN_PAGES) \
156 appletviewer.1 \
157 apt.1 \
158 extcheck.1 \
159 idlj.1 \
160 jar.1 \
161 jarsigner.1 \
162 javac.1 \
163 javadoc.1 \
164 javah.1 \
165 javap.1 \
166 jconsole.1 \
167 jdb.1 \
168 jhat.1 \
169 jinfo.1 \
170 jmap.1 \
171 jps.1 \
172 jrunscript.1 \
173 jsadebugd.1 \
174 jstack.1 \
175 jstat.1 \
176 jstatd.1 \
177 native2ascii.1 \
178 rmic.1 \
179 schemagen.1 \
180 serialver.1 \
181 wsgen.1 \
182 wsimport.1 \
183 xjc.1
184
185ifeq ($(PLATFORM), solaris)
186 MANBASEDIRS=$(JDK_TOPDIR)/src/solaris/doc $(IMPORTDOCDIR)
187 MAN1SUBDIR=sun/man/man1
188endif # solaris
189
190ifeq ($(PLATFORM), linux)
191 MANBASEDIRS=$(JDK_TOPDIR)/src/linux/doc $(IMPORTDOCDIR)
192 MAN1SUBDIR=man
193 JA_DIRNAME=ja_JP.$(JA_SOURCE_ENCODING)
194endif # linux
195
196define copy-man-pages
197$(MKDIR) -p $1/man/man1
198for manbase in $(MANBASEDIRS:%=%/$(MAN1SUBDIR)) ; do \
199 for manpage in $2; do \
200 if [ -f $${manbase}/$${manpage} ] ; then \
201 $(CP) $${manbase}/$${manpage} $1/man/man1 ; \
202 for ja_encoding in $(JA_TARGET_ENCODINGS); do \
203 ja_dir="ja"; \
204 if [ "$${ja_encoding}" != "$(JA_SOURCE_ENCODING)" ]; then \
205 ja_dir="ja_JP.$${ja_encoding}"; \
206 fi; \
207 $(MKDIR) -p $1/man/$${ja_dir}/man1; \
208 $(CAT) $${manbase}/ja/$${manpage} \
209 | $(NATIVE2ASCII) -encoding $(JA_SOURCE_ENCODING) \
210 | $(SED) 's/@@VERSION@@/$(jdkversion)/g' \
211 | $(NATIVE2ASCII) -reverse -encoding $${ja_encoding} \
212 > $1/man/$${ja_dir}/man1/$${manpage}; \
213 done; \
214 fi; \
215 done; \
216done
217$(java-vm-cleanup)
218if [ "$(JA_DIRNAME)" != "" ] ; then \
219 $(MV) $1/man/ja $1/man/$(JA_DIRNAME); \
220 $(CD) $1/man && $(LN) -s $(JA_DIRNAME) ja; \
221fi
222endef
223
224#
225# Targets.
226#
227INITIAL_IMAGE_JRE=initial-image-jre
228INITIAL_IMAGE_JDK=initial-image-jdk
229ifeq ($(PLATFORM), solaris)
230 ifeq ($(ARCH_DATA_MODEL), 64)
231 INITIAL_IMAGE_JRE=initial-image-jre-sol64
232 INITIAL_IMAGE_JDK=initial-image-jdk-sol64
233 endif
234endif
235
236images images-clobber \
237initial-image-jre initial-image-jdk \
238initial-image-jre-sol64 initial-image-jdk-sol64 \
239trim-image-jre trim-image-jdk \
240process-image-jre process-image-jdk \
241compare-image \
242sec-files sec-files-win jgss-files ::
243 @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
244
245#
246# Export binary plugs if not building OPENJDK
247#
248ifdef OPENJDK
249 EXPORT_BINARY_PLUGS =
250else # !OPENJDK
251 EXPORT_BINARY_PLUGS = export-binary-plugs test-binary-plugs
252endif # OPENJDK
253
254# Order is important here, trim jre after jdk image is created
255images:: sanity-images post-sanity-images \
256 $(EXPORT_BINARY_PLUGS) \
257 $(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \
258 trim-image-jre trim-image-jdk \
259 process-image-jre process-image-jdk sec-files sec-files-win jgss-files
260
261# Don't use these
262image-jre:: initial-image-jre trim-image-jre process-image-jre
263image-jdk:: initial-image-jdk trim-image-jdk process-image-jdk
264
265#
266# Sources we ship in the SDK.
267#
268SOURCES = \
269 java/applet \
270 java/awt \
271 java/beans \
272 java/io \
273 java/lang \
274 java/math \
275 java/net \
276 java/nio \
277 java/rmi \
278 java/security \
279 java/sql \
280 java/text \
281 java/util \
282 com/sun/corba \
283 com/sun/image/codec/jpeg \
284 com/sun/imageio \
285 com/sun/java/swing \
286 com/sun/javadoc \
287 com/sun/jmx \
288 com/sun/mirror \
289 com/sun/source \
290 com/sun/naming \
291 com/sun/security/auth \
292 com/sun/security/jgss \
293 javax/accessibility \
294 javax/annotation \
295 javax/script \
296 javax/imageio \
297 javax/lang \
298 javax/management \
299 javax/naming \
300 javax/print \
301 javax/rmi \
302 javax/security \
303 javax/sound \
304 javax/sql \
305 javax/swing \
306 javax/tools \
307 javax/xml \
308 com/sun/org/apache \
309 com/sun/java_cup \
310 com/sun/jlex \
311 org/ietf \
312 org/omg \
313 org/w3c/dom \
314 org/xml/sax \
315 sunw
316#
317# Directories where sources may be found. If a file with the same path
318# name exists in more than one of these places, the one found last on this
319# list wins.
320#
321SOURCE_DIRS = $(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
322SOURCE_DIRS += $(GENSRCDIR)
323SOURCE_DIRS += $(IMPORTSRCDIR)
324ifndef OPENJDK
325 SOURCE_DIRS += $(CLOSED_SRC)/share/classes
326endif
327
328
329#
330# Specific files and directories that will be filtered out from above areas.
331#
332SOURCE_FILTERs = $(SCM_DIRs) 'X-*' '*-X-*' '*-template.java' ',*'
333SOURCE_FILES_filter = $(SOURCE_FILTERs:%=-name % -prune -o)
334
335#
336# Bug 4249883 - excluding some unnecessary packages from com.sun.tools
337#
338# Bug 5008685 - exclude jconsole from sun/tools
339#
340TOOLS = \
341 META-INF/services/com.sun.jdi.connect.Connector \
342 META-INF/services/com.sun.jdi.connect.spi.TransportService \
343 sun/tools/asm \
344 sun/tools/jar \
345 sun/tools/java \
346 sun/tools/javac \
347 sun/tools/javap \
348 sun/tools/jps \
349 sun/tools/jstat \
350 sun/tools/jstatd \
351 sun/tools/native2ascii \
352 sun/tools/serialver \
353 sun/tools/tree \
354 sun/tools/util \
355 sun/security/tools/JarBASE64Encoder.class \
356 sun/security/tools/JarSigner.class \
357 sun/security/tools/JarSignerParameters.class \
358 sun/security/tools/JarSignerResources.class \
359 sun/security/tools/JarSignerResources_ja.class \
360 sun/security/tools/JarSignerResources_zh_CN.class \
361 sun/security/tools/SignatureFile\$$Block.class \
362 sun/security/tools/SignatureFile.class \
363 sun/security/tools/TimestampedSigner.class \
364 sun/rmi/rmic \
365 sun/applet \
366 sun/jvmstat \
367 com/sun/javadoc \
368 com/sun/jdi \
369 com/sun/jarsigner \
370 com/sun/mirror \
371 com/sun/source \
372 com/sun/tools/doclets \
373 com/sun/tools/example/debug/expr \
374 com/sun/tools/example/debug/tty \
375 com/sun/tools/extcheck \
376 com/sun/tools/hat \
377 com/sun/tools/javac \
378 com/sun/tools/javadoc \
379 com/sun/tools/apt \
380 com/sun/tools/javah \
381 com/sun/tools/corba \
382 com/sun/tools/internal/xjc \
383 com/sun/tools/internal/ws \
384 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory \
385 META-INF/services/com.sun.tools.xjc.Plugin \
386 com/sun/istack/internal/tools \
387 com/sun/istack/internal/ws \
388 com/sun/codemodel \
389 com/sun/tools/internal/jxc \
390 com/sun/xml/internal/rngom \
391 com/sun/xml/internal/xsom \
392 org/relaxng/datatype \
393 com/sun/xml/internal/dtdparser \
394 com/sun/tools/jdi \
395 com/sun/tools/script/shell \
396 META-INF/services/com.sun.tools.attach.spi.AttachProvider \
397 com/sun/tools/attach \
398 sun/tools/attach \
399 sun/tools/jstack \
400 sun/tools/jinfo \
401 sun/tools/jmap
402
403# classes that go into jsse.jar
404JSSE_CLASSES_DIRS = \
405 sun/security/provider/Sun.class \
406 sun/security/rsa/SunRsaSign.class \
407 sun/security/ssl \
408 com/sun/net/ssl/internal/ssl
409
410# files under $(OUTPUTDIR) that need to go into sec-bin.zip for builds
411# where the corresponding sources are not available
412SEC_FILES_DIRS = \
413 classes/javax/net \
414 classes/javax/security/cert \
415 classes/com/sun/net/ssl \
416 classes/com/sun/security/cert \
417 classes/sun/net/www/protocol/https \
418 classes/sun/security/pkcs12 \
419 classes/sun/security/ssl \
420 classes/sun/security/krb5/*.class \
421 classes/sun/security/krb5/internal/*.class \
422 classes/sun/security/krb5/internal/ccache \
423 classes/sun/security/krb5/internal/crypto \
424 classes/sun/security/krb5/internal/ktab \
425 classes/sun/security/krb5/internal/rcache \
426 classes/sun/security/krb5/internal/util \
427 classes/sun/security/jgss/spi/GSSContextSpi.class
428
429# files under $(OUTPUTDIR) that need to go into sec-windows-win.zip for builds
430# where the corresponding sources are not available
431SEC_FILES_WIN_DIRS = \
432 classes/sun/security/krb5/internal/tools
433
434# files under $(BINDIR) that need to go into jgss_files.zip for builds
435# where the corresponding sources are not available
436JGSS_FILES_DIRS = \
437 bin/w2k_lsa_auth.dll \
438 bin/w2k_lsa_auth.map \
439 bin/w2k_lsa_auth.pdb
440
441# The following get removed from the SDK image.
442NOTJDKTOOLS = \
443 java_vm
444
445# The following get removed from the JRE after the bulk-copy of BINDIR...
446NOTJRETOOLS = \
447 appletviewer$(EXE_SUFFIX) \
448 extcheck$(EXE_SUFFIX) \
449 idlj$(EXE_SUFFIX) \
450 jar$(EXE_SUFFIX) \
451 jarsigner$(EXE_SUFFIX) \
452 java-rmi.cgi \
453 javac$(EXE_SUFFIX) \
454 javadoc$(EXE_SUFFIX) \
455 apt$(EXE_SUFFIX) \
456 javah$(EXE_SUFFIX) \
457 javap$(EXE_SUFFIX) \
458 jdb$(EXE_SUFFIX) \
459 jps$(EXE_SUFFIX) \
460 jrunscript$(EXE_SUFFIX) \
461 jstat$(EXE_SUFFIX) \
462 jstatd$(EXE_SUFFIX) \
463 jstack$(EXE_SUFFIX) \
464 packagebean$(SCRIPT_SUFFIX) \
465 rmic$(EXE_SUFFIX) \
466 serialver$(EXE_SUFFIX) \
467 unregbean$(EXE_SUFFIX) \
468 jconsole$(EXE_SUFFIX) \
469 jinfo$(EXE_SUFFIX) \
470 jmap$(EXE_SUFFIX) \
471 native2ascii$(EXE_SUFFIX) \
472 xjc$(EXE_SUFFIX) \
473 wsgen$(EXE_SUFFIX) \
474 wsimport$(EXE_SUFFIX) \
475 schemagen$(EXE_SUFFIX) \
476 jsadebugd$(EXE_SUFFIX) \
477 jhat$(EXE_SUFFIX)
478
479# The following get removed from the JRE after the bulk-copy of LIBDIR...
480NOTJRELIBS = tools.jar \
481 jconsole.jar
482
483ifeq ($(INCLUDE_SA), true)
484 NOTJRELIBS += sa-jdi.jar
485
486 # The following get removed from the JRE after the bulk-copy of LIBDIR...
487 NOTJRE_SHARED_LIBS = $(SALIB_NAME)
488else
489 NOTJRE_SHARED_LIBS =
490endif
491
492# Attach library is JDK only
493NOTJRE_SHARED_LIBS += $(LIB_PREFIX)attach.$(LIBRARY_SUFFIX)
494
495#
496###### RULES
497
498# Processing license files from source area to image area
499# These will be modified to have the platform specific EOL chars.
500define process-doc-file
501$(prep-target)
502$(SED) 's/$$//g' $< > $@
503$(CHMOD) 444 $@
504endef
505
506# JDK files
507$(JDK_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%
508 $(process-doc-file)
509# Removes LICENSE_VERSION or not
510ifdef LICENSE_VERSION
511$(JDK_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
512 $(process-doc-file)
513$(JDK_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
514 $(process-doc-file)
515else
516$(JDK_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%
517 $(process-doc-file)
518endif
519
520# JRE files
521$(JRE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%
522 $(process-doc-file)
523# Add $(TEXT_SUFFIX) suffix
524ifdef TEXT_SUFFIX
525$(JRE_IMAGE_DIR)/%$(TEXT_SUFFIX): $(SHARE_JRE_DOC_SRC)/%
526 $(process-doc-file)
527endif
528# Removes LICENSE_VERSION or not
529ifdef LICENSE_VERSION
530$(JRE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
531 $(process-doc-file)
532$(JRE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
533 $(process-doc-file)
534else
535$(JRE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%
536 $(process-doc-file)
537endif
538
539# Differences tool
540DIRDIFF_JARFILE = $(BUILDTOOLJARDIR)/dirdiff.jar
541
542######################################################
543# List of directories in classes directory that should NOT be in rt.jar
544######################################################
545
546NOT_RT_JAR_LIST = $(ABS_TEMPDIR)/not_rt_jar.list
547
548$(NOT_RT_JAR_LIST): FRC
549 $(prep-target)
550 $(ECHO) "#\n" >> $@
551 $(ECHO) "# List of subdirectories not in include in rt.jar" >> $@
552 $(ECHO) "# Directories must contain trailing '/'." >> $@
553 $(ECHO) "com/sun/javadoc/" >> $@
554 $(ECHO) "com/sun/jdi/" >> $@
555 $(ECHO) "com/sun/jarsigner/" >> $@
556 $(ECHO) "com/sun/mirror/" >> $@
557 $(ECHO) "com/sun/source/" >> $@
558 $(ECHO) "com/sun/istack/internal/tools/" >> $@
559 $(ECHO) "com/sun/istack/internal/ws/" >> $@
560 $(ECHO) "META-INF/services/com.sun.jdi.connect.Connector" >> $@
561 $(ECHO) "META-INF/services/com.sun.jdi.connect.spi.TransportService" >> $@
562 $(ECHO) "META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory" >> $@
563 $(ECHO) "META-INF/services/com.sun.tools.xjc.Plugin" >> $@
564 $(ECHO) "com/sun/tools/" >> $@
565 $(ECHO) "sun/jvmstat/" >> $@
566 $(ECHO) "sun/rmi/rmic/" >> $@
567 $(ECHO) "sun/tools/asm/" >> $@
568 $(ECHO) "sun/tools/java/" >> $@
569 $(ECHO) "sun/tools/javac/" >> $@
570 $(ECHO) "sun/tools/javap/" >> $@
571 $(ECHO) "sun/tools/jconsole/" >> $@
572 $(ECHO) "sun/tools/jps/" >> $@
573 $(ECHO) "sun/tools/jstat/" >> $@
574 $(ECHO) "sun/tools/jstatd/" >> $@
575 $(ECHO) "sun/tools/native2ascii/" >> $@
576 $(ECHO) "sun/tools/serialver/" >> $@
577 $(ECHO) "sun/tools/tree/" >> $@
578 $(ECHO) "sun/tools/util/" >> $@
579 $(ECHO) "sun/security/tools/JarBASE64Encoder.class" >> $@
580 $(ECHO) "sun/security/tools/JarSigner.class" >> $@
581 $(ECHO) "sun/security/tools/JarSignerParameters.class" >> $@
582 $(ECHO) "sun/security/tools/JarSignerResources.class" >> $@
583 $(ECHO) "sun/security/tools/JarSignerResources_ja.class" >> $@
584 $(ECHO) "sun/security/tools/JarSignerResources_zh_CN.class" >> $@
585 $(ECHO) "sun/security/tools/SignatureFile\$$Block.class" >> $@
586 $(ECHO) "sun/security/tools/SignatureFile.class" >> $@
587 $(ECHO) "sun/security/tools/TimestampedSigner.class" >> $@
588 $(ECHO) "sun/security/provider/Sun.class" >> $@
589 $(ECHO) "sun/security/rsa/SunRsaSign.class" >> $@
590 $(ECHO) "sun/security/ssl/" >> $@
591 $(ECHO) "com/sun/net/ssl/internal/ssl/" >> $@
592 $(ECHO) "javax/crypto/" >> $@
593 $(ECHO) "sun/security/internal/" >> $@
594 $(ECHO) "com/sun/crypto/provider/" >> $@
595 $(ECHO) "META-INF/services/com.sun.tools.attach.spi.AttachProvider" >> $@
596 $(ECHO) "com/sun/tools/attach/" >> $@
597 $(ECHO) "org/relaxng/datatype/" >> $@
598 $(ECHO) "com/sun/codemodel/" >> $@
599 $(ECHO) "com/sun/xml/internal/dtdparser/" >> $@
600 $(ECHO) "com/sun/xml/internal/rngom/" >> $@
601 $(ECHO) "com/sun/xml/internal/xsom/" >> $@
602 $(ECHO) "com/sun/tools/script/shell/" >> $@
603 $(ECHO) "sun/tools/attach/" >> $@
604 $(ECHO) "sun/tools/jstack/" >> $@
605 $(ECHO) "sun/tools/jinfo/" >> $@
606 $(ECHO) "sun/tools/jmap/" >> $@
607
608
609# File order list for rt.jar
610# - sun.applet is included, till hotjava stops relying on it.
611# - sun.tools.jar is included, needs cleanup.
612#
613REORDER_TEMPDIR=$(ABS_TEMPDIR)/reorder
614TOTAL_JAR_FILELIST=$(REORDER_TEMPDIR)/file_list
615
616JARFILELISTS_TEMPDIR=$(ABS_TEMPDIR)/jarfilelists
617RT_JAR_FILELIST=$(JARFILELISTS_TEMPDIR)/rt_jar_list
618RES_JAR_FILELIST=$(JARFILELISTS_TEMPDIR)/resources_jar_list
619
620JARREORDER_JARFILE = $(ABS_BUILDTOOLJARDIR)/jarreorder.jar
621
622$(TOTAL_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_RT_JAR_LIST)
623 $(prep-target)
624 $(RM) $@.temp
625 ($(CD) $(CLASSBINDIR) && \
626 $(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \
627 -o $@.temp $(ABS_LIBDIR)/classlist $(NOT_RT_JAR_LIST) . )
628 $(MV) $@.temp $@
629 @($(CD) $(CLASSBINDIR) && $(java-vm-cleanup))
630
631# Create the rt.jar file list & non-class files list
632
633JARSPLIT_JARFILE = $(BUILDTOOLJARDIR)/jarsplit.jar
634
635$(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \
636 $(TOTAL_JAR_FILELIST) $(JARSPLIT_JARFILE)
637 @$(RM) $(RT_JAR_FILELIST) $(RES_JAR_FILELIST)
638 $(MKDIR) -p $(JARFILELISTS_TEMPDIR)
639 $(BOOT_JAVA_CMD) -jar $(JARSPLIT_JARFILE) \
640 $(TOTAL_JAR_FILELIST) \
641 -o $(RT_JAR_FILELIST) $(RES_JAR_FILELIST)
642 @$(java-vm-cleanup)
643
644# Create the manifest file.
645JAR_MANIFEST_FILE=$(TEMPDIR)/manifest.tmp
646$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
647 $(prep-target)
648 $(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
649 $(ECHO) >> $@
650 $(CAT) $(BEANMANIFEST) >> $@
651
652# Create resources.jar containing non-class files
653RESOURCES_JAR=$(TEMPDIR)/resources-orig.jar
654RES_JAR_ARGLIST=$(RES_JAR_FILELIST)_args
655$(RES_JAR_ARGLIST): $(RES_JAR_FILELIST)
656 $(prep-target)
657 $(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
658$(RESOURCES_JAR): $(RES_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
659 $(prep-target)
660 $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
661 @$(RES_JAR_ARGLIST) $(JAR_JFLAGS)
662 @$(java-vm-cleanup)
663
664# Create jsse.jar containing SunJSSE implementation classes
665JSSE_JAR=$(TEMPDIR)/jsse-orig.jar
666$(JSSE_JAR): $(JAR_MANIFEST_FILE)
667 $(prep-target)
668 $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
669 $(JSSE_CLASSES_DIRS:%=-C $(CLASSBINDIR) %) \
670 $(JAR_JFLAGS)
671 @$(java-vm-cleanup)
672
673# Create sec-bin.zip
674SEC_FILES_ZIP=$(ABS_TEMPDIR)/sec-bin.zip
675sec-files::
676 $(prep-target)
677 $(RM) $(SEC_FILES_ZIP)
678 $(CD) $(OUTPUTDIR) && \
679 $(ZIPEXE) -rq9 $(SEC_FILES_ZIP) $(SEC_FILES_DIRS)
680 @$(java-vm-cleanup)
681
682# Create sec-windows-bin.zip
683SEC_FILES_WIN_ZIP=$(ABS_TEMPDIR)/sec-windows-bin.zip
684sec-files-win::
685ifeq ($(PLATFORM), windows)
686 $(prep-target)
687 $(RM) $(SEC_FILES_WIN_ZIP)
688 $(CD) $(OUTPUTDIR) && \
689 $(ZIPEXE) -rq9 $(SEC_FILES_WIN_ZIP) $(SEC_FILES_WIN_DIRS)
690 @$(java-vm-cleanup)
691endif
692
693# Create JGSS files that contains the native Kerberos library
694JGSS_WIN32_FILES_ZIP=$(ABS_TEMPDIR)/jgss-windows-i586-bin.zip
695JGSS_WIN64_FILES_ZIP=$(ABS_TEMPDIR)/jgss-windows-x64-bin.zip
696jgss-files::
697ifeq ($(PLATFORM), windows)
698 $(prep-target)
699 ifeq ($(ARCH_DATA_MODEL), 32)
700 $(RM) $(JGSS_WIN32_FILES_ZIP)
701 $(CD) $(OUTPUTDIR) && \
702 $(ZIPEXE) -rq9 $(JGSS_WIN32_FILES_ZIP) $(JGSS_FILES_DIRS)
703 else
704 $(RM) $(JGSS_WIN64_FILES_ZIP)
705 $(CD) $(OUTPUTDIR) && \
706 $(ZIPEXE) -rq9 $(JGSS_WIN64_FILES_ZIP) $(JGSS_FILES_DIRS)
707 endif
708 @$(java-vm-cleanup)
709endif
710
711# Create rt.jar
712RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
713RT_JAR_ARGLIST=$(RT_JAR_FILELIST)_args
714$(RT_JAR_ARGLIST): $(RT_JAR_FILELIST)
715 $(prep-target)
716 $(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
717$(RT_JAR): $(RT_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
718 $(prep-target)
719 $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
720 @$(RT_JAR_ARGLIST) $(JAR_JFLAGS)
721 @$(java-vm-cleanup)
722
723# Meta-index construction to make core class loaders lazier
724
725BUILDMETAINDEX_JARFILE = $(ABS_BUILDTOOLJARDIR)/buildmetaindex.jar
726
727######################################################
728# JRE Image
729######################################################
730
731initial-image-jre-setup:
732 $(RM) -r $(JRE_IMAGE_DIR)
733 $(MKDIR) -p $(JRE_IMAGE_DIR)
734
735# 64-bit solaris jre image contains only the 64-bit add-on files.
736initial-image-jre-sol64:: initial-image-jre-setup \
737 $(JRE_LICENSES) $(JRE64_LICENSES)
738 @# Use tar instead of cp to preserve the symbolic links
739 for dir in bin lib ; do \
740 ( $(CD) $(OUTPUTDIR) && \
741 $(TAR) cf - `$(FIND) $$dir -name '$(ARCH)' -print` | \
742 ($(CD) $(JRE_IMAGE_DIR) && $(TAR) xf -) ) ; \
743 done
744 @# Remove some files from the jre area
745 for t in $(NOTJRETOOLS) ; do \
746 $(RM) $(JRE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
747 done
748 for l in $(NOTJRELIBS) ; do \
749 $(RM) $(JRE_IMAGE_DIR)/lib/$$l ; \
750 done
751 $(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'orb.idl'`
752 $(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl'`
753
754# Construct an initial jre image (initial jdk jre) no trimming or stripping
755initial-image-jre:: initial-image-jre-setup \
756 $(JRE_LICENSES) $(JRE_DOCFILES) \
757 $(RT_JAR) $(RESOURCES_JAR) $(JSSE_JAR) \
758 $(BUILDMETAINDEX_JARFILE)
759 @# Copy in bin directory
760 $(CD) $(OUTPUTDIR) && $(FIND) bin -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR)
761 @# CTE plugin security change require new empty directory lib/applet
762 $(MKDIR) -p $(JRE_IMAGE_DIR)/lib/applet
763 @# Copy in lib directory
764 $(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR)
765 @# Make sure all directories are read/execute for everyone
766 $(CHMOD) a+rx `$(FIND) $(JRE_IMAGE_DIR) -type d`
767 @# Remove some files from the jre area
768 for t in $(NOTJRETOOLS) ; do \
769 $(RM) $(JRE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
770 done
771 for l in $(NOTJRELIBS) ; do \
772 $(RM) $(JRE_IMAGE_DIR)/lib/$$l ; \
773 done
774 @# Remove orb.idl and ir.idl from jre
775 $(FIND) $(JRE_IMAGE_DIR)/lib -name 'orb.idl' -exec $(RM) \{} \;
776 $(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl' -exec $(RM) \{} \;
777 @# Copy in rt.jar & resources.jar file
778 $(CP) $(RT_JAR) $(JRE_IMAGE_DIR)/lib/rt.jar
779 $(CP) $(RESOURCES_JAR) $(JRE_IMAGE_DIR)/lib/resources.jar
780 $(CP) $(JSSE_JAR) $(JRE_IMAGE_DIR)/lib/jsse.jar
781 @# Generate meta-index to make boot and extension class loaders lazier
782 $(CD) $(JRE_IMAGE_DIR)/lib && \
783 $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
784 -o meta-index *.jar
785 @$(CD) $(JRE_IMAGE_DIR)/lib && $(java-vm-cleanup)
786 $(CD) $(JRE_IMAGE_DIR)/lib/ext && \
787 $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
788 -o meta-index *.jar
789 @$(CD) $(JRE_IMAGE_DIR)/lib/ext && $(java-vm-cleanup)
790ifeq ($(PLATFORM), windows)
791 @# Remove certain *.lib files
792 $(CD) $(JRE_IMAGE_DIR)/lib && \
793 $(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
794 hpi.$(LIB_SUFFIX) awt.$(LIB_SUFFIX) jawt.$(LIB_SUFFIX)
795endif # Windows
796ifneq ($(PLATFORM), windows)
797 $(call copy-man-pages,$(JRE_IMAGE_DIR),$(JRE_MAN_PAGES))
798endif # !windows
799
800# Trim out any extra files not for the jre shipment but wanted in the jdk jre.
801# (Note the jdk WILL want the jre image before this trimming)
802# Removes server VM on Windows 32bit.
803# Remove certain shared libraries that should not be in the jre image
804# but should be in the jdk jre image.
805trim-image-jre::
806ifeq ($(PLATFORM), windows)
807 ifeq ($(ARCH_DATA_MODEL), 32)
808 $(RM) -r $(JRE_IMAGE_DIR)/bin/server
809 endif
810 ifdef NOTJRE_SHARED_LIBS
811 for l in $(NOTJRE_SHARED_LIBS) ; do \
812 $(RM) $(JRE_IMAGE_DIR)/bin/$$l ; \
813 done ;
814 endif
815else # PLATFORM
816 ifdef NOTJRE_SHARED_LIBS
817 for l in $(NOTJRE_SHARED_LIBS) ; do \
818 $(RM) $(JRE_IMAGE_DIR)/lib/$(LIBARCH)/$$l ; \
819 done ;
820 endif
821endif # PLATFORM
822
823# Get list of all Elf files in the jre
824JRE_ELF_LIST=$(TEMPDIR)/jre-elf-files.list
825$(JRE_ELF_LIST):
826ifneq ($(PLATFORM), windows)
827 $(RM) $@
828 $(FIND) $(JRE_IMAGE_DIR)/lib -type f -name \*.$(LIB_SUFFIX) >> $@
829 $(FILE) `$(FIND) $(JRE_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
830 | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
831endif
832
833# Post process the image (strips and mcs on Elf files we are shipping)
834# (Note the jdk WILL want the jre image before this processing)
835process-image-jre:: $(JRE_ELF_LIST)
836ifneq ($(POST_STRIP_PROCESS), )
837 for f in `$(CAT) $(JRE_ELF_LIST)`; do \
838 $(CHMOD) u+w $${f}; \
839 $(ECHO) $(POST_STRIP_PROCESS) $${f}; \
840 $(POST_STRIP_PROCESS) $${f}; \
841 $(CHMOD) go-w $${f}; \
842 done
843endif
844ifneq ($(POST_MCS_PROCESS), )
845 for f in `$(CAT) $(JRE_ELF_LIST)`; do \
846 $(CHMOD) u+w $${f}; \
847 $(ECHO) $(POST_MCS_PROCESS) $${f}; \
848 $(POST_MCS_PROCESS) $${f}; \
849 $(CHMOD) go-w $${f}; \
850 done
851endif
852 $(RM) $(JRE_ELF_LIST)
853
854######################################################
855# JDK Image
856######################################################
857# Note: cpio ($(CPIO)) sometimes leaves directories without rx access.
858
859initial-image-jdk-setup:
860 $(RM) -r $(JDK_IMAGE_DIR)
861 $(MKDIR) -p $(JDK_IMAGE_DIR)/jre
862 ($(CD) $(JRE_IMAGE_DIR) && $(FIND) . -depth -print \
863 | $(CPIO) -pdum $(JDK_IMAGE_DIR)/jre )
864 $(RM) -rf $(JDK_IMAGE_DIR)/jre/man
865 $(CHMOD) a+rx `$(FIND) $(JDK_IMAGE_DIR) -type d`
866
867initial-image-jdk64-bindemos:
868 for dir in bin demo ; do \
869 ( $(CD) $(OUTPUTDIR) && \
870 $(TAR) cf - `$(FIND) $$dir -name '$(LIBARCH)' -print` | \
871 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) xf -) ) ; \
872 done
873
874# Solaris 64 bit image is special
875initial-image-jdk-sol64:: initial-image-jdk-setup \
876 initial-image-jdk64-bindemos \
877 $(JDK_LICENSES) $(JDK64_LICENSES)
878
879# DB files to add
880ifdef OPENJDK
881
882initial-image-jdk-db:
883
884else
885
886# Create the list of db *.zip files to bundle with jdk
887ABS_DB_PATH :=$(call FullPath,$(CLOSED_SHARE_SRC)/db)
888DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null)
889
890initial-image-jdk-db: $(DB_ZIP_LIST)
891 $(MKDIR) -p $(JDK_IMAGE_DIR)/db
892 for d in $(DB_ZIP_LIST); do \
893 ($(CD) $(JDK_IMAGE_DIR)/db && $(UNZIP) -o $$d); \
894 done
895
896endif
897
898# Standard jdk image
899initial-image-jdk:: initial-image-jdk-setup \
900 initial-image-jdk-db \
901 $(JDK_LICENSES) $(JDK_DOCFILES)
902 $(MKDIR) $(JDK_IMAGE_DIR)/lib
903 @#
904 @# Copy in the jars in lib that only belong in the JDK
905 @#
906 for l in $(NOTJRELIBS); do \
907 if [ -r $(LIBDIR)/$$l ]; then \
908 $(CP) $(LIBDIR)/$$l $(JDK_IMAGE_DIR)/lib; \
909 fi; \
910 done
911 ifeq ($(PLATFORM), windows)
912 @#
913 @# Audio soundbank - Bug# 4236400
914 @# Windows only: adding audio files to JDK's jre/lib directory.
915 @#
916 ($(CD) $(LIBDIR) && $(TAR) cf - \
917 `$(FIND) audio -depth -print`) | \
918 ($(CD) $(JDK_IMAGE_DIR)/jre/lib && $(TAR) xf -)
919 @#
920 @#
921 @# lib/
922 @#
923 $(CP) $(LIBDIR)/$(LIB_PREFIX)jvm.$(LIB_SUFFIX) $(JDK_IMAGE_DIR)/lib
924 $(CP) $(LIBDIR)/$(LIB_PREFIX)jawt.$(LIB_SUFFIX) $(JDK_IMAGE_DIR)/lib
925 @#
926 @# bin/
927 @#
928 @# copy all EXE files and only certain DLL files from BINDIR
929 $(MKDIR) -p $(JDK_IMAGE_DIR)/bin
930 $(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_IMAGE_DIR)/bin
931 $(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
932 ifeq ($(ARCH_DATA_MODEL), 32)
933 ifeq ($(COMPILER_VERSION), VS2003)
934 $(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
935 endif
936 endif
937 else # PLATFORM
938 @#
939 @# bin/
940 @#
941 ($(CD) $(BINDIR)/.. && $(TAR) cf - \
942 `$(FIND) bin \( -type f -o -type l \) -print `) | \
943 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) xf -)
944 endif # PLATFORM
945 @#
946 @# files that might not exist need to be touched.
947 @#
948 $(TOUCH) $(CLASSBINDIR)/META-INF/services/com.sun.tools.xjc.Plugin
949 @#
950 @# lib/tools.jar
951 @#
952 $(BOOT_JAR_CMD) c0f $(LIBDIR)/tools.jar $(addprefix \
953 -C $(CLASSBINDIR) , $(TOOLS)) \
954 $(JAR_JFLAGS)
955 @$(java-vm-cleanup)
956 $(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
957 @#
958 @# lib/ct.sym
959 @#
960 $(MKDIR) -p $(OUTPUTDIR)/symbols/META-INF/sym
961 $(JAVAC_CMD) -XDprocess.packages -proc:only \
962 -processor com.sun.tools.javac.sym.CreateSymbols \
963 -Acom.sun.tools.javac.sym.Jar=$(RT_JAR) \
964 -Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
965 $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS)
966 $(BOOT_JAR_CMD) c0f $(LIBDIR)/ct.sym \
967 -C $(OUTPUTDIR)/symbols META-INF $(JAR_JFLAGS)
968 @$(java-vm-cleanup)
969 $(CP) $(LIBDIR)/ct.sym $(JDK_IMAGE_DIR)/lib/ct.sym
970 @#
971 @# CORBA supported orb.idl and ir.idl should be copied to lib
972 @#
973 $(CP) $(LIBDIR)/orb.idl $(JDK_IMAGE_DIR)/lib/orb.idl
974 $(CP) $(LIBDIR)/ir.idl $(JDK_IMAGE_DIR)/lib/ir.idl
975 ifeq ($(PLATFORM), linux)
976 @#
977 @# on Linux copy jexec from jre/lib to /lib
978 @#
979 $(CP) $(LIBDIR)/jexec $(JDK_IMAGE_DIR)/lib/jexec
980 endif # PLATFORM
981 @#
982 @# src.zip
983 @#
984 $(MKDIR) -p $(JDK_IMAGE_DIR)/src
985 @#
986 @# The '*-*' pattern in the find command excludes files named with dashes,
987 @# such as the java.nio templates for generated classes
988 @#
989 @# The Linux 'tar' command cannot handle the huge command line argument
990 @# generated by the more efficient solaris/windows method of copying files.
991 @# So for Linux, make use of the -T option (like Solaris' -I option) of
992 @# obtaining the list of files from a file. MKS tar has no such option.
993 ifeq ($(PLATFORM), linux)
994 for d in $(SOURCE_DIRS); do \
995 $(RM) $(ABS_TEMPDIR)/src-files.list; \
996 ($(CD) $$d && \
997 for sd in $(SOURCES) ; do \
998 if [ -d $$sd ] ; then \
999 $(FIND) $$sd $(SOURCE_FILES_filter) \
1000 -name '*.java' -print \
1001 >> $(ABS_TEMPDIR)/src-files.list ; \
1002 fi; \
1003 done ; \
1004 ) ; \
1005 if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \
1006 ($(CD) $$d && $(TAR) cf - -T $(ABS_TEMPDIR)/src-files.list ) \
1007 | ($(CD) $(JDK_IMAGE_DIR)/src && $(TAR) xf -); \
1008 fi; \
1009 done
1010 else
1011 for d in $(SOURCE_DIRS); do \
1012 $(RM) $(ABS_TEMPDIR)/src-files.list; \
1013 ($(CD) $$d && \
1014 for sd in $(SOURCES) ; do \
1015 if [ -d $$sd ] ; then \
1016 $(FIND) $$sd $(SOURCE_FILES_filter) \
1017 -name '*.java' -print \
1018 >> $(ABS_TEMPDIR)/src-files.list ; \
1019 fi; \
1020 done ; \
1021 ) ; \
1022 if [ -f $(ABS_TEMPDIR)/src-files.list ] ; then \
1023 ($(CD) $$d && $(TAR) cf - `$(CAT) $(ABS_TEMPDIR)/src-files.list`) \
1024 | ($(CD) $(JDK_IMAGE_DIR)/src && $(TAR) xf -); \
1025 fi; \
1026 done
1027 endif
1028 $(RM) $(ABS_TEMPDIR)/src-files.list
1029 $(CHMOD) -R +w $(JDK_IMAGE_DIR)/src
1030 $(MKDIR) -p $(JDK_IMAGE_DIR)/src/launcher
1031 $(CP) $(SHARE_SRC)/bin/java.c $(JDK_IMAGE_DIR)/src/launcher
1032 $(CP) $(SHARE_SRC)/bin/java.h $(JDK_IMAGE_DIR)/src/launcher
1033 $(CP) $(SHARE_SRC)/bin/manifest_info.h $(JDK_IMAGE_DIR)/src/launcher
1034 $(CP) $(SHARE_SRC)/bin/parse_manifest.c $(JDK_IMAGE_DIR)/src/launcher
1035 $(CP) $(SHARE_SRC)/bin/version_comp.c $(JDK_IMAGE_DIR)/src/launcher
1036 $(CP) $(SHARE_SRC)/bin/version_comp.h $(JDK_IMAGE_DIR)/src/launcher
1037 $(CP) $(SHARE_SRC)/bin/wildcard.h $(JDK_IMAGE_DIR)/src/launcher
1038 $(CP) $(SHARE_SRC)/bin/wildcard.c $(JDK_IMAGE_DIR)/src/launcher
1039 $(CP) $(SHARE_SRC)/bin/jli_util.h $(JDK_IMAGE_DIR)/src/launcher
1040 $(CP) $(SHARE_SRC)/bin/jli_util.c $(JDK_IMAGE_DIR)/src/launcher
1041 $(CP) $(SHARE_SRC)/bin/splashscreen_stubs.c $(JDK_IMAGE_DIR)/src/launcher
1042 $(CP) $(SHARE_SRC)/bin/splashscreen.h $(JDK_IMAGE_DIR)/src/launcher
1043 $(CP) $(PLATFORM_SRC)/bin/java_md.c $(JDK_IMAGE_DIR)/src/launcher
1044 $(CP) $(PLATFORM_SRC)/bin/java_md.h $(JDK_IMAGE_DIR)/src/launcher
1045 $(CD) $(JDK_IMAGE_DIR)/src && $(ZIPEXE) -qr ../src.zip *
1046 $(RM) -r $(JDK_IMAGE_DIR)/src
1047 @#
1048 @# demo, include
1049 @#
1050 $(CP) -r -f $(DEMODIR) $(JDK_IMAGE_DIR)
1051 $(CP) -r -f $(SAMPLEDIR) $(JDK_IMAGE_DIR)
1052 $(CP) -r $(INCLUDEDIR) $(JDK_IMAGE_DIR)
1053 @#
1054 @# Swing BeanInfo generation
1055 @#
1056 $(CD) javax/swing/beaninfo && $(MAKE) swing-1.2-beans
1057ifneq ($(PLATFORM), windows)
1058 $(call copy-man-pages,$(JDK_IMAGE_DIR),$(JDK_MAN_PAGES))
1059endif # !windows
1060
1061# Trim out files we don't want to ship
1062trim-image-jdk::
1063 @# Remove tools that should not be part of SDK.
1064 for t in $(NOTJDKTOOLS); do \
1065 $(RM) $(JDK_IMAGE_DIR)/bin/$${t}$(EXE_SUFFIX) \
1066 $(JDK_IMAGE_DIR)/bin/*/native_threads/$${t}$(EXE_SUFFIX); \
1067 done
1068
1069# Get list of Elf files in the jdk
1070JDK_ELF_LIST=$(TEMPDIR)/jdk-elf-files.list
1071$(JDK_ELF_LIST):
1072ifneq ($(PLATFORM), windows)
1073 $(RM) $@
1074 $(FIND) $(JDK_IMAGE_DIR)/jre/lib -type f -name \*.$(LIB_SUFFIX) >> $@
1075 $(FILE) `$(FIND) $(JDK_IMAGE_DIR)/jre/bin -type f -name \*$(EXE_SUFFIX)` \
1076 | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
1077 file `$(FIND) $(JDK_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
1078 | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
1079endif
1080
1081# Post process the image (strips and mcs on files we are shipping)
1082process-image-jdk:: $(JDK_ELF_LIST)
1083ifneq ($(POST_STRIP_PROCESS), )
1084 for f in `$(CAT) $(JDK_ELF_LIST)`; do \
1085 $(CHMOD) u+w $${f}; \
1086 $(ECHO) $(POST_STRIP_PROCESS) $${f}; \
1087 $(POST_STRIP_PROCESS) $${f}; \
1088 $(CHMOD) go-w $${f}; \
1089 done
1090endif
1091ifneq ($(POST_MCS_PROCESS), )
1092 for f in `$(CAT) $(JDK_ELF_LIST)`; do \
1093 $(CHMOD) u+w $${f}; \
1094 $(ECHO) $(POST_MCS_PROCESS) $${f}; \
1095 $(POST_MCS_PROCESS) $${f}; \
1096 $(CHMOD) go-w $${f}; \
1097 done
1098endif
1099 $(RM) $(JDK_ELF_LIST)
1100
1101###################################################################
1102# What do we compare against
1103###################################################################
1104
1105# The temporary files and areas created
1106TEMP_PREV_JRE_BASE_DIR=$(TEMPDIR)/previous_jre
1107TEMP_PREV_JDK_BASE_DIR=$(TEMPDIR)/previous_jdk
1108TEMP_PREV_JRE_COMPARISON=$(TEMP_PREV_JRE_BASE_DIR)/previous_jre_comparison.txt
1109TEMP_PREV_JDK_COMPARISON=$(TEMP_PREV_JDK_BASE_DIR)/previous_jdk_comparison.txt
1110TEMP_PREV_JRE_IMAGE_DIR=$(TEMP_PREV_JRE_BASE_DIR)/jre$(PREVIOUS_JDK_VERSION)
1111TEMP_PREV_JDK_IMAGE_DIR=$(TEMP_PREV_JDK_BASE_DIR)/jdk$(PREVIOUS_JDK_VERSION)
1112
1113# unbundle(sourcedir,bundlename,destdir)
1114# logic is slightly different if a .tar.gz file (linux)
1115define unbundle
1116$(RM) -r $3
1117$(MKDIR) -p $3
1118$(CP) $1 $3
1119if [ "`$(BASENAME) $2 .gz`" != "$2" ] ; then \
1120 ( $(CD) $3 && ( $(GUNZIP) -dc $2 | $(TAR) xf - ) && $(RM) $2 ); \
1121else \
1122 ( $(CD) $3 && $(TAR) xf $2 && $(RM) $2 ); \
1123fi
1124( $(CD) $3 && $(RM) $2 )
1125endef
1126
1127# In general, ignore the fastdebug tree, and changes in the demo and sample area
1128COMPARE_FILTER = | $(EGREP) -v /fastdebug/ | $(EGREP) -v /demo/ | $(EGREP) -v /sample/
1129
1130# If a previuous image is provided, no need to install it.
1131ifdef PREVIOUS_JDK_IMAGE
1132
1133 # Just use the pre-installed images
1134 PREV_JRE_IMAGE_DIR=$(PREVIOUS_JDK_IMAGE)/jre
1135 PREV_JDK_IMAGE_DIR=$(PREVIOUS_JDK_IMAGE)
1136
1137else
1138
1139 # Use the temp images we will create
1140 PREV_JRE_IMAGE_DIR=$(TEMP_PREV_JRE_IMAGE_DIR)
1141 PREV_JDK_IMAGE_DIR=$(TEMP_PREV_JDK_IMAGE_DIR)
1142
1143# Force the installation in this case
1144compare-image:: install-previous-sanity install-previous-jre install-previous-jdk
1145
1146# Unbundle the jre
1147$(TEMP_PREV_JRE_IMAGE_DIR)/bin/java$(EXE_SUFFIX): $(PREVIOUS_JRE_BUNDLE)
1148 $(call unbundle,$(PREVIOUS_JRE_BUNDLE),$(PREVIOUS_JRE_FILE),$(TEMP_PREV_JRE_BASE_DIR))
1149 $(TOUCH) $@
1150
1151# Unbundle the jdk
1152$(TEMP_PREV_JDK_IMAGE_DIR)/bin/java$(EXE_SUFFIX): $(PREVIOUS_JDK_BUNDLE)
1153 $(call unbundle,$(PREVIOUS_JDK_BUNDLE),$(PREVIOUS_JDK_FILE),$(TEMP_PREV_JDK_BASE_DIR))
1154 $(TOUCH) $@
1155
1156endif
1157
1158# Make sure all images have a java in them (used as the touch file)
1159install-previous-sanity:
1160 @if [ ! -f $(PREVIOUS_JRE_BUNDLE) ]; then \
1161 $(ECHO) "ERROR: You do not have access to the previous java release jre bundles. \n" \
1162 " Please check your access to \n" \
1163 " $(PREVIOUS_JRE_BUNDLE) \n" \
1164 " and/or check your value of ALT_PREVIOUS_RELEASE_PATH or ALT_PREVIOUS_JRE_FILE \n" \
1165 " This will affect you if you build the images target. \n" \
1166 "" >> $(ERROR_FILE) ; \
1167 fi
1168 @if [ ! -f $(PREVIOUS_JDK_BUNDLE) ]; then \
1169 $(ECHO) "ERROR: You do not have access to the previous java release sdk bundles. \n" \
1170 " Please check your access to \n" \
1171 " $(PREVIOUS_sdk_BUNDLE) \n" \
1172 " and/or check your value of ALT_PREVIOUS_RELEASE_PATH or ALT_PREVIOUS_JDK_FILE. \n" \
1173 " This will affect you if you build the images target. \n" \
1174 "" >> $(ERROR_FILE) ; \
1175 fi
1176install-previous-jre: $(PREV_JRE_IMAGE_DIR)/bin/java$(EXE_SUFFIX)
1177install-previous-jdk: $(PREV_JDK_IMAGE_DIR)/bin/java$(EXE_SUFFIX)
1178
1179# Create the jre comparison report
1180$(TEMP_PREV_JRE_COMPARISON): install-previous-jre $(DIRDIFF_JARFILE)
1181 $(prep-target)
1182 $(BOOT_JAVA_CMD) -jar $(DIRDIFF_JARFILE) \
1183 $(PREV_JRE_IMAGE_DIR) $(JRE_IMAGE_DIR) | $(SORT) > $@
1184 @$(java-vm-cleanup)
1185
1186# Create the jdk comparison report
1187$(TEMP_PREV_JDK_COMPARISON): install-previous-jdk $(DIRDIFF_JARFILE)
1188 $(prep-target)
1189 $(BOOT_JAVA_CMD) -jar $(DIRDIFF_JARFILE) \
1190 $(PREV_JDK_IMAGE_DIR) $(JDK_IMAGE_DIR) | $(SORT) > $@
1191 @$(java-vm-cleanup)
1192
1193# Clean up names in the messages printed out
1194CAT_FILTER = $(SED) -e "s@$(JDK_IMAGE_DIR)@JDK_IMAGE@g" \
1195 -e "s@$(JRE_IMAGE_DIR)@JRE_IMAGE@g"
1196
1197# Report on the jre image comparison
1198compare-image-jre: $(TEMP_PREV_JRE_COMPARISON)
1199 @$(ECHO) "JRE Image Comparison to version $(PREVIOUS_JDK_VERSION)"
1200 @$(ECHO) " Previous: $(PREV_JRE_IMAGE_DIR)"
1201 @$(ECHO) " Current: $(JRE_IMAGE_DIR)"
1202 @$(CAT) $< $(COMPARE_FILTER) | $(CAT_FILTER)
1203 ( $(ECHO) " " ; $(CAT) $< | $(CAT_FILTER) ; $(ECHO) " " ) >> $(WARNING_FILE)
1204
1205# Report on the jdk image comparison
1206compare-image-jdk: $(TEMP_PREV_JDK_COMPARISON)
1207 @$(ECHO) "JDK Image Comparison to version $(PREVIOUS_JDK_VERSION)"
1208 @$(ECHO) " Previous: $(PREV_JDK_IMAGE_DIR)"
1209 @$(ECHO) " Current: $(JDK_IMAGE_DIR)"
1210 $(CAT) $< $(COMPARE_FILTER) | $(CAT_FILTER)
1211 ( $(ECHO) " " ; $(CAT) $< | $(CAT_FILTER) ; $(ECHO) " " ) >> $(WARNING_FILE)
1212
1213# Do both image comparisons
1214compare-image:: compare-image-jre compare-image-jdk
1215
1216# Clean up any temp images and reports
1217compare-image-clobber:
1218 $(RM) -r $(TEMP_PREV_JRE_BASE_DIR)
1219 $(RM) -r $(TEMP_PREV_JDK_BASE_DIR)
1220
1221######################################################
1222# clobber
1223######################################################
1224images-clobber::
1225 $(RM) -r $(REORDER_TEMPDIR)
1226 $(RM) -r $(JARFILELISTS_TEMPDIR)
1227ifeq ($(ARCH_DATA_MODEL), 32)
1228 $(CD) javax/swing/beaninfo && $(MAKE) swingbeans.clobber
1229 $(RM) -r $(CLASSBINDIR)/META-INF
1230 $(RM) $(TEMPDIR)/tmp.jar
1231endif
1232ifeq ($(PLATFORM), linux)
1233 $(RM) -r $(OUTPUTDIR)/$(ARCH)
1234endif
1235ifeq ($(PLATFORM), windows)
1236 $(RM) $(TEMPDIR)/rebase.input
1237endif
1238 $(RM) -r $(JDK_IMAGE_DIR)
1239 $(RM) -r $(JDK_DEBUG_IMAGE_DIR)
1240 $(RM) -r $(JRE_IMAGE_DIR)
1241
1242images images-clobber::
1243 @$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..."
1244 @$(java-vm-cleanup)
1245
1246.PHONY: images image-jre image-jdk \
1247 initial-image-jre initial-image-jdk \
1248 initial-image-jre-sol64 initial-image-jdk-sol64 \
1249 initial-image-jdk-setup \
1250 initial-image-jdk-db \
1251 initial-image-jdk64-bindemos \
1252 initial-image-jre-setup \
1253 trim-image-jre trim-image-jdk \
1254 process-image-jre process-image-jdk \
1255 install-previous-jre install-previous-jdk \
1256 compare-image-jre compare-image-jdk \
1257 compare-image compare-image-clobber \
1258 images-clobber
1259
1260# Force rule
1261FRC:
1262