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/sun/codemodel \
 115     com/sun/crypto/provider \
 116     com/sun/istack/internal/tools \
 117     com/sun/jarsigner \
 118     com/sun/java/accessibility \
 119     com/sun/javadoc \
 120     com/sun/jdi \
 121     com/sun/net/ssl/internal/ssl \
 122     com/sun/source \
 123     com/sun/tools \
 124     com/sun/xml/internal/dtdparser \
 125     com/sun/xml/internal/rngom \
 126     com/sun/xml/internal/xsom \
 127     javax/crypto \
 128     javax/swing/AbstractButtonBeanInfo.class \
 129     javax/swing/beaninfo \
 130     javax/swing/BoxBeanInfo.class \
 131     javax/swing/JAppletBeanInfo.class \
 132     javax/swing/JButtonBeanInfo.class \
 133     javax/swing/JCheckBoxBeanInfo.class \
 134     javax/swing/JCheckBoxMenuItemBeanInfo.class \
 135     javax/swing/JColorChooserBeanInfo.class \
 136     javax/swing/JComboBoxBeanInfo.class \
 137     javax/swing/JComponentBeanInfo.class \
 138     javax/swing/JDesktopPaneBeanInfo.class \
 139     javax/swing/JDialogBeanInfo.class \
 140     javax/swing/JEditorPaneBeanInfo.class \
 141     javax/swing/JFileChooserBeanInfo.class \
 142     javax/swing/JFormattedTextFieldBeanInfo.class \
 143     javax/swing/JFrameBeanInfo.class \
 144     javax/swing/JInternalFrameBeanInfo.class \
 145     javax/swing/JLabelBeanInfo.class \
 146     javax/swing/JLayeredPaneBeanInfo.class \
 147     javax/swing/JListBeanInfo.class \
 148     javax/swing/JMenuBarBeanInfo.class \
 149     javax/swing/JMenuBeanInfo.class \
 150     javax/swing/JMenuItemBeanInfo.class \
 151     javax/swing/JOptionPaneBeanInfo.class \
 152     javax/swing/JPanelBeanInfo.class \
 153     javax/swing/JPasswordFieldBeanInfo.class \
 154     javax/swing/JPopupMenuBeanInfo.class \
 155     javax/swing/JProgressBarBeanInfo.class \
 156     javax/swing/JRadioButtonBeanInfo.class \
 157     javax/swing/JRadioButtonMenuItemBeanInfo.class \
 158     javax/swing/JScrollBarBeanInfo.class \
 159     javax/swing/JScrollPaneBeanInfo.class \
 160     javax/swing/JSeparatorBeanInfo.class \
 161     javax/swing/JSliderBeanInfo.class \
 162     javax/swing/JSpinnerBeanInfo.class \
 163     javax/swing/JSplitPaneBeanInfo.class \
 164     javax/swing/JTabbedPaneBeanInfo.class \
 165     javax/swing/JTableBeanInfo.class \
 166     javax/swing/JTextAreaBeanInfo.class \
 167     javax/swing/JTextFieldBeanInfo.class \
 168     javax/swing/JTextPaneBeanInfo.class \
 169     javax/swing/JToggleButtonBeanInfo.class \
 170     javax/swing/JToolBarBeanInfo.class \
 171     javax/swing/JTreeBeanInfo.class \
 172     javax/swing/JWindowBeanInfo.class \
 173     javax/swing/SwingBeanInfoBase.class \
 174     javax/swing/text/JTextComponentBeanInfo.class \
 175     jdk/nio/zipfs \
 176     META-INF/services/com.sun.jdi.connect.Connector \
 177     META-INF/services/com.sun.jdi.connect.spi.TransportService \
 178     META-INF/services/com.sun.tools.attach.spi.AttachProvider \
 179     META-INF/services/com.sun.tools.xjc.Plugin \
 180     META-INF/services/javax.script.ScriptEngineFactory \
 181     META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor \
 182     META-INF/services/java.nio.file.spi.FileSystemProvider \
 183     org/relaxng/datatype \
 184     sun/awt/HKSCS.class \
 185     sun/awt/motif/X11GB2312.class \
 186     sun/awt/motif/X11GB2312$$$$Decoder.class \
 187     sun/awt/motif/X11GB2312$$$$Encoder.class \
 188     sun/awt/motif/X11GBK.class \
 189     sun/awt/motif/X11GBK$$$$Encoder.class \
 190     sun/awt/motif/X11KSC5601.class \
 191     sun/awt/motif/X11KSC5601$$$$Decoder.class \
 192     sun/awt/motif/X11KSC5601$$$$Encoder.class \
 193     sun/jvmstat \
 194     sun/net/spi/nameservice/dns \
 195     sun/nio/cs/ext \
 196     sun/rmi/rmic \
 197     sun/security/ec \
 198     sun/security/internal \
 199     sun/security/mscapi \
 200     sun/security/pkcs11 \
 201     sun/security/provider/Sun.class \
 202     sun/security/rsa/SunRsaSign.class \
 203     sun/security/ssl \
 204     sun/security/tools/jarsigner \
 205     sun/swing/BeanInfoUtils.class \
 206     sun/text/resources/cldr \
 207     sun/tools/asm \
 208     sun/tools/attach \
 209     sun/tools/java \
 210     sun/tools/javac \
 211     sun/tools/jcmd \
 212     sun/tools/jconsole \
 213     sun/tools/jinfo \
 214     sun/tools/jmap \
 215     sun/tools/jps \
 216     sun/tools/jstack \
 217     sun/tools/jstat \
 218     sun/tools/jstatd \
 219     sun/tools/native2ascii \
 220     sun/tools/serialver \
 221     sun/tools/tree \
 222     sun/tools/util \
 223     sun/util/resources/provider/NonEnLocaleDataMetaInfo.class \
 224     META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo \
 225     sun/util/resources/cldr \
 226     $(LOCALEDATA_INCLUDES) \
 227     com/oracle/jrockit/jfr \
 228     oracle/jrockit/jfr \
 229     jdk/jfr \
 230     jdk/internal/dynalink \
 231     jdk/nashorn \
 232     sun/jvm \
 233     toolbarButtonGraphics \
 234     sa.properties \
 235     com/sun/java/swing/action \
 236     com/sun/java/swing/ui \
 237     com/oracle/security \
 238     #
 239 
 240 # Find all files in the classes dir to use as dependencies. This could be more fine granular.
 241 ALL_FILES_IN_CLASSES := $(call not-containing, _the., $(filter-out %javac_state, \
 242     $(call CacheFind, $(JDK_OUT_CLASSES))))
 243 
 244 RT_JAR_MANIFEST_FILE := $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar_manifest
 245 RESOURCE_JAR_MANIFEST_FILE := $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar_manifest
 246 
 247 $(RT_JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
 248         $(MKDIR) -p $(@D)
 249         $(RM) $@ $@.tmp
 250         $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
 251             -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
 252             $(MAINMANIFEST) >> $@.tmp
 253         $(ECHO) >> $@.tmp
 254         $(CAT) $(BEANMANIFEST) >> $@.tmp
 255         $(MV) $@.tmp $@
 256 
 257 $(RESOURCE_JAR_MANIFEST_FILE): $(MAINMANIFEST)
 258         $(MKDIR) -p $(@D)
 259         $(RM) $@ $@.tmp
 260         $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
 261             -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
 262             $(MAINMANIFEST) >> $@.tmp
 263         $(MV) $@.tmp $@
 264 
 265 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.exclude: $(MAKEFILE) $(PROFILE_MAKEFILES)
 266         $(MKDIR) -p $(@D)
 267         $(RM) $@ $@.tmp
 268         $(call ListPathsSafely,RT_JAR_EXCLUDES,\n, >> $@.tmp)
 269         $(MV) $@.tmp $@
 270 
 271 $(IMAGES_OUTPUTDIR)/lib/classlist: $(JDK_TOPDIR)/make/data/classlist/classlist.$(OPENJDK_TARGET_OS) \
 272     $(MAKEFILE)
 273         $(MKDIR) -p $(@D)
 274         $(RM) $@ $@.tmp
 275         $(TOOL_ADDJSUM) $< $@.tmp
 276         $(MV) $@.tmp $@
 277 
 278 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents: $(BUILD_TOOLS_JDK) $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.exclude \
 279     $(ALL_FILES_IN_CLASSES) $(IMAGES_OUTPUTDIR)/lib/classlist
 280         $(MKDIR) -p $(@D)
 281         $(RM) $@ $@.tmp
 282         ($(CD) $(JDK_OUTPUTDIR)/modules && \
 283         $(TOOL_JARREORDER) -m \
 284             -o $@.tmp $(IMAGES_OUTPUTDIR)/lib/classlist $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.exclude . )
 285         $(MV) $@.tmp $@
 286 
 287 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar.contents: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents
 288         $(MKDIR) -p $(@D)
 289         $(RM) $@ $@.tmp
 290         $(GREP) -e '\.class$$' $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents > $@.tmp
 291         ifneq ($(PROFILE), )
 292           # Add back classes from excluded packages (fixing the $ substitution in the process)
 293           # This currently won't work with modular build layout, but there currently are no 
 294           # types needing to be re added.
 295           for type in $(subst \$$,\, $(RT_JAR_INCLUDE_TYPES)) ; do \
 296             $(ECHO) $$type >> $@.tmp ; \
 297           done
 298         endif
 299         $(MV) $@.tmp $@
 300 
 301 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar.contents: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents
 302         $(MKDIR) -p $(@D)
 303         $(RM) $@ $@.tmp
 304         $(GREP) -v -e '\.class$$' \
 305             -e '/_the\.' -e '^_the\.' -e '\\_the\.' -e ' _the\.' -e 'javac_state' \
 306             $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.jars.contents > $@.tmp
 307         ifneq ($(PROFILE), )
 308           # Strip out all META-INF/services/ entries
 309           $(GREP) -v -e 'META-INF/services/' $@.tmp > $@.tmp2
 310           # Add back the required services
 311           # FIXME: On Solaris if PROFILE_INCLUDE_METAINF_SERVICES is not defined
 312           # we get a syntax error from sh. That doesn't happen on linux
 313           # Preserve any -C <dir> part of the original include line.
 314           for service in $(PROFILE_INCLUDE_METAINF_SERVICES) ; do \
 315             $(GREP) -e "$$service" $@.tmp >> $@.tmp2; \
 316           done
 317           $(MV) $@.tmp2 $@.tmp
 318         endif
 319         $(MV) $@.tmp $@
 320 
 321 # This is a hack but I don't know how to make this fit into the existing scheme
 322 $(PROFILE_VERSION_CLASS_TARGETS): $(PROFILE_VERSION_JAVA_TARGETS)
 323         @$(JAVAC) -d $(@D)/../../ $(@D)/$(VERSION_JAVA_FILE)
 324 
 325 
 326 RT_JAR_CREATE_OPTIONS := c0fm
 327 RT_JAR_UPDATE_OPTIONS := u0f
 328 ifeq ($(COMPRESS_JARS), true)
 329   RT_JAR_CREATE_OPTIONS := cfm
 330   RT_JAR_UPDATE_OPTIONS := uf
 331 endif
 332 
 333 # This defines a target-specific variables to make the shell logic easier to see.
 334 # We need to find the Version.class file for the profile currently being built
 335 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/rt.jar: \
 336     CLASS_FILE = $(if $(PROFILE), $(strip $(foreach class, $(PROFILE_VERSION_CLASS_TARGETS), $(if $(findstring $(PROFILE), $(class)), $(class)))), NO_SUCH_FILE)
 337 # This is the real target
 338 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/rt.jar: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar.contents $(RT_JAR_MANIFEST_FILE) $(PROFILE_VERSION_CLASS_TARGETS)
 339         $(ECHO) Creating rt.jar $(PROFILE) Compressed=$(COMPRESS_JARS)
 340         $(MKDIR) -p $(@D)
 341         $(RM) $@ $@.tmp
 342         $(CD) $(JDK_OUTPUTDIR)/modules && \
 343         $(JAR) $(RT_JAR_CREATE_OPTIONS) $@.tmp $(RT_JAR_MANIFEST_FILE) \
 344             @$(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.rt.jar.contents && \
 345         if [ -f $(CLASS_FILE) ]; then \
 346           $(ECHO) Updating rt.jar $(PROFILE) && \
 347           $(CD) $(patsubst %$(VERSION_CLASS_PATH), %, $(CLASS_FILE)) && \
 348           $(JAR) $(RT_JAR_UPDATE_OPTIONS) $@.tmp $(VERSION_CLASS_PATH); \
 349         fi
 350         $(MV) $@.tmp $@
 351 
 352 $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/resources.jar: $(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar.contents \
 353     $(RESOURCE_JAR_MANIFEST_FILE)
 354         $(ECHO) Creating resources.jar
 355         $(MKDIR) -p $(@D)
 356         $(RM) $@ $@.tmp
 357         $(CD) $(JDK_OUTPUTDIR)/modules && \
 358         $(JAR) $(RT_JAR_CREATE_OPTIONS) $@.tmp $(RESOURCE_JAR_MANIFEST_FILE) \
 359             @$(IMAGES_OUTPUTDIR)/lib$(PROFILE)/_the.resources.jar.contents
 360         $(MV) $@.tmp $@
 361 
 362 ##########################################################################################
 363 
 364 ifneq ($(OPENJDK_TARGET_OS), windows)
 365   CHARSETS_EXTRA_FILES := sun/awt/motif/X11GBK.class \
 366       sun/awt/motif/X11GB2312$$$$Decoder.class \
 367       sun/awt/motif/X11GB2312.class \
 368       sun/awt/motif/X11KSC5601$$$$Decoder.class \
 369       sun/awt/motif/X11KSC5601$$$$Encoder.class \
 370       sun/awt/motif/X11GB2312$$$$Encoder.class \
 371       sun/awt/motif/X11GBK$$$$Encoder.class \
 372       sun/awt/motif/X11KSC5601.class
 373 endif
 374 
 375 $(eval $(call SetupArchive,BUILD_CHARSETS_JAR, , \
 376     SRCS := $(JDK_OUT_CLASSES), \
 377     SUFFIXES := .class .dat, \
 378     INCLUDES := sun/nio/cs/ext, \
 379     EXTRA_FILES := sun/awt/HKSCS.class \
 380         $(CHARSETS_EXTRA_FILES), \
 381     JAR := $(IMAGES_OUTPUTDIR)/lib/charsets.jar, \
 382     SKIP_METAINF := true, \
 383     CHECK_COMPRESS_JAR := true))
 384 
 385 ##########################################################################################
 386 
 387 $(eval $(call SetupArchive,BUILD_ZIPFS_JAR, , \
 388     SRCS := $(JDK_OUT_CLASSES), \
 389     INCLUDES := jdk/nio/zipfs, \
 390     EXTRA_FILES := META-INF/services/java.nio.file.spi.FileSystemProvider, \
 391     JAR := $(IMAGES_OUTPUTDIR)/lib/ext/zipfs.jar, \
 392     SKIP_METAINF := true, \
 393     CHECK_COMPRESS_JAR := true))
 394 
 395 ##########################################################################################
 396 
 397 ifndef OPENJDK
 398   ifeq ($(ENABLE_JFR), true)
 399     $(eval $(call SetupArchive,BUILD_JFR_JAR, , \
 400         SRCS := $(JDK_OUTPUTDIR)/modules/jdk.jfr, \
 401         SUFFIXES := .class .jfc .xsd, \
 402         INCLUDES := com/oracle/jrockit/jfr \
 403             oracle/jrockit/jfr \
 404             jdk/jfr, \
 405         JAR := $(IMAGES_OUTPUTDIR)/lib/jfr.jar, \
 406         SKIP_METAINF := true, \
 407         MANIFEST := $(MAINMANIFEST), \
 408         CHECK_COMPRESS_JAR := true))
 409 
 410   endif
 411 endif
 412 
 413 ##########################################################################################
 414 
 415 $(eval $(call SetupArchive,BUILD_JSSE_JAR, , \
 416     SRCS := $(JDK_OUT_CLASSES), \
 417     INCLUDES := sun/security/provider/Sun.class \
 418         sun/security/rsa/SunRsaSign.class \
 419         sun/security/ssl \
 420         com/sun/net/ssl/internal/ssl, \
 421     JAR := $(IMAGES_OUTPUTDIR)/lib/jsse.jar, \
 422     SKIP_METAINF := true, \
 423     MANIFEST := $(MAINMANIFEST), \
 424     CHECK_COMPRESS_JAR := true))
 425 
 426 ##########################################################################################
 427 
 428 $(eval $(call SetupArchive,BUILD_SWINGBEANS_JAR, , \
 429     SRCS := $(JDK_OUTPUTDIR)/modules/java.desktop, \
 430     SUFFIXES := BeanInfo.class .gif, \
 431     INCLUDES := javax/swing sun/swing, \
 432     EXCLUDES := javax/swing/plaf, \
 433     EXTRA_FILES := javax/swing/SwingBeanInfoBase.class sun/swing/BeanInfoUtils.class, \
 434     JAR := $(IMAGES_OUTPUTDIR)/lib/dt.jar, \
 435     SKIP_METAINF := true))
 436 
 437 ##########################################################################################
 438 
 439 # Get the CLDRVERSION
 440 include gensrc/GensrcCLDR.gmk
 441 
 442 CLDRDATA_JAR_DST := $(IMAGES_OUTPUTDIR)/lib/ext/cldrdata.jar
 443 
 444 CLDR_SERVICES_DIR := $(IMAGES_OUTPUTDIR)/cldrmetainfo
 445 
 446 CLDR_METAINF_SERVICES := $(CLDR_SERVICES_DIR)/META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo
 447 
 448 $(CLDR_METAINF_SERVICES): $(JDK_TOPDIR)/src/jdk.localedata/META-INF/cldrdata-services/sun.util.locale.provider.LocaleDataMetaInfo
 449         $(install-file)
 450 
 451 $(eval $(call SetupArchive,BUILD_CLDRDATA_JAR, \
 452     $(CLDR_METAINF_SERVICES), \
 453     SRCS := $(JDK_OUTPUTDIR)/modules/jdk.localedata \
 454         $(CLDR_SERVICES_DIR), \
 455     SUFFIXES := .class, \
 456     INCLUDES := sun/text/resources/cldr \
 457         sun/util/resources/cldr, \
 458     EXTRA_FILES := META-INF/services/sun.util.locale.provider.LocaleDataMetaInfo, \
 459     JAR := $(CLDRDATA_JAR_DST), \
 460     EXTRA_MANIFEST_ATTR := CLDR-Version: $(CLDRVERSION), \
 461     SKIP_METAINF := true))
 462 
 463 ##########################################################################################
 464 
 465 TOOLS_JAR_INCLUDES := \
 466     com/sun/codemodel \
 467     com/sun/istack/internal/tools \
 468     com/sun/jarsigner \
 469     com/sun/javadoc \
 470     com/sun/jdi \
 471     com/sun/source \
 472     com/sun/tools/attach \
 473     com/sun/tools/classfile \
 474     com/sun/tools/corba \
 475     com/sun/tools/doclets \
 476     com/sun/tools/doclint \
 477     com/sun/tools/example/debug/expr \
 478     com/sun/tools/example/debug/tty \
 479     com/sun/tools/extcheck \
 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 := modules/java.base/javax/net \
 713         modules/java.base/javax/security/cert \
 714         modules/java.base/com/sun/net/ssl \
 715         modules/java.base/com/sun/security/cert \
 716         modules/java.base/sun/net/www/protocol/https \
 717         modules/java.base/sun/security/pkcs12 \
 718         modules/java.base/sun/security/ssl \
 719         modules/java.security.jgss/sun/security/krb5 \
 720         modules/java.security.jgss/sun/security/krb5/internal \
 721         modules/java.security.jgss/sun/security/krb5/internal/ccache \
 722         modules/java.security.jgss/sun/security/krb5/internal/crypto \
 723         modules/java.security.jgss/sun/security/krb5/internal/ktab \
 724         modules/java.security.jgss/sun/security/krb5/internal/rcache \
 725         modules/java.security.jgss/sun/security/krb5/internal/util, \
 726     INCLUDE_FILES := modules/java.security.jgss/sun/security/jgss/spi/GSSContextSpi.class, \
 727     EXCLUDES := modules/java.security.jgss/sun/security/krb5/internal/tools, \
 728     ZIP := $(IMAGES_OUTPUTDIR)/sec-bin.zip))
 729 
 730 JARS += $(IMAGES_OUTPUTDIR)/sec-bin.zip
 731 
 732 ##########################################################################################
 733 #
 734 # Windows specific binary security packages.
 735 #
 736 ifeq ($(OPENJDK_TARGET_OS), windows)
 737   # sec-windows-bin.zip is used by builds where the corresponding sources are not available
 738   $(eval $(call SetupZipArchive,BUILD_SEC_WINDOWS_BIN_ZIP, \
 739       SRC := $(JDK_OUTPUTDIR), \
 740       INCLUDES := modules/java.security.jgss/sun/security/krb5/internal/tools, \
 741       ZIP := $(IMAGES_OUTPUTDIR)/sec-windows-bin.zip))
 742 
 743   JARS += $(IMAGES_OUTPUTDIR)/sec-windows-bin.zip
 744 
 745   # JGSS files contain the native Kerberos library
 746   ifeq ($(OPENJDK_TARGET_CPU), x86_64)
 747     JGSS_ZIP_NAME = jgss-windows-x64-bin.zip
 748   else
 749     JGSS_ZIP_NAME = jgss-windows-i586-bin.zip
 750   endif
 751 
 752   $(eval $(call SetupZipArchive,BUILD_JGSS_BIN_ZIP, \
 753       SRC := $(JDK_OUTPUTDIR), \
 754       INCLUDE_FILES := bin/w2k_lsa_auth.dll \
 755           bin/w2k_lsa_auth.map \
 756           bin/w2k_lsa_auth.pdb, \
 757       ZIP := $(IMAGES_OUTPUTDIR)/$(JGSS_ZIP_NAME)))
 758 
 759   JARS += $(IMAGES_OUTPUTDIR)/$(JGSS_ZIP_NAME)
 760 endif
 761 
 762 ##########################################################################################
 763 
 764 # This rule copies all jars from jdk/lib/... to images/lib/... to avoid having to track 
 765 # which jars are where
 766 $(IMAGES_OUTPUTDIR)/lib/%: $(JDK_OUTPUTDIR)/lib/%
 767         $(install-file)
 768 
 769 ##########################################################################################
 770 
 771 # Import nashorn.jar from nashorn dist dir.
 772 $(IMAGES_OUTPUTDIR)/lib/ext/nashorn.jar: $(NASHORN_DIST)/nashorn.jar
 773         $(install-file)
 774 
 775 ##########################################################################################
 776 
 777 # Hook to include the corresponding custom file, if present.
 778 $(eval $(call IncludeCustomExtension, jdk, CreateJars.gmk))
 779 
 780 ##########################################################################################
 781 
 782 all: $(JARS)
 783 
 784 .PHONY: default all