vm.make revision 1467
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# This code is free software; you can redistribute it and/or modify it
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# under the terms of the GNU General Public License version 2 only, as
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# published by the Free Software Foundation.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# This code is distributed in the hope that it will be useful, but WITHOUT
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# version 2 for more details (a copy is included in the LICENSE file that
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# accompanied this code).
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# You should have received a copy of the GNU General Public License version
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# 2 along with this work; if not, write to the Free Software Foundation,
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# CA 95054 USA or visit www.sun.com if you need additional information or
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# have any questions.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#
6876da76f91687fee15a706830b990a2c0d55157Trang Do#
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Rules to build JVM and related libraries, included from vm.make in the build
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# directory.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Common build rules.
535ec645ca371f1ce298eaf76bf8feb73494f923dduvallMAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephhinclude $(MAKEFILES_DIR)/rules.make
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
14ea4bb737263733ad80a36b4f73f681c30a6b45sddefault: build
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvn#----------------------------------------------------------------------
dd566498928f08e7c9a79797a40db893c6a4b9fbvn# Defs
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvnGENERATED = ../generated
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh# read a generated file defining the set of .o's and the .o .h dependencies
dd566498928f08e7c9a79797a40db893c6a4b9fbvninclude $(GENERATED)/Dependencies
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# read machine-specific adjustments (%%% should do this via buildtree.make?)
14ea4bb737263733ad80a36b4f73f681c30a6b45sdinclude $(MAKEFILES_DIR)/$(BUILDARCH).make
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# set VPATH so make knows where to look for source files
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Src_Dirs is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# The incls directory contains generated header file lists for inclusion.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# The adfiles directory contains ad_<arch>.[ch]pp.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# The jvmtifiles directory contains jvmti*.[ch]pp
14ea4bb737263733ad80a36b4f73f681c30a6b45sdSrc_Dirs_V = $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)/incls
14ea4bb737263733ad80a36b4f73f681c30a6b45sdVPATH += $(Src_Dirs_V:%=%:)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn# set INCLUDES for C preprocessor
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephhSrc_Dirs_I = $(GENERATED)/adfiles $(GENERATED)/jvmtifiles ${Src_Dirs} $(GENERATED)
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephhINCLUDES += $(Src_Dirs_I:%=-I%)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvnifeq (${VERSION}, debug)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn SYMFLAG = -g
dd566498928f08e7c9a79797a40db893c6a4b9fbvnelse
14ea4bb737263733ad80a36b4f73f681c30a6b45sd SYMFLAG =
14ea4bb737263733ad80a36b4f73f681c30a6b45sdendif
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# The following variables are defined in the generated flags.make file.
14ea4bb737263733ad80a36b4f73f681c30a6b45sdBUILD_VERSION = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\""
14ea4bb737263733ad80a36b4f73f681c30a6b45sdJRE_VERSION = -DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""
14ea4bb737263733ad80a36b4f73f681c30a6b45sdHS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
dd566498928f08e7c9a79797a40db893c6a4b9fbvnBUILD_TARGET = -DHOTSPOT_BUILD_TARGET="\"$(TARGET)\""
dd566498928f08e7c9a79797a40db893c6a4b9fbvnBUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
dd566498928f08e7c9a79797a40db893c6a4b9fbvnVM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephhCPPFLAGS = \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ${SYSDEFS} \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ${INCLUDES} \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ${BUILD_VERSION} \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ${BUILD_TARGET} \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ${BUILD_USER} \
dd566498928f08e7c9a79797a40db893c6a4b9fbvn ${HS_LIB_ARCH} \
14ea4bb737263733ad80a36b4f73f681c30a6b45sd ${JRE_VERSION} \
14ea4bb737263733ad80a36b4f73f681c30a6b45sd ${VM_DISTRO}
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# CFLAGS_WARN holds compiler options to suppress/enable warnings.
14ea4bb737263733ad80a36b4f73f681c30a6b45sdCFLAGS += $(CFLAGS_WARN)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Do not use C++ exception handling
14ea4bb737263733ad80a36b4f73f681c30a6b45sdCFLAGS += $(CFLAGS/NOEX)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Extra flags from gnumake's invocation or environment
14ea4bb737263733ad80a36b4f73f681c30a6b45sdCFLAGS += $(EXTRA_CFLAGS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# Math Library (libm.so), do not use -lm.
6876da76f91687fee15a706830b990a2c0d55157Trang Do# There might be two versions of libm.so on the build system:
6876da76f91687fee15a706830b990a2c0d55157Trang Do# libm.so.1 and libm.so.2, and we want libm.so.1.
6876da76f91687fee15a706830b990a2c0d55157Trang Do# Depending on the Solaris release being used to build with,
6876da76f91687fee15a706830b990a2c0d55157Trang Do# /usr/lib/libm.so could point at a libm.so.2, so we are
6876da76f91687fee15a706830b990a2c0d55157Trang Do# explicit here so that the libjvm.so you have built will work on an
6876da76f91687fee15a706830b990a2c0d55157Trang Do# older Solaris release that might not have libm.so.2.
6876da76f91687fee15a706830b990a2c0d55157Trang Do# This is a critical factor in allowing builds on Solaris 10 or newer
6876da76f91687fee15a706830b990a2c0d55157Trang Do# to run on Solaris 8 or 9.
6876da76f91687fee15a706830b990a2c0d55157Trang Do#
6876da76f91687fee15a706830b990a2c0d55157Trang DoLIBM=/usr/lib$(ISA_DIR)/libm.so.1
6876da76f91687fee15a706830b990a2c0d55157Trang Do
6876da76f91687fee15a706830b990a2c0d55157Trang Doifeq ("${Platform_compiler}", "sparcWorks")
6876da76f91687fee15a706830b990a2c0d55157Trang Do# The whole megilla:
6876da76f91687fee15a706830b990a2c0d55157Trang Doifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 505), 1)
6876da76f91687fee15a706830b990a2c0d55157Trang Do# Old Comment: List the libraries in the order the compiler was designed for
6876da76f91687fee15a706830b990a2c0d55157Trang Do# Not sure what the 'designed for' comment is referring too above.
6876da76f91687fee15a706830b990a2c0d55157Trang Do# The order may not be too significant anymore, but I have placed this
6876da76f91687fee15a706830b990a2c0d55157Trang Do# older libm before libCrun, just to make sure it's found and used first.
6876da76f91687fee15a706830b990a2c0d55157Trang DoLIBS += -lsocket -lsched -ldl $(LIBM) -lCrun -lthread -ldoor -lc
6876da76f91687fee15a706830b990a2c0d55157Trang Doelse
6876da76f91687fee15a706830b990a2c0d55157Trang Doifeq ($(COMPILER_REV_NUMERIC), 502)
6876da76f91687fee15a706830b990a2c0d55157Trang Do# SC6.1 has it's own libm.so: specifying anything else provokes a name conflict.
6876da76f91687fee15a706830b990a2c0d55157Trang DoLIBS += -ldl -lthread -lsocket -lm -lsched -ldoor
6876da76f91687fee15a706830b990a2c0d55157Trang Doelse
6876da76f91687fee15a706830b990a2c0d55157Trang DoLIBS += -ldl -lthread -lsocket $(LIBM) -lsched -ldoor
6876da76f91687fee15a706830b990a2c0d55157Trang Doendif # 502
6876da76f91687fee15a706830b990a2c0d55157Trang Doendif # 505
14ea4bb737263733ad80a36b4f73f681c30a6b45sdelse
14ea4bb737263733ad80a36b4f73f681c30a6b45sdLIBS += -lsocket -lsched -ldl $(LIBM) -lthread -lc
14ea4bb737263733ad80a36b4f73f681c30a6b45sdendif # sparcWorks
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# By default, link the *.o into the library, not the executable.
14ea4bb737263733ad80a36b4f73f681c30a6b45sdLINK_INTO$(LINK_INTO) = LIBJVM
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sdJDK_LIBDIR = $(JAVA_HOME)/jre/lib/$(LIBARCH)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#----------------------------------------------------------------------
dd566498928f08e7c9a79797a40db893c6a4b9fbvn# jvm_db & dtrace
14ea4bb737263733ad80a36b4f73f681c30a6b45sdinclude $(MAKEFILES_DIR)/dtrace.make
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sd#----------------------------------------------------------------------
14ea4bb737263733ad80a36b4f73f681c30a6b45sd# JVM
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
14ea4bb737263733ad80a36b4f73f681c30a6b45sdJVM = jvm
14ea4bb737263733ad80a36b4f73f681c30a6b45sdLIBJVM = lib$(JVM).so
14ea4bb737263733ad80a36b4f73f681c30a6b45sdLIBJVM_G = lib$(JVM)$(G_SUFFIX).so
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvnJVM_OBJ_FILES = $(Obj_Files) $(DTRACE_OBJS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
dd566498928f08e7c9a79797a40db893c6a4b9fbvnvm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
1557e65f9d0c6fde875d807c12fc03ea20f50280vn
dd566498928f08e7c9a79797a40db893c6a4b9fbvnmapfile : $(MAPFILE) $(MAPFILE_DTRACE_OPT)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn rm -f $@
14ea4bb737263733ad80a36b4f73f681c30a6b45sd cat $^ > $@
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sdmapfile_reorder : mapfile $(MAPFILE_DTRACE_OPT) $(REORDERFILE)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd rm -f $@
14ea4bb737263733ad80a36b4f73f681c30a6b45sd cat $^ > $@
14ea4bb737263733ad80a36b4f73f681c30a6b45sd
14ea4bb737263733ad80a36b4f73f681c30a6b45sdifeq ($(LINK_INTO),AOUT)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LIBJVM.o =
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LIBJVM_MAPFILE =
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LIBS_VM = $(LIBS)
14ea4bb737263733ad80a36b4f73f681c30a6b45sdelse
dd566498928f08e7c9a79797a40db893c6a4b9fbvn LIBJVM.o = $(JVM_OBJ_FILES)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
dd566498928f08e7c9a79797a40db893c6a4b9fbvn LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
dd566498928f08e7c9a79797a40db893c6a4b9fbvnifndef USE_GCC
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LIBS_VM = $(LIBS)
dd566498928f08e7c9a79797a40db893c6a4b9fbvnelse
14ea4bb737263733ad80a36b4f73f681c30a6b45sd # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
14ea4bb737263733ad80a36b4f73f681c30a6b45sd # get around library dependency and compatibility issues. Must use gcc not
14ea4bb737263733ad80a36b4f73f681c30a6b45sd # g++ to link.
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LFLAGS_VM += $(STATIC_LIBGCC)
14ea4bb737263733ad80a36b4f73f681c30a6b45sd LIBS_VM += $(STATIC_STDCXX) $(LIBS)
dd566498928f08e7c9a79797a40db893c6a4b9fbvnendif
14ea4bb737263733ad80a36b4f73f681c30a6b45sdendif
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvnifdef USE_GCC
14ea4bb737263733ad80a36b4f73f681c30a6b45sdLINK_VM = $(LINK_LIB.c)
dd566498928f08e7c9a79797a40db893c6a4b9fbvnelse
dd566498928f08e7c9a79797a40db893c6a4b9fbvnLINK_VM = $(LINK_LIB.CC)
dd566498928f08e7c9a79797a40db893c6a4b9fbvnendif
dd566498928f08e7c9a79797a40db893c6a4b9fbvn# making the library:
14ea4bb737263733ad80a36b4f73f681c30a6b45sd$(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE)
dd566498928f08e7c9a79797a40db893c6a4b9fbvnifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),)
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall @echo Linking vm...
dd566498928f08e7c9a79797a40db893c6a4b9fbvn $(QUIETLY) $(LINK_LIB.CC/PRE_HOOK)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn $(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn $(QUIETLY) $(LINK_LIB.CC/POST_HOOK)
dd566498928f08e7c9a79797a40db893c6a4b9fbvn $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1
1557e65f9d0c6fde875d807c12fc03ea20f50280vn $(QUIETLY) [ -f $(LIBJVM_G) ] || ln -s $@ $(LIBJVM_G)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn $(QUIETLY) [ -f $(LIBJVM_G).1 ] || ln -s $@.1 $(LIBJVM_G).1
dd566498928f08e7c9a79797a40db893c6a4b9fbvnendif # filter -sbfast -xsbfast
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
535ec645ca371f1ce298eaf76bf8feb73494f923dduvall
1557e65f9d0c6fde875d807c12fc03ea20f50280vnDEST_JVM = $(JDK_LIBDIR)/$(VM_SUBDIR)/$(LIBJVM)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn
1557e65f9d0c6fde875d807c12fc03ea20f50280vninstall_jvm: $(LIBJVM)
1557e65f9d0c6fde875d807c12fc03ea20f50280vn @echo "Copying $(LIBJVM) to $(DEST_JVM)"
1557e65f9d0c6fde875d807c12fc03ea20f50280vn $(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
1557e65f9d0c6fde875d807c12fc03ea20f50280vn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn#----------------------------------------------------------------------
6876da76f91687fee15a706830b990a2c0d55157Trang Do# Other files
1557e65f9d0c6fde875d807c12fc03ea20f50280vn
1557e65f9d0c6fde875d807c12fc03ea20f50280vn# Gamma launcher
1557e65f9d0c6fde875d807c12fc03ea20f50280vninclude $(MAKEFILES_DIR)/launcher.make
1da218965c488f7b3d6e513e49cda33fdbc08b7fvn
ef8846857fcf954444cdc77e72249afef48377d2rb# Signal interposition library
dd566498928f08e7c9a79797a40db893c6a4b9fbvninclude $(MAKEFILES_DIR)/jsig.make
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn# Serviceability agent
dd566498928f08e7c9a79797a40db893c6a4b9fbvninclude $(MAKEFILES_DIR)/saproc.make
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
dd566498928f08e7c9a79797a40db893c6a4b9fbvn#----------------------------------------------------------------------
dd566498928f08e7c9a79797a40db893c6a4b9fbvn
535ec645ca371f1ce298eaf76bf8feb73494f923dduvallbuild: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(LIBJVM_DTRACE) checkAndBuildSA dtraceCheck
ef8846857fcf954444cdc77e72249afef48377d2rb
ef8846857fcf954444cdc77e72249afef48377d2rbinstall: install_jvm install_jsig install_saproc
ef8846857fcf954444cdc77e72249afef48377d2rb
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh.PHONY: default build install install_jvm
25c6ff4b77fcddf4097ce78a8277275ca603b46cstephh