blob: c4f1060076fc1c98637c1a2b340cf0b1d8d60741 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#
2# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# This code is free software; you can redistribute it and/or modify it
6# under the terms of the GNU General Public License version 2 only, as
7# published by the Free Software Foundation. Sun designates this
8# particular file as subject to the "Classpath" exception as provided
9# by Sun in the LICENSE file that accompanied this code.
10#
11# This code is distributed in the hope that it will be useful, but WITHOUT
12# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14# version 2 for more details (a copy is included in the LICENSE file that
15# accompanied this code).
16#
17# You should have received a copy of the GNU General Public License version
18# 2 along with this work; if not, write to the Free Software Foundation,
19# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20#
21# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any questions.
24#
25
26########################################################################
27
28# Definitions for openjdk plugs (used by both import and export)
29
30# Names of native shared libraries
31
32PLUG_JSOUND_LIBRARY=$(LIB_PREFIX)jsoundhs.$(LIBRARY_SUFFIX)
33PLUG_LIBRARY_NAMES = \
34 $(PLUG_JSOUND_LIBRARY)
35
36# Sub-directory where native shared libraries are located (e.g. jre/bin or...)
37
38PLUG_LOCATION_SUBDIR=$(ARCH_VM_SUBDIR)
39
40# Explicit classfile lists
41
42# WARNING: These classlists will not work with pattern rules, only used in
43# shell commands.
44# The \$$ patterns will fail in pattern rules, which want $$,
45# but the $$ fails in shell commands.
46# The shell commands are more important.
47# Also, the $1 pattern in these names causes problems with the
48# GNU make define feature, so you can't use these in define's.
49
50PLUG_JMF_CLASS_NAMES = \
51com/sun/jmx/snmp/SnmpDataTypeEnums.class \
52com/sun/jmx/snmp/SnmpDefinitions.class \
53com/sun/jmx/snmp/SnmpOid.class \
54com/sun/jmx/snmp/SnmpOidDatabase.class \
55com/sun/jmx/snmp/SnmpOidDatabaseSupport.class \
56com/sun/jmx/snmp/SnmpOidRecord.class \
57com/sun/jmx/snmp/SnmpOidTable.class \
58com/sun/jmx/snmp/SnmpOidTableSupport.class \
59com/sun/jmx/snmp/SnmpParameters.class \
60com/sun/jmx/snmp/SnmpPduPacket.class \
61com/sun/jmx/snmp/SnmpPeer.class \
62com/sun/jmx/snmp/SnmpTimeticks.class \
63com/sun/jmx/snmp/SnmpVarBind.class \
64com/sun/jmx/snmp/SnmpVarBindList.class \
65com/sun/jmx/snmp/Timestamp.class \
66com/sun/jmx/snmp/daemon/SendQ.class \
67com/sun/jmx/snmp/daemon/SnmpInformRequest.class \
68com/sun/jmx/snmp/daemon/SnmpQManager.class \
69com/sun/jmx/snmp/daemon/SnmpRequestCounter.class \
70com/sun/jmx/snmp/daemon/SnmpResponseHandler.class \
71com/sun/jmx/snmp/daemon/SnmpSendServer.class \
72com/sun/jmx/snmp/daemon/SnmpSession.class \
73com/sun/jmx/snmp/daemon/SnmpSocket.class \
74com/sun/jmx/snmp/daemon/SnmpTimerServer.class \
75com/sun/jmx/snmp/daemon/WaitQ.class
76
77PLUG_SOUND_CLASS_NAMES = \
78com/sun/media/sound/AbstractPlayer.class \
79com/sun/media/sound/CircularBuffer.class \
80com/sun/media/sound/HeadspaceInstrument.class \
81com/sun/media/sound/HeadspaceMixer\$$1.class \
82com/sun/media/sound/HeadspaceMixer\$$MidiLine.class \
83com/sun/media/sound/HeadspaceMixer\$$MidiLineInfo.class \
84com/sun/media/sound/HeadspaceMixer\$$MixerInfo.class \
85com/sun/media/sound/HeadspaceMixer\$$MixerReverbControl\$$MixerReverbType.class \
86com/sun/media/sound/HeadspaceMixer\$$MixerReverbControl.class \
87com/sun/media/sound/HeadspaceMixer.class \
88com/sun/media/sound/HeadspaceMixerProvider.class \
89com/sun/media/sound/HeadspaceSample.class \
90com/sun/media/sound/HeadspaceSoundbank.class \
91com/sun/media/sound/HsbParser.class \
92com/sun/media/sound/MixerClip\$$1.class \
93com/sun/media/sound/MixerClip\$$MixerClipApplyReverbControl.class \
94com/sun/media/sound/MixerClip\$$MixerClipGainControl.class \
95com/sun/media/sound/MixerClip\$$MixerClipMuteControl.class \
96com/sun/media/sound/MixerClip\$$MixerClipPanControl.class \
97com/sun/media/sound/MixerClip\$$MixerClipSampleRateControl.class \
98com/sun/media/sound/MixerClip.class \
99com/sun/media/sound/MixerMidiChannel.class \
100com/sun/media/sound/MixerSequencer\$$1.class \
101com/sun/media/sound/MixerSequencer\$$ControllerVectorElement.class \
102com/sun/media/sound/MixerSequencer\$$MixerSequencerInfo.class \
103com/sun/media/sound/MixerSequencer\$$RecordingTrack.class \
104com/sun/media/sound/MixerSequencer.class \
105com/sun/media/sound/MixerSequencerProvider.class \
106com/sun/media/sound/MixerSourceLine\$$1.class \
107com/sun/media/sound/MixerSourceLine\$$MixerSourceLineApplyReverbControl.class \
108com/sun/media/sound/MixerSourceLine\$$MixerSourceLineGainControl.class \
109com/sun/media/sound/MixerSourceLine\$$MixerSourceLineMuteControl.class \
110com/sun/media/sound/MixerSourceLine\$$MixerSourceLinePanControl.class \
111com/sun/media/sound/MixerSourceLine\$$MixerSourceLineSampleRateControl.class \
112com/sun/media/sound/MixerSourceLine.class \
113com/sun/media/sound/MixerSynth\$$1.class \
114com/sun/media/sound/MixerSynth\$$MixerSynthInfo.class \
115com/sun/media/sound/MixerSynth\$$SynthReceiver.class \
116com/sun/media/sound/MixerSynth.class \
117com/sun/media/sound/MixerSynthProvider.class \
118com/sun/media/sound/MixerThread.class \
119com/sun/media/sound/RmfFileReader.class \
120com/sun/media/sound/SimpleInputDevice\$$1.class \
121com/sun/media/sound/SimpleInputDevice\$$InputDeviceDataLine.class \
122com/sun/media/sound/SimpleInputDevice\$$InputDevicePort.class \
123com/sun/media/sound/SimpleInputDevice\$$InputDevicePortInfo.class \
124com/sun/media/sound/SimpleInputDevice.class \
125com/sun/media/sound/SimpleInputDeviceProvider\$$1.class \
126com/sun/media/sound/SimpleInputDeviceProvider\$$InputDeviceInfo.class \
127com/sun/media/sound/SimpleInputDeviceProvider.class
128
129PLUG_AWT_CLASS_NAMES = \
130java/awt/color/CMMException.class \
131java/awt/color/ColorSpace.class \
132java/awt/color/ICC_ColorSpace.class \
133java/awt/color/ICC_Profile\$$1.class \
134java/awt/color/ICC_Profile\$$2.class \
135java/awt/color/ICC_Profile\$$3.class \
136java/awt/color/ICC_Profile.class \
137java/awt/color/ICC_ProfileGray.class \
138java/awt/color/ICC_ProfileRGB.class \
139java/awt/image/BandedSampleModel.class \
140java/awt/image/ColorConvertOp.class \
141java/awt/image/ComponentSampleModel.class \
142java/awt/image/DataBuffer\$$1.class \
143java/awt/image/DataBuffer.class \
144java/awt/image/DataBufferByte.class \
145java/awt/image/DataBufferInt.class \
146java/awt/image/DataBufferShort.class \
147java/awt/image/DataBufferUShort.class \
148java/awt/image/MultiPixelPackedSampleModel.class \
149java/awt/image/Raster.class \
150java/awt/image/RenderedImage.class \
151java/awt/image/SampleModel.class \
152java/awt/image/SinglePixelPackedSampleModel.class \
153java/awt/image/WritableRaster.class \
154java/awt/image/WritableRenderedImage.class \
155java/awt/image/renderable/ContextualRenderedImageFactory.class \
156java/awt/image/renderable/ParameterBlock.class \
157java/awt/image/renderable/RenderContext.class \
158java/awt/image/renderable/RenderableImage.class \
159java/awt/image/renderable/RenderableImageOp.class \
160java/awt/image/renderable/RenderableImageProducer.class \
161java/awt/image/renderable/RenderedImageFactory.class
162
163# Class list temp files (used by both import and export of plugs)
164
165PLUG_TEMPDIR=$(ABS_TEMPDIR)/plugs
166PLUG_CLASS_AREAS = jmf sound awt
167PLUG_CLISTS = $(PLUG_CLASS_AREAS:%=$(PLUG_TEMPDIR)/%.clist)
168
169# Create jargs file command
170
171define plug-create-jargs
172@$(prep-target)
173$(SED) -e "s@^@-C $(CLASSDESTDIR) @" $< > $@
174endef # plug-create-clist-jargs
175
176# Create clist (class name list) and jargs file (input to jar)
177# Need these files to avoid long command lines which fail on some systems.
178
179$(PLUG_TEMPDIR)/jmf.clist:
180 @$(prep-target)
181 @for i in $(PLUG_JMF_CLASS_NAMES) ; do \
182 $(ECHO) "$$i" >> $@; \
183 done
184$(PLUG_TEMPDIR)/sound.clist:
185 @$(prep-target)
186 @for i in $(PLUG_SOUND_CLASS_NAMES) ; do \
187 $(ECHO) "$$i" >> $@ ; \
188 done
189$(PLUG_TEMPDIR)/awt.clist:
190 @$(prep-target)
191 @for i in $(PLUG_AWT_CLASS_NAMES) ; do \
192 $(ECHO) "$$i" >> $@ ; \
193 done
194$(PLUG_TEMPDIR)/all.clist: $(PLUG_CLISTS)
195 @$(prep-target)
196 $(CAT) $(PLUG_CLISTS) > $@
197$(PLUG_TEMPDIR)/jmf.jargs: $(PLUG_TEMPDIR)/jmf.clist
198 $(plug-create-jargs)
199$(PLUG_TEMPDIR)/sound.jargs: $(PLUG_TEMPDIR)/sound.clist
200 $(plug-create-jargs)
201$(PLUG_TEMPDIR)/awt.jargs: $(PLUG_TEMPDIR)/awt.clist
202 $(plug-create-jargs)
203$(PLUG_TEMPDIR)/all.jargs: $(PLUG_TEMPDIR)/all.clist
204 $(plug-create-jargs)
205
206#
207# Specific to OPENJDK import of binary plugs
208#
209
210ifdef OPENJDK
211
212# Import
213
214PLUG_IMPORT_DIR=$(BINARY_PLUGS_PATH)
215PLUG_IMPORT_JARFILE=$(BINARY_PLUGS_JARFILE)
216
217# Import file command
218
219define import-binary-plug-file
220@$(ECHO) "PLUG IMPORT: $(@F)"
221$(install-file)
222endef # import-binary-plug-file
223
224# Import classes command
225
226define import-binary-plug-classes
227@$(MKDIR) -p $(CLASSDESTDIR)
228@$(CAT) $1 | $(SED) -e 's/^/PLUG IMPORT: /'
229($(CD) $(CLASSDESTDIR) && $(BOOT_JAR_CMD) xf $(PLUG_IMPORT_JARFILE) @$1)
230endef # import-binary-plug-classes
231
232# Import specific area classes (the classes are always created)
233
234import-binary-plug-jmf-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/jmf.clist
235 $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/jmf.clist)
236import-binary-plug-sound-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/sound.clist
237 $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/sound.clist)
238import-binary-plug-awt-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/awt.clist
239 $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/awt.clist)
240
241# Import all classes from the jar file
242
243import-binary-plug-jar: \
244 import-binary-plug-jmf-classes \
245 import-binary-plug-sound-classes \
246 import-binary-plug-awt-classes
247
248# Import native libraries
249
250$(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY): \
251 $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY)
252 $(import-binary-plug-file)
253
254# Rules only used by lower level makefiles
255
256import-binary-plug-jsound-library: \
257 $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
258
259# Binary plug start/complete messages
260
261import-binary-plugs-started:
262 @$(ECHO) "BinaryPlugs import started: `date`"
263 @$(ECHO) "BINARY_PLUGS_PATH=$(BINARY_PLUGS_PATH)"
264import-binary-plugs-completed:
265 @$(ECHO) "BinaryPlugs import completed: `date`"
266
267# Import lib files (only if they don't exist already)
268
269import-binary-plugs-libs: \
270 $(PLUG_LIBRARY_NAMES:%=$(LIB_LOCATION)/%)
271
272# Import everything
273
274import-binary-plugs: \
275 import-binary-plugs-started \
276 import-binary-plugs-libs \
277 import-binary-plug-jar \
278 import-binary-plugs-completed
279
280# All these targets are phony (no filenames)
281
282.PHONY: import-binary-plugs-started \
283 import-binary-plugs-completed \
284 import-binary-plugs-libs \
285 import-binary-plugs \
286 import-binary-plug-jar \
287 import-binary-plug-jmf-classes \
288 import-binary-plug-sound-classes \
289 import-binary-plug-awt-classes \
290 import-binary-plug-jsound-library
291
292else # !OPENJDK
293
294#
295# Specific to exporting binary plugs for OPENJDK (e.g. OPENJDK is NOT defined)
296#
297
298# Export names (See make/common/Defs.gmk for BINARY_PLUGS_JARNAME definition)
299
300PLUG_EXPORT_DIRNAME=openjdk-binary-plugs-image
301PLUG_EXPORT_DIR=$(OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)
302PLUG_EXPORT_JARFILE=$(PLUG_EXPORT_DIR)/jre/lib/$(BINARY_PLUGS_JARNAME)
303
304# Export file command
305
306define export-binary-plug-file
307@$(ECHO) "PLUG EXPORT: $(@F)"
308$(install-file)
309endef # export-binary-plug-file
310
311# OpenJDK Binary Plug License
312
313$(PLUG_EXPORT_DIR)/LICENSE: $(CLOSED_SHARE_SRC)/doc/openjdk/binary-plugs/LICENSE
314 $(export-binary-plug-file)
315export-binary-plugs-license: $(PLUG_EXPORT_DIR)/LICENSE
316
317# Create jar file of plug classes (always created)
318
319$(PLUG_EXPORT_JARFILE): $(PLUG_TEMPDIR)/all.clist $(PLUG_TEMPDIR)/all.jargs
320 @$(prep-target)
321 @$(ECHO) "PLUG EXPORT: $(@F)"
322 @$(CAT) $(PLUG_TEMPDIR)/all.clist | $(SED) -e 's/^/PLUG EXPORT: /'
323 $(BOOT_JAR_CMD) cf $@ @$(PLUG_TEMPDIR)/all.jargs
324export-binary-plugs-jar: $(PLUG_EXPORT_JARFILE)
325
326# Export native libraries
327
328$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY): \
329 $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
330 $(export-binary-plug-file)
331
332# Export binary plug start/complete messages
333
334export-binary-plugs-started:
335 @$(ECHO) "BinaryPlugs export started: `date`"
336 @$(ECHO) "PLUG_EXPORT_DIR=$(PLUG_EXPORT_DIR)"
337 $(RM) -r $(PLUG_EXPORT_DIR)
338 @$(MKDIR) -p $(PLUG_EXPORT_DIR)
339 @$(MKDIR) -p $(PLUG_TEMPDIR)
340export-binary-plugs-completed:
341 @$(RM) -r $(PLUG_TEMPDIR)
342 @$(ECHO) "BinaryPlugs export completed: `date`"
343
344# Export lib files (only if they don't exist already)
345
346export-binary-plugs-libs: \
347 $(PLUG_LIBRARY_NAMES:%=$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/%)
348
349# Export everything
350
351export-binary-plugs: \
352 export-binary-plugs-started \
353 export-binary-plugs-libs \
354 export-binary-plugs-license \
355 export-binary-plugs-jar \
356 export-binary-plugs-completed
357
358# All these targets are phony (no filenames)
359
360.PHONY: export-binary-plugs-started \
361 export-binary-plugs-license \
362 export-binary-plugs-jar \
363 export-binary-plugs-libs \
364 export-binary-plugs-completed \
365 export-binary-plugs
366
367# Rules that test the export and import of plugs (only when you can export)
368
369TEST_OUTPUTDIR=$(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-testing-plugs
370TEST_PLUG_COPY=$(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)-testcopy
371
372# Run export-binary-plugs first, then use this rule to test an import
373
374test-binary-plugs: $(TEST_PLUG_COPY)
375 $(RM) -r $(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)
376 $(MKDIR) -p $(TEST_OUTPUTDIR)
377 @$(ECHO) "Testing import of plugs"
378 ($(CD) $(JDK_TOPDIR)/make && \
379 $(MAKE) OPENJDK=true \
380 ALT_OUTPUTDIR=$(TEST_OUTPUTDIR) \
381 ALT_JDK_IMPORT_PATH=$(JDK_IMPORT_PATH) \
382 ALT_BINARY_PLUGS_PATH=$(TEST_PLUG_COPY) \
383 import-binary-plugs )
384 $(RM) -r $(TEST_OUTPUTDIR)
385 @$(ECHO) "Testing of plugs was successful"
386
387$(TEST_PLUG_COPY):
388 @$(ECHO) "Creating test plug copy"
389 $(RM) -r $@
390 $(MKDIR) -p $(@D)
391 $(CP) -r -p $(PLUG_EXPORT_DIR) $@
392
393.PHONY: test-binary-plugs
394
395endif # !OPENJDK
396