jdk/make/CreateJars.gmk
changeset 27577 54d97f463289
parent 27576 0db747c09110
parent 27575 f20b507032b5
child 27580 ca12cdda0551
equal deleted inserted replaced
27576:0db747c09110 27577:54d97f463289
     1 #
       
     2 # Copyright (c) 2011, 2014, 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 include $(SPEC)
       
    27 include MakeBase.gmk
       
    28 include JavaCompilation.gmk
       
    29 
       
    30 default: all
       
    31 
       
    32 include Tools.gmk
       
    33 
       
    34 JDK_OUT_CLASSES := $(wildcard $(JDK_OUTPUTDIR)/modules/*)
       
    35 $(eval $(call FillCacheFind, $(JDK_OUT_CLASSES)))
       
    36 
       
    37 include Profiles.gmk
       
    38 
       
    39 #
       
    40 # This makefile...so that altering will trigger rebuilding include/exclude-lists => jars
       
    41 #
       
    42 MAKEFILE = $(JDK_TOPDIR)/make/CreateJars.gmk
       
    43 #
       
    44 # And similarly for the Profiles
       
    45 PROFILE_MAKEFILES = $(JDK_TOPDIR)/make/Profiles.gmk $(JDK_TOPDIR)/make/profile-rtjar-includes.txt
       
    46 
       
    47 MAINMANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf
       
    48 BEANMANIFEST := $(JDK_TOPDIR)/make/data/swingbeaninfo/manifest.mf
       
    49 
       
    50 $(eval $(call MakeDir, $(IMAGES_OUTPUTDIR)/lib))
       
    51 
       
    52 ##########################################################################################
       
    53 
       
    54 $(eval $(call SetupArchive,BUILD_JCONSOLE_JAR, , \
       
    55     SRCS := $(JDK_OUTPUTDIR)/modules/jdk.jconsole, \
       
    56     SUFFIXES := .class .gif .png .properties, \
       
    57     INCLUDES := sun/tools/jconsole com/sun/tools/jconsole, \
       
    58     JARMAIN := sun.tools.jconsole.JConsole, \
       
    59     JAR := $(IMAGES_OUTPUTDIR)/lib/jconsole.jar, \
       
    60     SKIP_METAINF := true))
       
    61 
       
    62 
       
    63 ##########################################################################################
       
    64 
       
    65 $(eval $(call SetupArchive,BUILD_DNS_JAR, , \
       
    66     SRCS := $(JDK_OUTPUTDIR)/modules/jdk.naming.dns, \
       
    67     INCLUDES := sun/net/spi/nameservice/dns, \
       
    68     EXTRA_FILES := META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor, \
       
    69     JAR := $(IMAGES_OUTPUTDIR)/lib/ext/dnsns.jar, \
       
    70     SKIP_METAINF := true))
       
    71 
       
    72 
       
    73 ##########################################################################################
       
    74 
       
    75 LOCALEDATA_INCLUDE_LOCALES := ar be bg ca cs da de el es et fi fr ga hi hr hu in is it \
       
    76     iw ja ko lt lv mk ms mt nl no pl pt ro ru sk sl sq sr sv \
       
    77     th tr uk vi zh
       
    78 
       
    79 LOCALEDATA_INCLUDES := sun/util/resources/provider/NonEnLocaleDataMetaInfo.class
       
    80 LOCALEDATA_INCLUDES += $(addprefix sun/text/resources/, $(LOCALEDATA_INCLUDE_LOCALES)) \
       
    81     $(addprefix sun/util/resources/, $(LOCALEDATA_INCLUDE_LOCALES))
       
    82 
       
    83 LOCALEDATA_SERVICES_DIR := $(IMAGES_OUTPUTDIR)/localemetainfo
       
    84 
       
    85 LOCALEDATA_METAINF_SERVICES := $(LOCALEDATA_SERVICES_DIR)/META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo
       
    86 
       
    87 $(LOCALEDATA_METAINF_SERVICES): $(JDK_TOPDIR)/src/jdk.localedata/META-INF/localedata-services/sun.util.locale.provider.LocaleDataMetaInfo
       
    88 	$(install-file)
       
    89 
       
    90 $(eval $(call SetupArchive,BUILD_LOCALEDATA_JAR, \
       
    91     $(LOCALEDATA_METAINF_SERVICES), \
       
    92     SRCS := $(JDK_OUTPUTDIR)/modules/jdk.localedata \
       
    93         $(LOCALEDATA_SERVICES_DIR), \
       
    94     SUFFIXES := .class _dict _th, \
       
    95     INCLUDES := $(LOCALEDATA_INCLUDES), \
       
    96     EXTRA_FILES := META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo, \
       
    97     JAR := $(IMAGES_OUTPUTDIR)/lib/ext/localedata.jar, \
       
    98     SKIP_METAINF := true))
       
    99 
       
   100 ##########################################################################################
       
   101 #
       
   102 # Different variants of rt.jar are built based on the current profile. The output
       
   103 # directory is augmented with the profile name so that the final jar file and all the
       
   104 # intermediary list files will be in directory. This has the form lib$PROFILE rather than
       
   105 # lib/$PROFILE so that it won't get copied as part of the image generation process.
       
   106 # Each profile customizes the RT_JAR_EXCLUDES variable.
       
   107 #
       
   108 ##########################################################################################
       
   109 
       
   110 # Full JRE exclude list for rt.jar and resources.jar
       
   111 # This value should exclude types destined for jars other than rt.jar and resources.jar.
       
   112 # When building a Profile this value augments the profile specific exclusions
       
   113 RT_JAR_EXCLUDES += \
       
   114     com/oracle/security/ucrypto \
       
   115     com/sun/codemodel \
       
   116     com/sun/crypto/provider \
       
   117     com/sun/istack/internal/tools \
       
   118     com/sun/jarsigner \
       
   119     com/sun/java/accessibility \
       
   120     com/sun/javadoc \
       
   121     com/sun/jdi \
       
   122     com/sun/net/ssl/internal/ssl \
       
   123     com/sun/source \
       
   124     com/sun/tools \
       
   125     com/sun/xml/internal/dtdparser \
       
   126     com/sun/xml/internal/rngom \
       
   127     com/sun/xml/internal/xsom \
       
   128     javax/crypto \
       
   129     javax/swing/AbstractButtonBeanInfo.class \
       
   130     javax/swing/beaninfo \
       
   131     javax/swing/BoxBeanInfo.class \
       
   132     javax/swing/JAppletBeanInfo.class \
       
   133     javax/swing/JButtonBeanInfo.class \
       
   134     javax/swing/JCheckBoxBeanInfo.class \
       
   135     javax/swing/JCheckBoxMenuItemBeanInfo.class \
       
   136     javax/swing/JColorChooserBeanInfo.class \
       
   137     javax/swing/JComboBoxBeanInfo.class \
       
   138     javax/swing/JComponentBeanInfo.class \
       
   139     javax/swing/JDesktopPaneBeanInfo.class \
       
   140     javax/swing/JDialogBeanInfo.class \
       
   141     javax/swing/JEditorPaneBeanInfo.class \
       
   142     javax/swing/JFileChooserBeanInfo.class \
       
   143     javax/swing/JFormattedTextFieldBeanInfo.class \
       
   144     javax/swing/JFrameBeanInfo.class \
       
   145     javax/swing/JInternalFrameBeanInfo.class \
       
   146     javax/swing/JLabelBeanInfo.class \
       
   147     javax/swing/JLayeredPaneBeanInfo.class \
       
   148     javax/swing/JListBeanInfo.class \
       
   149     javax/swing/JMenuBarBeanInfo.class \
       
   150     javax/swing/JMenuBeanInfo.class \
       
   151     javax/swing/JMenuItemBeanInfo.class \
       
   152     javax/swing/JOptionPaneBeanInfo.class \
       
   153     javax/swing/JPanelBeanInfo.class \
       
   154     javax/swing/JPasswordFieldBeanInfo.class \
       
   155     javax/swing/JPopupMenuBeanInfo.class \
       
   156     javax/swing/JProgressBarBeanInfo.class \
       
   157     javax/swing/JRadioButtonBeanInfo.class \
       
   158     javax/swing/JRadioButtonMenuItemBeanInfo.class \
       
   159     javax/swing/JScrollBarBeanInfo.class \
       
   160     javax/swing/JScrollPaneBeanInfo.class \
       
   161     javax/swing/JSeparatorBeanInfo.class \
       
   162     javax/swing/JSliderBeanInfo.class \
       
   163     javax/swing/JSpinnerBeanInfo.class \
       
   164     javax/swing/JSplitPaneBeanInfo.class \
       
   165     javax/swing/JTabbedPaneBeanInfo.class \
       
   166     javax/swing/JTableBeanInfo.class \
       
   167     javax/swing/JTextAreaBeanInfo.class \
       
   168     javax/swing/JTextFieldBeanInfo.class \
       
   169     javax/swing/JTextPaneBeanInfo.class \
       
   170     javax/swing/JToggleButtonBeanInfo.class \
       
   171     javax/swing/JToolBarBeanInfo.class \
       
   172     javax/swing/JTreeBeanInfo.class \
       
   173     javax/swing/JWindowBeanInfo.class \
       
   174     javax/swing/SwingBeanInfoBase.class \
       
   175     javax/swing/text/JTextComponentBeanInfo.class \
       
   176     jdk/nio/zipfs \
       
   177     META-INF/services/com.sun.jdi.connect.Connector \
       
   178     META-INF/services/com.sun.jdi.connect.spi.TransportService \
       
   179     META-INF/services/com.sun.tools.attach.spi.AttachProvider \
       
   180     META-INF/services/com.sun.tools.xjc.Plugin \
       
   181     META-INF/services/javax.script.ScriptEngineFactory \
       
   182     META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor \
       
   183     META-INF/services/java.nio.file.spi.FileSystemProvider \
       
   184     org/relaxng/datatype \
       
   185     sun/awt/HKSCS.class \
       
   186     sun/awt/motif/X11GB2312.class \
       
   187     sun/awt/motif/X11GB2312$$$$Decoder.class \
       
   188     sun/awt/motif/X11GB2312$$$$Encoder.class \
       
   189     sun/awt/motif/X11GBK.class \
       
   190     sun/awt/motif/X11GBK$$$$Encoder.class \
       
   191     sun/awt/motif/X11KSC5601.class \
       
   192     sun/awt/motif/X11KSC5601$$$$Decoder.class \
       
   193     sun/awt/motif/X11KSC5601$$$$Encoder.class \
       
   194     sun/jvmstat \
       
   195     sun/net/spi/nameservice/dns \
       
   196     sun/nio/cs/ext \
       
   197     sun/rmi/rmic \
       
   198     sun/security/ec \
       
   199     sun/security/internal \
       
   200     sun/security/mscapi \
       
   201     sun/security/pkcs11 \
       
   202     sun/security/provider/Sun.class \
       
   203     sun/security/rsa/SunRsaSign.class \
       
   204     sun/security/ssl \
       
   205     sun/security/tools/jarsigner \
       
   206     sun/swing/BeanInfoUtils.class \
       
   207     sun/text/resources/cldr \
       
   208     sun/tools/asm \
       
   209     sun/tools/attach \
       
   210     sun/tools/java \
       
   211     sun/tools/javac \
       
   212     sun/tools/jcmd \
       
   213     sun/tools/jconsole \
       
   214     sun/tools/jinfo \
       
   215     sun/tools/jmap \
       
   216     sun/tools/jps \
       
   217     sun/tools/jstack \
       
   218     sun/tools/jstat \
       
   219     sun/tools/jstatd \
       
   220     sun/tools/native2ascii \
       
   221     sun/tools/serialver \
       
   222     sun/tools/tree \
       
   223     sun/tools/util \
       
   224     sun/util/resources/provider/NonEnLocaleDataMetaInfo.class \
       
   225     META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo \
       
   226     sun/util/resources/cldr \
       
   227     $(LOCALEDATA_INCLUDES) \
       
   228     com/oracle/jrockit/jfr \
       
   229     oracle/jrockit/jfr \
       
   230     jdk/jfr \
       
   231     jdk/internal/dynalink \
       
   232     jdk/nashorn \
       
   233     sun/jvm \
       
   234     toolbarButtonGraphics \
       
   235     sa.properties \
       
   236     com/sun/java/swing/action \
       
   237     com/sun/java/swing/ui \
       
   238     com/oracle/security \
       
   239     #
       
   240 
       
   241 # Find all files in the classes dir to use as dependencies. This could be more fine granular.
       
   242 ALL_FILES_IN_CLASSES := $(call not-containing, _the., $(filter-out %javac_state, \
       
   243     $(call CacheFind, $(JDK_OUT_CLASSES))))
       
   244 
       
   245 RT_JAR_MANIFEST_FILE := $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar_manifest
       
   246 RESOURCE_JAR_MANIFEST_FILE := $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar_manifest
       
   247 
       
   248 $(RT_JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
       
   249 	$(MKDIR) -p $(@D)
       
   250 	$(RM) $@ $@.tmp
       
   251 	$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
       
   252 	    -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
       
   253 	    $(MAINMANIFEST) >> $@.tmp
       
   254 	$(ECHO) >> $@.tmp
       
   255 	$(CAT) $(BEANMANIFEST) >> $@.tmp
       
   256 	$(MV) $@.tmp $@
       
   257 
       
   258 $(RESOURCE_JAR_MANIFEST_FILE): $(MAINMANIFEST)
       
   259 	$(MKDIR) -p $(@D)
       
   260 	$(RM) $@ $@.tmp
       
   261 	$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
       
   262 	    -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
       
   263 	    $(MAINMANIFEST) >> $@.tmp
       
   264 	$(MV) $@.tmp $@
       
   265 
       
   266 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.exclude: $(MAKEFILE) $(PROFILE_MAKEFILES)
       
   267 	$(MKDIR) -p $(@D)
       
   268 	$(RM) $@ $@.tmp
       
   269 	$(call ListPathsSafely,RT_JAR_EXCLUDES,\n, >> $@.tmp)
       
   270 	$(MV) $@.tmp $@
       
   271 
       
   272 $(IMAGES_OUTPUTDIR)/lib/classlist: $(JDK_TOPDIR)/make/data/classlist/classlist.$(OPENJDK_TARGET_OS) \
       
   273     $(MAKEFILE)
       
   274 	$(MKDIR) -p $(@D)
       
   275 	$(RM) $@ $@.tmp
       
   276 	$(TOOL_ADDJSUM) $< $@.tmp
       
   277 	$(MV) $@.tmp $@
       
   278 
       
   279 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents: $(BUILD_TOOLS_JDK) $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.exclude \
       
   280     $(ALL_FILES_IN_CLASSES) $(IMAGES_OUTPUTDIR)/lib/classlist
       
   281 	$(MKDIR) -p $(@D)
       
   282 	$(RM) $@ $@.tmp
       
   283 	($(CD) $(JDK_OUTPUTDIR)/modules && \
       
   284 	$(TOOL_JARREORDER) -m \
       
   285 	    -o $@.tmp $(IMAGES_OUTPUTDIR)/lib/classlist $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.exclude . )
       
   286 	$(MV) $@.tmp $@
       
   287 
       
   288 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar.contents: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents
       
   289 	$(MKDIR) -p $(@D)
       
   290 	$(RM) $@ $@.tmp
       
   291 	$(GREP) -e '\.class$$' $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents > $@.tmp
       
   292         ifneq ($(PROFILE), )
       
   293           # Add back classes from excluded packages (fixing the $ substitution in the process)
       
   294           # This currently won't work with modular build layout, but there currently are no 
       
   295           # types needing to be re added.
       
   296 	  for type in $(subst \$$,\, $(RT_JAR_INCLUDE_TYPES)) ; do \
       
   297 	    $(ECHO) $$type >> $@.tmp ; \
       
   298 	  done
       
   299         endif
       
   300 	$(MV) $@.tmp $@
       
   301 
       
   302 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar.contents: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents
       
   303 	$(MKDIR) -p $(@D)
       
   304 	$(RM) $@ $@.tmp
       
   305 	$(GREP) -v -e '\.class$$' \
       
   306 	    -e '/_the\.' -e '^_the\.' -e '\\_the\.' -e ' _the\.' -e 'javac_state' \
       
   307 	    $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents > $@.tmp
       
   308         ifneq ($(PROFILE), )
       
   309           # Strip out all META-INF/services/ entries
       
   310 	  $(GREP) -v -e 'META-INF/services/' $@.tmp > $@.tmp2
       
   311           # Add back the required services
       
   312           # FIXME: On Solaris if PROFILE_INCLUDE_METAINF_SERVICES is not defined
       
   313           # we get a syntax error from sh. That doesn't happen on linux
       
   314           # Preserve any -C <dir> part of the original include line.
       
   315 	  for service in $(PROFILE_INCLUDE_METAINF_SERVICES) ; do \
       
   316 	    $(GREP) -e "$$service" $@.tmp >> $@.tmp2; \
       
   317 	  done
       
   318 	  $(MV) $@.tmp2 $@.tmp
       
   319         endif
       
   320 	$(MV) $@.tmp $@
       
   321 
       
   322 # This is a hack but I don't know how to make this fit into the existing scheme
       
   323 $(PROFILE_VERSION_CLASS_TARGETS): $(PROFILE_VERSION_JAVA_TARGETS)
       
   324 	@$(JAVAC) -d $(@D)/../../ $(@D)/$(VERSION_JAVA_FILE)
       
   325 
       
   326 
       
   327 RT_JAR_CREATE_OPTIONS := c0fm
       
   328 RT_JAR_UPDATE_OPTIONS := u0f
       
   329 ifeq ($(COMPRESS_JARS), true)
       
   330   RT_JAR_CREATE_OPTIONS := cfm
       
   331   RT_JAR_UPDATE_OPTIONS := uf
       
   332 endif
       
   333 
       
   334 # This defines a target-specific variables to make the shell logic easier to see.
       
   335 # We need to find the Version.class file for the profile currently being built
       
   336 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/rt.jar: \
       
   337     CLASS_FILE = $(if $(PROFILE), $(strip $(foreach class, $(PROFILE_VERSION_CLASS_TARGETS), $(if $(findstring $(PROFILE), $(class)), $(class)))), NO_SUCH_FILE)
       
   338 # This is the real target
       
   339 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/rt.jar: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar.contents $(RT_JAR_MANIFEST_FILE) $(PROFILE_VERSION_CLASS_TARGETS)
       
   340 	$(ECHO) Creating rt.jar $(PROFILE) Compressed=$(COMPRESS_JARS)
       
   341 	$(MKDIR) -p $(@D)
       
   342 	$(RM) $@ $@.tmp
       
   343 	$(CD) $(JDK_OUTPUTDIR)/modules && \
       
   344 	$(JAR) $(RT_JAR_CREATE_OPTIONS) $@.tmp $(RT_JAR_MANIFEST_FILE) \
       
   345 	    @$(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar.contents && \
       
   346 	if [ -f $(CLASS_FILE) ]; then \
       
   347 	  $(ECHO) Updating rt.jar $(PROFILE) && \
       
   348 	  $(CD) $(patsubst %$(VERSION_CLASS_PATH), %, $(CLASS_FILE)) && \
       
   349 	  $(JAR) $(RT_JAR_UPDATE_OPTIONS) $@.tmp $(VERSION_CLASS_PATH); \
       
   350 	fi
       
   351 	$(MV) $@.tmp $@
       
   352 
       
   353 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/resources.jar: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar.contents \
       
   354     $(RESOURCE_JAR_MANIFEST_FILE)
       
   355 	$(ECHO) Creating resources.jar
       
   356 	$(MKDIR) -p $(@D)
       
   357 	$(RM) $@ $@.tmp
       
   358 	$(CD) $(JDK_OUTPUTDIR)/modules && \
       
   359 	$(JAR) $(RT_JAR_CREATE_OPTIONS) $@.tmp $(RESOURCE_JAR_MANIFEST_FILE) \
       
   360 	    @$(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar.contents
       
   361 	$(MV) $@.tmp $@
       
   362 
       
   363 ##########################################################################################
       
   364 
       
   365 ifneq ($(OPENJDK_TARGET_OS), windows)
       
   366   CHARSETS_EXTRA_FILES := sun/awt/motif/X11GBK.class \
       
   367       sun/awt/motif/X11GB2312$$$$Decoder.class \
       
   368       sun/awt/motif/X11GB2312.class \
       
   369       sun/awt/motif/X11KSC5601$$$$Decoder.class \
       
   370       sun/awt/motif/X11KSC5601$$$$Encoder.class \
       
   371       sun/awt/motif/X11GB2312$$$$Encoder.class \
       
   372       sun/awt/motif/X11GBK$$$$Encoder.class \
       
   373       sun/awt/motif/X11KSC5601.class
       
   374 endif
       
   375 
       
   376 $(eval $(call SetupArchive,BUILD_CHARSETS_JAR, , \
       
   377     SRCS := $(JDK_OUT_CLASSES), \
       
   378     SUFFIXES := .class .dat, \
       
   379     INCLUDES := sun/nio/cs/ext, \
       
   380     EXTRA_FILES := sun/awt/HKSCS.class \
       
   381         $(CHARSETS_EXTRA_FILES), \
       
   382     JAR := $(IMAGES_OUTPUTDIR)/lib/charsets.jar, \
       
   383     SKIP_METAINF := true, \
       
   384     CHECK_COMPRESS_JAR := true))
       
   385 
       
   386 ##########################################################################################
       
   387 
       
   388 $(eval $(call SetupArchive,BUILD_ZIPFS_JAR, , \
       
   389     SRCS := $(JDK_OUT_CLASSES), \
       
   390     INCLUDES := jdk/nio/zipfs, \
       
   391     EXTRA_FILES := META-INF/services/java.nio.file.spi.FileSystemProvider, \
       
   392     JAR := $(IMAGES_OUTPUTDIR)/lib/ext/zipfs.jar, \
       
   393     SKIP_METAINF := true, \
       
   394     CHECK_COMPRESS_JAR := true))
       
   395 
       
   396 ##########################################################################################
       
   397 
       
   398 ifndef OPENJDK
       
   399   ifeq ($(ENABLE_JFR), true)
       
   400     $(eval $(call SetupArchive,BUILD_JFR_JAR, , \
       
   401         SRCS := $(JDK_OUTPUTDIR)/modules/jdk.jfr, \
       
   402         SUFFIXES := .class .jfc .xsd, \
       
   403         INCLUDES := com/oracle/jrockit/jfr \
       
   404             oracle/jrockit/jfr \
       
   405             jdk/jfr, \
       
   406         JAR := $(IMAGES_OUTPUTDIR)/lib/jfr.jar, \
       
   407         SKIP_METAINF := true, \
       
   408         MANIFEST := $(MAINMANIFEST), \
       
   409         CHECK_COMPRESS_JAR := true))
       
   410 
       
   411   endif
       
   412 endif
       
   413 
       
   414 ##########################################################################################
       
   415 
       
   416 $(eval $(call SetupArchive,BUILD_JSSE_JAR, , \
       
   417     SRCS := $(JDK_OUT_CLASSES), \
       
   418     INCLUDES := sun/security/provider/Sun.class \
       
   419         sun/security/rsa/SunRsaSign.class \
       
   420         sun/security/ssl \
       
   421         com/sun/net/ssl/internal/ssl, \
       
   422     JAR := $(IMAGES_OUTPUTDIR)/lib/jsse.jar, \
       
   423     SKIP_METAINF := true, \
       
   424     MANIFEST := $(MAINMANIFEST), \
       
   425     CHECK_COMPRESS_JAR := true))
       
   426 
       
   427 ##########################################################################################
       
   428 
       
   429 $(eval $(call SetupArchive,BUILD_SWINGBEANS_JAR, , \
       
   430     SRCS := $(JDK_OUTPUTDIR)/modules/java.desktop, \
       
   431     SUFFIXES := BeanInfo.class .gif, \
       
   432     INCLUDES := javax/swing sun/swing, \
       
   433     EXCLUDES := javax/swing/plaf, \
       
   434     EXTRA_FILES := javax/swing/SwingBeanInfoBase.class sun/swing/BeanInfoUtils.class, \
       
   435     JAR := $(IMAGES_OUTPUTDIR)/lib/dt.jar, \
       
   436     SKIP_METAINF := true))
       
   437 
       
   438 ##########################################################################################
       
   439 
       
   440 # Get the CLDRVERSION
       
   441 include gensrc/GensrcCLDR.gmk
       
   442 
       
   443 CLDRDATA_JAR_DST := $(IMAGES_OUTPUTDIR)/lib/ext/cldrdata.jar
       
   444 
       
   445 CLDR_SERVICES_DIR := $(IMAGES_OUTPUTDIR)/cldrmetainfo
       
   446 
       
   447 CLDR_METAINF_SERVICES := $(CLDR_SERVICES_DIR)/META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo
       
   448 
       
   449 $(CLDR_METAINF_SERVICES): $(JDK_TOPDIR)/src/jdk.localedata/META-INF/cldrdata-services/sun.util.locale.provider.LocaleDataMetaInfo
       
   450 	$(install-file)
       
   451 
       
   452 $(eval $(call SetupArchive,BUILD_CLDRDATA_JAR, \
       
   453     $(CLDR_METAINF_SERVICES), \
       
   454     SRCS := $(JDK_OUTPUTDIR)/modules/jdk.localedata \
       
   455         $(CLDR_SERVICES_DIR), \
       
   456     SUFFIXES := .class, \
       
   457     INCLUDES := sun/text/resources/cldr \
       
   458         sun/util/resources/cldr, \
       
   459     EXTRA_FILES := META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo, \
       
   460     JAR := $(CLDRDATA_JAR_DST), \
       
   461     EXTRA_MANIFEST_ATTR := CLDR-Version: $(CLDRVERSION), \
       
   462     SKIP_METAINF := true))
       
   463 
       
   464 ##########################################################################################
       
   465 
       
   466 TOOLS_JAR_INCLUDES := \
       
   467     com/sun/codemodel \
       
   468     com/sun/istack/internal/tools \
       
   469     com/sun/jarsigner \
       
   470     com/sun/javadoc \
       
   471     com/sun/jdi \
       
   472     com/sun/source \
       
   473     com/sun/tools/attach \
       
   474     com/sun/tools/classfile \
       
   475     com/sun/tools/corba \
       
   476     com/sun/tools/doclets \
       
   477     com/sun/tools/doclint \
       
   478     com/sun/tools/example/debug/expr \
       
   479     com/sun/tools/example/debug/tty \
       
   480     com/sun/tools/hat \
       
   481     com/sun/tools/internal/jxc \
       
   482     com/sun/tools/internal/jxc/ap \
       
   483     com/sun/tools/internal/ws \
       
   484     com/sun/tools/internal/ws/wscompile/plugin/at_generated \
       
   485     com/sun/tools/internal/xjc \
       
   486     com/sun/tools/javac \
       
   487     com/sun/tools/javadoc \
       
   488     com/sun/tools/javah \
       
   489     com/sun/tools/javap \
       
   490     com/sun/tools/jdeps \
       
   491     com/sun/tools/jdi \
       
   492     com/sun/tools/script/shell \
       
   493     com/sun/xml/internal/dtdparser \
       
   494     com/sun/xml/internal/rngom \
       
   495     com/sun/xml/internal/xsom \
       
   496     org/relaxng/datatype \
       
   497     sun/applet \
       
   498     sun/jvmstat \
       
   499     sun/rmi/rmic \
       
   500     sun/security/tools/jarsigner \
       
   501     sun/tools/asm \
       
   502     sun/tools/attach \
       
   503     sun/tools/jar \
       
   504     sun/tools/java \
       
   505     sun/tools/javac \
       
   506     sun/tools/jcmd \
       
   507     sun/tools/jinfo \
       
   508     sun/tools/jmap \
       
   509     sun/tools/jps \
       
   510     sun/tools/jstack \
       
   511     sun/tools/jstat \
       
   512     sun/tools/jstatd \
       
   513     sun/tools/native2ascii \
       
   514     sun/tools/serialver \
       
   515     sun/tools/tree \
       
   516     sun/tools/util
       
   517 
       
   518 # The sjavac tools is not ready for public consumption.
       
   519 TOOLS_JAR_EXCLUDES = com/sun/tools/sjavac
       
   520 
       
   521 TOOLS_JAR_SRC := $(addprefix $(JDK_OUTPUTDIR)/modules/,\
       
   522     java.corba \
       
   523     java.desktop \
       
   524     jdk.attach \
       
   525     jdk.compiler \
       
   526     jdk.dev \
       
   527     jdk.javadoc \
       
   528     jdk.jconsole \
       
   529     jdk.jcmd \
       
   530     jdk.jdi \
       
   531     jdk.jvmstat \
       
   532     jdk.rmic \
       
   533     jdk.runtime \
       
   534     jdk.xml.bind \
       
   535     jdk.xml.ws \
       
   536     )
       
   537     #
       
   538 
       
   539 $(eval $(call SetupArchive,BUILD_TOOLS_JAR, , \
       
   540     SRCS := $(TOOLS_JAR_SRC), \
       
   541     SUFFIXES := .class .prp .gif .properties .xml .css .xsd .js .html .txt .java \
       
   542         Tool aliasmap options, \
       
   543     INCLUDES := $(TOOLS_JAR_INCLUDES), \
       
   544     EXCLUDES := $(TOOLS_JAR_EXCLUDES), \
       
   545     EXTRA_FILES := \
       
   546         $(JDK_OUTPUTDIR)/modules/jdk.jdi/META-INF/services/com.sun.jdi.connect.Connector \
       
   547         META-INF/services/com.sun.jdi.connect.spi.TransportService \
       
   548         META-INF/services/com.sun.tools.attach.spi.AttachProvider \
       
   549         META-INF/services/com.sun.tools.internal.ws.wscompile.Plugin \
       
   550         META-INF/services/com.sun.tools.internal.xjc.Plugin, \
       
   551     JAR := $(IMAGES_OUTPUTDIR)/lib/tools.jar, \
       
   552     SKIP_METAINF := true, \
       
   553     CHECK_COMPRESS_JAR := true))
       
   554 
       
   555 
       
   556 ##########################################################################################
       
   557 
       
   558 include CORE_PKGS.gmk
       
   559 include NON_CORE_PKGS.gmk
       
   560 
       
   561 # The compiler should not issue a "Proprietary" warning when compiling
       
   562 # classes in the com.sun.java.swing.plaf packages, since we've always
       
   563 # allowed, and even advocated, extending them (see bug 6476749).
       
   564 #
       
   565 # This approach is NOT to be used as a general purpose way to avoid such
       
   566 # compiler warnings for non-core packages. The correct way is to document
       
   567 # the packages in NON_CORE_PKGS.gmk, and include them in the NON_CORE_PKGS
       
   568 # definition.
       
   569 #
       
   570 # Swing has taken this approach only as a temporary measure to avoid
       
   571 # the compiler warnings until we can properly document these packages.
       
   572 # This is covered under 6491853.
       
   573 EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf.windows \
       
   574     com.sun.java.swing.plaf.motif \
       
   575     com.sun.java.swing.plaf.gtk
       
   576 
       
   577 #
       
   578 # Include the exported private packages in ct.sym.
       
   579 # This is an interim solution until the ct.sym is replaced
       
   580 # with a new module system (being discussed for JDK 8).
       
   581 #
       
   582 EXPORTED_PRIVATE_PKGS = com.oracle.net \
       
   583     com.oracle.nio
       
   584 
       
   585 $(IMAGES_OUTPUTDIR)/symbols/_the.symbols: $(IMAGES_OUTPUTDIR)/lib/rt.jar
       
   586 	$(RM) -r $(IMAGES_OUTPUTDIR)/symbols/META-INF/sym
       
   587 	$(MKDIR) -p $(IMAGES_OUTPUTDIR)/symbols/META-INF/sym
       
   588 	$(JAVA) $(NEW_JAVAC) \
       
   589 	    -bootclasspath "$(IMAGES_OUTPUTDIR)/lib/rt.jar" \
       
   590 	    -XDprocess.packages -proc:only \
       
   591 	    -processor com.sun.tools.javac.sym.CreateSymbols \
       
   592 	    -Acom.sun.tools.javac.sym.Jar=$(IMAGES_OUTPUTDIR)/lib/rt.jar \
       
   593 	    -Acom.sun.tools.javac.sym.Dest=$(IMAGES_OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
       
   594 	    -Acom.sun.tools.javac.sym.Profiles=profile-rtjar-includes.txt \
       
   595 	    $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS) $(EXPORTED_PRIVATE_PKGS)
       
   596 	$(TOUCH) $@
       
   597 
       
   598 $(eval $(call MakeDir, $(IMAGES_OUTPUTDIR)/symbols))
       
   599 $(eval $(call SetupArchive,BUILD_CT_SYM, $(IMAGES_OUTPUTDIR)/symbols/_the.symbols, \
       
   600     SRCS := $(IMAGES_OUTPUTDIR)/symbols, \
       
   601     INCLUDES := META-INF/sym, \
       
   602     JAR := $(IMAGES_OUTPUTDIR)/lib/ct.sym, \
       
   603     CHECK_COMPRESS_JAR := true))
       
   604 
       
   605 
       
   606 ##########################################################################################
       
   607 
       
   608 ifdef OPENJDK
       
   609     SRC_ZIP_INCLUDES = \
       
   610         com \
       
   611         java \
       
   612         javax \
       
   613         jdk \
       
   614         org \
       
   615         sun \
       
   616         #
       
   617     SRC_ZIP_EXCLUDES =
       
   618 else
       
   619     SRC_ZIP_INCLUDES = \
       
   620         com/sun/corba \
       
   621         com/sun/image/codec/jpeg \
       
   622         com/sun/imageio \
       
   623         com/sun/java_cup \
       
   624         com/sun/javadoc \
       
   625         com/sun/java/swing \
       
   626         com/sun/jmx \
       
   627         com/sun/naming \
       
   628         com/sun/org/apache \
       
   629         com/sun/security/auth \
       
   630         com/sun/security/jgss \
       
   631         com/sun/source \
       
   632         java \
       
   633         javax/accessibility \
       
   634         javax/annotation \
       
   635         javax/imageio \
       
   636         javax/lang \
       
   637         javax/management \
       
   638         javax/naming \
       
   639         javax/print \
       
   640         javax/rmi \
       
   641         javax/script \
       
   642         javax/security \
       
   643         javax/sound \
       
   644         javax/sql \
       
   645         javax/swing \
       
   646         javax/tools \
       
   647         javax/xml \
       
   648         org/ietf \
       
   649         org/omg \
       
   650         org/w3c/dom \
       
   651         org/xml/sax \
       
   652         #
       
   653     SRC_ZIP_EXCLUDES = javax/swing/beaninfo
       
   654 endif
       
   655 
       
   656 SRC_ZIP_SRCS := $(wildcard \
       
   657     $(JDK_TOPDIR)/src/*/share/classes \
       
   658     $(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS)/classes \
       
   659     $(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS_API_DIR)/classes \
       
   660     $(LANGTOOLS_TOPDIR)/src/*/share/classes \
       
   661     $(CORBA_TOPDIR)/src/*/share/classes \
       
   662     $(JAXP_TOPDIR)/src/*/share/classes \
       
   663     $(JAXWS_TOPDIR)/src/*/share/classes \
       
   664     $(JDK_OUTPUTDIR)/gensrc/j* \
       
   665     $(JDK_OUTPUTDIR)/gendocsrc_rmic \
       
   666     $(CORBA_OUTPUTDIR)/gensrc/j* \
       
   667     ) \
       
   668     #
       
   669 ifndef OPENJDK
       
   670   SRC_ZIP_SRCS += $(wildcard $(JDK_TOPDIR)/src/closed/*/share/classes)
       
   671 endif
       
   672 
       
   673 # Need to copy launcher src files into desired directory structure
       
   674 # before zipping the sources.
       
   675 $(eval $(call SetupCopyFiles,COPY_LAUNCHER_SRC, \
       
   676     SRC := $(JDK_TOPDIR)/src/java.base, \
       
   677     DEST := $(IMAGES_OUTPUTDIR)/src/launcher, \
       
   678     FLATTEN := true, \
       
   679     FILES := $(wildcard \
       
   680         $(JDK_TOPDIR)/src/java.base/share/native/launcher/* \
       
   681         $(JDK_TOPDIR)/src/java.base/share/native/libjli/* \
       
   682         $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjli/java_md*)))
       
   683 
       
   684 LAUNCHER_ZIP_SRC := $(COPY_LAUNCHER_SRC)
       
   685 
       
   686 $(IMAGES_OUTPUTDIR)/src.zip: $(LAUNCHER_ZIP_SRC)
       
   687 
       
   688 # This dir needs to exist before macro is evaluated to avoid warning from find.
       
   689 $(eval $(call MakeDir, $(IMAGES_OUTPUTDIR)/src))
       
   690 $(eval $(call SetupZipArchive,BUILD_SRC_ZIP, \
       
   691     SRC := $(SRC_ZIP_SRCS) $(IMAGES_OUTPUTDIR)/src, \
       
   692     INCLUDES := $(SRC_ZIP_INCLUDES) launcher, \
       
   693     EXCLUDES := $(SRC_ZIP_EXCLUDES), \
       
   694     SUFFIXES := .java .c .h, \
       
   695     ZIP := $(IMAGES_OUTPUTDIR)/src.zip, \
       
   696     EXTRA_DEPS := $(LAUNCHER_ZIP_SRC)))
       
   697 
       
   698 ##########################################################################################
       
   699 
       
   700 # This file is imported from hotspot in Import.gmk. Copying it into images/lib so that
       
   701 # all jars can be found in one place when creating images in Images.gmk. It needs to be
       
   702 # done here so that clean targets can be simple and accurate.
       
   703 $(IMAGES_OUTPUTDIR)/lib/sa-jdi.jar: $(HOTSPOT_DIST)/lib/sa-jdi.jar
       
   704 	$(install-file)
       
   705 
       
   706 ##########################################################################################
       
   707 #
       
   708 # sec-bin.zip is used by builds where the corresponding sources are not available
       
   709 #
       
   710 $(eval $(call SetupZipArchive,BUILD_SEC_BIN_ZIP, \
       
   711     SRC := $(JDK_OUTPUTDIR), \
       
   712     INCLUDES := \
       
   713         modules/java.base/javax/crypto \
       
   714         modules/java.base/javax/crypto/spec \
       
   715         modules/java.base/sun/security/internal/interfaces \
       
   716         modules/java.base/sun/security/internal/spec \
       
   717         modules/java.base/com/sun/crypto/provider \
       
   718         modules/jdk.crypto.ec/sun/security/ec \
       
   719         modules/jdk.crypto.mscapi/sun/security/mscapi \
       
   720         modules/jdk.crypto.pkcs11/sun/security/pkcs11 \
       
   721         modules/jdk.crypto.pkcs11/sun/security/pkcs11/wrapper \
       
   722         modules/jdk.crypto.ucrypto/com/oracle/security/ucrypto \
       
   723         modules/java.base/javax/net \
       
   724         modules/java.base/javax/security/cert \
       
   725         modules/java.base/com/sun/net/ssl \
       
   726         modules/java.base/com/sun/security/cert \
       
   727         modules/java.base/sun/net/www/protocol/https \
       
   728         modules/java.base/sun/security/pkcs12 \
       
   729         modules/java.base/sun/security/ssl \
       
   730         modules/java.security.jgss/sun/security/krb5 \
       
   731         modules/java.security.jgss/sun/security/krb5/internal \
       
   732         modules/java.security.jgss/sun/security/krb5/internal/ccache \
       
   733         modules/java.security.jgss/sun/security/krb5/internal/crypto \
       
   734         modules/java.security.jgss/sun/security/krb5/internal/ktab \
       
   735         modules/java.security.jgss/sun/security/krb5/internal/rcache \
       
   736         modules/java.security.jgss/sun/security/krb5/internal/util, \
       
   737     INCLUDE_FILES := modules/java.security.jgss/sun/security/jgss/spi/GSSContextSpi.class, \
       
   738     EXCLUDES := modules/java.security.jgss/sun/security/krb5/internal/tools, \
       
   739     ZIP := $(IMAGES_OUTPUTDIR)/sec-bin.zip))
       
   740 
       
   741 JARS += $(IMAGES_OUTPUTDIR)/sec-bin.zip
       
   742 
       
   743 ##########################################################################################
       
   744 #
       
   745 # Windows specific binary security packages.
       
   746 #
       
   747 ifeq ($(OPENJDK_TARGET_OS), windows)
       
   748   # sec-windows-bin.zip is used by builds where the corresponding sources are not available
       
   749   $(eval $(call SetupZipArchive,BUILD_SEC_WINDOWS_BIN_ZIP, \
       
   750       SRC := $(JDK_OUTPUTDIR), \
       
   751       INCLUDES := modules/java.security.jgss/sun/security/krb5/internal/tools, \
       
   752       ZIP := $(IMAGES_OUTPUTDIR)/sec-windows-bin.zip))
       
   753 
       
   754   JARS += $(IMAGES_OUTPUTDIR)/sec-windows-bin.zip
       
   755 
       
   756   # JGSS files contain the native Kerberos library
       
   757   ifeq ($(OPENJDK_TARGET_CPU), x86_64)
       
   758     JGSS_ZIP_NAME = jgss-windows-x64-bin.zip
       
   759   else
       
   760     JGSS_ZIP_NAME = jgss-windows-i586-bin.zip
       
   761   endif
       
   762 
       
   763   $(eval $(call SetupZipArchive,BUILD_JGSS_BIN_ZIP, \
       
   764       SRC := $(JDK_OUTPUTDIR), \
       
   765       INCLUDE_FILES := bin/w2k_lsa_auth.dll \
       
   766           bin/w2k_lsa_auth.map \
       
   767           bin/w2k_lsa_auth.pdb, \
       
   768       ZIP := $(IMAGES_OUTPUTDIR)/$(JGSS_ZIP_NAME)))
       
   769 
       
   770   JARS += $(IMAGES_OUTPUTDIR)/$(JGSS_ZIP_NAME)
       
   771 endif
       
   772 
       
   773 ##########################################################################################
       
   774 
       
   775 # This rule copies all jars from jdk/lib/... to images/lib/... to avoid having to track 
       
   776 # which jars are where
       
   777 $(IMAGES_OUTPUTDIR)/lib/%: $(JDK_OUTPUTDIR)/lib/%
       
   778 	$(install-file)
       
   779 
       
   780 ##########################################################################################
       
   781 
       
   782 # Import nashorn.jar from nashorn dist dir.
       
   783 $(IMAGES_OUTPUTDIR)/lib/ext/nashorn.jar: $(NASHORN_DIST)/nashorn.jar
       
   784 	$(install-file)
       
   785 
       
   786 ##########################################################################################
       
   787 
       
   788 # Hook to include the corresponding custom file, if present.
       
   789 $(eval $(call IncludeCustomExtension, jdk, CreateJars.gmk))
       
   790 
       
   791 ##########################################################################################
       
   792 
       
   793 all: $(JARS)
       
   794 
       
   795 .PHONY: default all