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 LAUNCHER_SCRIPT = hotspot
  28 LAUNCHER   = gamma
  29 
  30 LAUNCHERDIR   = $(GAMMADIR)/src/os/posix/launcher
  31 LAUNCHERDIR_SHARE := $(GAMMADIR)/src/share/tools/launcher
  32 LAUNCHERFLAGS = $(ARCHFLAG) \
  33                 -I$(LAUNCHERDIR) -I$(GAMMADIR)/src/share/vm/prims \
  34                 -I$(LAUNCHERDIR_SHARE) \
  35                 -DFULL_VERSION=\"$(HOTSPOT_RELEASE_VERSION)\" \
  36                 -DJDK_MAJOR_VERSION=\"$(JDK_MAJOR_VERSION)\" \
  37                 -DJDK_MINOR_VERSION=\"$(JDK_MINOR_VERSION)\" \
  38                 -DARCH=\"$(LIBARCH)\" \
  39                 -DGAMMA \
  40                 -DLAUNCHER_TYPE=\"gamma\" \
  41                 -DLINK_INTO_$(LINK_INTO) \
  42                 $(TARGET_DEFINES)
  43 
  44 ifeq ($(LINK_INTO),AOUT)
  45   LAUNCHER.o                 = launcher.o $(JVM_OBJ_FILES)
  46   LAUNCHER_MAPFILE           = mapfile_reorder
  47   LFLAGS_LAUNCHER$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LAUNCHER_MAPFILE))
  48   LIBS_LAUNCHER             += $(LIBS)
  49 else
  50   LAUNCHER.o                 = launcher.o
  51   LFLAGS_LAUNCHER           += -L `pwd`
  52   LIBS_LAUNCHER             += -l$(JVM) $(LIBS)
  53 endif
  54 
  55 LINK_LAUNCHER = $(LINK.CC)
  56 
  57 LINK_LAUNCHER/PRE_HOOK  = $(LINK_LIB.CC/PRE_HOOK)
  58 LINK_LAUNCHER/POST_HOOK = $(LINK_LIB.CC/POST_HOOK)
  59 
  60 ifeq ("${Platform_compiler}", "sparcWorks")
  61 # Enable the following LAUNCHERFLAGS addition if you need to compare the
  62 # built ELF objects.
  63 #
  64 # The -g option makes static data global and the "-W0,-noglobal"
  65 # option tells the compiler to not globalize static data using a unique
  66 # globalization prefix. Instead force the use of a static globalization
  67 # prefix based on the source filepath so the objects from two identical
  68 # compilations are the same.
  69 #
  70 # Note: The blog says to use "-W0,-xglobalstatic", but that doesn't
  71 #       seem to work. I got "-W0,-noglobal" from Kelly and that works.
  72 #LAUNCHERFLAGS += -W0,-noglobal
  73 endif # Platform_compiler == sparcWorks
  74 
  75 LAUNCHER_OUT = launcher
  76 
  77 SUFFIXES += .d
  78 
  79 SOURCES := $(shell find $(LAUNCHERDIR) -name "*.c")
  80 SOURCES_SHARE := $(shell find $(LAUNCHERDIR_SHARE) -name "*.c")
  81 
  82 OBJS := $(patsubst $(LAUNCHERDIR)/%.c,$(LAUNCHER_OUT)/%.o,$(SOURCES)) $(patsubst $(LAUNCHERDIR_SHARE)/%.c,$(LAUNCHER_OUT)/%.o,$(SOURCES_SHARE))
  83 
  84 DEPFILES := $(patsubst %.o,%.d,$(OBJS))
  85 -include $(DEPFILES)
  86 
  87 $(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR_SHARE)/%.c
  88         $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); }
  89         $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS)
  90 
  91 $(LAUNCHER_OUT)/%.o: $(LAUNCHERDIR)/%.c
  92         $(QUIETLY) [ -d $(LAUNCHER_OUT) ] || { mkdir -p $(LAUNCHER_OUT); }
  93         $(QUIETLY) $(CC) -g -o $@ -c $< -MMD $(LAUNCHERFLAGS) $(CXXFLAGS)
  94 
  95 $(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE)
  96 ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),)
  97         $(QUIETLY) echo Linking launcher...
  98         $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK)
  99         $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(OBJS) $(LIBS_LAUNCHER)
 100         $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK)
 101 endif # filter -sbfast -xsbfast
 102 
 103 $(LAUNCHER): $(LAUNCHER_SCRIPT)
 104 
 105 $(LAUNCHER_SCRIPT): $(LAUNCHERDIR)/launcher.script
 106         $(QUIETLY) sed -e 's/@@LIBARCH@@/$(LIBARCH)/g' $< > $@
 107         $(QUIETLY) chmod +x $@
 108