source: trunk/openjdk/jdk/make/common/Release.gmk

Last change on this file was 278, checked in by dmik, 14 years ago

trunk: Merged in openjdk6 b22 from branches/vendor/oracle.

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