1 # |
|
2 # Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. |
|
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 # |
|
5 # This code is free software; you can redistribute it and/or modify it |
|
6 # under the terms of the GNU General Public License version 2 only, as |
|
7 # published by the Free Software Foundation. Oracle designates this |
|
8 # particular file as subject to the "Classpath" exception as provided |
|
9 # by Oracle in the LICENSE file that accompanied this code. |
|
10 # |
|
11 # This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 # version 2 for more details (a copy is included in the LICENSE file that |
|
15 # accompanied this code). |
|
16 # |
|
17 # You should have received a copy of the GNU General Public License version |
|
18 # 2 along with this work; if not, write to the Free Software Foundation, |
|
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 # |
|
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
22 # or visit www.oracle.com if you need additional information or have any |
|
23 # questions. |
|
24 # |
|
25 |
|
26 ######################################################################## |
|
27 |
|
28 # Definitions for openjdk plugs (used by both import and export) |
|
29 |
|
30 # Names of native shared libraries |
|
31 |
|
32 PLUG_LIBRARY_NAMES= |
|
33 |
|
34 # Sub-directory where native shared libraries are located (e.g. jre/bin or...) |
|
35 |
|
36 PLUG_LOCATION_SUBDIR=$(ARCH_VM_SUBDIR) |
|
37 |
|
38 # Explicit classfile lists |
|
39 |
|
40 # WARNING: These classlists will not work with pattern rules, only used in |
|
41 # shell commands. |
|
42 # The \$$ patterns will fail in pattern rules, which want $$, |
|
43 # but the $$ fails in shell commands. |
|
44 # The shell commands are more important. |
|
45 # Also, the $1 pattern in these names causes problems with the |
|
46 # GNU make define feature, so you can't use these in define's. |
|
47 |
|
48 PLUG_JMF_CLASS_NAMES = \ |
|
49 com/sun/jmx/snmp/SnmpDataTypeEnums.class \ |
|
50 com/sun/jmx/snmp/SnmpDefinitions.class \ |
|
51 com/sun/jmx/snmp/SnmpOid.class \ |
|
52 com/sun/jmx/snmp/SnmpOidDatabase.class \ |
|
53 com/sun/jmx/snmp/SnmpOidDatabaseSupport.class \ |
|
54 com/sun/jmx/snmp/SnmpOidRecord.class \ |
|
55 com/sun/jmx/snmp/SnmpOidTable.class \ |
|
56 com/sun/jmx/snmp/SnmpOidTableSupport.class \ |
|
57 com/sun/jmx/snmp/SnmpParameters.class \ |
|
58 com/sun/jmx/snmp/SnmpPduPacket.class \ |
|
59 com/sun/jmx/snmp/SnmpPeer.class \ |
|
60 com/sun/jmx/snmp/SnmpTimeticks.class \ |
|
61 com/sun/jmx/snmp/SnmpVarBind.class \ |
|
62 com/sun/jmx/snmp/SnmpVarBindList.class \ |
|
63 com/sun/jmx/snmp/Timestamp.class \ |
|
64 com/sun/jmx/snmp/daemon/SendQ.class \ |
|
65 com/sun/jmx/snmp/daemon/SnmpInformRequest.class \ |
|
66 com/sun/jmx/snmp/daemon/SnmpQManager.class \ |
|
67 com/sun/jmx/snmp/daemon/SnmpRequestCounter.class \ |
|
68 com/sun/jmx/snmp/daemon/SnmpResponseHandler.class \ |
|
69 com/sun/jmx/snmp/daemon/SnmpSendServer.class \ |
|
70 com/sun/jmx/snmp/daemon/SnmpSession.class \ |
|
71 com/sun/jmx/snmp/daemon/SnmpSocket.class \ |
|
72 com/sun/jmx/snmp/daemon/SnmpTimerServer.class \ |
|
73 com/sun/jmx/snmp/daemon/WaitQ.class |
|
74 |
|
75 # Class list temp files (used by both import and export of plugs) |
|
76 |
|
77 PLUG_TEMPDIR=$(ABS_TEMPDIR)/plugs |
|
78 PLUG_CLASS_AREAS = jmf |
|
79 PLUG_CLISTS = $(PLUG_CLASS_AREAS:%=$(PLUG_TEMPDIR)/%.clist) |
|
80 |
|
81 # Create jargs file command |
|
82 |
|
83 define plug-create-jargs |
|
84 @$(prep-target) |
|
85 $(SED) -e "s@^@-C $(CLASSDESTDIR) @" $< > $@ |
|
86 endef # plug-create-clist-jargs |
|
87 |
|
88 # Create clist (class name list) and jargs file (input to jar) |
|
89 # Need these files to avoid long command lines which fail on some systems. |
|
90 |
|
91 $(PLUG_TEMPDIR)/jmf.clist: |
|
92 @$(prep-target) |
|
93 @for i in $(PLUG_JMF_CLASS_NAMES) ; do \ |
|
94 $(ECHO) "$$i" >> $@; \ |
|
95 done |
|
96 $(PLUG_TEMPDIR)/all.clist: $(PLUG_CLISTS) |
|
97 @$(prep-target) |
|
98 $(CAT) $(PLUG_CLISTS) > $@ |
|
99 $(PLUG_TEMPDIR)/jmf.jargs: $(PLUG_TEMPDIR)/jmf.clist |
|
100 $(plug-create-jargs) |
|
101 $(PLUG_TEMPDIR)/all.jargs: $(PLUG_TEMPDIR)/all.clist |
|
102 $(plug-create-jargs) |
|
103 |
|
104 # |
|
105 # Specific to OPENJDK import of binary plugs |
|
106 # |
|
107 |
|
108 ifdef OPENJDK |
|
109 |
|
110 # Import |
|
111 |
|
112 PLUG_IMPORT_DIR=$(BINARY_PLUGS_PATH) |
|
113 PLUG_IMPORT_JARFILE=$(BINARY_PLUGS_JARFILE) |
|
114 |
|
115 # Import file command |
|
116 |
|
117 define import-binary-plug-file |
|
118 @$(ECHO) "PLUG IMPORT: $(@F)" |
|
119 $(install-non-module-file) |
|
120 endef # import-binary-plug-file |
|
121 |
|
122 # Import classes command |
|
123 |
|
124 define import-binary-plug-classes |
|
125 @$(MKDIR) -p $(CLASSDESTDIR) |
|
126 @$(CAT) $1 | $(SED) -e 's/^/PLUG IMPORT: /' |
|
127 ($(CD) $(CLASSDESTDIR) && $(BOOT_JAR_CMD) xf $(PLUG_IMPORT_JARFILE) @$1 $(BOOT_JAR_JFLAGS) ) |
|
128 ($(CD) $(CLASSDESTDIR) && $(java-vm-cleanup) ) |
|
129 endef # import-binary-plug-classes |
|
130 |
|
131 # Import specific area classes (the classes are always created) |
|
132 |
|
133 import-binary-plug-jmf-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/jmf.clist |
|
134 $(call import-binary-plug-classes,$(PLUG_TEMPDIR)/jmf.clist) |
|
135 |
|
136 # Import all classes from the jar file |
|
137 |
|
138 import-binary-plug-jar: \ |
|
139 import-binary-plug-jmf-classes |
|
140 |
|
141 # Binary plug start/complete messages |
|
142 |
|
143 import-binary-plugs-started: |
|
144 @$(ECHO) "BinaryPlugs import started: `date`" |
|
145 @$(ECHO) "BINARY_PLUGS_PATH=$(BINARY_PLUGS_PATH)" |
|
146 import-binary-plugs-completed: |
|
147 @$(ECHO) "BinaryPlugs import completed: `date`" |
|
148 |
|
149 # Import lib files (only if they don't exist already) |
|
150 |
|
151 import-binary-plugs-libs: \ |
|
152 $(PLUG_LIBRARY_NAMES:%=$(LIB_LOCATION)/%) |
|
153 |
|
154 # Import everything |
|
155 |
|
156 import-binary-plugs: \ |
|
157 import-binary-plugs-started \ |
|
158 import-binary-plugs-libs \ |
|
159 import-binary-plug-jar \ |
|
160 import-binary-plugs-completed |
|
161 |
|
162 # All these targets are phony (no filenames) |
|
163 |
|
164 .PHONY: import-binary-plugs-started \ |
|
165 import-binary-plugs-completed \ |
|
166 import-binary-plugs-libs \ |
|
167 import-binary-plugs \ |
|
168 import-binary-plug-jar \ |
|
169 import-binary-plug-jmf-classes |
|
170 |
|
171 else # !OPENJDK |
|
172 |
|
173 # |
|
174 # Specific to exporting binary plugs for OPENJDK (e.g. OPENJDK is NOT defined) |
|
175 # |
|
176 |
|
177 # Export names (See make/common/Defs.gmk for BINARY_PLUGS_JARNAME definition) |
|
178 |
|
179 PLUG_EXPORT_DIRNAME=openjdk-binary-plugs-image |
|
180 PLUG_EXPORT_DIR=$(OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME) |
|
181 PLUG_EXPORT_JARFILE=$(PLUG_EXPORT_DIR)/jre/lib/$(BINARY_PLUGS_JARNAME) |
|
182 |
|
183 # Export file command |
|
184 |
|
185 define export-binary-plug-file |
|
186 @$(ECHO) "PLUG EXPORT: $(@F)" |
|
187 $(install-non-module-file) |
|
188 endef # export-binary-plug-file |
|
189 |
|
190 # OpenJDK Binary Plug License |
|
191 |
|
192 $(PLUG_EXPORT_DIR)/LICENSE: $(CLOSED_SHARE_SRC)/doc/openjdk/binary-plugs/LICENSE |
|
193 $(export-binary-plug-file) |
|
194 export-binary-plugs-license: $(PLUG_EXPORT_DIR)/LICENSE |
|
195 |
|
196 # Create jar file of plug classes (always created) |
|
197 |
|
198 $(PLUG_EXPORT_JARFILE): $(PLUG_TEMPDIR)/all.clist $(PLUG_TEMPDIR)/all.jargs |
|
199 @$(prep-target) |
|
200 @$(ECHO) "PLUG EXPORT: $(@F)" |
|
201 @$(CAT) $(PLUG_TEMPDIR)/all.clist | $(SED) -e 's/^/PLUG EXPORT: /' |
|
202 $(BOOT_JAR_CMD) cf $@ @$(PLUG_TEMPDIR)/all.jargs $(BOOT_JAR_JFLAGS) |
|
203 @$(java-vm-cleanup) |
|
204 export-binary-plugs-jar: $(PLUG_EXPORT_JARFILE) |
|
205 |
|
206 # Export binary plug start/complete messages |
|
207 |
|
208 export-binary-plugs-started: |
|
209 @$(ECHO) "BinaryPlugs export started: `date`" |
|
210 @$(ECHO) "PLUG_EXPORT_DIR=$(PLUG_EXPORT_DIR)" |
|
211 $(RM) -r $(PLUG_EXPORT_DIR) |
|
212 @$(MKDIR) -p $(PLUG_EXPORT_DIR) |
|
213 @$(MKDIR) -p $(PLUG_TEMPDIR) |
|
214 export-binary-plugs-completed: |
|
215 @$(RM) -r $(PLUG_TEMPDIR) |
|
216 @$(ECHO) "BinaryPlugs export completed: `date`" |
|
217 |
|
218 # Export lib files (only if they don't exist already) |
|
219 |
|
220 export-binary-plugs-libs: \ |
|
221 $(PLUG_LIBRARY_NAMES:%=$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/%) |
|
222 |
|
223 # Export everything |
|
224 |
|
225 export-binary-plugs: \ |
|
226 export-binary-plugs-started \ |
|
227 export-binary-plugs-libs \ |
|
228 export-binary-plugs-license \ |
|
229 export-binary-plugs-jar \ |
|
230 export-binary-plugs-completed |
|
231 |
|
232 # All these targets are phony (no filenames) |
|
233 |
|
234 .PHONY: export-binary-plugs-started \ |
|
235 export-binary-plugs-license \ |
|
236 export-binary-plugs-jar \ |
|
237 export-binary-plugs-libs \ |
|
238 export-binary-plugs-completed \ |
|
239 export-binary-plugs |
|
240 |
|
241 # Rules that test the export and import of plugs (only when you can export) |
|
242 |
|
243 TEST_OUTPUTDIR=$(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-testing-plugs |
|
244 TEST_PLUG_COPY=$(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME)-testcopy |
|
245 |
|
246 # Run export-binary-plugs first, then use this rule to test an import |
|
247 |
|
248 test-binary-plugs: $(TEST_PLUG_COPY) |
|
249 $(RM) -r $(TEST_OUTPUTDIR)/$(PLUG_EXPORT_DIRNAME) |
|
250 $(MKDIR) -p $(TEST_OUTPUTDIR) |
|
251 @$(ECHO) "Testing import of plugs" |
|
252 ($(CD) $(JDK_TOPDIR)/make && \ |
|
253 $(MAKE) OPENJDK=true \ |
|
254 ALT_OUTPUTDIR=$(TEST_OUTPUTDIR) \ |
|
255 ALT_JDK_IMPORT_PATH=$(JDK_IMPORT_PATH) \ |
|
256 ALT_BINARY_PLUGS_PATH=$(TEST_PLUG_COPY) \ |
|
257 import-binary-plugs ) |
|
258 $(RM) -r $(TEST_OUTPUTDIR) |
|
259 @$(ECHO) "Testing of plugs was successful" |
|
260 |
|
261 $(TEST_PLUG_COPY): |
|
262 @$(ECHO) "Creating test plug copy" |
|
263 $(RM) -r $@ |
|
264 $(MKDIR) -p $(@D) |
|
265 $(CP) -r -p $(PLUG_EXPORT_DIR) $@ |
|
266 |
|
267 .PHONY: test-binary-plugs |
|
268 |
|
269 endif # !OPENJDK |
|
270 |
|