59 ifneq ($(OBJCOPY),) 60 # always build with debug info when we can create .debuginfo files 61 # and disable 'lazy debug info' so the .so has everything. 62 SYMFLAG = -g -xs 63 else 64 ifeq (${VERSION}, debug) 65 SYMFLAG = -g 66 else 67 SYMFLAG = 68 endif 69 endif 70 71 # The following variables are defined in the generated flags.make file. 72 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\"" 73 JRE_VERSION = -DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\"" 74 HS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\" 75 BUILD_TARGET = -DHOTSPOT_BUILD_TARGET="\"$(TARGET)\"" 76 BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\"" 77 VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\"" 78 79 CPPFLAGS = \ 80 ${SYSDEFS} \ 81 ${INCLUDES} \ 82 ${BUILD_VERSION} \ 83 ${BUILD_TARGET} \ 84 ${BUILD_USER} \ 85 ${HS_LIB_ARCH} \ 86 ${VM_DISTRO} 87 88 # This is VERY important! The version define must only be supplied to vm_version.o 89 # If not, ccache will not re-use the cache at all, since the version string might contain 90 # a time and date. 91 vm_version.o: CPPFLAGS += ${JRE_VERSION} 92 93 # CFLAGS_WARN holds compiler options to suppress/enable warnings. 94 CFLAGS += $(CFLAGS_WARN) 95 96 # Do not use C++ exception handling 97 CFLAGS += $(CFLAGS/NOEX) 98 99 # Extra flags from gnumake's invocation or environment 100 CFLAGS += $(EXTRA_CFLAGS) -DINCLUDE_TRACE 101 102 # Math Library (libm.so), do not use -lm. 103 # There might be two versions of libm.so on the build system: 104 # libm.so.1 and libm.so.2, and we want libm.so.1. 105 # Depending on the Solaris release being used to build with, 106 # /usr/lib/libm.so could point at a libm.so.2, so we are 107 # explicit here so that the libjvm.so you have built will work on an 108 # older Solaris release that might not have libm.so.2. 109 # This is a critical factor in allowing builds on Solaris 10 or newer 110 # to run on Solaris 8 or 9. 111 # 252 LIBJVM.o = 253 LIBJVM_MAPFILE = 254 LIBS_VM = $(LIBS) 255 else 256 LIBJVM.o = $(JVM_OBJ_FILES) 257 LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder 258 LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE)) 259 LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM)) 260 ifndef USE_GCC 261 LIBS_VM = $(LIBS) 262 else 263 # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to 264 # get around library dependency and compatibility issues. Must use gcc not 265 # g++ to link. 266 LFLAGS_VM += $(STATIC_LIBGCC) 267 LIBS_VM += $(STATIC_STDCXX) $(LIBS) 268 endif 269 endif 270 271 ifdef USE_GCC 272 LINK_VM = $(LINK_LIB.c) 273 else 274 LINK_VM = $(LINK_LIB.CC) 275 endif 276 # making the library: 277 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) 278 ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),) 279 @echo Linking vm... 280 $(QUIETLY) $(LINK_LIB.CC/PRE_HOOK) 281 $(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM) 282 $(QUIETLY) $(LINK_LIB.CC/POST_HOOK) 283 $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1 284 $(QUIETLY) [ -f $(LIBJVM_G) ] || ln -s $@ $(LIBJVM_G) 285 $(QUIETLY) [ -f $(LIBJVM_G).1 ] || ln -s $@.1 $(LIBJVM_G).1 286 ifneq ($(OBJCOPY),) 287 $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO) 288 $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@ 289 ifeq ($(STRIP_POLICY),all_strip) 290 $(QUIETLY) $(STRIP) $@ 291 else 292 ifeq ($(STRIP_POLICY),min_strip) 293 $(QUIETLY) $(STRIP) -x $@ 294 # implied else here is no stripping at all 295 endif 296 endif 297 $(QUIETLY) [ -f $(LIBJVM_G_DEBUGINFO) ] || ln -s $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO) 298 endif 299 endif # filter -sbfast -xsbfast 300 301 302 DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR) | 59 ifneq ($(OBJCOPY),) 60 # always build with debug info when we can create .debuginfo files 61 # and disable 'lazy debug info' so the .so has everything. 62 SYMFLAG = -g -xs 63 else 64 ifeq (${VERSION}, debug) 65 SYMFLAG = -g 66 else 67 SYMFLAG = 68 endif 69 endif 70 71 # The following variables are defined in the generated flags.make file. 72 BUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\"" 73 JRE_VERSION = -DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\"" 74 HS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\" 75 BUILD_TARGET = -DHOTSPOT_BUILD_TARGET="\"$(TARGET)\"" 76 BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\"" 77 VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\"" 78 79 CXXFLAGS = \ 80 ${SYSDEFS} \ 81 ${INCLUDES} \ 82 ${BUILD_VERSION} \ 83 ${BUILD_TARGET} \ 84 ${BUILD_USER} \ 85 ${HS_LIB_ARCH} \ 86 ${VM_DISTRO} 87 88 # This is VERY important! The version define must only be supplied to vm_version.o 89 # If not, ccache will not re-use the cache at all, since the version string might contain 90 # a time and date. 91 vm_version.o: CXXFLAGS += ${JRE_VERSION} 92 93 # CFLAGS_WARN holds compiler options to suppress/enable warnings. 94 CFLAGS += $(CFLAGS_WARN) 95 96 # Do not use C++ exception handling 97 CFLAGS += $(CFLAGS/NOEX) 98 99 # Extra flags from gnumake's invocation or environment 100 CFLAGS += $(EXTRA_CFLAGS) -DINCLUDE_TRACE 101 102 # Math Library (libm.so), do not use -lm. 103 # There might be two versions of libm.so on the build system: 104 # libm.so.1 and libm.so.2, and we want libm.so.1. 105 # Depending on the Solaris release being used to build with, 106 # /usr/lib/libm.so could point at a libm.so.2, so we are 107 # explicit here so that the libjvm.so you have built will work on an 108 # older Solaris release that might not have libm.so.2. 109 # This is a critical factor in allowing builds on Solaris 10 or newer 110 # to run on Solaris 8 or 9. 111 # 252 LIBJVM.o = 253 LIBJVM_MAPFILE = 254 LIBS_VM = $(LIBS) 255 else 256 LIBJVM.o = $(JVM_OBJ_FILES) 257 LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder 258 LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE)) 259 LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM)) 260 ifndef USE_GCC 261 LIBS_VM = $(LIBS) 262 else 263 # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to 264 # get around library dependency and compatibility issues. Must use gcc not 265 # g++ to link. 266 LFLAGS_VM += $(STATIC_LIBGCC) 267 LIBS_VM += $(STATIC_STDCXX) $(LIBS) 268 endif 269 endif 270 271 ifdef USE_GCC 272 LINK_VM = $(LINK_LIB.CC) 273 else 274 LINK_VM = $(LINK_LIB.CXX) 275 endif 276 # making the library: 277 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) 278 ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),) 279 @echo Linking vm... 280 $(QUIETLY) $(LINK_LIB.CXX/PRE_HOOK) 281 $(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM) 282 $(QUIETLY) $(LINK_LIB.CXX/POST_HOOK) 283 $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1 284 $(QUIETLY) [ -f $(LIBJVM_G) ] || ln -s $@ $(LIBJVM_G) 285 $(QUIETLY) [ -f $(LIBJVM_G).1 ] || ln -s $@.1 $(LIBJVM_G).1 286 ifneq ($(OBJCOPY),) 287 $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO) 288 $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@ 289 ifeq ($(STRIP_POLICY),all_strip) 290 $(QUIETLY) $(STRIP) $@ 291 else 292 ifeq ($(STRIP_POLICY),min_strip) 293 $(QUIETLY) $(STRIP) -x $@ 294 # implied else here is no stripping at all 295 endif 296 endif 297 $(QUIETLY) [ -f $(LIBJVM_G_DEBUGINFO) ] || ln -s $(LIBJVM_DEBUGINFO) $(LIBJVM_G_DEBUGINFO) 298 endif 299 endif # filter -sbfast -xsbfast 300 301 302 DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR) |