make/CreateJars.gmk

Mon, 31 Aug 2020 06:57:19 +0100

author
andrew
date
Mon, 31 Aug 2020 06:57:19 +0100
changeset 14201
4546aa3faf37
parent 13986
09e4378b52da
child 14071
b2aa6ee347f0
permissions
-rw-r--r--

Merge

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

mercurial