jdk/make/CompileLaunchers.gmk
changeset 21805 c7d7946239de
parent 21606 1984e107a4b3
child 21820 701e0b95a267
equal deleted inserted replaced
21804:07b686da11c4 21805:c7d7946239de
       
     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