|
1 # |
|
2 # Copyright (c) 2011, 2012, 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 default: all |
|
27 |
|
28 include $(SPEC) |
|
29 include MakeBase.gmk |
|
30 include NativeCompilation.gmk |
|
31 |
|
32 # Setup the java compilers for the JDK build. |
|
33 include Setup.gmk |
|
34 |
|
35 # Prepare the find cache. Only used on windows. |
|
36 $(eval $(call FillCacheFind, $(JDK_TOPDIR)/src/share/bin)) |
|
37 |
|
38 # Build tools |
|
39 include Tools.gmk |
|
40 |
|
41 BUILD_LAUNCHERS = |
|
42 |
|
43 # When building a legacy overlay image (on solaris 64 bit), the launchers |
|
44 # need to be built with a different rpath and a different output dir. |
|
45 ifeq ($(OVERLAY_IMAGES), true) |
|
46 ORIGIN_ROOT := /../.. |
|
47 OUTPUT_SUBDIR := $(OPENJDK_TARGET_CPU_ISADIR) |
|
48 else |
|
49 ORIGIN_ROOT := /.. |
|
50 endif |
|
51 |
|
52 ifeq ($(OPENJDK_TARGET_OS), macosx) |
|
53 ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN) |
|
54 else |
|
55 ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli) |
|
56 endif |
|
57 |
|
58 # |
|
59 # Applications expect to be able to link against libjawt without invoking |
|
60 # System.loadLibrary("jawt") first. This was the behaviour described in the |
|
61 # devloper documentation of JAWT and what worked with OpenJDK6. |
|
62 # |
|
63 ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), ) |
|
64 ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)) |
|
65 endif |
|
66 |
|
67 define SetupLauncher |
|
68 # TODO: Fix mapfile on solaris. Won't work with ld as linker. |
|
69 # Parameter 1 is the name of the launcher (java, javac, jar...) |
|
70 # Parameter 2 is extra CFLAGS |
|
71 # Parameter 3 is extra LDFLAGS |
|
72 # Parameter 4 is extra LDFLAGS_SUFFIX_posix |
|
73 # Parameter 5 is extra LDFLAGS_SUFFIX_windows |
|
74 # Parameter 6 is optional Windows JLI library (full path) |
|
75 # Parameter 7 is optional Windows resource (RC) flags |
|
76 # Parameter 8 is optional Windows version resource file (.rc) |
|
77 # Parameter 9 is different output dir |
|
78 # Parameter 10 if set, link statically with c runtime on windows. |
|
79 # Parameter 11 if set, override plist file on macosx. |
|
80 |
|
81 $1_WINDOWS_JLI_LIB := $(JDK_OUTPUTDIR)/objs/libjli/jli.lib |
|
82 ifneq ($6, ) |
|
83 $1_WINDOWS_JLI_LIB := $6 |
|
84 endif |
|
85 $1_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc |
|
86 ifneq ($8, ) |
|
87 $1_VERSION_INFO_RESOURCE := $8 |
|
88 endif |
|
89 |
|
90 $1_LDFLAGS := $3 |
|
91 $1_LDFLAGS_SUFFIX := |
|
92 ifeq ($(OPENJDK_TARGET_OS), macosx) |
|
93 $1_PLIST_FILE := Info-cmdline.plist |
|
94 ifneq ($(11), ) |
|
95 $1_PLIST_FILE := $(11) |
|
96 ifneq ($$(findstring privileged, $$($1_PLIST_FILE)), ) |
|
97 $1_CODESIGN := true |
|
98 endif |
|
99 endif |
|
100 |
|
101 $1_LDFLAGS += -Wl,-all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \ |
|
102 -framework Cocoa -framework Security -framework ApplicationServices \ |
|
103 -sectcreate __TEXT __info_plist $(JDK_TOPDIR)/src/macosx/lib/$$($1_PLIST_FILE) |
|
104 $1_LDFLAGS_SUFFIX += -pthread |
|
105 endif |
|
106 |
|
107 ifeq ($(USE_EXTERNAL_LIBZ), true) |
|
108 $1_LDFLAGS_SUFFIX += -lz |
|
109 endif |
|
110 |
|
111 $1_OUTPUT_DIR_ARG := $9 |
|
112 ifeq (, $$($1_OUTPUT_DIR_ARG)) |
|
113 $1_OUTPUT_DIR_ARG := $(JDK_OUTPUTDIR)/bin |
|
114 endif |
|
115 |
|
116 # TODO: maybe it's better to move this if-statement out of this function |
|
117 ifeq ($1, java) |
|
118 $1_OPTIMIZATION_ARG := HIGH |
|
119 $1_LDFLAGS_solaris := -R$(OPENWIN_HOME)/lib$(OPENJDK_TARGET_CPU_ISADIR) |
|
120 else |
|
121 $1_OPTIMIZATION_ARG := LOW |
|
122 endif |
|
123 |
|
124 $1_CFLAGS := $(CFLAGS_JDKEXE) |
|
125 ifeq ($(10), true) |
|
126 $1_CFLAGS := $(filter-out -MD, $(CFLAGS_JDKEXE)) |
|
127 endif |
|
128 |
|
129 ifneq ($(wildcard $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)), ) |
|
130 $1_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU) |
|
131 else |
|
132 $1_MAPFILE := |
|
133 endif |
|
134 |
|
135 $(call SetupNativeCompilation,BUILD_LAUNCHER_$1, \ |
|
136 SRC := $(JDK_TOPDIR)/src/share/bin, \ |
|
137 INCLUDE_FILES := main.c, \ |
|
138 LANG := C, \ |
|
139 OPTIMIZATION := $$($1_OPTIMIZATION_ARG), \ |
|
140 CFLAGS := $$($1_CFLAGS) \ |
|
141 -I$(JDK_TOPDIR)/src/share/bin \ |
|
142 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin \ |
|
143 -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS)/bin \ |
|
144 -DFULL_VERSION='"$(FULL_VERSION)"' \ |
|
145 -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \ |
|
146 -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \ |
|
147 -DLIBARCHNAME='"$(OPENJDK_TARGET_CPU_LEGACY)"' \ |
|
148 -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \ |
|
149 -DPROGNAME='"$1"' $(DPACKAGEPATH) \ |
|
150 $2, \ |
|
151 CFLAGS_linux := -fPIC, \ |
|
152 CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \ |
|
153 LDFLAGS := $(LDFLAGS_JDKEXE) \ |
|
154 $(ORIGIN_ARG) \ |
|
155 $$($1_LDFLAGS), \ |
|
156 LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_NAME,$1), \ |
|
157 LDFLAGS_linux := -lpthread \ |
|
158 $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ |
|
159 LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ |
|
160 $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ |
|
161 MAPFILE := $$($1_MAPFILE), \ |
|
162 LDFLAGS_SUFFIX := $(LDFLAGS_JDKEXE_SUFFIX) $$($1_LDFLAGS_SUFFIX), \ |
|
163 LDFLAGS_SUFFIX_posix := $4, \ |
|
164 LDFLAGS_SUFFIX_windows := $$($1_WINDOWS_JLI_LIB) \ |
|
165 $(JDK_OUTPUTDIR)/objs/libjava/java.lib advapi32.lib $5, \ |
|
166 LDFLAGS_SUFFIX_linux := -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli $(LIBDL) -lc, \ |
|
167 LDFLAGS_SUFFIX_solaris := -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -lthread $(LIBDL) -lc, \ |
|
168 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/$1_objs$(OUTPUT_SUBDIR), \ |
|
169 OUTPUT_DIR := $$($1_OUTPUT_DIR_ARG)$(OUTPUT_SUBDIR), \ |
|
170 PROGRAM := $1, \ |
|
171 DEBUG_SYMBOLS := true, \ |
|
172 VERSIONINFO_RESOURCE := $$($1_VERSION_INFO_RESOURCE), \ |
|
173 RC_FLAGS := $(RC_FLAGS) \ |
|
174 -D "JDK_FNAME=$1$(EXE_SUFFIX)" \ |
|
175 -D "JDK_INTERNAL_NAME=$1" \ |
|
176 -D "JDK_FTYPE=0x1L" \ |
|
177 $7, \ |
|
178 MANIFEST := $(JDK_TOPDIR)/src/windows/resource/java.manifest, \ |
|
179 CODESIGN := $$($1_CODESIGN)) |
|
180 |
|
181 BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1) |
|
182 |
|
183 ifeq ($(OPENJDK_TARGET_OS), macosx) |
|
184 $$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjli_static.a |
|
185 endif |
|
186 |
|
187 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
188 $$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjava/java.lib \ |
|
189 $$($1_WINDOWS_JLI_LIB) |
|
190 endif |
|
191 endef |
|
192 |
|
193 ########################################################################################## |
|
194 |
|
195 XLIBS := $(X_LIBS) -lX11 |
|
196 ifeq ($(OPENJDK_TARGET_OS), macosx) |
|
197 DPACKAGEPATH := -DPACKAGE_PATH='"$(PACKAGE_PATH)"' |
|
198 XLIBS := |
|
199 endif |
|
200 |
|
201 ifdef OPENJDK |
|
202 JAVA_RC_FLAGS += -i "$(JDK_TOPDIR)/src/windows/resource/icons" |
|
203 else |
|
204 JAVA_RC_FLAGS += -i "$(JDK_TOPDIR)/src/closed/windows/native/sun/windows" |
|
205 endif |
|
206 |
|
207 # On windows, the debuginfo files get the same name as for java.dll. Build |
|
208 # into another dir and copy selectively so debuginfo for java.dll isn't |
|
209 # overwritten. |
|
210 $(eval $(call SetupLauncher,java, \ |
|
211 -DEXPAND_CLASSPATH_WILDCARDS,,,user32.lib comctl32.lib, \ |
|
212 $(JDK_OUTPUTDIR)/objs/jli_static.lib, $(JAVA_RC_FLAGS), \ |
|
213 $(JDK_TOPDIR)/src/windows/resource/java.rc, $(JDK_OUTPUTDIR)/objs/java_objs,true)) |
|
214 |
|
215 $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java$(EXE_SUFFIX): $(BUILD_LAUNCHER_java) |
|
216 $(MKDIR) -p $(@D) |
|
217 $(RM) $@ |
|
218 $(CP) $(JDK_OUTPUTDIR)/objs/java_objs$(OUTPUT_SUBDIR)/java$(EXE_SUFFIX) $@ |
|
219 |
|
220 BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java$(EXE_SUFFIX) |
|
221 |
|
222 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
223 $(eval $(call SetupLauncher,javaw, \ |
|
224 -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS,,,user32.lib comctl32.lib, \ |
|
225 $(JDK_OUTPUTDIR)/objs/jli_static.lib, $(JAVA_RC_FLAGS), \ |
|
226 $(JDK_TOPDIR)/src/windows/resource/java.rc,,true)) |
|
227 endif |
|
228 |
|
229 |
|
230 ifndef BUILD_HEADLESS_ONLY |
|
231 $(eval $(call SetupLauncher,appletviewer, \ |
|
232 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.applet.Main"$(COMMA) }',, \ |
|
233 $(XLIBS))) |
|
234 endif |
|
235 |
|
236 $(eval $(call SetupLauncher,extcheck, \ |
|
237 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.extcheck.Main"$(COMMA) }')) |
|
238 |
|
239 $(eval $(call SetupLauncher,idlj, \ |
|
240 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.corba.se.idl.toJavaPortable.Compile"$(COMMA) }')) |
|
241 |
|
242 $(eval $(call SetupLauncher,jar, \ |
|
243 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jar.Main"$(COMMA) }')) |
|
244 |
|
245 $(eval $(call SetupLauncher,jarsigner, \ |
|
246 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.jarsigner.Main"$(COMMA) }')) |
|
247 |
|
248 $(eval $(call SetupLauncher,javac, \ |
|
249 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
250 -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ |
|
251 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javac.Main"$(COMMA) }')) |
|
252 |
|
253 ifeq ($(ENABLE_SJAVAC), yes) |
|
254 $(eval $(call SetupLauncher,sjavac, \ |
|
255 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
256 -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ |
|
257 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.sjavac.Main"$(COMMA) }')) |
|
258 endif |
|
259 |
|
260 $(eval $(call SetupLauncher,javadoc, \ |
|
261 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
262 -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ |
|
263 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javadoc.Main"$(COMMA) }')) |
|
264 |
|
265 $(eval $(call SetupLauncher,javah, \ |
|
266 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
267 -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ |
|
268 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javah.Main"$(COMMA) }')) |
|
269 |
|
270 $(eval $(call SetupLauncher,javap, \ |
|
271 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
272 -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ |
|
273 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javap.Main"$(COMMA) }')) |
|
274 |
|
275 $(eval $(call SetupLauncher,jdeps, \ |
|
276 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
277 -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ |
|
278 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.jdeps.Main"$(COMMA) }')) |
|
279 |
|
280 BUILD_LAUNCHER_jconsole_CFLAGS_windows := -DJAVAW |
|
281 BUILD_LAUNCHER_jconsole_LDFLAGS_windows := user32.lib |
|
282 |
|
283 $(eval $(call SetupLauncher,jconsole, \ |
|
284 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "-J-Djconsole.showOutputViewer"$(COMMA) "sun.tools.jconsole.JConsole"$(COMMA) }' \ |
|
285 -DAPP_CLASSPATH='{ "/lib/jconsole.jar"$(COMMA) "/lib/tools.jar"$(COMMA) "/classes" }')) |
|
286 |
|
287 $(eval $(call SetupLauncher,jdb, \ |
|
288 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.example.debug.tty.TTY"$(COMMA) }' \ |
|
289 -DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }')) |
|
290 |
|
291 $(eval $(call SetupLauncher,jhat, \ |
|
292 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.hat.Main"$(COMMA) }')) |
|
293 |
|
294 $(eval $(call SetupLauncher,jinfo, \ |
|
295 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \ |
|
296 "-J-Dsun.jvm.hotspot.debugger.useProcDebugger"$(COMMA) \ |
|
297 "-J-Dsun.jvm.hotspot.debugger.useWindbgDebugger"$(COMMA) \ |
|
298 "sun.tools.jinfo.JInfo"$(COMMA) }' \ |
|
299 -DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }' \ |
|
300 ,,,,,,,,,Info-privileged.plist)) |
|
301 |
|
302 $(eval $(call SetupLauncher,jmap, \ |
|
303 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \ |
|
304 "-J-Dsun.jvm.hotspot.debugger.useProcDebugger"$(COMMA) \ |
|
305 "-J-Dsun.jvm.hotspot.debugger.useWindbgDebugger"$(COMMA) \ |
|
306 "sun.tools.jmap.JMap"$(COMMA) }' \ |
|
307 -DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }' \ |
|
308 ,,,,,,,,,Info-privileged.plist)) |
|
309 |
|
310 $(eval $(call SetupLauncher,jps, \ |
|
311 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jps.Jps"$(COMMA) }')) |
|
312 |
|
313 $(eval $(call SetupLauncher,jrunscript, \ |
|
314 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.script.shell.Main"$(COMMA) }')) |
|
315 |
|
316 $(eval $(call SetupLauncher,jjs, \ |
|
317 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "jdk.nashorn.tools.Shell"$(COMMA) }')) |
|
318 |
|
319 $(eval $(call SetupLauncher,jsadebugd, \ |
|
320 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.jvm.hotspot.jdi.SADebugServer"$(COMMA) }' \ |
|
321 -DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }' \ |
|
322 ,,,,,,,,,Info-privileged.plist)) |
|
323 |
|
324 $(eval $(call SetupLauncher,jstack, \ |
|
325 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \ |
|
326 "-J-Dsun.jvm.hotspot.debugger.useProcDebugger"$(COMMA) \ |
|
327 "-J-Dsun.jvm.hotspot.debugger.useWindbgDebugger"$(COMMA) \ |
|
328 "sun.tools.jstack.JStack"$(COMMA) }' \ |
|
329 -DAPP_CLASSPATH='{ "/lib/tools.jar"$(COMMA) "/lib/sa-jdi.jar"$(COMMA) "/classes" }' \ |
|
330 ,,,,,,,,,Info-privileged.plist)) |
|
331 |
|
332 $(eval $(call SetupLauncher,jstat, \ |
|
333 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jstat.Jstat"$(COMMA) }')) |
|
334 |
|
335 $(eval $(call SetupLauncher,jstatd, \ |
|
336 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jstatd.Jstatd"$(COMMA) }')) |
|
337 |
|
338 $(eval $(call SetupLauncher,keytool, \ |
|
339 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.keytool.Main"$(COMMA) }')) |
|
340 |
|
341 $(eval $(call SetupLauncher,native2ascii, \ |
|
342 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.native2ascii.Main"$(COMMA) }')) |
|
343 |
|
344 ifndef BUILD_HEADLESS_ONLY |
|
345 $(eval $(call SetupLauncher,policytool, \ |
|
346 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.policytool.PolicyTool"$(COMMA) }',, \ |
|
347 $(XLIBS))) |
|
348 endif |
|
349 |
|
350 $(eval $(call SetupLauncher,rmic, \ |
|
351 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
352 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.rmi.rmic.Main"$(COMMA) }')) |
|
353 |
|
354 $(eval $(call SetupLauncher,schemagen, \ |
|
355 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.jxc.SchemaGenerator"$(COMMA) }')) |
|
356 |
|
357 $(eval $(call SetupLauncher,serialver, \ |
|
358 -DEXPAND_CLASSPATH_WILDCARDS \ |
|
359 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.serialver.SerialVer"$(COMMA) }')) |
|
360 |
|
361 $(eval $(call SetupLauncher,xjc, \ |
|
362 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.xjc.Driver"$(COMMA) }')) |
|
363 |
|
364 $(eval $(call SetupLauncher,wsgen, \ |
|
365 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.ws.WsGen"$(COMMA) }')) |
|
366 |
|
367 $(eval $(call SetupLauncher,wsimport, \ |
|
368 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.internal.ws.WsImport"$(COMMA) }')) |
|
369 |
|
370 $(eval $(call SetupLauncher,orbd, \ |
|
371 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \ |
|
372 "-J-Dcom.sun.CORBA.activation.DbDir=./orb.db"$(COMMA) \ |
|
373 "-J-Dcom.sun.CORBA.activation.Port=1049"$(COMMA) \ |
|
374 "-J-Dcom.sun.CORBA.POA.ORBServerId=1"$(COMMA) \ |
|
375 "com.sun.corba.se.impl.activation.ORBD"$(COMMA) }')) |
|
376 |
|
377 $(eval $(call SetupLauncher,servertool, \ |
|
378 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.corba.se.impl.activation.ServerTool"$(COMMA) }')) |
|
379 |
|
380 $(eval $(call SetupLauncher,tnameserv, \ |
|
381 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) \ |
|
382 "-J-Dcom.sun.CORBA.activation.DbDir=./orb.db"$(COMMA) \ |
|
383 "-J-Djava.util.logging.LoggingPermission=contol"$(COMMA) \ |
|
384 "-J-Dcom.sun.CORBA.POA.ORBServerId=1"$(COMMA) \ |
|
385 "com.sun.corba.se.impl.naming.cosnaming.TransientNameServer"$(COMMA) }')) |
|
386 |
|
387 $(eval $(call SetupLauncher,pack200, \ |
|
388 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.java.util.jar.pack.Driver"$(COMMA) "--pack" }')) |
|
389 |
|
390 $(eval $(call SetupLauncher,rmid, \ |
|
391 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.rmi.server.Activation"$(COMMA) }')) |
|
392 |
|
393 $(eval $(call SetupLauncher,rmiregistry, \ |
|
394 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.rmi.registry.RegistryImpl"$(COMMA) }')) |
|
395 |
|
396 $(eval $(call SetupLauncher,jcmd, \ |
|
397 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.jcmd.JCmd"$(COMMA) }')) |
|
398 |
|
399 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
400 $(eval $(call SetupLauncher,kinit, \ |
|
401 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Kinit"$(COMMA) }')) |
|
402 |
|
403 $(eval $(call SetupLauncher,klist, \ |
|
404 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Klist"$(COMMA) }')) |
|
405 |
|
406 $(eval $(call SetupLauncher,ktab, \ |
|
407 -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.krb5.internal.tools.Ktab"$(COMMA) }')) |
|
408 endif |
|
409 |
|
410 ########################################################################################## |
|
411 # The order of the object files on the link command line affects the size of the resulting |
|
412 # binary (at least on linux) which causes the size to differ between old and new build. |
|
413 ifeq ($(USE_EXTERNAL_LIBZ), true) |
|
414 UNPACKEXE_CFLAGS := -DSYSTEM_ZLIB |
|
415 UNPACKEXE_ZIPOBJS := -lz |
|
416 else |
|
417 UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib-1.2.5 |
|
418 UNPACKEXE_ZIPOBJS := $(JDK_OUTPUTDIR)/objs/libzip/zcrc32$(OBJ_SUFFIX) \ |
|
419 $(JDK_OUTPUTDIR)/objs/libzip/deflate$(OBJ_SUFFIX) \ |
|
420 $(JDK_OUTPUTDIR)/objs/libzip/trees$(OBJ_SUFFIX) \ |
|
421 $(JDK_OUTPUTDIR)/objs/libzip/zadler32$(OBJ_SUFFIX) \ |
|
422 $(JDK_OUTPUTDIR)/objs/libzip/compress$(OBJ_SUFFIX) \ |
|
423 $(JDK_OUTPUTDIR)/objs/libzip/zutil$(OBJ_SUFFIX) \ |
|
424 $(JDK_OUTPUTDIR)/objs/libzip/inflate$(OBJ_SUFFIX) \ |
|
425 $(JDK_OUTPUTDIR)/objs/libzip/infback$(OBJ_SUFFIX) \ |
|
426 $(JDK_OUTPUTDIR)/objs/libzip/inftrees$(OBJ_SUFFIX) \ |
|
427 $(JDK_OUTPUTDIR)/objs/libzip/inffast$(OBJ_SUFFIX) |
|
428 |
|
429 endif |
|
430 |
|
431 ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc) |
|
432 UNPACKEXE_CFLAGS += -xregs=no%appl |
|
433 UNPACKEXE_LDFLAGS_solaris += -xmemalign=4s |
|
434 endif |
|
435 |
|
436 UNPACKEXE_LANG := C |
|
437 ifeq ($(OPENJDK_TARGET_OS), solaris) |
|
438 UNPACKEXE_LANG := C++ |
|
439 endif |
|
440 # On windows, unpack200 is linked completely differently to all other |
|
441 # executables, using the compiler with the compiler arguments. |
|
442 # It's also linked incrementally, producing a .ilk file that needs to |
|
443 # be kept away. |
|
444 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
445 BUILD_UNPACKEXE_LDEXE := $(CC) |
|
446 EXE_OUT_OPTION_save := $(EXE_OUT_OPTION) |
|
447 EXE_OUT_OPTION := -Fe |
|
448 endif |
|
449 $(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE, \ |
|
450 SRC := $(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack, \ |
|
451 EXCLUDE_FILES := jni.cpp, \ |
|
452 LANG := $(UNPACKEXE_LANG), \ |
|
453 OPTIMIZATION := LOW, \ |
|
454 CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) \ |
|
455 -DFULL, \ |
|
456 CFLAGS_release := -DPRODUCT, \ |
|
457 CFLAGS_linux := -fPIC, \ |
|
458 CFLAGS_solaris := -KPIC, \ |
|
459 CFLAGS_macosx := -fPIC, \ |
|
460 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers-unpack200, \ |
|
461 LDFLAGS := $(UNPACKEXE_ZIPOBJS), \ |
|
462 LDFLAGS_windows := $(CXXFLAGS_JDKEXE), \ |
|
463 LDFLAGS_posix := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \ |
|
464 $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \ |
|
465 $(call SET_SHARED_LIBRARY_ORIGIN), \ |
|
466 LDFLAGS_linux := -lc, \ |
|
467 LDFLAGS_solaris := $(UNPACKEXE_LDFLAGS_solaris) -lc, \ |
|
468 LDFLAGS_SUFFIX := $(LIBCXX), \ |
|
469 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/unpackexe$(OUTPUT_SUBDIR), \ |
|
470 OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/unpackexe$(OUTPUT_SUBDIR), \ |
|
471 PROGRAM := unpack200, \ |
|
472 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ |
|
473 RC_FLAGS := $(RC_FLAGS) \ |
|
474 -D "JDK_FNAME=unpack200.exe" \ |
|
475 -D "JDK_INTERNAL_NAME=unpack200" \ |
|
476 -D "JDK_FTYPE=0x1L", \ |
|
477 DEBUG_SYMBOLS := true, \ |
|
478 MANIFEST := $(JDK_TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest)) |
|
479 |
|
480 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
481 EXE_OUT_OPTION := $(EXE_OUT_OPTION_save) |
|
482 endif |
|
483 |
|
484 ifneq ($(USE_EXTERNAL_LIBZ), true) |
|
485 |
|
486 $(BUILD_UNPACKEXE): $(UNPACKEXE_ZIPOBJS) |
|
487 |
|
488 endif |
|
489 |
|
490 # Build into object dir and copy executable afterwards to avoid .ilk file in |
|
491 # image. The real fix would be clean up linking of unpack200 using |
|
492 # -link -incremental:no |
|
493 # like all other launchers. |
|
494 $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/unpack200$(EXE_SUFFIX): $(BUILD_UNPACKEXE) |
|
495 $(call install-file) |
|
496 |
|
497 BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/unpack200$(EXE_SUFFIX) |
|
498 |
|
499 ########################################################################################## |
|
500 |
|
501 |
|
502 BUILD_JEXEC := |
|
503 BUILD_JEXEC_SRC := |
|
504 BUILD_JEXEC_INC := |
|
505 BUILD_JEXEC_DST_DIR := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR) |
|
506 |
|
507 # |
|
508 # UNHANDLED: |
|
509 # - COMPILE_APPROACH = normal |
|
510 # |
|
511 |
|
512 # |
|
513 # jdk/make/java/Makefile |
|
514 # |
|
515 ifeq ($(OPENJDK_TARGET_OS), solaris) |
|
516 ifeq ($(OPENJDK_TARGET_CPU_BITS), 32) |
|
517 BUILD_JEXEC := 1 |
|
518 endif |
|
519 endif |
|
520 |
|
521 ifeq ($(OPENJDK_TARGET_OS), linux) |
|
522 BUILD_JEXEC := 1 |
|
523 endif # OPENJDK_TARGET_OS |
|
524 |
|
525 # |
|
526 # jdk/make/java/jexec/Makefile |
|
527 # |
|
528 ifeq ($(BUILD_JEXEC), 1) |
|
529 |
|
530 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
531 else ifeq ($(OPENJDK_TARGET_OS), macosx) |
|
532 BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/macosx/bin |
|
533 else |
|
534 BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/solaris/bin |
|
535 endif |
|
536 |
|
537 ifeq ($(OPENJDK_TARGET_OS), linux) |
|
538 BUILD_JEXEC_DST_DIR := $(JDK_OUTPUTDIR)/lib |
|
539 BUILD_JEXEC_INC += -I$(JDK_TOPDIR)/src/share/bin |
|
540 endif |
|
541 endif |
|
542 |
|
543 # |
|
544 # Note that the two Makefile's seems to contradict each other, |
|
545 # and that src/macosx/bin/jexec.c seems unused |
|
546 # |
|
547 ifneq ($(BUILD_JEXEC_SRC), ) |
|
548 $(eval $(call SetupNativeCompilation,BUILD_JEXEC, \ |
|
549 SRC := $(BUILD_JEXEC_SRC), \ |
|
550 INCLUDE_FILES := jexec.c, \ |
|
551 LANG := C, \ |
|
552 OPTIMIZATION := LOW, \ |
|
553 CFLAGS := $(CFLAGS_JDKEXE) \ |
|
554 $(BUILD_JEXEC_INC), \ |
|
555 CFLAGS_linux := -fPIC, \ |
|
556 CFLAGS_solaris := -KPIC, \ |
|
557 LDFLAGS := $(LDFLAGS_JDKEXE) \ |
|
558 $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ |
|
559 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jexec_obj, \ |
|
560 OUTPUT_DIR := $(BUILD_JEXEC_DST_DIR), \ |
|
561 DEBUG_SYMBOLS := true, \ |
|
562 PROGRAM := jexec)) |
|
563 |
|
564 BUILD_LAUNCHERS += $(BUILD_JEXEC) |
|
565 endif |
|
566 |
|
567 ########################################################################################## |
|
568 |
|
569 # |
|
570 # The java-rmi.cgi script in bin/ only gets delivered in certain situations |
|
571 # |
|
572 JAVA_RMI_CGI := $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java-rmi.cgi |
|
573 ifeq ($(OPENJDK_TARGET_OS), linux) |
|
574 BUILD_LAUNCHERS += $(JAVA_RMI_CGI) |
|
575 endif |
|
576 ifeq ($(OPENJDK_TARGET_OS), solaris) |
|
577 BUILD_LAUNCHERS += $(JAVA_RMI_CGI) |
|
578 endif |
|
579 |
|
580 # TODO: |
|
581 # On windows java-rmi.cgi shouldn't be bundled since Java 1.2, but has been built all |
|
582 # this time anyway. Since jdk6, it has been built from the wrong source and resulted |
|
583 # in a (almost) copy of the standard java launcher named "java-rmi.exe" ending up in |
|
584 # the final images bin dir. This weird behavior is mimicked here in the converted |
|
585 # makefiles for now. Should probably just be deleted. |
|
586 # http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6512052 |
|
587 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
588 $(eval $(call SetupLauncher,java-rmi, , \ |
|
589 $(call SET_SHARED_LIBRARY_MAPFILE,$(JDK_TOPDIR)/make/java/main/java/mapfile-$(OPENJDK_TARGET_CPU)))) |
|
590 else |
|
591 $(JAVA_RMI_CGI): $(JDK_TOPDIR)/src/solaris/bin/java-rmi.cgi.sh |
|
592 $(call install-file) |
|
593 $(CHMOD) a+x $@ |
|
594 endif |
|
595 |
|
596 ########################################################################################## |
|
597 |
|
598 BUILD_JSPAWNHELPER := |
|
599 BUILD_JSPAWNHELPER_SRC := $(JDK_TOPDIR)/src/solaris/native/java/lang |
|
600 BUILD_JSPAWNHELPER_DST_DIR := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR) |
|
601 LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o |
|
602 LINK_JSPAWNHELPER_FLAGS := |
|
603 |
|
604 ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris), ) |
|
605 BUILD_JSPAWNHELPER := 1 |
|
606 endif |
|
607 |
|
608 ifeq ($(OPENJDK_TARGET_OS), macosx) |
|
609 BUILD_JSPAWNHELPER_DST_DIR := $(JDK_OUTPUTDIR)/lib |
|
610 endif |
|
611 |
|
612 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) |
|
613 LINK_JSPAWNHELPER_FLAGS += -m64 |
|
614 endif |
|
615 |
|
616 ifeq ($(BUILD_JSPAWNHELPER), 1) |
|
617 $(eval $(call SetupNativeCompilation,BUILD_JSPAWNHELPER, \ |
|
618 SRC := $(BUILD_JSPAWNHELPER_SRC), \ |
|
619 INCLUDE_FILES := jspawnhelper.c, \ |
|
620 LANG := C, \ |
|
621 OPTIMIZATION := LOW, \ |
|
622 CFLAGS := $(CFLAGS_JDKEXE), \ |
|
623 LDFLAGS := $(LDFLAGS_JDKEXE) $(LINK_JSPAWNHELPER_FLAGS), \ |
|
624 LDFLAGS_SUFFIX := $(LINK_JSPAWNHELPER_OBJECTS), \ |
|
625 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jspawnhelper, \ |
|
626 OUTPUT_DIR := $(BUILD_JSPAWNHELPER_DST_DIR), \ |
|
627 PROGRAM := jspawnhelper)) |
|
628 |
|
629 $(BUILD_JSPAWNHELPER): $(LINK_JSPAWNHELPER_OBJECTS) |
|
630 |
|
631 BUILD_LAUNCHERS += $(BUILD_JSPAWNHELPER) |
|
632 endif |
|
633 |
|
634 ########################################################################################## |
|
635 # jabswitch |
|
636 |
|
637 ifndef OPENJDK |
|
638 ifeq ($(OPENJDK_TARGET_OS), windows) |
|
639 |
|
640 $(eval $(call SetupNativeCompilation,BUILD_JABSWITCH, \ |
|
641 SRC := $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge, \ |
|
642 INCLUDE_FILES := jabswitch.cpp, \ |
|
643 LANG := C++, \ |
|
644 CFLAGS := $(filter-out -Zc:wchar_t-, $(CFLAGS_JDKEXE)) -Zc:wchar_t \ |
|
645 -analyze- -Od -Gd -D_WINDOWS \ |
|
646 -D_UNICODE -DUNICODE -RTC1 -EHsc, \ |
|
647 LDFLAGS := $(LDFLAGS_JDKEXE) \ |
|
648 Advapi32.lib Version.lib User32.lib, \ |
|
649 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jabswitch, \ |
|
650 OUTPUT_DIR := $(JDK_OUTPUTDIR)/bin, \ |
|
651 PROGRAM := jabswitch, \ |
|
652 DEBUG_SYMBOLS := true, \ |
|
653 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/AccessBridgeStatusWindow.rc, \ |
|
654 RC_FLAGS := $(RC_FLAGS), \ |
|
655 MANIFEST := $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/jabswitch.manifest)) |
|
656 |
|
657 BUILD_LAUNCHERS += $(BUILD_JABSWITCH) |
|
658 |
|
659 endif |
|
660 endif |
|
661 |
|
662 ########################################################################################## |
|
663 |
|
664 $(BUILD_LAUNCHERS): $(JDK_TOPDIR)/make/CompileLaunchers.gmk |
|
665 |
|
666 all: $(BUILD_LAUNCHERS) |
|
667 |
|
668 .PHONY: all |