# HG changeset patch
# User xiomara
# Date 1184966525 0
# Node ID bf1d8af0651fbe007469656f244dc28a456ff767
# Parent 64ed597c0ad3b8b87d7d7c40411ba216e72c04a5
[svn] Load openjdk/jdk7/b16 into jdk/trunk.
diff -r 64ed597c0ad3 -r bf1d8af0651f README-builds.html
--- a/README-builds.html Thu Jul 05 23:47:33 2007 +0000
+++ b/README-builds.html Fri Jul 20 21:22:05 2007 +0000
@@ -516,7 +516,7 @@
Install the
Binary Plugs, set
- ALT_CLOSED_JDK_IMPORT_PATH..
+ ALT_BINARY_PLUGS_PATH..
Install the
@@ -566,7 +566,7 @@
Install the
Binary Plugs, set
- ALT_CLOSED_JDK_IMPORT_PATH.
+ ALT_BINARY_PLUGS_PATH.
Install the
@@ -657,7 +657,7 @@
Install the
Binary Plugs, set
- ALT_CLOSED_JDK_IMPORT_PATH..
+ ALT_BINARY_PLUGS_PATH..
Install the
@@ -745,7 +745,7 @@
the OpenJDK site,
install the bundle,
and make sure you set
- ALT_CLOSED_JDK_IMPORT_PATH
+ ALT_BINARY_PLUGS_PATH
to the root of this installation.
@@ -1256,7 +1256,7 @@
j2se/src/share/lib/security/cacerts.
- ALT_CLOSED_JDK_IMPORT_PATH
+ ALT_BINARY_PLUGS_PATH
The location of the binary plugs installation.
See Binary Plugs for more information.
diff -r 64ed597c0ad3 -r bf1d8af0651f control/make/Makefile
--- a/control/make/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/control/make/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -80,12 +80,12 @@
#
# DEBUG_NAME is fastdebug or debug
# ALT_OUTPUTDIR is changed to have -debug or -fastdebug suffix
-# The resulting j2sdk-image is copied into the product OUTPUTDIR as subdir
-# of $(OUTPUTDIR)/j2sdk-debug-image. With the name debug or fastdebug.
-# When the product build INSTALL step happens, it will create a
-# jdk-*-debug-** bundle (tar or zip) that includes whatever is in
-# $(OUTPUTDIR)/j2sdk-debug-image, and since it uses subdirs, untar'ing
-# these bundles will not clobber the product bits.
+# The resulting j2sdk-image is used by the install makefiles to create a
+# debug install bundle jdk-*-debug-** bundle (tar or zip)
+# which will install in the debug or fastdebug subdirectory of the
+# normal product install area.
+# The install process needs to know what the DEBUG_NAME is, so
+# look for INSTALL_DEBUG_NAME in the install rules.
#
COMMON_DEBUG_FLAGS= \
@@ -101,12 +101,6 @@
generic_debug_build:
@$(ECHO) $@ build started: `$(DATE) '+%y-%m-%d %H:%M'`
$(MAKE) $(COMMON_DEBUG_FLAGS) setup build
- $(RM) -r $(OUTPUTDIR)/j2sdk-debug-image/$(DEBUG_NAME)
- $(MKDIR) -p $(OUTPUTDIR)/j2sdk-debug-image/$(DEBUG_NAME)
- ( $(CD) $(OUTPUTDIR)-$(DEBUG_NAME)/j2sdk-image && \
- $(TAR) cf - * ) | \
- ( $(CD) $(OUTPUTDIR)/j2sdk-debug-image/$(DEBUG_NAME) && \
- $(TAR) xf - )
@$(ECHO) $@ build finished: `$(DATE) '+%y-%m-%d %H:%M'`
debug_build:
@@ -123,6 +117,12 @@
all:: debug_build
endif
+ifeq ($(BUILD_J2SE), true)
+ ifeq ($(BUNDLE_RULES_AVAILABLE), true)
+ all:: openjdk-binary-plugs-bundles
+ endif
+endif
+
ifeq ($(BUILD_INSTALL), true)
all :: $(INSTALL)
clobber:: install-clobber
@@ -327,10 +327,10 @@
"
################################################################
-# Source bundling
+# Source and binary plug bundling
################################################################
-ifeq ($(SOURCE_BUNDLE_RULES_AVAILABLE), true)
- include $(SOURCE_BUNDLE_RULES)
+ifeq ($(BUNDLE_RULES_AVAILABLE), true)
+ include $(BUNDLE_RULES)
endif
################################################################
diff -r 64ed597c0ad3 -r bf1d8af0651f control/make/common/Defs.gmk
--- a/control/make/common/Defs.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/control/make/common/Defs.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -195,9 +195,6 @@
$(shell if [ -r $1 ]; then $(ECHO) true; else $(ECHO) false; fi)
endef
-SOURCE_BUNDLE_RULES = $(CONTROL_TOPDIR)/make/closed/source-bundles.gmk
-SOURCE_BUNDLE_RULES_AVAILABLE := $(call MkExists,$(SOURCE_BUNDLE_RULES))
-
HOTSPOT_SRC_AVAILABLE := $(call MkExists,$(HOTSPOT_TOPDIR)/make/Makefile)
ifndef BUILD_HOTSPOT
ifdef ALT_HOTSPOT_IMPORT_PATH
@@ -250,6 +247,30 @@
endif
endif
+# Do we build the source and openjdk binary plug bundles?
+BUNDLE_RULES = $(CONTROL_TOPDIR)/make/closed/bundles.gmk
+BUNDLE_RULES_AVAILABLE := $(call MkExists,$(BUNDLE_RULES))
+
+# Current things we do NOT build for OPENJDK
+ifdef OPENJDK
+ BUILD_MOTIF = false
+ BUILD_DEPLOY = false
+ BUILD_INSTALL = false
+ BUILD_SPONSORS = false
+ BUNDLE_RULES_AVAILABLE := false
+ # These could be over-ridden on the command line or in environment
+ ifndef SKIP_FASTDEBUG_BUILD
+ SKIP_FASTDEBUG_BUILD = true
+ endif
+ ifndef SKIP_DEBUG_BUILD
+ SKIP_DEBUG_BUILD = true
+ endif
+ ifndef SKIP_COMPARE_IMAGES
+ SKIP_COMPARE_IMAGES = true
+ endif
+endif
+
+# Many reasons why we would want to skip the comparison to previous jdk
ifndef SKIP_COMPARE_IMAGES
ifeq ($(BUILD_J2SE), false)
SKIP_COMPARE_IMAGES = true
@@ -265,18 +286,15 @@
endif
endif
+# Select defaults if these are not set to true or false
ifndef SKIP_DEBUG_BUILD
SKIP_DEBUG_BUILD=true
endif
-
ifndef SKIP_FASTDEBUG_BUILD
- ifdef OPENJDK
- SKIP_FASTDEBUG_BUILD=true
- else
- SKIP_FASTDEBUG_BUILD=false
- endif
+ SKIP_FASTDEBUG_BUILD=false
endif
+# Output directory for hotspot build
HOTSPOT_DIR = $(ABS_OUTPUTDIR)/hotspot
# The MESSAGE, WARNING and ERROR files are used to store sanity check and
diff -r 64ed597c0ad3 -r bf1d8af0651f control/make/install-rules.gmk
--- a/control/make/install-rules.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/control/make/install-rules.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -37,6 +37,8 @@
# put the generated patch in their own place in OUTPUTDIR
INSTALL_OUTPUTDIR = $(ABS_OUTPUTDIR)
+INSTALL_DEBUG_NAME=fastdebug
+
INSTALL_BUILD_TARGETS = sanity all
INSTALL_BUILD_ARGUMENTS = \
EXTERNALSANITYCONTROL=true \
@@ -47,15 +49,8 @@
ALT_BASE_IMAGE_ZIP=$(ALT_BASE_IMAGE_ZIP) \
ALT_BASE_IMAGE_DIR=$(ALT_BASE_IMAGE_DIR) \
ALT_NEW_IMAGE_DIR=$(ALT_NEW_IMAGE_DIR) \
- ALT_BUNDLE_DATE=$(BUNDLE_DATE)
-
-ifeq ($(DEBUG_NAME), debug)
-INSTALL_BUILD_ARGUMENTS += VARIANT=DBG
-endif
-
-ifeq ($(DEBUG_NAME), fastdebug)
-INSTALL_BUILD_ARGUMENTS += VARIANT=DBG FASTDEBUG=true
-endif
+ ALT_BUNDLE_DATE=$(BUNDLE_DATE) \
+ INSTALL_DEBUG_NAME=$(INSTALL_DEBUG_NAME)
install: install-build
@@ -78,7 +73,7 @@
fi
endif
-installer:
+installer: prime_debug_area
ifeq ($(BUILD_INSTALL), true)
if [ -r $(INSTALL_TOPDIR)/make/installer/Makefile ]; then \
( $(CD) $(INSTALL_TOPDIR)/make/installer; $(MAKE) all $(INSTALL_BUILD_ARGUMENTS) ); \
@@ -90,7 +85,7 @@
($(CD) $(INSTALL_TOPDIR)/make; $(MAKE) clobber $(INSTALL_BUILD_ARGUMENTS))
endif
-install-sanity:: prime_debug_area
+install-sanity::
ifeq ($(BUILD_INSTALL), true)
($(CD) $(INSTALL_TOPDIR)/make; $(MAKE) sanity $(INSTALL_BUILD_ARGUMENTS))
endif
@@ -101,11 +96,12 @@
#
# Install process seems to always want SOMETHING in this debug image area
prime_debug_area:
- @$(MKDIR) -p $(OUTPUTDIR)/j2sdk-debug-image/fastdebug
+ @$(MKDIR) -p $(OUTPUTDIR)-$(INSTALL_DEBUG_NAME)/j2sdk-image
######################################
# Rules for making the install
######################################
.PHONY: install install-build install-clobber install-sanity \
- install-freshen update-installer update-patchgen installer
+ install-freshen update-installer update-patchgen installer \
+ prime_debug_area
diff -r 64ed597c0ad3 -r bf1d8af0651f control/make/jprt.config
--- a/control/make/jprt.config Thu Jul 05 23:47:33 2007 +0000
+++ b/control/make/jprt.config Fri Jul 20 21:22:05 2007 +0000
@@ -1,28 +1,28 @@
#!echo "This is not a shell script"
#############################################################################
#
-#Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
-#DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+# Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-#This code is free software; you can redistribute it and/or modify it
-#under the terms of the GNU General Public License version 2 only, as
-#published by the Free Software Foundation. Sun designates this
-#particular file as subject to the "Classpath" exception as provided
-#by Sun in the LICENSE file that accompanied this code.
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
#
-#This code is distributed in the hope that it will be useful, but WITHOUT
-#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-#version 2 for more details (a copy is included in the LICENSE file that
-#accompanied this code).
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
#
-#You should have received a copy of the GNU General Public License version
-#2 along with this work; if not, write to the Free Software Foundation,
-#Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
-#Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-#CA 95054 USA or visit www.sun.com if you need additional information or
-#have any questions.
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
#
#############################################################################
#
@@ -32,6 +32,7 @@
# ALT_BOOTDIR
# ALT_SLASH_JAVA
# ALT_JDK_IMPORT_PATH
+# OPENJDK
# Windows Only:
# PATH
# VS71COMNTOOLS
@@ -39,18 +40,23 @@
# ROOTDIR
#
# Output variable settings:
-# make Full path to GNU make
+# make Full path to GNU make
+# compiler_path Path to compiler bin directory
+# compiler_name Unique name of this compiler
#
# Output environment variables:
# PATH
# ALT_COMPILER_PATH
+# OPENJDK only:
+# ALT_CLOSED_JDK_IMPORT_PATH
+# ALT_JDK_DEVTOOLS_DIR
# Windows Only:
# ALT_MSDEVTOOLS_PATH
# ALT_DEVTOOLS_PATH (To avoid the C:/UTILS default)
# LIB
# INCLUDE
#
-# With JDK6 or newer, most settings will be found via ALT_SLASH_JAVA or
+# After JDK6, most settings will be found via ALT_SLASH_JAVA or
# by way of other system environment variables. If this was JDK5
# or an older JDK, you might need to export more ALT_* variables.
#
@@ -87,10 +93,18 @@
slashjava="${ALT_SLASH_JAVA}"
jdk_import="${ALT_JDK_IMPORT_PATH}"
+jdk_devtools="${slashjava}/devtools"
+
# Check input
dirMustExist "${bootdir}" ALT_BOOTDIR
dirMustExist "${slashjava}" ALT_SLASH_JAVA
dirMustExist "${jdk_import}" ALT_JDK_IMPORT_PATH
+
+# Use the JDK import for now (FIXME: use the binary plugs?)
+if [ "${OPENJDK}" = true ] ; then
+ ALT_CLOSED_JDK_IMPORT_PATH="${jdk_import}"
+ export ALT_CLOSED_JDK_IMPORT_PATH
+fi
# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
osname=`uname -s`
@@ -105,7 +119,8 @@
fi
# Get the SS11 compilers into path (make sure it matches ALT setting)
- compiler_path=${slashjava}/devtools/${solaris_arch}/SUNWspro/SS11/bin
+ compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/SS11/bin
+ compiler_name=SS11
ALT_COMPILER_PATH="${compiler_path}"
export ALT_COMPILER_PATH
dirMustExist "${compiler_path}" ALT_COMPILER_PATH
@@ -122,7 +137,7 @@
if [ ! -f ${make} ] ; then
make=/opt/sfw/bin/gmake
if [ ! -f ${make} ] ; then
- make=${slashjava}/devtools/${solaris_arch}/bin/gnumake
+ make=${jdk_devtools}/${solaris_arch}/bin/gnumake
fi
fi
fileMustExist "${make}" make
@@ -142,6 +157,7 @@
# Get the compilers into path (make sure it matches ALT setting)
compiler_path=/usr/bin
+ compiler_name=usr_bin
ALT_COMPILER_PATH="${compiler_path}"
export ALT_COMPILER_PATH
dirMustExist "${compiler_path}" ALT_COMPILER_PATH
@@ -158,6 +174,13 @@
fileMustExist "${make}" make
umask 002
+
+ # Linux platform may be old, use motif files from the devtools area
+ if [ "${OPENJDK}" = true ] ; then
+ ALT_JDK_DEVTOOLS_DIR="${jdk_devtools}"
+ export ALT_JDK_DEVTOOLS_DIR
+ fi
+
else
@@ -188,7 +211,7 @@
unixcommand_path="${mkshome}/mksnt"
path4sdk="${unixcommand_path}"
dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
- devtools_path="${slashjava}/devtools/win32/bin"
+ devtools_path="${jdk_devtools}/win32/bin"
path4sdk="${devtools_path};${path4sdk}"
# Normally this need not be set, but on Windows it's default is C:/UTILS
ALT_DEVTOOLS_PATH="${devtools_path}"
@@ -225,6 +248,7 @@
msdevtools_path="${msdev_root}/bin"
vc7_root="${vs_root}/Vc7"
compiler_path="${vc7_root}/bin"
+ compiler_name=VS2003
platform_sdk="${vc7_root}/PlatformSDK"
# LIB and INCLUDE must use ; as a separator
include4sdk="${vc7_root}/atlmfc/include"
@@ -253,6 +277,7 @@
platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
fi
compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
+ compiler_name=VS2005_PSDK
msdevtools_path="${platform_sdk}/Bin"
# LIB and INCLUDE must use ; as a separator
include4sdk="${platform_sdk}/Include"
diff -r 64ed597c0ad3 -r bf1d8af0651f control/make/sanity-rules.gmk
--- a/control/make/sanity-rules.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/control/make/sanity-rules.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -45,16 +45,21 @@
sanity:: j2se-sanity
endif
-ifeq ($(BUILD_INSTALL), true)
- sanity:: install-sanity
-endif
+# Only need these sanity rules when not doing a debug build
+ifeq ($(DEBUG_NAME),)
+
+ ifeq ($(BUILD_INSTALL), true)
+ sanity:: install-sanity
+ endif
-ifeq ($(BUILD_SPONSORS), true)
- sanity:: sponsors-sanity
-endif
+ ifeq ($(BUILD_SPONSORS), true)
+ sanity:: sponsors-sanity
+ endif
-ifneq ($(SKIP_COMPARE_IMAGES), true)
- sanity:: compare-images-sanity
+ ifneq ($(SKIP_COMPARE_IMAGES), true)
+ sanity:: compare-images-sanity
+ endif
+
endif
sanity:: post-sanity
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/Makefile
--- a/j2se/make/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -325,6 +325,11 @@
endif
#
+# Binary Plug rules and macros
+#
+include $(BUILDDIR)/common/BinaryPlugs.gmk
+
+#
# Get top level sccs_get rule
#
include $(BUILDDIR)/common/Rules-SCCS.gmk
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/README-builds.html
--- a/j2se/make/README-builds.html Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/README-builds.html Fri Jul 20 21:22:05 2007 +0000
@@ -516,7 +516,7 @@
Install the
Binary Plugs, set
- ALT_CLOSED_JDK_IMPORT_PATH..
+ ALT_BINARY_PLUGS_PATH..
Install the
@@ -566,7 +566,7 @@
Install the
Binary Plugs, set
- ALT_CLOSED_JDK_IMPORT_PATH.
+ ALT_BINARY_PLUGS_PATH.
Install the
@@ -657,7 +657,7 @@
Install the
Binary Plugs, set
- ALT_CLOSED_JDK_IMPORT_PATH..
+ ALT_BINARY_PLUGS_PATH..
Install the
@@ -745,7 +745,7 @@
the OpenJDK site,
install the bundle,
and make sure you set
- ALT_CLOSED_JDK_IMPORT_PATH
+ ALT_BINARY_PLUGS_PATH
to the root of this installation.
@@ -1256,7 +1256,7 @@
j2se/src/share/lib/security/cacerts.
- ALT_CLOSED_JDK_IMPORT_PATH
+ ALT_BINARY_PLUGS_PATH
The location of the binary plugs installation.
See Binary Plugs for more information.
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/BinaryPlugs.gmk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/j2se/make/common/BinaryPlugs.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -0,0 +1,641 @@
+#
+# Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+########################################################################
+
+# Definitions for openjdk plugs (used by both import and export)
+
+# Names of native shared libraries
+
+PLUG_T2K_LIBRARY=$(LIB_PREFIX)t2k.$(LIBRARY_SUFFIX)
+PLUG_DCPR_LIBRARY=$(LIB_PREFIX)dcpr.$(LIBRARY_SUFFIX)
+PLUG_JSOUND_LIBRARY=$(LIB_PREFIX)jsound.$(LIBRARY_SUFFIX)
+PLUG_JSOUNDDS_LIBRARY=$(LIB_PREFIX)jsoundds.$(LIBRARY_SUFFIX)
+PLUG_JSOUNDALSA_LIBRARY=$(LIB_PREFIX)jsoundalsa.$(LIBRARY_SUFFIX)
+PLUG_LIBRARY_NAMES = \
+ $(PLUG_T2K_LIBRARY) \
+ $(PLUG_DCPR_LIBRARY) \
+ $(PLUG_JSOUND_LIBRARY)
+
+# Platform specific ones
+
+ifeq ($(PLATFORM),windows)
+ # On Windows 32bit include the DirectSound library.
+ # See /make/javax/sound/Makefile & subdirs Makefiles for more details.
+ ifeq ($(ARCH), i586)
+ # include DirectSound implementation
+ PLUG_LIBRARY_NAMES += $(PLUG_JSOUNDDS_LIBRARY)
+ endif # i586
+ PLUG_LIB_NAMES = t2k.lib
+endif # windows
+
+ifeq ($(PLATFORM),linux)
+ # On Linux include the ALSA library
+ PLUG_LIBRARY_NAMES += $(PLUG_JSOUNDALSA_LIBRARY)
+endif # linux
+
+# Security jar file names, relative to jre/lib directory.
+
+PLUG_JARNAMES = \
+ security/US_export_policy.jar \
+ security/local_policy.jar \
+ jce.jar \
+ ext/sunjce_provider.jar
+
+# Sub-directory where native shared libraries are located (e.g. jre/bin or...)
+
+PLUG_LOCATION_SUBDIR=$(ARCH_VM_SUBDIR)
+
+# Explicit classfile lists
+
+# WARNING: These classlists will not work with pattern rules, only used in
+# shell commands.
+# The \$$ patterns will fail in pattern rules, which want $$,
+# but the $$ fails in shell commands.
+# The shell commands are more important.
+# Also, the $1 pattern in these names causes problems with the
+# GNU make define feature, so you can't use these in define's.
+
+PLUG_JMF_CLASS_NAMES = \
+com/sun/jmx/snmp/SnmpDataTypeEnums.class \
+com/sun/jmx/snmp/SnmpDefinitions.class \
+com/sun/jmx/snmp/SnmpOid.class \
+com/sun/jmx/snmp/SnmpOidDatabase.class \
+com/sun/jmx/snmp/SnmpOidDatabaseSupport.class \
+com/sun/jmx/snmp/SnmpOidRecord.class \
+com/sun/jmx/snmp/SnmpOidTable.class \
+com/sun/jmx/snmp/SnmpOidTableSupport.class \
+com/sun/jmx/snmp/SnmpParameters.class \
+com/sun/jmx/snmp/SnmpPduPacket.class \
+com/sun/jmx/snmp/SnmpPeer.class \
+com/sun/jmx/snmp/SnmpTimeticks.class \
+com/sun/jmx/snmp/SnmpVarBind.class \
+com/sun/jmx/snmp/SnmpVarBindList.class \
+com/sun/jmx/snmp/Timestamp.class \
+com/sun/jmx/snmp/daemon/SendQ.class \
+com/sun/jmx/snmp/daemon/SnmpInformRequest.class \
+com/sun/jmx/snmp/daemon/SnmpQManager.class \
+com/sun/jmx/snmp/daemon/SnmpRequestCounter.class \
+com/sun/jmx/snmp/daemon/SnmpResponseHandler.class \
+com/sun/jmx/snmp/daemon/SnmpSendServer.class \
+com/sun/jmx/snmp/daemon/SnmpSession.class \
+com/sun/jmx/snmp/daemon/SnmpSocket.class \
+com/sun/jmx/snmp/daemon/SnmpTimerServer.class \
+com/sun/jmx/snmp/daemon/WaitQ.class
+
+PLUG_SOUND_CLASS_NAMES = \
+com/sun/media/sound/AbstractDataLine.class \
+com/sun/media/sound/AbstractLine.class \
+com/sun/media/sound/AbstractMidiDevice\$$AbstractReceiver.class \
+com/sun/media/sound/AbstractMidiDevice\$$BasicTransmitter.class \
+com/sun/media/sound/AbstractMidiDevice\$$TransmitterList.class \
+com/sun/media/sound/AbstractMidiDevice.class \
+com/sun/media/sound/AbstractMidiDeviceProvider\$$Info.class \
+com/sun/media/sound/AbstractMidiDeviceProvider.class \
+com/sun/media/sound/AbstractMixer.class \
+com/sun/media/sound/AbstractPlayer.class \
+com/sun/media/sound/AiffFileFormat.class \
+com/sun/media/sound/AiffFileReader.class \
+com/sun/media/sound/AiffFileWriter.class \
+com/sun/media/sound/AlawCodec\$$AlawCodecStream.class \
+com/sun/media/sound/AlawCodec.class \
+com/sun/media/sound/AuFileFormat.class \
+com/sun/media/sound/AuFileReader.class \
+com/sun/media/sound/AuFileWriter.class \
+com/sun/media/sound/AutoClosingClip.class \
+com/sun/media/sound/AutoConnectSequencer.class \
+com/sun/media/sound/CircularBuffer.class \
+com/sun/media/sound/DataPusher.class \
+com/sun/media/sound/DirectAudioDevice\$$1.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectBAOS.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectClip.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectDL\$$Balance.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectDL\$$Gain.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectDL\$$Mute.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectDL\$$Pan.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectDL.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectDLI.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectSDL.class \
+com/sun/media/sound/DirectAudioDevice\$$DirectTDL.class \
+com/sun/media/sound/DirectAudioDevice.class \
+com/sun/media/sound/DirectAudioDeviceProvider\$$DirectAudioDeviceInfo.class \
+com/sun/media/sound/DirectAudioDeviceProvider.class \
+com/sun/media/sound/EventDispatcher\$$ClipInfo.class \
+com/sun/media/sound/EventDispatcher\$$EventInfo.class \
+com/sun/media/sound/EventDispatcher\$$LineMonitor.class \
+com/sun/media/sound/EventDispatcher.class \
+com/sun/media/sound/FastShortMessage.class \
+com/sun/media/sound/FastSysexMessage.class \
+com/sun/media/sound/HeadspaceInstrument.class \
+com/sun/media/sound/HeadspaceMixer\$$1.class \
+com/sun/media/sound/HeadspaceMixer\$$MidiLine.class \
+com/sun/media/sound/HeadspaceMixer\$$MidiLineInfo.class \
+com/sun/media/sound/HeadspaceMixer\$$MixerInfo.class \
+com/sun/media/sound/HeadspaceMixer\$$MixerReverbControl\$$MixerReverbType.class \
+com/sun/media/sound/HeadspaceMixer\$$MixerReverbControl.class \
+com/sun/media/sound/HeadspaceMixer.class \
+com/sun/media/sound/HeadspaceMixerProvider.class \
+com/sun/media/sound/HeadspaceSample.class \
+com/sun/media/sound/HeadspaceSoundbank.class \
+com/sun/media/sound/HsbParser.class \
+com/sun/media/sound/JDK13Services\$$1.class \
+com/sun/media/sound/JDK13Services\$$ProviderCache.class \
+com/sun/media/sound/JDK13Services.class \
+com/sun/media/sound/JSSecurityManager\$$1.class \
+com/sun/media/sound/JSSecurityManager\$$2.class \
+com/sun/media/sound/JSSecurityManager\$$3.class \
+com/sun/media/sound/JSSecurityManager\$$4.class \
+com/sun/media/sound/JSSecurityManager\$$5.class \
+com/sun/media/sound/JSSecurityManager\$$6.class \
+com/sun/media/sound/JSSecurityManager\$$7.class \
+com/sun/media/sound/JSSecurityManager.class \
+com/sun/media/sound/JavaSoundAudioClip\$$DirectBAOS.class \
+com/sun/media/sound/JavaSoundAudioClip.class \
+com/sun/media/sound/MidiInDevice\$$1.class \
+com/sun/media/sound/MidiInDevice\$$MidiInTransmitter.class \
+com/sun/media/sound/MidiInDevice.class \
+com/sun/media/sound/MidiInDeviceProvider\$$1.class \
+com/sun/media/sound/MidiInDeviceProvider\$$MidiInDeviceInfo.class \
+com/sun/media/sound/MidiInDeviceProvider.class \
+com/sun/media/sound/MidiOutDevice\$$MidiOutReceiver.class \
+com/sun/media/sound/MidiOutDevice.class \
+com/sun/media/sound/MidiOutDeviceProvider\$$1.class \
+com/sun/media/sound/MidiOutDeviceProvider\$$MidiOutDeviceInfo.class \
+com/sun/media/sound/MidiOutDeviceProvider.class \
+com/sun/media/sound/MidiUtils\$$TempoCache.class \
+com/sun/media/sound/MidiUtils.class \
+com/sun/media/sound/MixerClip\$$1.class \
+com/sun/media/sound/MixerClip\$$MixerClipApplyReverbControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipGainControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipMuteControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipPanControl.class \
+com/sun/media/sound/MixerClip\$$MixerClipSampleRateControl.class \
+com/sun/media/sound/MixerClip.class \
+com/sun/media/sound/MixerMidiChannel.class \
+com/sun/media/sound/MixerSequencer\$$1.class \
+com/sun/media/sound/MixerSequencer\$$ControllerVectorElement.class \
+com/sun/media/sound/MixerSequencer\$$MixerSequencerInfo.class \
+com/sun/media/sound/MixerSequencer\$$RecordingTrack.class \
+com/sun/media/sound/MixerSequencer.class \
+com/sun/media/sound/MixerSequencerProvider.class \
+com/sun/media/sound/MixerSourceLine\$$1.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineApplyReverbControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineGainControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineMuteControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLinePanControl.class \
+com/sun/media/sound/MixerSourceLine\$$MixerSourceLineSampleRateControl.class \
+com/sun/media/sound/MixerSourceLine.class \
+com/sun/media/sound/MixerSynth\$$1.class \
+com/sun/media/sound/MixerSynth\$$MixerSynthInfo.class \
+com/sun/media/sound/MixerSynth\$$SynthReceiver.class \
+com/sun/media/sound/MixerSynth.class \
+com/sun/media/sound/MixerSynthProvider.class \
+com/sun/media/sound/MixerThread.class \
+com/sun/media/sound/PCMtoPCMCodec\$$PCMtoPCMCodecStream.class \
+com/sun/media/sound/PCMtoPCMCodec.class \
+com/sun/media/sound/Platform.class \
+com/sun/media/sound/PortMixer\$$1.class \
+com/sun/media/sound/PortMixer\$$BoolCtrl\$$BCT.class \
+com/sun/media/sound/PortMixer\$$BoolCtrl.class \
+com/sun/media/sound/PortMixer\$$CompCtrl\$$CCT.class \
+com/sun/media/sound/PortMixer\$$CompCtrl.class \
+com/sun/media/sound/PortMixer\$$FloatCtrl\$$FCT.class \
+com/sun/media/sound/PortMixer\$$FloatCtrl.class \
+com/sun/media/sound/PortMixer\$$PortInfo.class \
+com/sun/media/sound/PortMixer\$$PortMixerPort.class \
+com/sun/media/sound/PortMixer.class \
+com/sun/media/sound/PortMixerProvider\$$PortMixerInfo.class \
+com/sun/media/sound/PortMixerProvider.class \
+com/sun/media/sound/Printer.class \
+com/sun/media/sound/RealTimeSequencer\$$1.class \
+com/sun/media/sound/RealTimeSequencer\$$ControllerListElement.class \
+com/sun/media/sound/RealTimeSequencer\$$DataPump.class \
+com/sun/media/sound/RealTimeSequencer\$$PlayThread.class \
+com/sun/media/sound/RealTimeSequencer\$$RealTimeSequencerInfo.class \
+com/sun/media/sound/RealTimeSequencer\$$RecordingTrack.class \
+com/sun/media/sound/RealTimeSequencer\$$SequencerReceiver.class \
+com/sun/media/sound/RealTimeSequencer\$$SequencerTransmitter.class \
+com/sun/media/sound/RealTimeSequencer.class \
+com/sun/media/sound/RealTimeSequencerProvider.class \
+com/sun/media/sound/ReferenceCountingDevice.class \
+com/sun/media/sound/RmfFileReader.class \
+com/sun/media/sound/SMFParser.class \
+com/sun/media/sound/SimpleInputDevice\$$1.class \
+com/sun/media/sound/SimpleInputDevice\$$InputDeviceDataLine.class \
+com/sun/media/sound/SimpleInputDevice\$$InputDevicePort.class \
+com/sun/media/sound/SimpleInputDevice\$$InputDevicePortInfo.class \
+com/sun/media/sound/SimpleInputDevice.class \
+com/sun/media/sound/SimpleInputDeviceProvider\$$1.class \
+com/sun/media/sound/SimpleInputDeviceProvider\$$InputDeviceInfo.class \
+com/sun/media/sound/SimpleInputDeviceProvider.class \
+com/sun/media/sound/StandardMidiFileReader.class \
+com/sun/media/sound/StandardMidiFileWriter.class \
+com/sun/media/sound/SunCodec.class \
+com/sun/media/sound/SunFileReader.class \
+com/sun/media/sound/SunFileWriter.class \
+com/sun/media/sound/Toolkit.class \
+com/sun/media/sound/UlawCodec\$$UlawCodecStream.class \
+com/sun/media/sound/UlawCodec.class \
+com/sun/media/sound/WaveFileFormat.class \
+com/sun/media/sound/WaveFileReader.class \
+com/sun/media/sound/WaveFileWriter.class
+
+PLUG_AWT_CLASS_NAMES = \
+java/awt/color/CMMException.class \
+java/awt/color/ColorSpace.class \
+java/awt/color/ICC_ColorSpace.class \
+java/awt/color/ICC_Profile\$$1.class \
+java/awt/color/ICC_Profile\$$2.class \
+java/awt/color/ICC_Profile\$$3.class \
+java/awt/color/ICC_Profile.class \
+java/awt/color/ICC_ProfileGray.class \
+java/awt/color/ICC_ProfileRGB.class \
+java/awt/image/BandedSampleModel.class \
+java/awt/image/ColorConvertOp.class \
+java/awt/image/ComponentSampleModel.class \
+java/awt/image/DataBuffer\$$1.class \
+java/awt/image/DataBuffer.class \
+java/awt/image/DataBufferByte.class \
+java/awt/image/DataBufferInt.class \
+java/awt/image/DataBufferShort.class \
+java/awt/image/DataBufferUShort.class \
+java/awt/image/MultiPixelPackedSampleModel.class \
+java/awt/image/Raster.class \
+java/awt/image/RenderedImage.class \
+java/awt/image/SampleModel.class \
+java/awt/image/SinglePixelPackedSampleModel.class \
+java/awt/image/WritableRaster.class \
+java/awt/image/WritableRenderedImage.class \
+java/awt/image/renderable/ContextualRenderedImageFactory.class \
+java/awt/image/renderable/ParameterBlock.class \
+java/awt/image/renderable/RenderContext.class \
+java/awt/image/renderable/RenderableImage.class \
+java/awt/image/renderable/RenderableImageOp.class \
+java/awt/image/renderable/RenderableImageProducer.class \
+java/awt/image/renderable/RenderedImageFactory.class
+
+PLUG_DC_CLASS_NAMES = \
+sun/dc/path/FastPathProducer.class \
+sun/dc/path/PathConsumer.class \
+sun/dc/path/PathError.class \
+sun/dc/path/PathException.class \
+sun/dc/pr/PRError.class \
+sun/dc/pr/PRException.class \
+sun/dc/pr/PathDasher.class \
+sun/dc/pr/PathFiller.class \
+sun/dc/pr/PathStroker.class \
+sun/dc/pr/Rasterizer\$$ConsumerDisposer.class \
+sun/dc/pr/Rasterizer.class
+
+# Class list temp files (used by both import and export of plugs)
+
+PLUG_TEMPDIR=$(ABS_TEMPDIR)/plugs
+PLUG_CLASS_AREAS = jmf sound awt dc
+PLUG_CLISTS = $(PLUG_CLASS_AREAS:%=$(PLUG_TEMPDIR)/%.clist)
+
+# Create jargs file command
+
+define plug-create-jargs
+@$(prep-target)
+$(SED) -e "s@^@-C $(CLASSDESTDIR) @" $< > $@
+endef # plug-create-clist-jargs
+
+# Create clist (class name list) and jargs file (input to jar)
+# Need these files to avoid long command lines which fail on some systems.
+
+$(PLUG_TEMPDIR)/jmf.clist:
+ @$(prep-target)
+ @for i in $(PLUG_JMF_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@; \
+ done
+$(PLUG_TEMPDIR)/sound.clist:
+ @$(prep-target)
+ @for i in $(PLUG_SOUND_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@ ; \
+ done
+$(PLUG_TEMPDIR)/awt.clist:
+ @$(prep-target)
+ @for i in $(PLUG_AWT_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@ ; \
+ done
+$(PLUG_TEMPDIR)/dc.clist:
+ @$(prep-target)
+ @for i in $(PLUG_DC_CLASS_NAMES) ; do \
+ $(ECHO) "$$i" >> $@ ; \
+ done
+$(PLUG_TEMPDIR)/all.clist: $(PLUG_CLISTS)
+ @$(prep-target)
+ $(CAT) $(PLUG_CLISTS) > $@
+$(PLUG_TEMPDIR)/jmf.jargs: $(PLUG_TEMPDIR)/jmf.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/sound.jargs: $(PLUG_TEMPDIR)/sound.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/awt.jargs: $(PLUG_TEMPDIR)/awt.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/dc.jargs: $(PLUG_TEMPDIR)/dc.clist
+ $(plug-create-jargs)
+$(PLUG_TEMPDIR)/all.jargs: $(PLUG_TEMPDIR)/all.clist
+ $(plug-create-jargs)
+
+#
+# Specific to OPENJDK import of binary plugs
+#
+
+ifdef OPENJDK
+
+# Import
+
+PLUG_IMPORT_DIR=$(BINARY_PLUGS_PATH)
+PLUG_IMPORT_JARFILE=$(BINARY_PLUGS_JARFILE)
+
+# Import file command
+
+define import-binary-plug-file
+@$(ECHO) "PLUG IMPORT: $(@F)"
+$(install-file)
+endef # import-binary-plug-file
+
+# Import classes command
+
+define import-binary-plug-classes
+@$(MKDIR) -p $(CLASSDESTDIR)
+@$(CAT) $1 | $(SED) -e 's/^/PLUG IMPORT: /'
+($(CD) $(CLASSDESTDIR) && $(JAR_BOOT) xf $(PLUG_IMPORT_JARFILE) @$1)
+endef # import-binary-plug-classes
+
+# Import lib jar files (only if needed)
+# NOTE: % pattern rules didn't work for some reason)
+
+$(LIBDIR)/security/US_export_policy.jar: \
+ $(PLUG_IMPORT_DIR)/jre/lib/security/US_export_policy.jar
+ $(import-binary-plug-file)
+$(LIBDIR)/security/local_policy.jar: \
+ $(PLUG_IMPORT_DIR)/jre/lib/security/local_policy.jar
+ $(import-binary-plug-file)
+$(LIBDIR)/jce.jar: \
+ $(PLUG_IMPORT_DIR)/jre/lib/jce.jar
+ $(import-binary-plug-file)
+$(LIBDIR)/ext/sunjce_provider.jar: \
+ $(PLUG_IMPORT_DIR)/jre/lib/ext/sunjce_provider.jar
+ $(import-binary-plug-file)
+
+# Import specific area classes (the classes are always created)
+
+import-binary-plug-jmf-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/jmf.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/jmf.clist)
+import-binary-plug-sound-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/sound.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/sound.clist)
+import-binary-plug-awt-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/awt.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/awt.clist)
+import-binary-plug-dc-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/dc.clist
+ $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/dc.clist)
+
+# Import all classes from the jar file
+
+import-binary-plug-jar: \
+ import-binary-plug-jmf-classes \
+ import-binary-plug-sound-classes \
+ import-binary-plug-awt-classes \
+ import-binary-plug-dc-classes
+
+# Import native libraries
+
+$(LIB_LOCATION)/$(PLUG_T2K_LIBRARY): \
+ $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_T2K_LIBRARY)
+ $(import-binary-plug-file)
+ifeq ($(PLATFORM),windows)
+$(LIBFILES_DIR)/t2k.lib: $(PLUG_IMPORT_DIR)/libfiles/t2k.lib
+ $(import-binary-plug-file)
+endif # windows
+$(LIB_LOCATION)/$(PLUG_DCPR_LIBRARY): \
+ $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_DCPR_LIBRARY)
+ $(import-binary-plug-file)
+$(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY): \
+ $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY)
+ $(import-binary-plug-file)
+$(LIB_LOCATION)/$(PLUG_JSOUNDALSA_LIBRARY): \
+ $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUNDALSA_LIBRARY)
+ $(import-binary-plug-file)
+$(LIB_LOCATION)/$(PLUG_JSOUNDDS_LIBRARY): \
+ $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUNDDS_LIBRARY)
+ $(import-binary-plug-file)
+
+# Rules only used by lower level makefiles
+
+ifeq ($(PLATFORM),windows)
+import-binary-plug-t2k-library: \
+ $(LIBFILES_DIR)/t2k.lib $(LIB_LOCATION)/$(PLUG_T2K_LIBRARY)
+ $(RM) $(OBJDIR)/t2k.lib
+ $(CP) $(LIBFILES_DIR)/t2k.lib $(OBJDIR)
+else # !windows
+import-binary-plug-t2k-library: \
+ $(LIB_LOCATION)/$(PLUG_T2K_LIBRARY)
+endif # windows
+import-binary-plug-dcpr-library: \
+ $(LIB_LOCATION)/$(PLUG_DCPR_LIBRARY)
+import-binary-plug-jsound-library: \
+ $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
+import-binary-plug-jsoundalsa-library: \
+ $(LIB_LOCATION)/$(PLUG_JSOUNDALSA_LIBRARY)
+import-binary-plug-jsoundds-library: \
+ $(LIB_LOCATION)/$(PLUG_JSOUNDDS_LIBRARY)
+
+# Binary plug start/complete messages
+
+import-binary-plugs-started:
+ @$(ECHO) "BinaryPlugs import started: `date`"
+ @$(ECHO) "BINARY_PLUGS_PATH=$(BINARY_PLUGS_PATH)"
+import-binary-plugs-completed:
+ @$(ECHO) "BinaryPlugs import completed: `date`"
+
+# Import lib files (only if they don't exist already)
+
+import-binary-plugs-libs: \
+ $(PLUG_JARNAMES:%=$(LIBDIR)/%) \
+ $(PLUG_LIBRARY_NAMES:%=$(LIB_LOCATION)/%)
+
+# Import everything
+
+import-binary-plugs: \
+ import-binary-plugs-started \
+ import-binary-plugs-libs \
+ import-binary-plug-jar \
+ import-binary-plugs-completed
+
+# All these targets are phony (no filenames)
+
+.PHONY: import-binary-plugs-started \
+ import-binary-plugs-completed \
+ import-binary-plugs-libs \
+ import-binary-plugs \
+ import-binary-plug-jar \
+ import-binary-plug-jmf-classes \
+ import-binary-plug-sound-classes \
+ import-binary-plug-awt-classes \
+ import-binary-plug-dc-classes \
+ import-binary-plug-t2k-library \
+ import-binary-plug-dcpr-library \
+ import-binary-plug-jsound-library \
+ import-binary-plug-jsoundalsa-library \
+ import-binary-plug-jsoundds-library
+
+else # !OPENJDK
+
+#
+# Specific to exporting binary plugs for OPENJDK (e.g. OPENJDK is NOT defined)
+#
+
+# Export names (See make/common/Defs.gmk for BINARY_PLUGS_JARNAME definition)
+
+PLUG_EXPORT_DIRNAME=openjdk-binary-plugs-image
+PLUG_EXPORT_DIR=$(OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)
+PLUG_EXPORT_JARFILE=$(PLUG_EXPORT_DIR)/jre/lib/$(BINARY_PLUGS_JARNAME)
+
+# Export file command
+
+define export-binary-plug-file
+@$(ECHO) "PLUG EXPORT: $(@F)"
+$(install-file)
+endef # export-binary-plug-file
+
+# OpenJDK Binary Plug License
+
+$(PLUG_EXPORT_DIR)/LICENSE: $(CLOSED_SHARE_SRC)/doc/openjdk/binary-plugs/LICENSE
+ $(export-binary-plug-file)
+export-binary-plugs-license: $(PLUG_EXPORT_DIR)/LICENSE
+
+# Create jar file of plug classes (always created)
+
+$(PLUG_EXPORT_JARFILE): $(PLUG_TEMPDIR)/all.clist $(PLUG_TEMPDIR)/all.jargs
+ @$(prep-target)
+ @$(ECHO) "PLUG EXPORT: $(@F)"
+ @$(CAT) $(PLUG_TEMPDIR)/all.clist | $(SED) -e 's/^/PLUG EXPORT: /'
+ $(JAR_BOOT) cf $@ @$(PLUG_TEMPDIR)/all.jargs
+export-binary-plugs-jar: $(PLUG_EXPORT_JARFILE)
+
+# Export lib jar files (only if needed)
+
+$(PLUG_EXPORT_DIR)/jre/lib/security/US_export_policy.jar: \
+ $(LIBDIR)/security/US_export_policy.jar
+ $(export-binary-plug-file)
+$(PLUG_EXPORT_DIR)/jre/lib/security/local_policy.jar: \
+ $(LIBDIR)/security/local_policy.jar
+ $(export-binary-plug-file)
+$(PLUG_EXPORT_DIR)/jre/lib/jce.jar: \
+ $(LIBDIR)/jce.jar
+ $(export-binary-plug-file)
+$(PLUG_EXPORT_DIR)/jre/lib/ext/sunjce_provider.jar: \
+ $(LIBDIR)/ext/sunjce_provider.jar
+ $(export-binary-plug-file)
+
+# Export native libraries
+
+$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_T2K_LIBRARY): \
+ $(LIB_LOCATION)/$(PLUG_T2K_LIBRARY)
+ $(export-binary-plug-file)
+ifeq ($(PLATFORM),windows)
+ $(RM) -r $(PLUG_EXPORT_DIR)/libfiles/t2k.lib
+ $(MKDIR) -p $(PLUG_EXPORT_DIR)/libfiles
+ $(CP) $(LIBFILES_DIR)/t2k.lib $(PLUG_EXPORT_DIR)/libfiles
+endif # windows
+$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_DCPR_LIBRARY): \
+ $(LIB_LOCATION)/$(PLUG_DCPR_LIBRARY)
+ $(export-binary-plug-file)
+$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY): \
+ $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
+ $(export-binary-plug-file)
+$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUNDDS_LIBRARY): \
+ $(LIB_LOCATION)/$(PLUG_JSOUNDDS_LIBRARY)
+ $(export-binary-plug-file)
+$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUNDALSA_LIBRARY): \
+ $(LIB_LOCATION)/$(PLUG_JSOUNDALSA_LIBRARY)
+ $(export-binary-plug-file)
+
+# Export binary plug start/complete messages
+
+export-binary-plugs-started:
+ @$(ECHO) "BinaryPlugs export started: `date`"
+ @$(ECHO) "PLUG_EXPORT_DIR=$(PLUG_EXPORT_DIR)"
+ $(RM) -r $(PLUG_EXPORT_DIR)
+ @$(MKDIR) -p $(PLUG_EXPORT_DIR)
+ @$(MKDIR) -p $(PLUG_TEMPDIR)
+export-binary-plugs-completed:
+ @$(RM) -r $(PLUG_TEMPDIR)
+ @$(ECHO) "BinaryPlugs export completed: `date`"
+
+# Export lib files (only if they don't exist already)
+
+export-binary-plugs-libs: \
+ $(PLUG_JARNAMES:%=$(PLUG_EXPORT_DIR)/jre/lib/%) \
+ $(PLUG_LIBRARY_NAMES:%=$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/%)
+
+# Export everything
+
+export-binary-plugs: \
+ export-binary-plugs-started \
+ export-binary-plugs-libs \
+ export-binary-plugs-license \
+ export-binary-plugs-jar \
+ export-binary-plugs-completed
+
+# All these targets are phony (no filenames)
+
+.PHONY: export-binary-plugs-started \
+ export-binary-plugs-license \
+ export-binary-plugs-jar \
+ export-binary-plugs-libs \
+ export-binary-plugs-completed \
+ export-binary-plugs
+
+# Rules that test the export and import of plugs (only when you can export)
+
+TEST_OUTPUTDIR=$(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-testing-plugs
+TEST_PLUG_COPY=$(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)-testcopy
+
+# Run export-binary-plugs first, then use this rule to test an import
+
+test-binary-plugs: $(TEST_PLUG_COPY)
+ $(RM) -r $(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)
+ $(MKDIR) -p $(TEST_OUTPUTDIR)
+ @$(ECHO) "Testing import of plugs"
+ ($(CD) $(J2SE_TOPDIR)/make && \
+ $(MAKE) OPENJDK=true \
+ ALT_OUTPUTDIR=$(TEST_OUTPUTDIR) \
+ ALT_JDK_IMPORT_PATH=$(JDK_IMPORT_PATH) \
+ ALT_BINARY_PLUGS_PATH=$(TEST_PLUG_COPY) \
+ import-binary-plugs )
+ $(RM) -r $(TEST_OUTPUTDIR)
+ @$(ECHO) "Testing of plugs was successful"
+
+$(TEST_PLUG_COPY):
+ @$(ECHO) "Creating test plug copy"
+ $(RM) -r $@
+ $(MKDIR) -p $(@D)
+ $(CP) -r -p $(PLUG_EXPORT_DIR) $@
+
+.PHONY: test-binary-plugs
+
+endif # !OPENJDK
+
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/Defs.gmk
--- a/j2se/make/common/Defs.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/Defs.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -108,88 +108,63 @@
# and the JDK internal interfaces to these are reasonably stable this is not
# a significant problem. But we do need to provide a way to locate them,
# including a way to point to a new one when there have been changes.
-# Use a similar mechanism as used to locate the VM. Allow overrides
-# of the path (useful for builds of multiple architectures), and
-# to specify the precise directory, useful for single architecture builds
-# which is what most external developers will likely prefer.
+#
+# If you have a formal binary plugs download, set ALT_BINARY_PLUGS_PATH
+# to the location.
+# (Optionally you can set ALT_CLOSED_JDK_IMPORT_PATH to point to the latest
+# build JDK, or last promotion for this JDK version, but will not work
+# on windows).
#
-# But since these have to have been built at some point, they probably
-# should be built under the OPENJDK target with access to the closed sources
-# To that end a mechanism is provided to override this behaviour and
-# the libraries will be built, rather than looking for pre-built ones.
-# Although these variables are then available to the Makefiles for all
-# libraries, only the ones that specify USE_CLOSED_LIB will copy them.
-# The actual copying is according to rules in Library.gmk
-# The logic ends up being a bit complicated but important goals are that
-# - internally all platforms can be built without setting anything in the case
-# that the previous promoted build can be used
-# - externally a developer has to set just one variable to point either to a
-# complete JRE or more probably to a directory containing just the required
-# native closed libs and a jar file containing just the closed classes.
-# In this latter case, ALT_CLOSED_LIB_DIR is the location of the required
-# files: native libraries and a jar file containing compiled java classes.
-# If necessary the latter can be separately overridden
-# Usage notes :
-# ALT_CLOSED_BUILD_PATH points to a directory containing builds of
-# multiple architectures named using the standard conventions
-# This is useful for build scripts that need to build multiple architectures
-# of the OpenJDK against multiple builds of the 'production' JDK.
-# This defaults to the location of the current promoted build.
-#
-# ALT_CLOSED_JDK_IMPORT_PATH points to the top-level of a specific platform
-# JDK image.
+# As the OPENJDK is built, the binary plugs are used instead of building the
+# libraries.
+# Individual Makefiles that specify USE_BINARY_PLUG_LIBRARY, will get
+# the binary plug copy (or a copy from a previously built JDK).
#
-# ALT_CLOSED_LIB_DIR points to a directory containing precisely the
-# binaries needed to build. This is created by the target
-# gnumake closed-binaries-dir
-# after a full JDK build is completed. This creates a directory at
-# the top-level of the build called 'closed' The directory will contain
-# shared objects and a jar archive named 'closed.jar'
+# See common/BinaryPlugs.gmk for more information.
+#
+# Usage notes:
#
-# ALT_CLOSED_JAR_FILE is probably rarely needed. It can be used
-# to identify the exact jar file to be used.
-# The precedence is that
-# 1. ALT_CLOSED_JAR_FILE overrides any other location of the classes
-# 2. ALT_CLOSED_LIB_DIR overrides any other location of the shared objects.
-# 3. In the absence of the first two, ALT_CLOSED_JDK_IMPORT_PATH is
-# used to locate classes and shared objects
-# 4. In the additional absence of ALT_CLOSED_JDK_IMPORT_PATH, its
-# location is derived from ALT_CLOSED_BUILD_PATH
-# 5. If none of these are specified then the current promoted build
-# location is presumed, and this will work only if you have access to
-# /java/re via the standard NFS or windows drive mounts.
+# ALT_BINARY_PLUGS_JARFILE is probably rarely needed. It can be used
+# to identify the exact jar file to be used for all closed classes..
+#
+# ALT_BINARY_PLUGS_PATH points to a directory containing precisely the
+# binaries needed to build.
+#
+# ALT_BINARY_PLUGS_SET points to a directory containing binary plug dirs
+# multiple architectures named using the standard conventions
+# This is useful for build scripts that need to build multiple architectures
+# of the OpenJDK.
+#
+# ALT_CLOSED_JDK_IMPORT_PATH points to the top-level of a specific platform
+# JDK image.
+#
+# The precedence is that
+# 1. ALT_BINARY_PLUGS_JARFILE overrides any other location of the classes
+# 2. ALT_BINARY_PLUGS_PATH overrides all locations of classes and libraries
+# 3. ALT_BINARY_PLUGS_SET is used to find a ALT_BINARY_PLUGS_PATH
+# 4. ALT_CLOSED_JDK_IMPORT_PATH is used to locate classes and libraries
+#
+
+# Always needed, defines the name of the imported/exported jarfile
+BINARY_PLUGS_JARNAME = rt-closed.jar
+
ifdef OPENJDK
-
- ifdef ALT_CLOSED_BUILD_PATH
- CLOSED_BUILD_PATH = $(ALT_CLOSED_BUILD_PATH)
- else
- CLOSED_BUILD_PATH = $(PROMOTED_BUILD_BINARIES)
- endif
-
ifdef ALT_CLOSED_JDK_IMPORT_PATH
- CLOSED_JDK_IMPORT_PATH = $(ALT_CLOSED_JDK_IMPORT_PATH)
- else
- CLOSED_JDK_IMPORT_PATH = $(CLOSED_BUILD_PATH)/$(PLATFORM)-$(ARCH)
+ CLOSED_JDK_IMPORT_PATH = $(ALT_CLOSED_JDK_IMPORT_PATH)
+ BINARY_PLUGS_PATH = $(CLOSED_JDK_IMPORT_PATH)
+ BINARY_PLUGS_JARFILE = $(CLOSED_JDK_IMPORT_PATH)/jre/lib/rt.jar
endif
-
- ifdef ALT_CLOSED_LIB_DIR
- CLOSED_LIB_DIR = $(ALT_CLOSED_LIB_DIR)
- else
- ifeq ($(PLATFORM), windows)
- CLOSED_LIB_DIR = $(CLOSED_JDK_IMPORT_PATH)/jre/bin
- else
- CLOSED_LIB_DIR = $(CLOSED_JDK_IMPORT_PATH)/jre/lib/$(LIBARCH)
- endif
+ ifdef ALT_BINARY_PLUGS_SET
+ BINARY_PLUGS_SET = $(ALT_BINARY_PLUGS_SET)
+ BINARY_PLUGS_PATH = $(BINARY_PLUGS_SET)/$(PLATFORM)-$(ARCH)
+ BINARY_PLUGS_JARFILE = $(BINARY_PLUGS_PATH)/jre/lib/$(BINARY_PLUGS_JARNAME)
endif
-
- ifdef ALT_CLOSED_JAR_FILE
- CLOSED_JAR_FILE = $(ALT_CLOSED_JAR_FILE)
- else
- ifdef ALT_CLOSED_LIB_DIR
- CLOSED_JAR_FILE = $(ALT_CLOSED_LIB_DIR)/closed.jar
- else
- CLOSED_JAR_FILE = $(CLOSED_JDK_IMPORT_PATH)/jre/lib/rt.jar
- endif
+ ifdef ALT_BINARY_PLUGS_PATH
+ BINARY_PLUGS_PATH = $(ALT_BINARY_PLUGS_PATH)
+ BINARY_PLUGS_JARFILE = $(BINARY_PLUGS_PATH)/jre/lib/$(BINARY_PLUGS_JARNAME)
+ endif
+ ifdef ALT_BINARY_PLUGS_JARFILE
+ BINARY_PLUGS_JARFILE = $(ALT_BINARY_PLUGS_JARFILE)
endif
endif # OPENJDK
@@ -293,6 +268,8 @@
# for generated libraries
LIBDIR = $(OUTPUTDIR)/lib
ABS_LIBDIR = $(ABS_OUTPUTDIR)/lib
+# Optional place to save the windows .lib files
+LIBFILES_DIR = $(OUTPUTDIR)/libfiles
# for ext jre files
EXTDIR = $(LIBDIR)/ext
# for generated include files
@@ -798,9 +775,9 @@
# this should be moved into Defs-.gmk.....
ifeq ($(PLATFORM), windows)
- VERSION_DEFINES = -DRELEASE="\"$(RELEASE)\"" -DFULL_VERSION="\"$(FULL_VERSION)\""
+ VERSION_DEFINES = -DRELEASE="\"$(RELEASE)\""
else
- VERSION_DEFINES = -DRELEASE='"$(RELEASE)"' -DFULL_VERSION='"$(FULL_VERSION)"'
+ VERSION_DEFINES = -DRELEASE='"$(RELEASE)"'
endif
# Note: As a rule, GNU Make rules should not appear in any of the
@@ -851,18 +828,4 @@
$(install-file)
endef
-# Install of closed files into an openjdk build image (CLOSED_JDK_IMPORT_PATH)
-define install-closed-file
-@$(ECHO) "ASSEMBLY_EXCEPTION: $(@F)"
-$(install-file)
-endef
-
-# Install closed classes into CLASSDESTDIR (CLOSED_JDK_IMPORT_PATH rt.jar)
-# Example: $(call install-closed-classes,files_or_dirs)
-define install-closed-classes
-$(MKDIR) -p $(CLASSDESTDIR)
-($(CD) $(CLASSDESTDIR) && $(JAR_BOOT) xvf $(CLOSED_JAR_FILE) $1) \
- | $(SED) -e "s/^extracted:/ASSEMBLY_EXCEPTION:/"
-endef
-
.PHONY: all build clean clobber
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/Library.gmk
--- a/j2se/make/common/Library.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/Library.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -90,7 +90,7 @@
endif
# If a Makefile has specified a pre-compiled closed src lib, just copy it.
-ifdef USE_CLOSED_LIB
+ifdef USE_BINARY_PLUG_LIBRARY
COMPILE_IT=false
endif
@@ -260,22 +260,14 @@
else # COMPILE_IT
+# OpenJDK rule is first so any lib is preferentially copied from that location.
+ifndef USE_BINARY_PLUG_LIBRARY
+
# In this case we are just copying the file.
-
ifneq ($(LIBRARY), fdlibm)
# Copies in the file from the JDK_IMPORT_PATH area
-# OpenJDK rule is first so any lib is preferentially copied from that location.
-ifdef USE_CLOSED_LIB
-$(ACTUAL_LIBRARY_DIR)/%: $(CLOSED_LIB_DIR)/%
- $(install-closed-file)
-ifeq ($(PLATFORM),windows)
-$(OBJDIR)/%.lib: $(CLOSED_LIB_DIR)/%.lib
- $(install-closed-file)
-endif # windows
-else
$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/%
$(install-import-file)
-endif # USE_CLOSED_LIB
$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/native_threads/%
$(install-import-file)
$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/headless/%
@@ -289,6 +281,8 @@
$(prep-target)
endif # fdlibm
+endif # USE_BINARY_PLUG_LIBRARY
+
endif # COMPILE_IT
#
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/Program.gmk
--- a/j2se/make/common/Program.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/Program.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -255,8 +255,10 @@
# this may not be necessary...
ifeq ($(PLATFORM), windows)
OTHER_CPPFLAGS += -DPROGNAME="\"$(PROGRAM)\""
+VERSION_DEFINES += -DFULL_VERSION="\"$(FULL_VERSION)\""
else
OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"'
+VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"'
endif
VERSION_DEFINES += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/Release.gmk
--- a/j2se/make/common/Release.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/Release.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -220,9 +220,19 @@
compare-image-jre compare-image-jdk sec-files sec-files-win jgss-files ::
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ...";
+#
+# Export binary plugs if not building OPENJDK
+#
+ifdef OPENJDK
+ EXPORT_BINARY_PLUGS =
+else # !OPENJDK
+ EXPORT_BINARY_PLUGS = export-binary-plugs test-binary-plugs
+endif # OPENJDK
+
# Order is important here, trim jre after jdk image is created
images:: sanity-images post-sanity-images \
- $(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \
+ $(EXPORT_BINARY_PLUGS) \
+ $(INITIAL_IMAGE_JRE) $(INITIAL_IMAGE_JDK) \
trim-image-jre trim-image-jdk \
process-image-jre process-image-jdk sec-files sec-files-win jgss-files
@@ -230,113 +240,6 @@
image-jre:: initial-image-jre trim-image-jre process-image-jre
image-jdk:: initial-image-jdk trim-image-jdk process-image-jdk
-ifndef OPENJDK
-CLOSED_DIR=$(ABS_OUTPUTDIR)/closed
-
-ifeq ($(PLATFORM), windows)
-LIB1=dcpr.dll
-LIB2=t2k.dll
-closed-binaries-dir-t2klib:
- $(MKDIR) -p $(CLOSED_DIR)
- $(CP) $(ABS_OUTPUTDIR)/tmp/sun/sun.font/t2k/$(OBJDIRNAME)/t2k.lib $(CLOSED_DIR)
-else
-LIB1=libdcpr.so
-LIB2=libt2k.so
-closed-binaries-dir-t2klib:
-endif
-
-# JavaSound closed libs
-closed-binaries-dir-jsound:
-
-# windows & linux have additional libraries
-# see /make/javax/sound/Makefile & subdir's Makefiles for more details
-ifeq ($(PLATFORM), windows)
- JSOUND_LIB=jsound.dll
- # include DirectSound implementation
-closed-binaries-dir-jsound:
- $(MKDIR) -p $(CLOSED_DIR)
- $(CP) $(LIB_LOCATION)/jsoundds.dll $(CLOSED_DIR)
-else # !(PLATFORM windows)
- JSOUND_LIB=libjsound.so
- ifeq ($(PLATFORM), linux)
- # include ALSA implementation
-closed-binaries-dir-jsound:
- $(MKDIR) -p $(CLOSED_DIR)
- $(CP) $(LIB_LOCATION)/libjsoundalsa.so $(CLOSED_DIR)
- endif # PLATFORM linux
-endif # PLATFORM windows
-
-
-CLOSED_CLASSES = \
-sun/dc \
-java/awt/color/CMMException.class \
-java/awt/color/ColorSpace.class \
-java/awt/color/ICC_ColorSpace.class \
-java/awt/color/ICC_Profile\$$1.class \
-java/awt/color/ICC_Profile\$$2.class \
-java/awt/color/ICC_Profile\$$3.class \
-java/awt/color/ICC_Profile.class \
-java/awt/color/ICC_ProfileGray.class \
-java/awt/color/ICC_ProfileRGB.class \
-java/awt/image/BandedSampleModel.class \
-java/awt/image/ColorConvertOp.class \
-java/awt/image/ComponentSampleModel.class \
-java/awt/image/DataBuffer\$$1.class \
-java/awt/image/DataBuffer.class \
-java/awt/image/DataBufferByte.class \
-java/awt/image/DataBufferInt.class \
-java/awt/image/DataBufferShort.class \
-java/awt/image/DataBufferUShort.class \
-java/awt/image/MultiPixelPackedSampleModel.class \
-java/awt/image/Raster.class \
-java/awt/image/RenderedImage.class \
-java/awt/image/SampleModel.class \
-java/awt/image/SinglePixelPackedSampleModel.class \
-java/awt/image/WritableRaster.class \
-java/awt/image/WritableRenderedImage.class \
-java/awt/image/renderable/ContextualRenderedImageFactory.class \
-java/awt/image/renderable/ParameterBlock.class \
-java/awt/image/renderable/RenderableImage.class \
-java/awt/image/renderable/RenderableImageOp.class \
-java/awt/image/renderable/RenderableImageProducer.class \
-java/awt/image/renderable/RenderContext.class \
-java/awt/image/renderable/RenderedImageFactory.class \
-com/sun/jmx/snmp/SnmpDataTypeEnums.class \
-com/sun/jmx/snmp/SnmpDefinitions.class \
-com/sun/jmx/snmp/SnmpOid.class \
-com/sun/jmx/snmp/SnmpOidDatabase.class \
-com/sun/jmx/snmp/SnmpOidDatabaseSupport.class \
-com/sun/jmx/snmp/SnmpOidRecord.class \
-com/sun/jmx/snmp/SnmpOidTable.class \
-com/sun/jmx/snmp/SnmpOidTableSupport.class \
-com/sun/jmx/snmp/SnmpParameters.class \
-com/sun/jmx/snmp/SnmpPduPacket.class \
-com/sun/jmx/snmp/SnmpPeer.class \
-com/sun/jmx/snmp/SnmpTimeticks.class \
-com/sun/jmx/snmp/SnmpVarBind.class \
-com/sun/jmx/snmp/SnmpVarBindList.class \
-com/sun/jmx/snmp/Timestamp.class \
-com/sun/jmx/snmp/daemon/SendQ.class \
-com/sun/jmx/snmp/daemon/SnmpInformRequest.class \
-com/sun/jmx/snmp/daemon/SnmpQManager.class \
-com/sun/jmx/snmp/daemon/SnmpRequestCounter.class \
-com/sun/jmx/snmp/daemon/SnmpResponseHandler.class \
-com/sun/jmx/snmp/daemon/SnmpSendServer.class \
-com/sun/jmx/snmp/daemon/SnmpSession.class \
-com/sun/jmx/snmp/daemon/SnmpSocket.class \
-com/sun/jmx/snmp/daemon/SnmpTimerServer.class \
-com/sun/jmx/snmp/daemon/WaitQ.class \
-com/sun/media/sound
-
-ABSJAR = $(ABS_BINDIR)/jar
-closed-binaries-dir: closed-binaries-dir-t2klib closed-binaries-dir-jsound
- $(MKDIR) -p $(CLOSED_DIR)
- (cd $(CLASSBINDIR) ; $(ABSJAR) c0f $(CLOSED_DIR)/closed.jar $(CLOSED_CLASSES))
- $(CP) $(LIB_LOCATION)/$(LIB1) $(CLOSED_DIR)
- $(CP) $(LIB_LOCATION)/$(LIB2) $(CLOSED_DIR)
- $(CP) $(LIB_LOCATION)/$(JSOUND_LIB) $(CLOSED_DIR)
-endif
-
#
# Sources we ship in the SDK.
#
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/Sanity.gmk
--- a/j2se/make/common/Sanity.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/Sanity.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -85,7 +85,7 @@
sane-classpath \
sane-java_home \
sane-fonts \
- sane-closed-binaries \
+ sane-binary-plugs \
sane-variant \
sane-ld_library_path \
sane-ld_library_path_64 \
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/shared/Sanity-Settings.gmk
--- a/j2se/make/common/shared/Sanity-Settings.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/shared/Sanity-Settings.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -122,6 +122,7 @@
ALL_SETTINGS+=$(call addHeading,"Build Directives")
+ALL_SETTINGS+=$(call addOptionalSetting,OPENJDK)
ALL_SETTINGS+=$(call addOptionalSetting,USE_ONLY_BOOTDIR_TOOLS)
ALL_SETTINGS+=$(call addOptionalSetting,USE_HOTSPOT_INTERPRETER_MODE)
ALL_SETTINGS+=$(call addOptionalSetting,PEDANTIC)
@@ -239,16 +240,28 @@
endif
ifdef OPENJDK
- ALL_SETTINGS+=$(call addAltSetting,CLOSED_BUILD_PATH)
+ ALL_SETTINGS+=$(call addHeading,"OPENJDK Import Binary Plug Settings")
+ ALL_SETTINGS+=$(call addAltSetting,BINARY_PLUGS_JARFILE)
+ ALL_SETTINGS+=$(call addAltSetting,BINARY_PLUGS_PATH)
+ ALL_SETTINGS+=$(call addAltSetting,BINARY_PLUGS_SET)
ALL_SETTINGS+=$(call addAltSetting,CLOSED_JDK_IMPORT_PATH)
- ALL_SETTINGS+=$(call addAltSetting,CLOSED_LIB_DIR)
- ALL_SETTINGS+=$(call addAltSetting,CLOSED_JAR_FILE)
else
+ ALL_SETTINGS+=$(call addHeading,"OPENJDK Export Binary Plug Settings")
+ ALL_SETTINGS+=$(call addRequiredSetting,PLUG_EXPORT_DIRNAME)
+endif
+ALL_SETTINGS+=$(call addRequiredSetting,PLUG_LIBRARY_NAMES)
+ALL_SETTINGS+=$(call addRequiredSetting,PLUG_JARNAMES)
+ifeq ($(PLATFORM),windows)
+ ALL_SETTINGS+=$(call addRequiredSetting,PLUG_LIB_NAMES)
+endif
+
+ifdef OPENJDK
ALL_SETTINGS+=$(call addHeading,"Previous JDK Settings")
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_RELEASE_PATH)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JDK_VERSION)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JDK_FILE)
ALL_SETTINGS+=$(call addAltSetting,PREVIOUS_JRE_FILE)
+
ifdef MASTER_ROOT
ALL_SETTINGS+=$(call addHeading,"Control Workspace Settings")
ALL_SETTINGS+=$(call addAltSetting,CONTROL_MASTER)
@@ -266,5 +279,6 @@
ALL_SETTINGS+=$(call addAltSetting,DEPLOY_TOPDIR)
ALL_SETTINGS+=$(call addAltSetting,COPYRIGHT_YEAR)
endif
+
endif
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/common/shared/Sanity.gmk
--- a/j2se/make/common/shared/Sanity.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/common/shared/Sanity.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -132,7 +132,7 @@
sane-classpath \
sane-java_home \
sane-fonts \
- sane-closed-binaries \
+ sane-binary-plugs \
sane-variant \
sane-ld_library_path \
sane-ld_library_path_64 \
@@ -476,45 +476,17 @@
######################################################
# If building OPENJDK check pre-built binaries are
-# available for closed source components.
+# available for binary plug source components.
######################################################
ifdef OPENJDK
-sane-closed-binaries: sane-closed-1 sane-closed-2
-
-sane-closed-1:
- @if [ ! -d $(CLOSED_LIB_DIR) ]; then \
+sane-binary-plugs:
+ @if [ ! -d "$(BINARY_PLUGS_PATH)" ]; then \
$(ECHO) "ERROR: Can't locate pre-built libraries. \n" \
" Please check your access to \n" \
- " $(CLOSED_LIB_DIR) \n" \
- " and/or check your value of ALT_CLOSED_LIB_DIR. \n" \
- "" >> $(ERROR_FILE); \
- fi
- @if [ ! -f $(CLOSED_JAR_FILE) ]; then \
- $(ECHO) "ERROR: Can't locate pre-built libraries. \n" \
- " Please check your access to \n" \
- " $(CLOSED_JAR_FILE) \n" \
- " and/or check your value of ALT_CLOSED_JAR_FILE. \n" \
+ " $(BINARY_PLUGS_PATH) \n" \
+ " and/or check your value of ALT_BINARY_PLUGS_PATH. \n" \
"" >> $(ERROR_FILE); \
fi
-
-sane-closed-2:
-ifeq ($(PLATFORM), windows)
- @if [ ! -f $(CLOSED_LIB_DIR)/t2k.lib ]; then \
- $(ECHO) "ERROR: Can't locate t2k import library. \n" \
- " Please check your access to \n" \
- " $(CLOSED_LIB_DIR)/t2k.lib \n" \
- " and/or check your value of ALT_CLOSED_LIB_DIR. \n" \
- "" >> $(ERROR_FILE); \
- fi
-else
- @if [ ! -f $(CLOSED_LIB_DIR)/libt2k.so ]; then \
- $(ECHO) "ERROR: Can't locate t2k library. \n" \
- " Please check your access to \n" \
- " $(CLOSED_LIB_DIR)/libt2k.so \n" \
- " and/or check your value of ALT_CLOSED_LIB_DIR. \n" \
- "" >> $(ERROR_FILE); \
- fi
-endif
endif
######################################################
@@ -816,6 +788,7 @@
######################################################
# Check for existence of Motif in the bootstrap area
######################################################
+MOTIF_CHECK_FILE=$(MOTIF_INCLUDE)/Xm/AtomMgr.h
sane-motif:
ifneq ($(PLATFORM), windows)
ifdef MOTIF_REQUIRED
@@ -838,10 +811,10 @@
fi
endif
endif
- @if [ ! -r $(MOTIF_INCLUDE)/Xm/AccTextT.h ]; then \
+ @if [ ! -r $(MOTIF_CHECK_FILE) ]; then \
$(ECHO) "ERROR: You do not have access to valid Motif 2.1 header files. \n" \
" Please check your access to (for example) \n" \
- " $(MOTIF_INCLUDE)/Xm/AccTextT.h \n" \
+ " $(MOTIF_CHECK_FILE) \n" \
" and/or check your value of ALT_MOTIF_DIR. \n" \
"" >> $(ERROR_FILE) ; \
fi
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/java/awt/Makefile
--- a/j2se/make/java/awt/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/java/awt/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -28,50 +28,22 @@
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/BinaryPlugs.gmk
+
#
# Files
#
AUTO_FILES_JAVA_DIRS = java/awt sun/awt/geom
+#
+# Specific to OPENJDK
+#
ifdef OPENJDK
-CLOSED_AWT_CLASSES = \
-java/awt/color/CMMException.class \
-java/awt/color/ColorSpace.class \
-java/awt/color/ICC_ColorSpace.class \
-java/awt/color/ICC_Profile\$$1.class \
-java/awt/color/ICC_Profile\$$2.class \
-java/awt/color/ICC_Profile\$$3.class \
-java/awt/color/ICC_Profile.class \
-java/awt/color/ICC_ProfileGray.class \
-java/awt/color/ICC_ProfileRGB.class \
-java/awt/image/BandedSampleModel.class \
-java/awt/image/ColorConvertOp.class \
-java/awt/image/ComponentSampleModel.class \
-java/awt/image/DataBuffer\$$1.class \
-java/awt/image/DataBuffer.class \
-java/awt/image/DataBufferByte.class \
-java/awt/image/DataBufferInt.class \
-java/awt/image/DataBufferShort.class \
-java/awt/image/DataBufferUShort.class \
-java/awt/image/MultiPixelPackedSampleModel.class \
-java/awt/image/Raster.class \
-java/awt/image/RenderedImage.class \
-java/awt/image/SampleModel.class \
-java/awt/image/SinglePixelPackedSampleModel.class \
-java/awt/image/WritableRaster.class \
-java/awt/image/WritableRenderedImage.class \
-java/awt/image/renderable/ContextualRenderedImageFactory.class \
-java/awt/image/renderable/ParameterBlock.class \
-java/awt/image/renderable/RenderableImage.class \
-java/awt/image/renderable/RenderableImageOp.class \
-java/awt/image/renderable/RenderableImageProducer.class \
-java/awt/image/renderable/RenderContext.class \
-java/awt/image/renderable/RenderedImageFactory.class
+
+build: import-binary-plug-awt-classes
-copy-closed-src-classes:
- $(call install-closed-classes,$(CLOSED_AWT_CLASSES))
-build: copy-closed-src-classes
-.PHONY: copy-closed-src-classes
+include $(BUILDDIR)/common/BinaryPlugs.gmk
+
endif
build: sources properties cursors
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/java/java/FILES_java.gmk
--- a/j2se/make/java/java/FILES_java.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/java/java/FILES_java.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -1,23 +1,23 @@
#
# Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
+#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
-#
+#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
-#
+#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
+#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
@@ -158,7 +158,6 @@
$(TARGDIR)sun/util/calendar/JulianCalendar.java \
$(TARGDIR)sun/util/calendar/LocalGregorianCalendar.java \
$(TARGDIR)java/util/Currency.java \
- $(TARGDIR)java/util/CurrencyData.java \
$(TARGDIR)java/util/Date.java \
$(TARGDIR)java/util/Dictionary.java \
$(TARGDIR)java/util/EmptyStackException.java \
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/java/java/Makefile
--- a/j2se/make/java/java/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/java/java/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -314,27 +314,30 @@
$(RM) -r $(LIBDIR)/$(PROPS) $(TZMAP)
#
-# Rules to create java/util/CurrencyData.java
+# Rules to create lib/currency.data
#
+CURDATA = $(LIBDIR)/currency.data
GENCUROUT = $(TEMPDIR)/GenerateCurrencyData
-$(GENSRCDIR)/java/util/CurrencyData.java: \
+build: $(CURDATA)
+
+$(CURDATA): \
$(BUILDDIR)/tools/GenerateCurrencyData/GenerateCurrencyData.java \
$(SHARE_SRC)/classes/java/util/CurrencyData.properties
- @$(prep-target)
+ $(RM) $(CURDATA)
$(RM) -r $(GENCUROUT)
$(MKDIR) -p $(GENCUROUT)
$(JAVAC_BOOT) -d $(GENCUROUT) \
$(BUILDDIR)/tools/GenerateCurrencyData/GenerateCurrencyData.java
- @$(RM) $@.temp
$(JAVA_BOOT) -classpath $(GENCUROUT) GenerateCurrencyData \
-o $@.temp \
< $(SHARE_SRC)/classes/java/util/CurrencyData.properties
$(MV) $@.temp $@
+ $(CHMOD) 444 $@
clean::
- $(RM) $(GENSRCDIR)/java/util/CurrencyData.java
+ $(RM) $(CURDATA)
$(RM) -r $(GENCUROUT)
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/java/redist/Makefile
--- a/j2se/make/java/redist/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/java/redist/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -259,23 +259,16 @@
endif # windows
endif # INCLUDE_SA
-# Internal import files
+#
+# Specific to OpenJDK building
+#
ifdef OPENJDK
-$(LIBDIR)/jce.jar: \
- $(CLOSED_JDK_IMPORT_PATH)/jre/lib/jce.jar
- $(install-closed-file)
-$(EXTDIR)/sunjce_provider.jar: \
- $(CLOSED_JDK_IMPORT_PATH)/jre/lib/ext/sunjce_provider.jar
- $(install-closed-file)
-$(LIBDIR)/security/US_export_policy.jar: \
- $(CLOSED_JDK_IMPORT_PATH)/jre/lib/security/US_export_policy.jar
- $(install-closed-file)
-$(LIBDIR)/security/local_policy.jar: \
- $(CLOSED_JDK_IMPORT_PATH)/jre/lib/security/local_policy.jar
- $(install-closed-file)
+include $(BUILDDIR)/common/BinaryPlugs.gmk
-else
+build: import-binary-plugs
+
+else # !OPENJDK
$(LIBDIR)/jce.jar: \
$(BUILDDIR)/closed/tools/crypto/jce/jce.jar
@@ -290,7 +283,7 @@
$(BUILDDIR)/closed/tools/crypto/jce/local_policy.jar
$(install-file)
-endif #OPENJDK
+endif # OPENJDK
$(JSUM_CLASSDIR)/AddJsum.class: $(SHARINGDIR)/AddJsum.java
@$(prep-target)
@@ -303,79 +296,8 @@
$(JAVA_BOOT) -cp $(JSUM_CLASSDIR) AddJsum $(SHARINGDIR)/classlist.$(PLATFORM) $@.temp
$(MV) $@.temp $@
-ifdef OPENJDK
-# Copy closed source pre-built class files
-# We need to do this here because these classes may be referenced by
-# other classes which must find them to compile before the make files
-# for these packages are invoked
-# They are still copied in their actual build directories too, so
-# that a local clobber and remake works.
-CLOSED_CLASSES = \
-sun/dc \
-java/awt/color/CMMException.class \
-java/awt/color/ColorSpace.class \
-java/awt/color/ICC_ColorSpace.class \
-java/awt/color/ICC_Profile\$$1.class \
-java/awt/color/ICC_Profile\$$2.class \
-java/awt/color/ICC_Profile\$$3.class \
-java/awt/color/ICC_Profile.class \
-java/awt/color/ICC_ProfileGray.class \
-java/awt/color/ICC_ProfileRGB.class \
-java/awt/image/BandedSampleModel.class \
-java/awt/image/ColorConvertOp.class \
-java/awt/image/ComponentSampleModel.class \
-java/awt/image/DataBuffer\$$1.class \
-java/awt/image/DataBuffer.class \
-java/awt/image/DataBufferByte.class \
-java/awt/image/DataBufferInt.class \
-java/awt/image/DataBufferShort.class \
-java/awt/image/DataBufferUShort.class \
-java/awt/image/MultiPixelPackedSampleModel.class \
-java/awt/image/Raster.class \
-java/awt/image/RenderedImage.class \
-java/awt/image/SampleModel.class \
-java/awt/image/SinglePixelPackedSampleModel.class \
-java/awt/image/WritableRaster.class \
-java/awt/image/WritableRenderedImage.class \
-java/awt/image/renderable/ContextualRenderedImageFactory.class \
-java/awt/image/renderable/ParameterBlock.class \
-java/awt/image/renderable/RenderableImage.class \
-java/awt/image/renderable/RenderableImageOp.class \
-java/awt/image/renderable/RenderableImageProducer.class \
-java/awt/image/renderable/RenderContext.class \
-java/awt/image/renderable/RenderedImageFactory.class \
-com/sun/jmx/snmp/SnmpDataTypeEnums.class \
-com/sun/jmx/snmp/SnmpDefinitions.class \
-com/sun/jmx/snmp/SnmpOid.class \
-com/sun/jmx/snmp/SnmpOidDatabase.class \
-com/sun/jmx/snmp/SnmpOidDatabaseSupport.class \
-com/sun/jmx/snmp/SnmpOidRecord.class \
-com/sun/jmx/snmp/SnmpOidTable.class \
-com/sun/jmx/snmp/SnmpOidTableSupport.class \
-com/sun/jmx/snmp/SnmpParameters.class \
-com/sun/jmx/snmp/SnmpPduPacket.class \
-com/sun/jmx/snmp/SnmpPeer.class \
-com/sun/jmx/snmp/SnmpTimeticks.class \
-com/sun/jmx/snmp/SnmpVarBind.class \
-com/sun/jmx/snmp/SnmpVarBindList.class \
-com/sun/jmx/snmp/Timestamp.class \
-com/sun/jmx/snmp/daemon/SendQ.class \
-com/sun/jmx/snmp/daemon/SnmpInformRequest.class \
-com/sun/jmx/snmp/daemon/SnmpQManager.class \
-com/sun/jmx/snmp/daemon/SnmpRequestCounter.class \
-com/sun/jmx/snmp/daemon/SnmpResponseHandler.class \
-com/sun/jmx/snmp/daemon/SnmpSendServer.class \
-com/sun/jmx/snmp/daemon/SnmpSession.class \
-com/sun/jmx/snmp/daemon/SnmpSocket.class \
-com/sun/jmx/snmp/daemon/SnmpTimerServer.class \
-com/sun/jmx/snmp/daemon/WaitQ.class \
-com/sun/media/sound
+ifndef OPENJDK
-build: openjdkredist
-openjdkredist:
- $(call install-closed-classes,$(CLOSED_CLASSES))
-
-else # (!OPENJDK)
# Lucida font files are not included in the OpenJDK distribution.
# Get names of font files
include FILES.gmk
@@ -412,7 +334,7 @@
$(install-file)
endif # linux
-endif # OPENJDK
+endif # !OPENJDK
PARTIAL_SECURITY_CLASSFILE_LIST = \
$(CLASSBINDIR)/javax/net/ssl/SSLException.class \
@@ -487,5 +409,5 @@
$(RM) $(IMPORT_LIST)
$(RM) $(INTERNAL_IMPORT_LIST)
-.PHONY: import_files import_internal_files import_classes openjdkredist
+.PHONY: import_files import_internal_files import_classes
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/java/util/FILES_properties.gmk
--- a/j2se/make/java/util/FILES_properties.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/java/util/FILES_properties.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -121,6 +121,7 @@
sun/util/resources/CurrencyNames_ca_ES.properties \
sun/util/resources/CurrencyNames_cs_CZ.properties \
sun/util/resources/CurrencyNames_da_DK.properties \
+ sun/util/resources/CurrencyNames_de.properties \
sun/util/resources/CurrencyNames_de_AT.properties \
sun/util/resources/CurrencyNames_de_CH.properties \
sun/util/resources/CurrencyNames_de_DE.properties \
@@ -139,6 +140,7 @@
sun/util/resources/CurrencyNames_en_SG.properties \
sun/util/resources/CurrencyNames_en_US.properties \
sun/util/resources/CurrencyNames_en_ZA.properties \
+ sun/util/resources/CurrencyNames_es.properties \
sun/util/resources/CurrencyNames_es_AR.properties \
sun/util/resources/CurrencyNames_es_BO.properties \
sun/util/resources/CurrencyNames_es_CL.properties \
@@ -161,6 +163,7 @@
sun/util/resources/CurrencyNames_es_VE.properties \
sun/util/resources/CurrencyNames_et_EE.properties \
sun/util/resources/CurrencyNames_fi_FI.properties \
+ sun/util/resources/CurrencyNames_fr.properties \
sun/util/resources/CurrencyNames_fr_BE.properties \
sun/util/resources/CurrencyNames_fr_CA.properties \
sun/util/resources/CurrencyNames_fr_CH.properties \
@@ -171,6 +174,7 @@
sun/util/resources/CurrencyNames_hu_HU.properties \
sun/util/resources/CurrencyNames_in_ID.properties \
sun/util/resources/CurrencyNames_is_IS.properties \
+ sun/util/resources/CurrencyNames_it.properties \
sun/util/resources/CurrencyNames_it_CH.properties \
sun/util/resources/CurrencyNames_it_IT.properties \
sun/util/resources/CurrencyNames_lt_LT.properties \
@@ -192,6 +196,7 @@
sun/util/resources/CurrencyNames_sr_BA.properties \
sun/util/resources/CurrencyNames_sr_CS.properties \
sun/util/resources/CurrencyNames_sr_ME.properties \
+ sun/util/resources/CurrencyNames_sv.properties \
sun/util/resources/CurrencyNames_sv_SE.properties \
sun/util/resources/CurrencyNames_tr_TR.properties \
sun/util/resources/CurrencyNames_uk_UA.properties
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/javax/sound/Makefile
--- a/j2se/make/javax/sound/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/javax/sound/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -23,6 +23,8 @@
# have any questions.
#
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/BinaryPlugs.gmk
+
BUILDDIR = ../..
PACKAGE = javax.sound
LIBRARY = jsound
@@ -77,10 +79,6 @@
FILES_c += $(FILES_engine) $(FILES_$(PLATFORM))
-
-# NOTE: don't forget to update /make/common/Release.gmk to copy all additianal
-# libraries to "closed" dir (see "closed-binaries-dir" rule)
-
#
# system dependent flags
#
@@ -157,23 +155,20 @@
FILES_export += $(DAUDIOFILES_export)
endif
-
+#
+# Specific to OpenJDK building
+#
ifdef OPENJDK
-# the package is built before new jar utility so we use boot jar
-copy-closed-class-files:
- $(call install-closed-classes,com/sun/media/sound)
+# Plug lib will be copied instead of compiling.
+USE_BINARY_PLUG_LIBRARY=true
-build: copy-closed-class-files
+build: import-binary-plug-sound-classes import-binary-plug-jsound-library
-.PHONY: copy-closed-class-files
-
-# precompiled lib will be copied by the rules in Library.gmk instead of compiling.
-USE_CLOSED_LIB=true
+include $(BUILDDIR)/common/BinaryPlugs.gmk
endif # OPENJDK
-
#
# Include rules
#
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/javax/sound/jsoundalsa/Makefile
--- a/j2se/make/javax/sound/jsoundalsa/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/javax/sound/jsoundalsa/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -23,6 +23,8 @@
# have any questions.
#
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/BinaryPlugs.gmk
+
BUILDDIR = ../../..
PACKAGE = javax.sound
LIBRARY = jsoundalsa
@@ -74,17 +76,22 @@
-DUSE_PLATFORM_MIDI_IN=TRUE \
-DUSE_EXTERNAL_SYNTH=TRUE
-
+#
+# Specific to OpenJDK building
+#
ifdef OPENJDK
-# precompiled lib will be copied by the rules in Library.gmk instead of compiling.
-USE_CLOSED_LIB=true
+
+# Plug lib will be copied instead of compiling.
+USE_BINARY_PLUG_LIBRARY=true
+
+build: import-binary-plug-jsoundalsa-library
+
+include $(BUILDDIR)/common/BinaryPlugs.gmk
+
endif # OPENJDK
-
#
# Include rules
#
include $(BUILDDIR)/common/Library.gmk
-
-
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/javax/sound/jsoundds/Makefile
--- a/j2se/make/javax/sound/jsoundds/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/javax/sound/jsoundds/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -23,6 +23,8 @@
# have any questions.
#
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/BinaryPlugs.gmk
+
BUILDDIR = ../../..
PACKAGE = javax.sound
LIBRARY = jsoundds
@@ -53,14 +55,22 @@
CPPFLAGS += -DUSE_DAUDIO=TRUE \
-I$(DXSDK_INCLUDE_PATH)
-
+#
+# Specific to OpenJDK building
+#
ifdef OPENJDK
-# precompiled lib will be copied by the rules in Library.gmk instead of compiling.
-USE_CLOSED_LIB=true
+
+# Plug lib will be copied instead of compiling.
+USE_BINARY_PLUG_LIBRARY=true
+
+build: import-binary-plug-jsoundds-library
+
+include $(BUILDDIR)/common/BinaryPlugs.gmk
+
endif # OPENJDK
-
#
# Include rules
#
include $(BUILDDIR)/common/Library.gmk
+
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/jdk_generic_profile.sh
--- a/j2se/make/jdk_generic_profile.sh Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/jdk_generic_profile.sh Fri Jul 20 21:22:05 2007 +0000
@@ -78,6 +78,7 @@
# Attempts to set these variables for the JDK builds:
# ALT_COMPILER_PATH
# ALT_BOOTDIR
+# ALT_BINARY_PLUGS_PATH
# ALT_CLOSED_JDK_IMPORT_PATH
# Windows Only:
# ALT_UNIXCOMMAND_PATH
@@ -132,24 +133,6 @@
# Place compiler path early in PATH to avoid 'cc' conflicts.
path4sdk=${ALT_COMPILER_PATH}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
- # Get the previous JDK to be used to bootstrap the build
- if [ "${ALT_BOOTDIR}" = "" ] ; then
- ALT_BOOTDIR=${jdk_instances}/${bootjdk}
- export ALT_BOOTDIR
- fi
- if [ ! -d ${ALT_BOOTDIR} ] ; then
- echo "WARNING: Cannot access ALT_BOOTDIR=${ALT_BOOTDIR}"
- fi
-
- # Get the latest JDK build to import pre-built binaries
- if [ "${ALT_CLOSED_JDK_IMPORT_PATH}" = "" ] ; then
- ALT_CLOSED_JDK_IMPORT_PATH=${jdk_instances}/${importjdk}
- export ALT_CLOSED_JDK_IMPORT_PATH
- fi
- if [ ! -d ${ALT_CLOSED_JDK_IMPORT_PATH} ] ; then
- echo "WARNING: Cannot access ALT_CLOSED_JDK_IMPORT_PATH=${ALT_CLOSED_JDK_IMPORT_PATH}"
- fi
-
umask 002
elif [ "${osname}" = Linux ] ; then
@@ -160,24 +143,6 @@
# Use compilers from /usr/bin
path4sdk=/usr/bin:/bin:/usr/sbin:/sbin
- # Get the previous JDK to be used to bootstrap the build
- if [ "${ALT_BOOTDIR}" = "" ] ; then
- ALT_BOOTDIR=${jdk_instances}/${bootjdk}
- export ALT_BOOTDIR
- fi
- if [ ! -d ${ALT_BOOTDIR} ] ; then
- echo "WARNING: Cannot access ALT_BOOTDIR=${ALT_BOOTDIR}"
- fi
-
- # Get the latest JDK build to import pre-built binaries
- if [ "${ALT_CLOSED_JDK_IMPORT_PATH}" = "" ] ; then
- ALT_CLOSED_JDK_IMPORT_PATH=${jdk_instances}/${importjdk}
- export ALT_CLOSED_JDK_IMPORT_PATH
- fi
- if [ ! -d ${ALT_CLOSED_JDK_IMPORT_PATH} ] ; then
- echo "WARNING: Cannot access ALT_CLOSED_JDK_IMPORT_PATH=${ALT_CLOSED_JDK_IMPORT_PATH}"
- fi
-
umask 002
else
@@ -305,24 +270,6 @@
INCLUDE="${include4sdk}"
export INCLUDE
- # Get the previous JDK to be used to bootstrap the build
- if [ "${ALT_BOOTDIR}" = "" ] ; then
- ALT_BOOTDIR=${jdk_instances}/${bootjdk}
- export ALT_BOOTDIR
- fi
- if [ ! -d ${ALT_BOOTDIR} ] ; then
- echo "WARNING: Cannot access ALT_BOOTDIR=${ALT_BOOTDIR}"
- fi
-
- # Get the latest JDK build to import pre-built binaries
- if [ "${ALT_CLOSED_JDK_IMPORT_PATH}" = "" ] ; then
- ALT_CLOSED_JDK_IMPORT_PATH=${jdk_instances}/${importjdk}
- export ALT_CLOSED_JDK_IMPORT_PATH
- fi
- if [ ! -d ${ALT_CLOSED_JDK_IMPORT_PATH} ] ; then
- echo "WARNING: Cannot access ALT_CLOSED_JDK_IMPORT_PATH=${ALT_CLOSED_JDK_IMPORT_PATH}"
- fi
-
# Turn all \\ into /, remove duplicates and trailing /
slash_path="$(echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g')"
path4sdk="${slash_path}"
@@ -332,6 +279,43 @@
fi
+# Get the previous JDK to be used to bootstrap the build
+if [ "${ALT_BOOTDIR}" = "" ] ; then
+ ALT_BOOTDIR=${jdk_instances}/${bootjdk}
+ export ALT_BOOTDIR
+fi
+if [ ! -d ${ALT_BOOTDIR} ] ; then
+ echo "WARNING: Cannot access ALT_BOOTDIR=${ALT_BOOTDIR}"
+fi
+
+# Get the import JDK to be used to get hotspot VM if not built
+if [ "${ALT_JDK_IMPORT_PATH}" = "" -a -d ${jdk_instances}/${importjdk} ] ; then
+ ALT_JDK_IMPORT_PATH=${jdk_instances}/${importjdk}
+ export ALT_JDK_IMPORT_PATH
+fi
+
+# Get the latest JDK binary plugs or build to import pre-built binaries
+if [ "${ALT_BINARY_PLUGS_PATH}" = "" ] ; then
+ binplugs=${jdk_instances}/openjdk-binary-plugs
+ jdkplugs=${jdk_instances}/${importjdk}
+ if [ -d ${binplugs} ] ; then
+ ALT_BINARY_PLUGS_PATH=${binplugs}
+ export ALT_BINARY_PLUGS_PATH
+ elif [ "${ALT_CLOSED_JDK_IMPORT_PATH}" = "" -a -d ${jdkplugs} ] ; then
+ ALT_CLOSED_JDK_IMPORT_PATH=${jdkplugs}
+ export ALT_CLOSED_JDK_IMPORT_PATH
+ fi
+ if [ "${ALT_BINARY_PLUGS_PATH}" = "" ] ; then
+ echo "WARNING: Missing ALT_BINARY_PLUGS_PATH: ${binplugs}"
+ fi
+fi
+if [ "${ALT_BINARY_PLUGS_PATH}" != "" -a ! -d "${ALT_BINARY_PLUGS_PATH}" ] ; then
+ echo "WARNING: Cannot access ALT_BINARY_PLUGS_PATH=${ALT_BINARY_PLUGS_PATH}"
+fi
+if [ "${ALT_CLOSED_JDK_IMPORT_PATH}" != "" -a ! -d "${ALT_CLOSED_JDK_IMPORT_PATH}" ] ; then
+ echo "WARNING: Cannot access ALT_CLOSED_JDK_IMPORT_PATH=${ALT_CLOSED_JDK_IMPORT_PATH}"
+fi
+
# Export PATH setting
PATH="${path4sdk}"
export PATH
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/jprt.config
--- a/j2se/make/jprt.config Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/jprt.config Fri Jul 20 21:22:05 2007 +0000
@@ -32,6 +32,7 @@
# ALT_BOOTDIR
# ALT_SLASH_JAVA
# ALT_JDK_IMPORT_PATH
+# OPENJDK
# Windows Only:
# PATH
# VS71COMNTOOLS
@@ -39,11 +40,16 @@
# ROOTDIR
#
# Output variable settings:
-# make Full path to GNU make
+# make Full path to GNU make
+# compiler_path Path to compiler bin directory
+# compiler_name Unique name of this compiler
#
# Output environment variables:
# PATH
# ALT_COMPILER_PATH
+# OPENJDK only:
+# ALT_CLOSED_JDK_IMPORT_PATH
+# ALT_JDK_DEVTOOLS_DIR
# Windows Only:
# ALT_MSDEVTOOLS_PATH
# ALT_DEVTOOLS_PATH (To avoid the C:/UTILS default)
@@ -87,10 +93,18 @@
slashjava="${ALT_SLASH_JAVA}"
jdk_import="${ALT_JDK_IMPORT_PATH}"
+jdk_devtools="${slashjava}/devtools"
+
# Check input
dirMustExist "${bootdir}" ALT_BOOTDIR
dirMustExist "${slashjava}" ALT_SLASH_JAVA
dirMustExist "${jdk_import}" ALT_JDK_IMPORT_PATH
+
+# Use the JDK import for now (FIXME: use the binary plugs?)
+if [ "${OPENJDK}" = true ] ; then
+ ALT_CLOSED_JDK_IMPORT_PATH="${jdk_import}"
+ export ALT_CLOSED_JDK_IMPORT_PATH
+fi
# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
osname=`uname -s`
@@ -105,7 +119,8 @@
fi
# Get the SS11 compilers into path (make sure it matches ALT setting)
- compiler_path=${slashjava}/devtools/${solaris_arch}/SUNWspro/SS11/bin
+ compiler_path=${jdk_devtools}/${solaris_arch}/SUNWspro/SS11/bin
+ compiler_name=SS11
ALT_COMPILER_PATH="${compiler_path}"
export ALT_COMPILER_PATH
dirMustExist "${compiler_path}" ALT_COMPILER_PATH
@@ -122,7 +137,7 @@
if [ ! -f ${make} ] ; then
make=/opt/sfw/bin/gmake
if [ ! -f ${make} ] ; then
- make=${slashjava}/devtools/${solaris_arch}/bin/gnumake
+ make=${jdk_devtools}/${solaris_arch}/bin/gnumake
fi
fi
fileMustExist "${make}" make
@@ -142,6 +157,7 @@
# Get the compilers into path (make sure it matches ALT setting)
compiler_path=/usr/bin
+ compiler_name=usr_bin
ALT_COMPILER_PATH="${compiler_path}"
export ALT_COMPILER_PATH
dirMustExist "${compiler_path}" ALT_COMPILER_PATH
@@ -158,6 +174,13 @@
fileMustExist "${make}" make
umask 002
+
+ # Linux platform may be old, use motif files from the devtools area
+ if [ "${OPENJDK}" = true ] ; then
+ ALT_JDK_DEVTOOLS_DIR="${jdk_devtools}"
+ export ALT_JDK_DEVTOOLS_DIR
+ fi
+
else
@@ -188,7 +211,7 @@
unixcommand_path="${mkshome}/mksnt"
path4sdk="${unixcommand_path}"
dirMustExist "${unixcommand_path}" ALT_UNIXCOMMAND_PATH
- devtools_path="${slashjava}/devtools/win32/bin"
+ devtools_path="${jdk_devtools}/win32/bin"
path4sdk="${devtools_path};${path4sdk}"
# Normally this need not be set, but on Windows it's default is C:/UTILS
ALT_DEVTOOLS_PATH="${devtools_path}"
@@ -225,6 +248,7 @@
msdevtools_path="${msdev_root}/bin"
vc7_root="${vs_root}/Vc7"
compiler_path="${vc7_root}/bin"
+ compiler_name=VS2003
platform_sdk="${vc7_root}/PlatformSDK"
# LIB and INCLUDE must use ; as a separator
include4sdk="${vc7_root}/atlmfc/include"
@@ -253,6 +277,7 @@
platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
fi
compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
+ compiler_name=VS2005_PSDK
msdevtools_path="${platform_sdk}/Bin"
# LIB and INCLUDE must use ; as a separator
include4sdk="${platform_sdk}/Include"
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/netbeans/README
--- a/j2se/make/netbeans/README Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/netbeans/README Fri Jul 20 21:22:05 2007 +0000
@@ -93,7 +93,7 @@
make.options=\
ALT_BOOTDIR=/home/me/bin/jdk1.6.0 \
- ALT_CLOSED_JDK_IMPORT_PATH=/home/me/bin/jdk1.7.0 \
+ ALT_BINARY_PLUGS_PATH=/home/me/bin/openjdk-binary-plugs \
ALT_MOTIF_DIR=/home/me/lib/motif \
ALT_JDK_IMPORT_PATH=/home/me/bin/jdk1.7.0 \
OPENJDK=true
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/sun/dcpr/Makefile
--- a/j2se/make/sun/dcpr/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/sun/dcpr/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -23,6 +23,8 @@
# have any questions.
#
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/BinaryPlugs.gmk
+
BUILDDIR = ../..
PACKAGE = sun.dc
LIBRARY = dcpr
@@ -35,6 +37,7 @@
include FILES_c.gmk
ifndef OPENJDK
+
FILES_java = \
sun/dc/DuctusRenderingEngine.java \
sun/dc/path/FastPathProducer.java \
@@ -55,16 +58,17 @@
else
-copy-closed-src-classes:
- $(call install-closed-classes,sun/dc)
-
-build: copy-closed-src-classes
+#
+# Specific to OpenJDK building
+#
-.PHONY: copy-closed-src-classes
+# Plug lib will be copied instead of compiling.
+USE_BINARY_PLUG_LIBRARY=true
-# When building OPENJDK (ie no closed sources), name the precompiled lib to
-# be copied by the rules in Library.gmk instead of compiling.
-USE_CLOSED_LIB=true
+build: import-binary-plug-dc-classes import-binary-plug-dcpr-library
+
+include $(BUILDDIR)/common/BinaryPlugs.gmk
+
endif # OPENJDK
#
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/sun/font/t2k/Makefile
--- a/j2se/make/sun/font/t2k/Makefile Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/sun/font/t2k/Makefile Fri Jul 20 21:22:05 2007 +0000
@@ -23,6 +23,8 @@
# have any questions.
#
+# WARNING: Make sure the OPENJDK plugs are up-to-date, see make/common/BinaryPlugs.gmk
+
#
# Makefile for building t2k rasteriser.
#
@@ -74,22 +76,41 @@
endif # PLATFORM
-# Setting this variable is sufficient to trigger copying a pre-built
-# library using rules in Library.gmk instead of building.
+#
+# Specific to OpenJDK building
+#
ifdef OPENJDK
- USE_CLOSED_LIB=true
- FILES_export =
-endif
+
+FILES_export =
+
+# Plug lib will be copied instead of compiling.
+USE_BINARY_PLUG_LIBRARY=true
+
+build: import-binary-plug-t2k-library
+
+include $(BUILDDIR)/common/BinaryPlugs.gmk
+
+endif # OPENJDK
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
-ifdef OPENJDK
-ifeq ($(PLATFORM),windows)
-# Need to copy the import file to link against.
-build: $(OBJDIR)/t2k.lib
-endif
-endif
+#
+# Export the t2k.lib for the openjdk binary plug exporting
+#
+
+ifndef OPENJDK
+
+ ifeq ($(PLATFORM), windows)
+
+# Make sure we export this t2k.lib file
+build: $(LIBFILES_DIR)/t2k.lib
+$(LIBFILES_DIR)/t2k.lib: $(OBJDIR)/t2k.lib
+ $(install-file)
+
+ endif # windows
+
+endif # !OPENJDK
#
# Add to the ambient vpath to pick up files in subdirectories
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/sun/text/FILES_java.gmk
--- a/j2se/make/sun/text/FILES_java.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/sun/text/FILES_java.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -83,6 +83,8 @@
$(TARGDIR)sun/text/resources/FormatData_zh_SG.java \
$(TARGDIR)sun/text/resources/FormatData_zh_TW.java \
\
+ $(TARGDIR)sun/util/resources/CurrencyNames_zh_HK.java \
+ $(TARGDIR)sun/util/resources/CurrencyNames_zh_SG.java \
$(TARGDIR)sun/util/resources/LocaleNames_zh_HK.java \
$(TARGDIR)sun/util/resources/TimeZoneNames_hi.java \
$(TARGDIR)sun/util/resources/TimeZoneNames_ja.java \
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/sun/text/FILES_properties.gmk
--- a/j2se/make/sun/text/FILES_properties.gmk Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/sun/text/FILES_properties.gmk Fri Jul 20 21:22:05 2007 +0000
@@ -63,11 +63,11 @@
sun/util/resources/CurrencyNames_ar_YE.properties \
sun/util/resources/CurrencyNames_hi_IN.properties \
sun/util/resources/CurrencyNames_iw_IL.properties \
+ sun/util/resources/CurrencyNames_ja.properties \
sun/util/resources/CurrencyNames_ja_JP.properties \
+ sun/util/resources/CurrencyNames_ko.properties \
sun/util/resources/CurrencyNames_ko_KR.properties \
sun/util/resources/CurrencyNames_th_TH.properties \
sun/util/resources/CurrencyNames_vi_VN.properties \
sun/util/resources/CurrencyNames_zh_CN.properties \
- sun/util/resources/CurrencyNames_zh_HK.properties \
- sun/util/resources/CurrencyNames_zh_SG.properties \
sun/util/resources/CurrencyNames_zh_TW.properties
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/make/tools/GenerateCurrencyData/GenerateCurrencyData.java
--- a/j2se/make/tools/GenerateCurrencyData/GenerateCurrencyData.java Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/make/tools/GenerateCurrencyData/GenerateCurrencyData.java Fri Jul 20 21:22:05 2007 +0000
@@ -25,7 +25,7 @@
import java.io.IOException;
import java.io.FileNotFoundException;
-import java.io.PrintStream;
+import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -35,42 +35,49 @@
import java.util.TimeZone;
/**
- * Reads currency data in properties format from the standard input stream
- * and generates an equivalent Java source file on the standard output stream.
+ * Reads currency data in properties format from the file specified in the
+ * command line and generates a binary data file as specified in the command line.
+ *
+ * Output of this tool is a binary file that contains the data in
+ * the following order:
+ *
+ * - magic number (int): always 0x43757244 ('CurD')
+ * - formatVersion (int)
+ * - dataVersion (int)
+ * - mainTable (int[26*26])
+ * - specialCaseCount (int)
+ * - specialCaseCutOverTimes (long[specialCaseCount])
+ * - specialCaseOldCurrencies (String[specialCaseCount])
+ * - specialCaseNewCurrencies (String[specialCaseCount])
+ * - specialCaseOldCurrenciesDefaultFractionDigits (int[specialCaseCount])
+ * - specialCaseNewCurrenciesDefaultFractionDigits (int[specialCaseCount])
+ * - specialCaseOldCurrenciesNumericCode (int[specialCaseCount])
+ * - specialCaseNewCurrenciesNumericCode (int[specialCaseCount])
+ * - otherCurrenciesCount (int)
+ * - otherCurrencies (String)
+ * - otherCurrenciesDefaultFractionDigits (int[otherCurrenciesCount])
+ * - otherCurrenciesNumericCode (int[otherCurrenciesCount])
+ *
* See CurrencyData.properties for the input format description and
* Currency.java for the format descriptions of the generated tables.
*/
public class GenerateCurrencyData {
- // To deal with output
- private static PrintStream out;
+ private static DataOutputStream out;
// input data: currency data obtained from properties on input stream
private static Properties currencyData;
- private static String version;
+ private static String formatVersion;
+ private static String dataVersion;
private static String validCurrencyCodes;
private static String currenciesWith0MinorUnitDecimals;
private static String currenciesWith1MinorUnitDecimal;
private static String currenciesWith3MinorUnitDecimal;
private static String currenciesWithMinorUnitsUndefined;
- // generated data
- private static String mainTable;
-
- private static final int maxSpecialCases = 30;
- private static int specialCaseCount = 0;
- private static long[] specialCaseCutOverTimes = new long[maxSpecialCases];
- private static String[] specialCaseOldCurrencies = new String[maxSpecialCases];
- private static String[] specialCaseNewCurrencies = new String[maxSpecialCases];
- private static int[] specialCaseOldCurrenciesDefaultFractionDigits = new int[maxSpecialCases];
- private static int[] specialCaseNewCurrenciesDefaultFractionDigits = new int[maxSpecialCases];
-
- private static final int maxOtherCurrencies = 60;
- private static int otherCurrenciesCount = 0;
- private static StringBuffer otherCurrencies = new StringBuffer();
- private static int[] otherCurrenciesDefaultFractionDigits = new int[maxOtherCurrencies];
-
// handy constants - must match definitions in java.util.Currency
+ // magic number
+ private static final int MAGIC_NUMBER = 0x43757244;
// number of characters from A to Z
private static final int A_TO_Z = ('Z' - 'A') + 1;
// entry for invalid country codes
@@ -93,6 +100,29 @@
private static final int SPECIAL_CASE_COUNTRY_INDEX_DELTA = 1;
// mask for distinguishing simple and special case countries
private static final int COUNTRY_TYPE_MASK = SIMPLE_CASE_COUNTRY_MASK | SPECIAL_CASE_COUNTRY_MASK;
+ // mask for the numeric code of the currency
+ private static final int NUMERIC_CODE_MASK = 0x0003FF00;
+ // shift count for the numeric code of the currency
+ private static final int NUMERIC_CODE_SHIFT = 8;
+
+ // generated data
+ private static int[] mainTable = new int[A_TO_Z * A_TO_Z];
+
+ private static final int maxSpecialCases = 30;
+ private static int specialCaseCount = 0;
+ private static long[] specialCaseCutOverTimes = new long[maxSpecialCases];
+ private static String[] specialCaseOldCurrencies = new String[maxSpecialCases];
+ private static String[] specialCaseNewCurrencies = new String[maxSpecialCases];
+ private static int[] specialCaseOldCurrenciesDefaultFractionDigits = new int[maxSpecialCases];
+ private static int[] specialCaseNewCurrenciesDefaultFractionDigits = new int[maxSpecialCases];
+ private static int[] specialCaseOldCurrenciesNumericCode = new int[maxSpecialCases];
+ private static int[] specialCaseNewCurrenciesNumericCode = new int[maxSpecialCases];
+
+ private static final int maxOtherCurrencies = 60;
+ private static int otherCurrenciesCount = 0;
+ private static StringBuffer otherCurrencies = new StringBuffer();
+ private static int[] otherCurrenciesDefaultFractionDigits = new int[maxOtherCurrencies];
+ private static int[] otherCurrenciesNumericCode= new int[maxOtherCurrencies];
// date format for parsing cut-over times
private static SimpleDateFormat format;
@@ -100,21 +130,17 @@
public static void main(String[] args) {
// Look for "-o outputfilename" option
- if ( args.length > 0 ) {
- if ( args.length == 2 && args[0].equals("-o") ) {
- try {
- out = new PrintStream(new FileOutputStream(args[1]));
- } catch ( FileNotFoundException e ) {
- System.err.println("Error: " + e.getMessage());
- e.printStackTrace(System.err);
- System.exit(1);
- }
- } else {
- System.err.println("Error: Illegal arg count");
- System.exit(1);
+ if ( args.length == 2 && args[0].equals("-o") ) {
+ try {
+ out = new DataOutputStream(new FileOutputStream(args[1]));
+ } catch ( FileNotFoundException e ) {
+ System.err.println("Error: " + e.getMessage());
+ e.printStackTrace(System.err);
+ System.exit(1);
}
} else {
- out = System.out;
+ System.err.println("Error: Illegal arg count");
+ System.exit(1);
}
format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US);
@@ -126,13 +152,13 @@
buildMainAndSpecialCaseTables();
buildOtherTables();
writeOutput();
+ out.flush();
+ out.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace(System.err);
System.exit(1);
}
- out.flush();
- out.close();
}
private static void readInput() throws IOException {
@@ -140,13 +166,15 @@
currencyData.load(System.in);
// initialize other lookup strings
- version = (String) currencyData.get("version");
+ formatVersion = (String) currencyData.get("formatVersion");
+ dataVersion = (String) currencyData.get("dataVersion");
validCurrencyCodes = (String) currencyData.get("all");
currenciesWith0MinorUnitDecimals = (String) currencyData.get("minor0");
currenciesWith1MinorUnitDecimal = (String) currencyData.get("minor1");
currenciesWith3MinorUnitDecimal = (String) currencyData.get("minor3");
currenciesWithMinorUnitsUndefined = (String) currencyData.get("minorUndefined");
- if (version == null ||
+ if (formatVersion == null ||
+ dataVersion == null ||
validCurrencyCodes == null ||
currenciesWith0MinorUnitDecimals == null ||
currenciesWith1MinorUnitDecimal == null ||
@@ -157,7 +185,6 @@
}
private static void buildMainAndSpecialCaseTables() throws Exception {
- char[] mainTableArray = new char[A_TO_Z*A_TO_Z];
for (int first = 0; first < A_TO_Z; first++) {
for (int second = 0; second < A_TO_Z; second++) {
char firstChar = (char) ('A' + first);
@@ -181,9 +208,14 @@
if (digits < 0 || digits > 3) {
throw new RuntimeException("fraction digits out of range for " + currencyInfo);
}
+ int numericCode= getNumericCode(currencyInfo);
+ if (numericCode < 0 || numericCode >= 1000 ) {
+ throw new RuntimeException("numeric code out of range for " + currencyInfo);
+ }
tableEntry = SIMPLE_CASE_COUNTRY_MASK
| (currencyInfo.charAt(2) - 'A')
- | (digits << SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT);
+ | (digits << SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT)
+ | (numericCode << NUMERIC_CODE_SHIFT);
} else {
tableEntry = SPECIAL_CASE_COUNTRY_MASK | (makeSpecialCaseEntry(currencyInfo) + SPECIAL_CASE_COUNTRY_INDEX_DELTA);
}
@@ -191,10 +223,9 @@
tableEntry = SPECIAL_CASE_COUNTRY_MASK | (makeSpecialCaseEntry(currencyInfo) + SPECIAL_CASE_COUNTRY_INDEX_DELTA);
}
}
- mainTableArray[first * A_TO_Z + second] = (char) tableEntry;
+ mainTable[first * A_TO_Z + second] = tableEntry;
}
}
- mainTable = new String(mainTableArray);
}
private static int getDefaultFractionDigits(String currencyCode) {
@@ -211,6 +242,12 @@
}
}
+ private static int getNumericCode(String currencyCode) {
+ int index = validCurrencyCodes.indexOf(currencyCode);
+ String numericCode = validCurrencyCodes.substring(index + 3, index + 6);
+ return Integer.parseInt(numericCode);
+ }
+
static HashMap specialCaseMap = new HashMap();
private static int makeSpecialCaseEntry(String currencyInfo) throws Exception {
@@ -226,8 +263,10 @@
specialCaseCutOverTimes[specialCaseCount] = Long.MAX_VALUE;
specialCaseOldCurrencies[specialCaseCount] = currencyInfo;
specialCaseOldCurrenciesDefaultFractionDigits[specialCaseCount] = getDefaultFractionDigits(currencyInfo);
+ specialCaseOldCurrenciesNumericCode[specialCaseCount] = getNumericCode(currencyInfo);
specialCaseNewCurrencies[specialCaseCount] = null;
specialCaseNewCurrenciesDefaultFractionDigits[specialCaseCount] = 0;
+ specialCaseNewCurrenciesNumericCode[specialCaseCount] = 0;
} else {
int length = currencyInfo.length();
if (currencyInfo.charAt(3) != ';' ||
@@ -246,24 +285,28 @@
specialCaseCutOverTimes[specialCaseCount] = time;
specialCaseOldCurrencies[specialCaseCount] = oldCurrency;
specialCaseOldCurrenciesDefaultFractionDigits[specialCaseCount] = getDefaultFractionDigits(oldCurrency);
+ specialCaseOldCurrenciesNumericCode[specialCaseCount] = getNumericCode(oldCurrency);
specialCaseNewCurrencies[specialCaseCount] = newCurrency;
specialCaseNewCurrenciesDefaultFractionDigits[specialCaseCount] = getDefaultFractionDigits(newCurrency);
+ specialCaseNewCurrenciesNumericCode[specialCaseCount] = getNumericCode(newCurrency);
}
specialCaseMap.put(currencyInfo, new Integer(specialCaseCount));
return specialCaseCount++;
}
private static void buildOtherTables() {
- if (validCurrencyCodes.length() % 4 != 3) {
+ if (validCurrencyCodes.length() % 7 != 6) {
throw new RuntimeException("\"all\" entry has incorrect size");
}
- for (int i = 0; i < (validCurrencyCodes.length() + 1) / 4; i++) {
- if (i > 0 && validCurrencyCodes.charAt(i * 4 - 1) != '-') {
+ for (int i = 0; i < (validCurrencyCodes.length() + 1) / 7; i++) {
+ if (i > 0 && validCurrencyCodes.charAt(i * 7 - 1) != '-') {
throw new RuntimeException("incorrect separator in \"all\" entry");
}
- String currencyCode = validCurrencyCodes.substring(i * 4, i * 4 + 3);
+ String currencyCode = validCurrencyCodes.substring(i * 7, i * 7 + 3);
+ int numericCode = Integer.parseInt(
+ validCurrencyCodes.substring(i * 7 + 3, i * 7 + 6));
checkCurrencyCode(currencyCode);
- int tableEntry = mainTable.charAt((currencyCode.charAt(0) - 'A') * A_TO_Z + (currencyCode.charAt(1) - 'A'));
+ int tableEntry = mainTable[(currencyCode.charAt(0) - 'A') * A_TO_Z + (currencyCode.charAt(1) - 'A')];
if (tableEntry == INVALID_COUNTRY_ENTRY ||
(tableEntry & SPECIAL_CASE_COUNTRY_MASK) != 0 ||
(tableEntry & SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK) != (currencyCode.charAt(2) - 'A')) {
@@ -275,6 +318,7 @@
}
otherCurrencies.append(currencyCode);
otherCurrenciesDefaultFractionDigits[otherCurrenciesCount] = getDefaultFractionDigits(currencyCode);
+ otherCurrenciesNumericCode[otherCurrenciesCount] = getNumericCode(currencyCode);
otherCurrenciesCount++;
}
}
@@ -295,94 +339,41 @@
}
}
- private static void writeOutput() {
- out.println("package java.util;\n");
- out.println("class CurrencyData {\n");
- writeStaticString("version", version, A_TO_Z);
- writeStaticString("mainTable", mainTable, A_TO_Z);
- writeStaticLongArray("scCutOverTimes", specialCaseCutOverTimes, specialCaseCount);
- writeStaticStringArray("scOldCurrencies", specialCaseOldCurrencies, specialCaseCount);
- writeStaticStringArray("scNewCurrencies", specialCaseNewCurrencies, specialCaseCount);
- writeStaticIntArray("scOldCurrenciesDFD", specialCaseOldCurrenciesDefaultFractionDigits, specialCaseCount);
- writeStaticIntArray("scNewCurrenciesDFD", specialCaseNewCurrenciesDefaultFractionDigits, specialCaseCount);
- writeStaticString("otherCurrencies", otherCurrencies.toString(), otherCurrenciesCount * 4);
- writeStaticIntArray("otherCurrenciesDFD", otherCurrenciesDefaultFractionDigits, otherCurrenciesCount);
- out.println("}\n");
- }
-
- private static void writeStaticString(String name, String content, int chunkSize) {
- String prefix = " static final String " + name + " = ";
- out.print(prefix);
- out.print("\"");
- int inChunk = 0;
- for (int i = 0; i < content.length(); i++) {
- if (inChunk == chunkSize) {
- out.print("\" +\n");
- for (int j = 0; j < prefix.length(); j++) {
- out.print(" ");
- }
- out.print("\"");
- inChunk = 0;
- }
- writeChar(content.charAt(i));
- inChunk++;
- }
- out.println("\";\n");
+ private static void writeOutput() throws IOException {
+ out.writeInt(MAGIC_NUMBER);
+ out.writeInt(Integer.parseInt(formatVersion));
+ out.writeInt(Integer.parseInt(dataVersion));
+ writeIntArray(mainTable, mainTable.length);
+ out.writeInt(specialCaseCount);
+ writeLongArray(specialCaseCutOverTimes, specialCaseCount);
+ writeStringArray(specialCaseOldCurrencies, specialCaseCount);
+ writeStringArray(specialCaseNewCurrencies, specialCaseCount);
+ writeIntArray(specialCaseOldCurrenciesDefaultFractionDigits, specialCaseCount);
+ writeIntArray(specialCaseNewCurrenciesDefaultFractionDigits, specialCaseCount);
+ writeIntArray(specialCaseOldCurrenciesNumericCode, specialCaseCount);
+ writeIntArray(specialCaseNewCurrenciesNumericCode, specialCaseCount);
+ out.writeInt(otherCurrenciesCount);
+ out.writeUTF(otherCurrencies.toString());
+ writeIntArray(otherCurrenciesDefaultFractionDigits, otherCurrenciesCount);
+ writeIntArray(otherCurrenciesNumericCode, otherCurrenciesCount);
}
-
- private static void writeStaticStringArray(String name, String[] content, int count) {
- out.print(" static final String[] " + name + " = { ");
- for (int i = 0; i < count; i++) {
- if (content[i] == null) {
- out.print("null");
- } else {
- writeString(content[i]);
- }
- out.print(", ");
- }
- out.println("};\n");
- }
-
- private static void writeStaticIntArray(String name, int[] content, int count) {
- out.print(" static final int[] " + name + " = { ");
- for (int i = 0; i < count; i++) {
- out.print(content[i]);
- out.print(", ");
- }
- out.println("};\n");
+
+ private static void writeIntArray(int[] ia, int count) throws IOException {
+ for (int i = 0; i < count; i ++) {
+ out.writeInt(ia[i]);
+ }
}
-
- private static void writeStaticLongArray(String name, long[] content, int count) {
- out.print(" static final long[] " + name + " = { ");
- for (int i = 0; i < count; i++) {
- out.print(content[i]);
- out.print("L, ");
- }
- out.println("};\n");
- }
-
- private static void writeString(String string) {
- out.print("\"");
- for (int i = 0; i < string.length(); i++) {
- writeChar(string.charAt(i));
- }
- out.print("\"");
+
+ private static void writeLongArray(long[] la, int count) throws IOException {
+ for (int i = 0; i < count; i ++) {
+ out.writeLong(la[i]);
+ }
}
-
- private static void writeChar(char aChar) {
- if (aChar == '\n') {
- out.print("\\n");
- } else if (aChar == '\r') {
- out.print("\\r");
- } else if (aChar >= '\u0020' && aChar < '\u007F') {
- out.print(aChar);
- } else {
- out.print("\\u");
- String hexString = Integer.toHexString(aChar);
- for (int i = 0; i < 4 - hexString.length(); i++) {
- out.print("0");
- }
- out.print(hexString);
- }
+
+ private static void writeStringArray(String[] sa, int count) throws IOException {
+ for (int i = 0; i < count; i ++) {
+ String str = (sa[i] != null) ? sa[i] : "";
+ out.writeUTF(str);
+ }
}
}
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/corba/se/impl/activation/CommandHandler.java
--- a/j2se/src/share/classes/com/sun/corba/se/impl/activation/CommandHandler.java Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/corba/se/impl/activation/CommandHandler.java Fri Jul 20 21:22:05 2007 +0000
@@ -29,7 +29,7 @@
import java.io.PrintStream;
/**
- * @version 1.21, 07/07/05
+ * @version 1.21, 07/07/20
* @author Rohit Garg
* @since JDK1.2
*/
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/security/auth/login/ConfigFile.java
--- a/j2se/src/share/classes/com/sun/security/auth/login/ConfigFile.java Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/security/auth/login/ConfigFile.java Fri Jul 20 21:22:05 2007 +0000
@@ -86,7 +86,7 @@
* is exactly that syntax specified in the
* javax.security.auth.login.Configuration
class.
*
- * @version 1.31, 05/05/07
+ * @version 1.32, 06/22/07
* @see javax.security.auth.login.LoginContext
*/
public class ConfigFile extends javax.security.auth.login.Configuration {
@@ -203,8 +203,7 @@
} catch (java.net.MalformedURLException mue) {
File configFile = new File(extra_config);
if (configFile.exists()) {
- configURL = new URL("file:" +
- configFile.getCanonicalPath());
+ configURL = configFile.toURI().toURL();
} else {
MessageFormat form = new MessageFormat
(ResourcesMgr.getString
@@ -267,7 +266,7 @@
// No longer throws an exception when there's no config file
// at all. Returns an empty Configuration instead.
if (new File(userConfigFile).exists()) {
- init(new URL("file:" + userConfigFile),
+ init(new File(userConfigFile).toURI().toURL(),
newConfig);
}
}
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/tools/attach/spi/AttachProvider.java
--- a/j2se/src/share/classes/com/sun/tools/attach/spi/AttachProvider.java Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/tools/attach/spi/AttachProvider.java Fri Jul 20 21:22:05 2007 +0000
@@ -34,7 +34,7 @@
import com.sun.tools.attach.VirtualMachineDescriptor;
import com.sun.tools.attach.AttachPermission;
import com.sun.tools.attach.AttachNotSupportedException;
-import sun.misc.Service;
+import java.util.ServiceLoader;
/**
* Attach provider class for attaching to a Java virtual machine.
@@ -248,8 +248,11 @@
if (providers == null) {
providers = new ArrayList();
- Iterator i = Service.providers(AttachProvider.class,
- AttachProvider.class.getClassLoader());
+ ServiceLoader providerLoader =
+ ServiceLoader.load(AttachProvider.class,
+ AttachProvider.class.getClassLoader());
+
+ Iterator i = providerLoader.iterator();
while (i.hasNext()) {
try {
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/tools/corba/se/idl/first.set
--- a/j2se/src/share/classes/com/sun/tools/corba/se/idl/first.set Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/tools/corba/se/idl/first.set Fri Jul 20 21:22:05 2007 +0000
@@ -6,7 +6,7 @@
* THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
*
- * @(#) 1.3 @(#)first.set 1.3 04/30/07 19:05:31 [07/05/07 00:46:51]
+ * @(#) 1.3 @(#)first.set 1.3 04/30/07 19:05:31 [07/20/07 00:30:59]
*/
CORBA IDL
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/tools/corba/se/idl/follow.set
--- a/j2se/src/share/classes/com/sun/tools/corba/se/idl/follow.set Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/tools/corba/se/idl/follow.set Fri Jul 20 21:22:05 2007 +0000
@@ -6,7 +6,7 @@
* THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
*
- * @(#) 1.3 @(#)follow.set 1.3 04/30/07 19:05:31 [07/05/07 00:46:51]
+ * @(#) 1.3 @(#)follow.set 1.3 04/30/07 19:05:31 [07/20/07 00:30:59]
*/
CORBA IDL
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/tools/example/debug/tty/MessageOutput.java
--- a/j2se/src/share/classes/com/sun/tools/example/debug/tty/MessageOutput.java Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/tools/example/debug/tty/MessageOutput.java Fri Jul 20 21:22:05 2007 +0000
@@ -33,7 +33,7 @@
* the only class that should be printing directly or otherwise
* accessing System.[out,err].
*
- * @version @(#) MessageOutput.java 1.14 07/05/05 00:46:58
+ * @version @(#) MessageOutput.java 1.14 07/05/05 00:31:04
* @bug 4348376
* @author Tim Bell
*/
diff -r 64ed597c0ad3 -r bf1d8af0651f j2se/src/share/classes/com/sun/tools/example/doc/index.html
--- a/j2se/src/share/classes/com/sun/tools/example/doc/index.html Thu Jul 05 23:47:33 2007 +0000
+++ b/j2se/src/share/classes/com/sun/tools/example/doc/index.html Fri Jul 20 21:22:05 2007 +0000
@@ -79,7 +79,7 @@
java-debugger@java.sun.com
-@(#) index.html 1.2 01/06/04 00:46:58
+@(#) index.html 1.2 01/06/04 00:31:04