make/bsd/makefiles/vm.make

Print this page




  65 else
  66   SYMFLAG =
  67 endif
  68 
  69 # HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined 
  70 # in $(GAMMADIR)/make/defs.make
  71 ifeq ($(HOTSPOT_BUILD_VERSION),)
  72   BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HOTSPOT_RELEASE_VERSION)\""
  73 else
  74   BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)\""
  75 endif
  76 
  77 # The following variables are defined in the generated flags.make file.
  78 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\""
  79 JRE_VERSION   = -DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""
  80 HS_LIB_ARCH   = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
  81 BUILD_TARGET  = -DHOTSPOT_BUILD_TARGET="\"$(TARGET)\""
  82 BUILD_USER    = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
  83 VM_DISTRO     = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
  84 
  85 CPPFLAGS =           \
  86   ${SYSDEFS}         \
  87   ${INCLUDES}        \
  88   ${BUILD_VERSION}   \
  89   ${BUILD_TARGET}    \
  90   ${BUILD_USER}      \
  91   ${HS_LIB_ARCH}     \
  92   ${VM_DISTRO}
  93 
  94 # This is VERY important! The version define must only be supplied to vm_version.o
  95 # If not, ccache will not re-use the cache at all, since the version string might contain
  96 # a time and date. 
  97 vm_version.o: CPPFLAGS += ${JRE_VERSION} 
  98 
  99 ifdef DEFAULT_LIBPATH
 100 CPPFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
 101 endif
 102 
 103 ifndef JAVASE_EMBEDDED
 104 CFLAGS += -DINCLUDE_TRACE
 105 endif
 106 
 107 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
 108 CFLAGS += $(CFLAGS_WARN/BYFILE)
 109 
 110 # Do not use C++ exception handling
 111 CFLAGS += $(CFLAGS/NOEX)
 112 
 113 # Extra flags from gnumake's invocation or environment
 114 CFLAGS += $(EXTRA_CFLAGS)
 115 LFLAGS += $(EXTRA_CFLAGS)
 116 
 117 # Don't set excutable bit on stack segment
 118 # the same could be done by separate execstack command
 119 # Darwin is non-executable-stack by default
 120 ifneq ($(OS_VENDOR), Darwin)


 247   LIBJVM_MAPFILE           =
 248   LIBS_VM                  = $(LIBS)
 249 else
 250   LIBJVM.o                 = $(JVM_OBJ_FILES)
 251   LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
 252   LFLAGS_VM$(LDNOMAP)      += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
 253   LFLAGS_VM                += $(SONAMEFLAG:SONAME=$(LIBJVM))
 254 
 255   ifeq ($(OS_VENDOR), Darwin)
 256     LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
 257     LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
 258     LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
 259   endif
 260 
 261   # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
 262   # get around library dependency and compatibility issues. Must use gcc not
 263   # g++ to link.
 264   ifeq ($(STATIC_CXX), true)
 265     LFLAGS_VM              += $(STATIC_LIBGCC)
 266     LIBS_VM                += $(STATIC_STDCXX)
 267     LINK_VM                = $(LINK_LIB.c)
 268   else
 269     LINK_VM                = $(LINK_LIB.CC)


 270   endif
 271 
 272   LIBS_VM                  += $(LIBS)
 273 endif
 274 ifeq ($(ZERO_BUILD), true)
 275   LIBS_VM += $(LIBFFI_LIBS)
 276 endif
 277 ifeq ($(SHARK_BUILD), true)
 278   LFLAGS_VM += $(LLVM_LDFLAGS)
 279   LIBS_VM   += $(LLVM_LIBS)
 280 endif
 281 
 282 
 283 # rule for building precompiled header
 284 $(PRECOMPILED_HEADER):
 285         $(QUIETLY) echo Generating precompiled header $@
 286         $(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)
 287         $(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -x c++-header $(PRECOMPILED_HEADER_SRC) -o $@ $(COMPILE_DONE)
 288 
 289 # making the library:
 290 
 291 ifneq ($(JVM_BASE_ADDR),)
 292 # By default shared library is linked at base address == 0. Modify the
 293 # linker script if JVM prefers a different base location. It can also be
 294 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
 295 # our build platform (AS-2.1).
 296 LD_SCRIPT = libjvm.so.lds
 297 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
 298         $(QUIETLY) {                                                \
 299           rm -rf $@;                                                \
 300           $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1             |  \
 301             sed -e '/^======/,/^======/!d'                          \
 302                 -e '/^======/d'                                     \
 303                 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/'   \
 304                 > $@;                                               \
 305         }
 306 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
 307 endif
 308 
 309 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
 310         $(QUIETLY) {                                                    \
 311             echo Linking vm...;                                         \
 312             $(LINK_LIB.CC/PRE_HOOK)                                     \
 313             $(LINK_VM) $(LD_SCRIPT_FLAG)                                \
 314                        $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM);       \
 315             $(LINK_LIB.CC/POST_HOOK)                                    \
 316             rm -f $@.1; ln -s $@ $@.1;                                  \
 317             [ -f $(LIBJVM_G) ] || { ln -s $@ $(LIBJVM_G); ln -s $@.1 $(LIBJVM_G).1; }; \
 318         }
 319 
 320 DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM)
 321 
 322 install_jvm: $(LIBJVM)
 323         @echo "Copying $(LIBJVM) to $(DEST_JVM)"
 324         $(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 325 
 326 #----------------------------------------------------------------------
 327 # Other files
 328 
 329 # Gamma launcher
 330 include $(MAKEFILES_DIR)/launcher.make
 331 
 332 # Signal interposition library
 333 include $(MAKEFILES_DIR)/jsig.make
 334 
 335 # Serviceability agent


  65 else
  66   SYMFLAG =
  67 endif
  68 
  69 # HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined 
  70 # in $(GAMMADIR)/make/defs.make
  71 ifeq ($(HOTSPOT_BUILD_VERSION),)
  72   BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HOTSPOT_RELEASE_VERSION)\""
  73 else
  74   BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)\""
  75 endif
  76 
  77 # The following variables are defined in the generated flags.make file.
  78 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\""
  79 JRE_VERSION   = -DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""
  80 HS_LIB_ARCH   = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
  81 BUILD_TARGET  = -DHOTSPOT_BUILD_TARGET="\"$(TARGET)\""
  82 BUILD_USER    = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
  83 VM_DISTRO     = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
  84 
  85 CXXFLAGS =           \
  86   ${SYSDEFS}         \
  87   ${INCLUDES}        \
  88   ${BUILD_VERSION}   \
  89   ${BUILD_TARGET}    \
  90   ${BUILD_USER}      \
  91   ${HS_LIB_ARCH}     \
  92   ${VM_DISTRO}
  93 
  94 # This is VERY important! The version define must only be supplied to vm_version.o
  95 # If not, ccache will not re-use the cache at all, since the version string might contain
  96 # a time and date. 
  97 vm_version.o: CXXFLAGS += ${JRE_VERSION} 
  98 
  99 ifdef DEFAULT_LIBPATH
 100 CXXFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
 101 endif
 102 
 103 ifndef JAVASE_EMBEDDED
 104 CFLAGS += -DINCLUDE_TRACE
 105 endif
 106 
 107 # CFLAGS_WARN holds compiler options to suppress/enable warnings.
 108 CFLAGS += $(CFLAGS_WARN/BYFILE)
 109 
 110 # Do not use C++ exception handling
 111 CFLAGS += $(CFLAGS/NOEX)
 112 
 113 # Extra flags from gnumake's invocation or environment
 114 CFLAGS += $(EXTRA_CFLAGS)
 115 LFLAGS += $(EXTRA_CFLAGS)
 116 
 117 # Don't set excutable bit on stack segment
 118 # the same could be done by separate execstack command
 119 # Darwin is non-executable-stack by default
 120 ifneq ($(OS_VENDOR), Darwin)


 247   LIBJVM_MAPFILE           =
 248   LIBS_VM                  = $(LIBS)
 249 else
 250   LIBJVM.o                 = $(JVM_OBJ_FILES)
 251   LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
 252   LFLAGS_VM$(LDNOMAP)      += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
 253   LFLAGS_VM                += $(SONAMEFLAG:SONAME=$(LIBJVM))
 254 
 255   ifeq ($(OS_VENDOR), Darwin)
 256     LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
 257     LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
 258     LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
 259   endif
 260 
 261   # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
 262   # get around library dependency and compatibility issues. Must use gcc not
 263   # g++ to link.
 264   ifeq ($(STATIC_CXX), true)
 265     LFLAGS_VM              += $(STATIC_LIBGCC)
 266     LIBS_VM                += $(STATIC_STDCXX)


 267     LINK_VM                = $(LINK_LIB.CC)
 268   else
 269     LINK_VM                = $(LINK_LIB.CXX)
 270   endif
 271 
 272   LIBS_VM                  += $(LIBS)
 273 endif
 274 ifeq ($(ZERO_BUILD), true)
 275   LIBS_VM += $(LIBFFI_LIBS)
 276 endif
 277 ifeq ($(SHARK_BUILD), true)
 278   LFLAGS_VM += $(LLVM_LDFLAGS)
 279   LIBS_VM   += $(LLVM_LIBS)
 280 endif
 281 
 282 
 283 # rule for building precompiled header
 284 $(PRECOMPILED_HEADER):
 285         $(QUIETLY) echo Generating precompiled header $@
 286         $(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)
 287         $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -x c++-header $(PRECOMPILED_HEADER_SRC) -o $@ $(COMPILE_DONE)
 288 
 289 # making the library:
 290 
 291 ifneq ($(JVM_BASE_ADDR),)
 292 # By default shared library is linked at base address == 0. Modify the
 293 # linker script if JVM prefers a different base location. It can also be
 294 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
 295 # our build platform (AS-2.1).
 296 LD_SCRIPT = libjvm.so.lds
 297 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
 298         $(QUIETLY) {                                                \
 299           rm -rf $@;                                                \
 300           $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1             |  \
 301             sed -e '/^======/,/^======/!d'                          \
 302                 -e '/^======/d'                                     \
 303                 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/'   \
 304                 > $@;                                               \
 305         }
 306 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
 307 endif
 308 
 309 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
 310         $(QUIETLY) {                                                    \
 311             echo Linking vm...;                                         \
 312             $(LINK_LIB.CXX/PRE_HOOK)                                     \
 313             $(LINK_VM) $(LD_SCRIPT_FLAG)                                \
 314                        $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM);       \
 315             $(LINK_LIB.CXX/POST_HOOK)                                    \
 316             rm -f $@.1; ln -s $@ $@.1;                                  \
 317             [ -f $(LIBJVM_G) ] || { ln -s $@ $(LIBJVM_G); ln -s $@.1 $(LIBJVM_G).1; }; \
 318         }
 319 
 320 DEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM)
 321 
 322 install_jvm: $(LIBJVM)
 323         @echo "Copying $(LIBJVM) to $(DEST_JVM)"
 324         $(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 325 
 326 #----------------------------------------------------------------------
 327 # Other files
 328 
 329 # Gamma launcher
 330 include $(MAKEFILES_DIR)/launcher.make
 331 
 332 # Signal interposition library
 333 include $(MAKEFILES_DIR)/jsig.make
 334 
 335 # Serviceability agent