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