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