view j2se/make/common/BinaryPlugs.gmk @ 4:bf1d8af0651f trunk

[svn] Load openjdk/jdk7/b16 into jdk/trunk.
author xiomara
date Fri, 20 Jul 2007 21:22:05 +0000
parents
children 27e0bf49438e
line wrap: on
line source

#
# 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