1 #
   2 # Copyright (c) 2005, 2010, 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.
   8 #
   9 # This code is distributed in the hope that it will be useful, but WITHOUT
  10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 # version 2 for more details (a copy is included in the LICENSE file that
  13 # accompanied this code).
  14 #
  15 # You should have received a copy of the GNU General Public License version
  16 # 2 along with this work; if not, write to the Free Software Foundation,
  17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 #
  19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 # or visit www.oracle.com if you need additional information or have any
  21 # questions.
  22 #  
  23 #
  24 
  25 # Rules to build gamma launcher, used by vm.make
  26 
  27 # gamma[_g]: launcher
  28 LAUNCHER   = gamma
  29 LAUNCHER_G = $(LAUNCHER)$(G_SUFFIX)
  30 
  31 LAUNCHERDIR   = $(GAMMADIR)/src/os/$(Platform_os_family)/launcher
  32 LAUNCHERFLAGS = $(ARCHFLAG) \
  33                 -I$(LAUNCHERDIR) -I$(GAMMADIR)/src/share/vm/prims \
  34                 -DFULL_VERSION=\"$(HOTSPOT_RELEASE_VERSION)\" \
  35                 -DARCH=\"$(LIBARCH)\" \
  36                 -DGAMMA \
  37                 -DLAUNCHER_TYPE=\"gamma\" \
  38                 -DLINK_INTO_$(LINK_INTO)
  39 
  40 ifeq ($(LINK_INTO),AOUT)
  41   LAUNCHER.o                 = launcher.o $(JVM_OBJ_FILES)
  42   LAUNCHER_MAPFILE           = mapfile_reorder
  43   LFLAGS_LAUNCHER$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LAUNCHER_MAPFILE))
  44   LIBS_LAUNCHER             += $(LIBS)
  45 else
  46   LAUNCHER.o                 = launcher.o
  47   LFLAGS_LAUNCHER           += -L `pwd`
  48   LIBS_LAUNCHER             += -l$(JVM) $(LIBS)
  49 endif
  50 
  51 LINK_LAUNCHER = $(LINK.CC)
  52 
  53 LINK_LAUNCHER/PRE_HOOK  = $(LINK_LIB.CC/PRE_HOOK)
  54 LINK_LAUNCHER/POST_HOOK = $(LINK_LIB.CC/POST_HOOK)
  55 
  56 ifeq ("${Platform_compiler}", "sparcWorks")
  57 # Enable the following LAUNCHERFLAGS addition if you need to compare the
  58 # built ELF objects.
  59 #
  60 # The -g option makes static data global and the "-W0,-noglobal"
  61 # option tells the compiler to not globalize static data using a unique
  62 # globalization prefix. Instead force the use of a static globalization
  63 # prefix based on the source filepath so the objects from two identical
  64 # compilations are the same.
  65 #
  66 # Note: The blog says to use "-W0,-xglobalstatic", but that doesn't
  67 #       seem to work. I got "-W0,-noglobal" from Kelly and that works.
  68 #LAUNCHERFLAGS += -W0,-noglobal
  69 endif # Platform_compiler == sparcWorks
  70 
  71 # Used for platform dispatching
  72 LAUNCHER_TARGET_DEFINES  = -DTARGET_OS_FAMILY_$(Platform_os_family)
  73 LAUNCHER_TARGET_DEFINES += -DTARGET_ARCH_$(Platform_arch)
  74 LAUNCHER_TARGET_DEFINES += -DTARGET_ARCH_MODEL_$(Platform_arch_model)
  75 LAUNCHER_TARGET_DEFINES += -DTARGET_OS_ARCH_$(Platform_os_arch)
  76 LAUNCHER_TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_$(Platform_os_arch_model)
  77 LAUNCHER_TARGET_DEFINES += -DTARGET_COMPILER_$(Platform_compiler)
  78 
  79 launcher.o: launcher.c $(LAUNCHERDIR)/java.c $(LAUNCHERDIR)/java_md.c
  80         $(CC) -g -c -o $@ launcher.c $(LAUNCHERFLAGS) $(CPPFLAGS) ${LAUNCHER_TARGET_DEFINES}
  81 
  82 launcher.c:
  83         @echo Generating $@
  84         $(QUIETLY) { \
  85         echo '#define debug launcher_debug'; \
  86         echo '#include "java.c"'; \
  87         echo '#include "java_md.c"'; \
  88         } > $@
  89 
  90 $(LAUNCHER): $(LAUNCHER.o) $(LIBJVM) $(LAUNCHER_MAPFILE)
  91 ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),)
  92         @echo Linking launcher...
  93         $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK)
  94         $(QUIETLY) \
  95         $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(LAUNCHER.o) $(LIBS_LAUNCHER)
  96         $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK)
  97         [ -f $(LAUNCHER_G) ] || ln -s $@ $(LAUNCHER_G)
  98 endif # filter -sbfast -xsbfast
  99