jdk/makefiles/common/Modules.gmk
changeset 13164 72c5d01a857d
parent 13082 9b19b2302c28
child 13167 efec101d7d87
equal deleted inserted replaced
13082:9b19b2302c28 13164:72c5d01a857d
     1 #
       
     2 # Copyright (c) 2009, 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 
       
    26 JDK_MODULE_IMAGE_DIR = $(ABS_OUTPUTDIR)/jdk-module-image
       
    27 JRE_MODULE_IMAGE_DIR = $(ABS_OUTPUTDIR)/jre-module-image
       
    28 
       
    29 #
       
    30 # modules   Target to build jdk and jre module image
       
    31 #
       
    32 #           There is one jar file per module containing classes only.
       
    33 #           All module jars are currently placed under jre/lib directory.
       
    34 #
       
    35 # Open issues that need further investigation:
       
    36 # 1. Classes in jre/lib/ext/dnsns.jar are currently put in jre/lib/jndi-dns
       
    37 #    module.  META-INF/services file is not installed.
       
    38 # 2. Signed jars
       
    39 #    For JDK build, signed jars are copied to the build.
       
    40 #    All jars in the module image are unsigned.
       
    41 
       
    42 MODULE_IMAGEBINDIR = bin
       
    43 
       
    44 #
       
    45 # Targets.
       
    46 #
       
    47 INITIAL_MODULE_IMAGE_JRE=initial-module-image-jre
       
    48 INITIAL_MODULE_IMAGE_JDK=initial-module-image-jdk
       
    49 ifeq ($(PLATFORM), solaris)
       
    50   ifeq ($(ARCH_DATA_MODEL), 64)
       
    51     INITIAL_MODULE_IMAGE_JRE=initial-module-image-jre-sol64
       
    52     INITIAL_MODULE_IMAGE_JDK=initial-module-image-jdk-sol64
       
    53   endif
       
    54 endif
       
    55 
       
    56 modules modules-clobber \
       
    57 initial-module-image-jre initial-module-image-jdk \
       
    58 initial-module-image-jre-sol64 initial-module-image-jdk-sol64 \
       
    59 trim-module-image-jre trim-module-image-jdk \
       
    60 process-module-image-jre process-module-image-jdk ::
       
    61 	@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
       
    62 
       
    63 # Order is important here, trim jre after jdk image is created
       
    64 modules:: gen-modules \
       
    65 	 $(INITIAL_MODULE_IMAGE_JRE) $(INITIAL_MODULE_IMAGE_JDK) \
       
    66 	 trim-module-image-jre trim-module-image-jdk \
       
    67 	 process-module-image-jre process-module-image-jdk
       
    68 
       
    69 # Don't use these
       
    70 module-image-jre:: initial-module-image-jre trim-module-image-jre process-module-image-jre
       
    71 module-image-jdk:: initial-module-image-jdk trim-module-image-jdk process-module-image-jdk
       
    72 
       
    73 #
       
    74 # Paths to these files we need
       
    75 JDK_MODULE_LICENSES   = $(LICENSE_DOCLIST_JDK:%=$(JDK_MODULE_IMAGE_DIR)/%)
       
    76 JDK_MODULE_64_LICENSES = $(LICENSE_DOCLIST_JDK:%=$(JDK_MODULE_IMAGE_DIR)/%64)
       
    77 JDK_MODULE_DOCFILES   = $(OTHER_DOCLIST_JDK:%=$(JDK_MODULE_IMAGE_DIR)/%)
       
    78 
       
    79 JRE_MODULE_LICENSES   = $(LICENSE_DOCLIST_JRE:%=$(JRE_MODULE_IMAGE_DIR)/%)
       
    80 JRE_MODULE_64_LICENSES = $(LICENSE_DOCLIST_JRE:%=$(JRE_MODULE_IMAGE_DIR)/%64)
       
    81 JRE_MODULE_DOCFILES   = $(OTHER_DOCLIST_JRE:%=$(JRE_MODULE_IMAGE_DIR)/%)
       
    82 JRE_MODULE_DOCFILES  += $(JRE_NAMECHANGE_DOCLIST:%=$(JRE_MODULE_IMAGE_DIR)/%$(TEXT_SUFFIX))
       
    83 
       
    84 ###### RULES
       
    85 
       
    86 # JDK files
       
    87 $(JDK_MODULE_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%
       
    88 	$(process-doc-file)
       
    89 # Removes LICENSE_VERSION or not
       
    90 ifdef LICENSE_VERSION
       
    91 $(JDK_MODULE_IMAGE_DIR)/%: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
       
    92 	$(process-doc-file)
       
    93 $(JDK_MODULE_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%$(LICENSE_VERSION)
       
    94 	$(process-doc-file)
       
    95 else
       
    96 $(JDK_MODULE_IMAGE_DIR)/%64: $(SHARE_JDK_DOC_SRC)/%
       
    97 	$(process-doc-file)
       
    98 endif
       
    99 
       
   100 # JRE files 
       
   101 $(JRE_MODULE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%
       
   102 	$(process-doc-file)
       
   103 # Add $(TEXT_SUFFIX) suffix
       
   104 ifdef TEXT_SUFFIX
       
   105 $(JRE_MODULE_IMAGE_DIR)/%$(TEXT_SUFFIX): $(SHARE_JRE_DOC_SRC)/%
       
   106 	$(process-doc-file)
       
   107 endif
       
   108 # Removes LICENSE_VERSION or not
       
   109 ifdef LICENSE_VERSION
       
   110 $(JRE_MODULE_IMAGE_DIR)/%: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
       
   111 	$(process-doc-file)
       
   112 $(JRE_MODULE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%$(LICENSE_VERSION)
       
   113 	$(process-doc-file)
       
   114 else
       
   115 $(JRE_MODULE_IMAGE_DIR)/%64: $(SHARE_JRE_DOC_SRC)/%
       
   116 	$(process-doc-file)
       
   117 endif
       
   118 
       
   119 ######################################################
       
   120 # JRE Image
       
   121 ######################################################
       
   122 
       
   123 MODULES_LIST = $(MODULES_TEMPDIR)/classlist/modules.list
       
   124 
       
   125 # Modules in the jre/lib/security directory
       
   126 POLICY_MODULES = US_export_policy local_policy
       
   127 
       
   128 # Modules in the modules/ext directory
       
   129 EXT_MODULES = localedata security-sunec security-sunjce
       
   130 
       
   131 # Build PKCS#11 on all platforms except 64-bit Windows.
       
   132 PKCS11 = security-sunpkcs11
       
   133 ifeq ($(ARCH_DATA_MODEL), 64)
       
   134   ifeq ($(PLATFORM), windows)
       
   135     PKCS11 =
       
   136   endif
       
   137 endif
       
   138 
       
   139 EXT_MODULES += $(PKCS11)
       
   140 
       
   141 # Build Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
       
   142 ifeq ($(PLATFORM), windows)
       
   143   ifneq ($(ARCH_DATA_MODEL), 64)
       
   144     EXT_MODULES += security-sunmscapi
       
   145   endif
       
   146 endif
       
   147 
       
   148 # Modules for JDK only
       
   149 JDK_MODULES = tools
       
   150 
       
   151 gen-modules:
       
   152 	$(CD) modules; $(MAKE) all
       
   153 
       
   154 initial-module-image-jre-setup:
       
   155 	$(RM) -r $(JRE_MODULE_IMAGE_DIR)
       
   156 	$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)
       
   157 
       
   158 # 64-bit solaris jre image contains only the 64-bit add-on files.
       
   159 initial-module-image-jre-sol64:: initial-module-image-jre-setup \
       
   160 			  $(JRE_MODULE_LICENSES) $(JRE_MODULE_64_LICENSES)
       
   161 	@# Use tar instead of cp to preserve the symbolic links
       
   162 	for dir in bin lib ; do \
       
   163 	  ( $(CD) $(OUTPUTDIR) && \
       
   164 		$(TAR) cf - `$(FIND) $$dir -name '$(ARCH)' -print` | \
       
   165 		($(CD) $(JRE_MODULE_IMAGE_DIR) && $(TAR) xf -) ) ; \
       
   166 	done
       
   167 	@# Remove some files from the jre area
       
   168 	for t in $(NOTJRETOOLS) ; do \
       
   169 	    $(RM) $(JRE_MODULE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
       
   170 	done
       
   171 	$(RM) `$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'orb.idl'`
       
   172 	$(RM) `$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'ir.idl'`
       
   173 
       
   174 # Construct an initial jre image (initial jdk jre) no trimming or stripping
       
   175 initial-module-image-jre:: initial-module-image-jre-setup \
       
   176 		    $(JRE_LICENSES) $(JRE_MODULE_DOCFILES) \
       
   177 		    $(BUILDMETAINDEX_JARFILE)
       
   178 	@# Copy in bin directory
       
   179 	$(CD) $(OUTPUTDIR) && $(FIND) bin -depth | $(CPIO) -pdum $(JRE_MODULE_IMAGE_DIR)
       
   180 	@# CTE plugin security change require new empty directory lib/applet
       
   181 	$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)/lib/applet
       
   182 	@# Copy files but not .jar in lib directory 
       
   183 	$(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(EGREP) -v ".jar$$" | $(CPIO) -pdum $(JRE_MODULE_IMAGE_DIR)
       
   184 	@#
       
   185 	@# copy modules to jre/lib
       
   186 	@#
       
   187 	for m in `$(NAWK) '{print $$1}' $(MODULES_LIST)` ; do \
       
   188 	    $(CP) $(MODULES_DIR)/$$m/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib ; \
       
   189 	done
       
   190 	$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)/lib/ext
       
   191 	for m in $(EXT_MODULES) ; do \
       
   192            $(MV) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib/ext ; \
       
   193         done
       
   194 	for m in $(POLICY_MODULES) ; do \
       
   195            $(MV) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib/security; \
       
   196         done
       
   197 	@# Remove jdk modules
       
   198 	for m in $(JDK_MODULES) ; do \
       
   199            $(RM) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar ; \
       
   200         done
       
   201 
       
   202 	@# Make sure all directories are read/execute for everyone
       
   203 	$(CHMOD) a+rx `$(FIND) $(JRE_MODULE_IMAGE_DIR) -type d`
       
   204 	@# Remove some files from the jre area
       
   205 	for t in $(NOTJRETOOLS) ; do \
       
   206 	    $(RM) $(JRE_MODULE_IMAGE_DIR)/bin$(ISA_DIR)/$$t ; \
       
   207 	done
       
   208 	@# Remove orb.idl and ir.idl from jre
       
   209 	$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'orb.idl' -exec $(RM) \{} \;
       
   210 	$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -name 'ir.idl' -exec $(RM) \{} \;
       
   211 	@# Generate meta-index to make boot and extension class loaders lazier
       
   212 	$(CD) $(JRE_MODULE_IMAGE_DIR)/lib && \
       
   213 	    $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
       
   214 		-o meta-index *.jar
       
   215 	@$(CD) $(JRE_MODULE_IMAGE_DIR)/lib && $(java-vm-cleanup)
       
   216 	$(CD) $(JRE_MODULE_IMAGE_DIR)/lib/ext && \
       
   217 	    $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
       
   218 		-o meta-index *.jar
       
   219 	@$(CD) $(JRE_MODULE_IMAGE_DIR)/lib/ext && $(java-vm-cleanup)
       
   220 ifeq ($(PLATFORM), windows)
       
   221 	@# Remove certain *.lib files
       
   222 	$(CD) $(JRE_MODULE_IMAGE_DIR)/lib && \
       
   223             $(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
       
   224                   hpi.$(LIB_SUFFIX) awt.$(LIB_SUFFIX) jawt.$(LIB_SUFFIX)
       
   225   ifeq ($(ARCH_DATA_MODEL), 32)
       
   226 	@# The Java Kernel JRE image ships with a special VM.  It is not included
       
   227 	@# in the full JRE image, so remove it.  Also, is it only for 32-bit windows.
       
   228 	$(CD) $(JRE_MODULE_IMAGE_DIR)/bin && $(RM) -r kernel
       
   229   endif
       
   230 endif # Windows
       
   231 ifneq ($(PLATFORM), windows)
       
   232 	$(call copy-man-pages,$(JRE_MODULE_IMAGE_DIR),$(JRE_MAN_PAGES))
       
   233 endif # !windows
       
   234 
       
   235 # Trim out any extra files not for the jre shipment but wanted in the jdk jre.
       
   236 #   (Note the jdk WILL want the jre image before this trimming)
       
   237 #   Removes server VM on Windows 32bit.
       
   238 #   Remove certain shared libraries that should not be in the jre image
       
   239 #      but should be in the jdk jre image.
       
   240 trim-module-image-jre::
       
   241 ifeq ($(PLATFORM), windows)
       
   242   ifeq ($(ARCH_DATA_MODEL), 32)
       
   243 	$(RM) -r $(JRE_MODULE_IMAGE_DIR)/bin/server
       
   244   endif
       
   245   ifdef NOTJRE_SHARED_LIBS
       
   246 	for l in $(NOTJRE_SHARED_LIBS) ; do \
       
   247 	    $(RM) $(JRE_MODULE_IMAGE_DIR)/bin/$$l ; \
       
   248 	done ;
       
   249   endif
       
   250 else # PLATFORM
       
   251   ifdef NOTJRE_SHARED_LIBS
       
   252 	for l in $(NOTJRE_SHARED_LIBS) ; do \
       
   253 	    $(RM) $(JRE_MODULE_IMAGE_DIR)/lib/$(LIBARCH)/$$l ; \
       
   254 	done ;
       
   255   endif
       
   256 endif # PLATFORM
       
   257 
       
   258 # Get list of all Elf files in the jre
       
   259 JRE_MODULE_ELF_LIST=$(MODULES_TEMPDIR)/jre-elf-files.list
       
   260 $(JRE_MODULE_ELF_LIST):
       
   261 	@$(prep-target)
       
   262 ifneq ($(PLATFORM), windows)
       
   263 	$(RM) $@
       
   264 	$(FIND) $(JRE_MODULE_IMAGE_DIR)/lib -type f -name \*.$(LIB_SUFFIX) >> $@
       
   265 	$(FILE) `$(FIND) $(JRE_MODULE_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
       
   266 	    | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
       
   267 endif
       
   268 
       
   269 # Post process the image (strips and mcs on Elf files we are shipping)
       
   270 #   (Note the jdk WILL want the jre image before this processing)
       
   271 process-module-image-jre:: $(JRE_MODULE_ELF_LIST)
       
   272 ifneq ($(POST_STRIP_PROCESS), )
       
   273 	for f in `$(CAT) $(JRE_MODULE_ELF_LIST)`; do \
       
   274 	  $(CHMOD) u+w $${f}; \
       
   275 	  $(ECHO) $(POST_STRIP_PROCESS) $${f}; \
       
   276 	  $(POST_STRIP_PROCESS) $${f}; \
       
   277 	  $(CHMOD) go-w $${f}; \
       
   278 	done
       
   279 endif
       
   280 ifneq ($(POST_MCS_PROCESS), )
       
   281 	for f in `$(CAT) $(JRE_MODULE_ELF_LIST)`; do \
       
   282 	  $(CHMOD) u+w $${f}; \
       
   283 	  $(ECHO) $(POST_MCS_PROCESS) $${f}; \
       
   284 	  $(POST_MCS_PROCESS) $${f}; \
       
   285 	  $(CHMOD) go-w $${f}; \
       
   286 	done
       
   287 endif
       
   288 	$(RM) $(JRE_MODULE_ELF_LIST)
       
   289 
       
   290 ######################################################
       
   291 # JDK Image
       
   292 ######################################################
       
   293 # Note: cpio ($(CPIO)) sometimes leaves directories without rx access.
       
   294 
       
   295 initial-module-image-jdk-setup:
       
   296 	$(RM) -r $(JDK_MODULE_IMAGE_DIR)
       
   297 	$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/jre
       
   298 	($(CD) $(JRE_MODULE_IMAGE_DIR) && $(FIND) . -depth -print \
       
   299 	      | $(CPIO) -pdum $(JDK_MODULE_IMAGE_DIR)/jre )
       
   300 	$(RM) -rf $(JDK_MODULE_IMAGE_DIR)/jre/man
       
   301 	$(CHMOD) a+rx `$(FIND) $(JDK_MODULE_IMAGE_DIR) -type d`
       
   302 
       
   303 initial-module-image-jdk64-bindemos:
       
   304 	for dir in bin demo ; do \
       
   305 	  ( $(CD) $(OUTPUTDIR) && \
       
   306 		$(TAR) cf - `$(FIND) $$dir -name '$(LIBARCH)' -print` | \
       
   307 		($(CD) $(JDK_MODULE_IMAGE_DIR) && $(TAR) xf -) ) ; \
       
   308         done
       
   309 
       
   310 # Solaris 64 bit image is special
       
   311 initial-module-image-jdk-sol64:: initial-module-image-jdk-setup \
       
   312 			  initial-module-image-jdk64-bindemos \
       
   313 			  $(JDK_MODULE_LICENSES) $(JDK_MODULARLIZED_64_LICENSES)
       
   314 
       
   315 # DB files to add
       
   316 ifeq ($(OPENJDK),true)
       
   317 
       
   318 initial-module-image-jdk-db:
       
   319 
       
   320 else
       
   321 
       
   322 # Create the list of db *.zip files to bundle with jdk
       
   323 ABS_DB_PATH  :=$(call FullPath,$(CLOSED_SHARE_SRC)/db)
       
   324 DB_ZIP_LIST = $(shell $(LS) $(ABS_DB_PATH)/*.zip 2>/dev/null)
       
   325 
       
   326 initial-module-image-jdk-db: $(DB_ZIP_LIST)
       
   327 	$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/db
       
   328 	for d in $(DB_ZIP_LIST); do \
       
   329           ($(CD) $(JDK_MODULE_IMAGE_DIR)/db && $(UNZIP) -o $$d); \
       
   330 	done
       
   331 
       
   332 endif
       
   333 
       
   334 # Standard jdk image
       
   335 initial-module-image-jdk:: initial-module-image-jdk-setup \
       
   336 		    initial-module-image-jdk-db \
       
   337 		    $(JDK_MODULE_LICENSES) $(JDK_MODULE_DOCFILES)
       
   338 	$(MKDIR) $(JDK_MODULE_IMAGE_DIR)/lib
       
   339 	@#
       
   340 	@# copy jdk modules to jdk/lib
       
   341 	@#
       
   342 	$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/lib
       
   343 	for m in $(JDK_MODULES) ; do \
       
   344 	    $(CP) $(MODULES_DIR)/$$m/lib/$$m.jar $(JDK_MODULE_IMAGE_DIR)/lib ; \
       
   345         done
       
   346   ifeq ($(PLATFORM), windows)
       
   347 	@#
       
   348 	@# lib/
       
   349 	@#
       
   350 	$(CP) $(LIBDIR)/$(LIB_PREFIX)jvm.$(LIB_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/lib
       
   351 	$(CP) $(LIBDIR)/$(LIB_PREFIX)jawt.$(LIB_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/lib
       
   352 	@#
       
   353 	@# bin/
       
   354 	@#
       
   355 	@# copy all EXE files and only certain DLL files from BINDIR
       
   356 	$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/bin
       
   357 	$(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
       
   358 	$(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
       
   359     ifeq ($(COMPILER_VERSION), VS2010)
       
   360 	$(CP) $(BINDIR)/msvc*100.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
       
   361     endif
       
   362     ifeq ($(ARCH_DATA_MODEL), 32)
       
   363       ifeq ($(COMPILER_VERSION), VS2003)
       
   364 	$(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
       
   365       endif
       
   366     endif
       
   367   else # PLATFORM
       
   368 	@#
       
   369 	@# bin/
       
   370 	@#
       
   371 	($(CD) $(BINDIR)/.. && $(TAR) cf - \
       
   372 	    `$(FIND) bin \( -type f -o -type l \) -print `) | \
       
   373 	    ($(CD) $(JDK_MODULE_IMAGE_DIR) && $(TAR) xf -)
       
   374   endif # PLATFORM
       
   375 	@#
       
   376 	@# lib/ct.sym
       
   377 	@#
       
   378 	$(MKDIR) -p $(OUTPUTDIR)/symbols/META-INF/sym
       
   379 	$(JAVAC_CMD) -XDprocess.packages -proc:only \
       
   380 	    -processor com.sun.tools.javac.sym.CreateSymbols \
       
   381 	    -Acom.sun.tools.javac.sym.Jar=$(RT_JAR) \
       
   382 	    -Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
       
   383 	    $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS)
       
   384 	$(BOOT_JAR_CMD) c0f $(LIBDIR)/ct.sym \
       
   385 	    -C $(OUTPUTDIR)/symbols META-INF $(BOOT_JAR_JFLAGS)
       
   386 	@$(java-vm-cleanup)
       
   387 	$(CP) $(LIBDIR)/ct.sym $(JDK_MODULE_IMAGE_DIR)/lib/ct.sym
       
   388 	@#
       
   389 	@# CORBA supported orb.idl and ir.idl should be copied to lib
       
   390 	@#
       
   391 	$(CP) $(LIBDIR)/orb.idl $(JDK_MODULE_IMAGE_DIR)/lib/orb.idl
       
   392 	$(CP) $(LIBDIR)/ir.idl $(JDK_MODULE_IMAGE_DIR)/lib/ir.idl
       
   393   ifeq ($(PLATFORM), linux)
       
   394 	@#
       
   395 	@# on Linux copy jexec from jre/lib to /lib
       
   396 	@#
       
   397 	$(CP) $(LIBDIR)/jexec $(JDK_MODULE_IMAGE_DIR)/lib/jexec
       
   398   endif # PLATFORM
       
   399 	@#
       
   400 	@# demo, include
       
   401 	@#
       
   402 	$(CP) -r -f $(DEMODIR) $(JDK_MODULE_IMAGE_DIR)
       
   403 	$(CP) -r -f $(SAMPLEDIR) $(JDK_MODULE_IMAGE_DIR)
       
   404 	$(CP) -r $(INCLUDEDIR) $(JDK_MODULE_IMAGE_DIR)
       
   405 	@#
       
   406 	@# Swing BeanInfo generation
       
   407 	@#
       
   408 	$(CD) javax/swing/beaninfo && $(MAKE) JDK_IMAGE_DIR=$(JDK_MODULE_IMAGE_DIR) swing-1.2-beans
       
   409 ifneq ($(PLATFORM), windows)
       
   410 	$(call copy-man-pages,$(JDK_MODULE_IMAGE_DIR),$(JDK_MAN_PAGES))
       
   411 endif # !windows
       
   412 
       
   413 # Trim out files we don't want to ship
       
   414 trim-module-image-jdk::
       
   415 	@# Remove tools that should not be part of SDK.
       
   416 	for t in $(NOTJDKTOOLS); do \
       
   417 	    $(RM) $(JDK_MODULE_IMAGE_DIR)/bin/$${t}$(EXE_SUFFIX) \
       
   418 		  $(JDK_MODULE_IMAGE_DIR)/bin/*/native_threads/$${t}$(EXE_SUFFIX); \
       
   419 	done
       
   420 
       
   421 # Get list of Elf files in the jdk
       
   422 JDK_MODULE_ELF_LIST=$(MODULES_TEMPDIR)/jdk-elf-files.list
       
   423 $(JDK_MODULE_ELF_LIST):
       
   424 	@$(prep-target)
       
   425 ifneq ($(PLATFORM), windows)
       
   426 	$(RM) $@
       
   427 	$(FIND) $(JDK_MODULE_IMAGE_DIR)/jre/lib -type f -name \*.$(LIB_SUFFIX) >> $@
       
   428 	$(FILE) `$(FIND) $(JDK_MODULE_IMAGE_DIR)/jre/bin -type f -name \*$(EXE_SUFFIX)` \
       
   429 	    | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
       
   430 	file `$(FIND) $(JDK_MODULE_IMAGE_DIR)/bin -type f -name \*$(EXE_SUFFIX)` \
       
   431 	    | $(EGREP) 'ELF' | $(CUT) -d':' -f1 >> $@
       
   432 endif
       
   433 
       
   434 # Post process the image (strips and mcs on files we are shipping)
       
   435 process-module-image-jdk:: $(JDK_MODULE_ELF_LIST)
       
   436 ifneq ($(POST_STRIP_PROCESS), )
       
   437 	for f in `$(CAT) $(JDK_MODULE_ELF_LIST)`; do \
       
   438 	  $(CHMOD) u+w $${f}; \
       
   439 	  $(ECHO) $(POST_STRIP_PROCESS) $${f}; \
       
   440 	  $(POST_STRIP_PROCESS) $${f}; \
       
   441 	  $(CHMOD) go-w $${f}; \
       
   442 	done
       
   443 endif
       
   444 ifneq ($(POST_MCS_PROCESS), )
       
   445 	for f in `$(CAT) $(JDK_MODULE_ELF_LIST)`; do \
       
   446 	  $(CHMOD) u+w $${f}; \
       
   447 	  $(ECHO) $(POST_MCS_PROCESS) $${f}; \
       
   448 	  $(POST_MCS_PROCESS) $${f}; \
       
   449 	  $(CHMOD) go-w $${f}; \
       
   450 	done
       
   451 endif
       
   452 	$(RM) $(JDK_MODULE_ELF_LIST)
       
   453 
       
   454 ######################################################
       
   455 # clobber
       
   456 ######################################################
       
   457 modules-clobber::
       
   458 	$(RM) -r $(JDK_MODULE_IMAGE_DIR)
       
   459 	$(RM) -r $(JRE_MODULE_IMAGE_DIR)
       
   460 
       
   461 modules modules-clobber::
       
   462 	@$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..."
       
   463 	@$(java-vm-cleanup)
       
   464 
       
   465 .PHONY: modules module-image-jre module-image-jdk \
       
   466 	initial-module-image-jre initial-module-image-jdk \
       
   467 	initial-module-image-jre-sol64 initial-module-image-jdk-sol64 \
       
   468         initial-module-image-jdk-setup \
       
   469 	initial-module-image-jdk-db \
       
   470         initial-module-image-jdk64-bindemos \
       
   471         initial-module-image-jre-setup \
       
   472 	trim-module-image-jre trim-module-image-jdk \
       
   473 	process-module-image-jre process-module-image-jdk \
       
   474 	install-previous-jre install-previous-jdk \
       
   475 	modules-clobber
       
   476 
       
   477 # Force rule
       
   478 FRC:
       
   479