< prev index next >

make/bsd/makefiles/vm.make

Print this page




 125 LIBS += -lm
 126 
 127 ifeq ($(USE_CLANG),)
 128   LIBS += -pthread
 129 endif
 130 
 131 # By default, link the *.o into the library, not the executable.
 132 LINK_INTO$(LINK_INTO) = LIBJVM
 133 
 134 JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
 135 
 136 #----------------------------------------------------------------------
 137 # jvm_db & dtrace
 138 include $(MAKEFILES_DIR)/dtrace.make
 139 
 140 #----------------------------------------------------------------------
 141 # JVM
 142 
 143 JVM    = jvm
 144 ifeq ($(OS_VENDOR), Darwin)
 145   LIBJVM   = lib$(JVM).dylib
 146   CFLAGS  += -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
 147 
 148   LIBJVM_DEBUGINFO   = lib$(JVM).dylib.dSYM
 149   LIBJVM_DIZ         = lib$(JVM).diz
 150 else
 151   LIBJVM   = lib$(JVM).so
 152 
 153   LIBJVM_DEBUGINFO   = lib$(JVM).debuginfo
 154   LIBJVM_DIZ         = lib$(JVM).diz
 155 endif
 156 
 157 SPECIAL_PATHS:=adlc c1 gc opto shark libadt
 158 
 159 SOURCE_PATHS=\
 160   $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
 161       \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
 162 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
 163 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
 164 SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
 165 SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
 166 
 167 CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
 168 CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles


 244 # For Darwin: add _ prefix and remove trailing ;
 245 mapfile_extra: $(MAPFILE_SHARE) $(MAPFILE_EXT)
 246         rm -f $@
 247 ifeq ($(OS_VENDOR), Darwin)
 248         cat $(MAPFILE_SHARE) $(MAPFILE_EXT) | \
 249             sed -e 's/#.*//g' -e 's/[ ]*//g' -e 's/;//g' | \
 250             awk '{ if ($$0 ~ ".") { print "\t\t_" $$0 } }' \
 251          > $@
 252 else
 253         cat $(MAPFILE_SHARE) $(MAPFILE_EXT) > $@
 254 endif
 255 
 256 mapfile : $(MAPFILE) mapfile_extra vm.def
 257         rm -f $@
 258         awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE")  \
 259                  { system ("cat mapfile_extra vm.def"); } \
 260                else                                     \
 261                  { print $$0 }                          \
 262              }' > $@ < $(MAPFILE)
 263 










 264 mapfile_reorder : mapfile $(REORDERFILE)
 265         rm -f $@
 266         cat $^ > $@
 267 
 268 vm.def: $(Res_Files) $(Obj_Files)
 269         sh $(GAMMADIR)/make/bsd/makefiles/build_vm_def.sh *.o > $@
 270 
 271 mapfile_ext:
 272         rm -f $@
 273         touch $@
 274         if [ -f $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext ]; then \
 275           cat $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext > $@; \
 276         fi
 277 
 278 STATIC_CXX = false
 279 
 280 ifeq ($(LINK_INTO),AOUT)
 281   LIBJVM.o                 =
 282   LIBJVM_MAPFILE           =
 283   LIBS_VM                  = $(LIBS)
 284 else
 285   LIBJVM.o                 = $(JVM_OBJ_FILES)
 286   LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
 287   LFLAGS_VM$(LDNOMAP)      += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
 288   LFLAGS_VM                += $(SONAMEFLAG:SONAME=$(LIBJVM))
 289 
 290   ifeq ($(OS_VENDOR), Darwin)

 291     LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
 292     LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
 293     LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)

 294   else
 295     LFLAGS_VM                += -Wl,-z,defs
 296   endif
 297 
 298   # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
 299   # get around library dependency and compatibility issues. Must use gcc not
 300   # g++ to link.
 301   ifeq ($(STATIC_CXX), true)
 302     LFLAGS_VM              += $(STATIC_LIBGCC)
 303     LIBS_VM                += $(STATIC_STDCXX)
 304     LINK_VM                = $(LINK_LIB.CC)
 305   else
 306     LINK_VM                = $(LINK_LIB.CXX)
 307   endif
 308 
 309   LIBS_VM                  += $(LIBS)
 310 endif
 311 ifeq ($(JVM_VARIANT_ZERO), true)
 312   LIBS_VM += $(LIBFFI_LIBS)
 313 endif


 328 
 329 ifneq ($(JVM_BASE_ADDR),)
 330 # By default shared library is linked at base address == 0. Modify the
 331 # linker script if JVM prefers a different base location. It can also be
 332 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
 333 # our build platform (AS-2.1).
 334 LD_SCRIPT = libjvm.so.lds
 335 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
 336         $(QUIETLY) {                                                \
 337           rm -rf $@;                                                \
 338           $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1             |  \
 339             sed -e '/^======/,/^======/!d'                          \
 340                 -e '/^======/d'                                     \
 341                 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/'   \
 342                 > $@;                                               \
 343         }
 344 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
 345 endif
 346 
 347 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)




 348         $(QUIETLY) {                                                    \
 349             echo $(LOG_INFO) Linking vm...;                                         \
 350             $(LINK_LIB.CXX/PRE_HOOK)                                     \
 351             $(LINK_VM) $(LD_SCRIPT_FLAG)                                \
 352                        $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
 353             $(LINK_LIB.CXX/POST_HOOK)                                    \
 354             rm -f $@.1; ln -s $@ $@.1;                                  \
 355         }
 356 


 357 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
 358   ifeq ($(OS_VENDOR), Darwin)
 359         $(DSYMUTIL) $@
 360     ifeq ($(ZIP_DEBUGINFO_FILES),1)
 361         $(ZIPEXE) -q -r -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
 362         $(RM) -r $(LIBJVM_DEBUGINFO)
 363     endif
 364   else
 365         $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
 366         $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
 367     ifeq ($(STRIP_POLICY),all_strip)
 368         $(QUIETLY) $(STRIP) $@
 369     else
 370       ifeq ($(STRIP_POLICY),min_strip)
 371         $(QUIETLY) $(STRIP) -g $@
 372       # implied else here is no stripping at all
 373       endif
 374     endif
 375     ifeq ($(ZIP_DEBUGINFO_FILES),1)
 376         $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)


 393         $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
 394             $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
 395 endif
 396         $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
 397             $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
 398         $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 399 
 400 #----------------------------------------------------------------------
 401 # Other files
 402 
 403 # Signal interposition library
 404 include $(MAKEFILES_DIR)/jsig.make
 405 
 406 # Serviceability agent
 407 include $(MAKEFILES_DIR)/saproc.make
 408 
 409 #----------------------------------------------------------------------
 410 
 411 ifeq ($(OS_VENDOR), Darwin)
 412 # no libjvm_db for macosx
 413 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(BUILDLIBSAPROC) dtraceCheck
 414         echo "Doing vm.make build:"
 415 else
 416 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC)
 417 endif
 418 
 419 install: install_jvm install_jsig install_saproc
 420 
 421 .PHONY: default build install install_jvm


 125 LIBS += -lm
 126 
 127 ifeq ($(USE_CLANG),)
 128   LIBS += -pthread
 129 endif
 130 
 131 # By default, link the *.o into the library, not the executable.
 132 LINK_INTO$(LINK_INTO) = LIBJVM
 133 
 134 JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
 135 
 136 #----------------------------------------------------------------------
 137 # jvm_db & dtrace
 138 include $(MAKEFILES_DIR)/dtrace.make
 139 
 140 #----------------------------------------------------------------------
 141 # JVM
 142 
 143 JVM    = jvm
 144 ifeq ($(OS_VENDOR), Darwin)
 145   LIBJVM   = lib$(JVM).$(LIBRARY_SUFFIX)
 146   CFLAGS  += -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
 147 
 148   LIBJVM_DEBUGINFO   = lib$(JVM).$(LIBRARY_SUFFIX).dSYM
 149   LIBJVM_DIZ         = lib$(JVM).diz
 150 else
 151   LIBJVM   = lib$(JVM).so
 152 
 153   LIBJVM_DEBUGINFO   = lib$(JVM).debuginfo
 154   LIBJVM_DIZ         = lib$(JVM).diz
 155 endif
 156 
 157 SPECIAL_PATHS:=adlc c1 gc opto shark libadt
 158 
 159 SOURCE_PATHS=\
 160   $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
 161       \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
 162 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
 163 SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
 164 SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
 165 SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
 166 
 167 CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
 168 CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles


 244 # For Darwin: add _ prefix and remove trailing ;
 245 mapfile_extra: $(MAPFILE_SHARE) $(MAPFILE_EXT)
 246         rm -f $@
 247 ifeq ($(OS_VENDOR), Darwin)
 248         cat $(MAPFILE_SHARE) $(MAPFILE_EXT) | \
 249             sed -e 's/#.*//g' -e 's/[ ]*//g' -e 's/;//g' | \
 250             awk '{ if ($$0 ~ ".") { print "\t\t_" $$0 } }' \
 251          > $@
 252 else
 253         cat $(MAPFILE_SHARE) $(MAPFILE_EXT) > $@
 254 endif
 255 
 256 mapfile : $(MAPFILE) mapfile_extra vm.def
 257         rm -f $@
 258         awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE")  \
 259                  { system ("cat mapfile_extra vm.def"); } \
 260                else                                     \
 261                  { print $$0 }                          \
 262              }' > $@ < $(MAPFILE)
 263 
 264 ifeq ($(BUILD_STATIC),true)
 265 EXPORTED_SYMBOLS = libjvm.symbols
 266 
 267 libjvm.symbols : mapfile
 268         $(CP) mapfile libjvm.symbols
 269 
 270 else
 271 EXPORTED_SYMBOLS =
 272 endif
 273 
 274 mapfile_reorder : mapfile $(REORDERFILE)
 275         rm -f $@
 276         cat $^ > $@
 277 
 278 vm.def: $(Res_Files) $(Obj_Files)
 279         sh $(GAMMADIR)/make/bsd/makefiles/build_vm_def.sh *.o > $@
 280 
 281 mapfile_ext:
 282         rm -f $@
 283         touch $@
 284         if [ -f $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext ]; then \
 285           cat $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext > $@; \
 286         fi
 287 
 288 STATIC_CXX = false
 289 
 290 ifeq ($(LINK_INTO),AOUT)
 291   LIBJVM.o                 =
 292   LIBJVM_MAPFILE           =
 293   LIBS_VM                  = $(LIBS)
 294 else
 295   LIBJVM.o                 = $(JVM_OBJ_FILES)
 296   LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
 297   LFLAGS_VM$(LDNOMAP)      += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
 298   LFLAGS_VM                += $(SONAMEFLAG:SONAME=$(LIBJVM))
 299 
 300   ifeq ($(OS_VENDOR), Darwin)
 301     ifneq ($(BUILD_STATIC),true)
 302       LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
 303       LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
 304       LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
 305     endif
 306   else
 307     LFLAGS_VM                += -Wl,-z,defs
 308   endif
 309 
 310   # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
 311   # get around library dependency and compatibility issues. Must use gcc not
 312   # g++ to link.
 313   ifeq ($(STATIC_CXX), true)
 314     LFLAGS_VM              += $(STATIC_LIBGCC)
 315     LIBS_VM                += $(STATIC_STDCXX)
 316     LINK_VM                = $(LINK_LIB.CC)
 317   else
 318     LINK_VM                = $(LINK_LIB.CXX)
 319   endif
 320 
 321   LIBS_VM                  += $(LIBS)
 322 endif
 323 ifeq ($(JVM_VARIANT_ZERO), true)
 324   LIBS_VM += $(LIBFFI_LIBS)
 325 endif


 340 
 341 ifneq ($(JVM_BASE_ADDR),)
 342 # By default shared library is linked at base address == 0. Modify the
 343 # linker script if JVM prefers a different base location. It can also be
 344 # implemented with 'prelink -r'. But 'prelink' is not (yet) available on
 345 # our build platform (AS-2.1).
 346 LD_SCRIPT = libjvm.so.lds
 347 $(LD_SCRIPT): $(LIBJVM_MAPFILE)
 348         $(QUIETLY) {                                                \
 349           rm -rf $@;                                                \
 350           $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1             |  \
 351             sed -e '/^======/,/^======/!d'                          \
 352                 -e '/^======/d'                                     \
 353                 -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/'   \
 354                 > $@;                                               \
 355         }
 356 LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
 357 endif
 358 
 359 $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
 360 ifeq ($(BUILD_STATIC),true)
 361         echo Linking static vm...;
 362         $(LINK_LIB.CC) $@ $(LIBJVM.o)
 363 else
 364         $(QUIETLY) {                                                    \
 365             echo $(LOG_INFO) Linking vm...;                                         \
 366             $(LINK_LIB.CXX/PRE_HOOK)                                     \
 367             $(LINK_VM) $(LD_SCRIPT_FLAG)                                \
 368                        $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
 369             $(LINK_LIB.CXX/POST_HOOK)                                    \
 370             rm -f $@.1; ln -s $@ $@.1;                                  \
 371         }
 372 
 373 endif
 374 
 375 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
 376   ifeq ($(OS_VENDOR), Darwin)
 377         $(DSYMUTIL) $@
 378     ifeq ($(ZIP_DEBUGINFO_FILES),1)
 379         $(ZIPEXE) -q -r -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
 380         $(RM) -r $(LIBJVM_DEBUGINFO)
 381     endif
 382   else
 383         $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
 384         $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
 385     ifeq ($(STRIP_POLICY),all_strip)
 386         $(QUIETLY) $(STRIP) $@
 387     else
 388       ifeq ($(STRIP_POLICY),min_strip)
 389         $(QUIETLY) $(STRIP) -g $@
 390       # implied else here is no stripping at all
 391       endif
 392     endif
 393     ifeq ($(ZIP_DEBUGINFO_FILES),1)
 394         $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)


 411         $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
 412             $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
 413 endif
 414         $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
 415             $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
 416         $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 417 
 418 #----------------------------------------------------------------------
 419 # Other files
 420 
 421 # Signal interposition library
 422 include $(MAKEFILES_DIR)/jsig.make
 423 
 424 # Serviceability agent
 425 include $(MAKEFILES_DIR)/saproc.make
 426 
 427 #----------------------------------------------------------------------
 428 
 429 ifeq ($(OS_VENDOR), Darwin)
 430 # no libjvm_db for macosx
 431 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(BUILDLIBSAPROC) dtraceCheck $(EXPORTED_SYMBOLS)
 432         echo "Doing vm.make build:"
 433 else
 434 build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC) $(EXPORTED_SYMBOLS)
 435 endif
 436 
 437 install: install_jvm install_jsig install_saproc
 438 
 439 .PHONY: default build install install_jvm
< prev index next >