Makefile revision 3617
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# This code is free software; you can redistribute it and/or modify it
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# under the terms of the GNU General Public License version 2 only, as
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# published by the Free Software Foundation.
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# This code is distributed in the hope that it will be useful, but WITHOUT
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# version 2 for more details (a copy is included in the LICENSE file that
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# accompanied this code).
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# You should have received a copy of the GNU General Public License version
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# 2 along with this work; if not, write to the Free Software Foundation,
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# or visit www.oracle.com if you need additional information or have any
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# questions.
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# This makefile creates a build tree and lights off a build.
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# You can go back into the build tree and perform rebuilds or
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# incremental builds as desired. Be sure to reestablish
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# environment variable settings for LD_LIBRARY_PATH and JAVA_HOME.
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# The make process now relies on java and javac. These can be
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# specified either implicitly on the PATH, by setting the
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# (JDK-inherited) ALT_BOOTDIR environment variable to full path to a
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# JDK in which bin/java and bin/javac are present and working (e.g.,
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# /usr/local/java/jdk1.3/solaris), or via the (JDK-inherited)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# default BOOTDIR path value. Note that one of ALT_BOOTDIR
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc.
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# from the PATH.
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley#
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# One can set ALT_BOOTDIR or BOOTDIR to point to a jdk that runs on
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# an architecture that differs from the target architecture, as long
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# as the bootstrap jdk runs under the same flavor of OS as the target
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# (i.e., if the target is linux, point to a jdk that runs on a linux
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# box). In order to use such a bootstrap jdk, set the make variable
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# REMOTE to the desired remote command mechanism, e.g.,
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley#
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# make REMOTE="rsh -l me myotherlinuxbox"
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# Along with VM, Serviceability Agent (SA) is built for SA/JDI binding.
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# JDI binding on SA produces two binaries:
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# 1. sa-jdi.jar - This is build before building libjvm[_g].so
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# Please refer to ./makefiles/sa.make
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# 2. libsa[_g].so - Native library for SA - This is built after
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley# libjsig[_g].so (signal interposition library)
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# Please refer to ./makefiles/vm.make
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# If $(GAMMADIR)/agent dir is not present, SA components are not built.
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
34347e08444ccea80b5e3228cf06e685c968fddaBob Halleyifeq ($(GAMMADIR),)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyinclude ../../make/defs.make
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyelse
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyinclude $(GAMMADIR)/make/defs.make
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyendif
34347e08444ccea80b5e3228cf06e685c968fddaBob Halleyinclude $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley
34347e08444ccea80b5e3228cf06e685c968fddaBob Halleyifndef CC_INTERP
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley ifndef FORCE_TIERED
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley FORCE_TIERED=1
34347e08444ccea80b5e3228cf06e685c968fddaBob Halley endif
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyendif
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifdef LP64
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley _JUNK_ := $(shell echo >&2 \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!")
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley @exit 1
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley endif
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halleyendif
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# we need to set up LP64 correctly to satisfy sanity checks in adlc
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halleyifneq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley MFLAGS += " LP64=1 "
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halleyendif
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# pass USE_SUNCC further, through MFLAGS
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halleyifdef USE_SUNCC
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley MFLAGS += " USE_SUNCC=1 "
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# The following renders pathnames in generated Makefiles valid on
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# machines other than the machine containing the build tree.
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley#
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# For example, let's say my build tree lives on /files12 on
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# exact.east.sun.com. This logic will cause GAMMADIR to begin with
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# /net/exact/files12/...
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley#
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# We only do this on SunOS variants, for a couple of reasons:
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# * It is extremely rare that source trees exist on other systems
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# * It has been claimed that the Linux automounter is flakey, so
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# changing GAMMADIR in a way that exercises the automounter could
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# prove to be a source of unreliability in the build process.
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# Obviously, this Makefile is only relevant on SunOS boxes to begin
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# with, but the SunOS conditionalization will make it easier to
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# combine Makefiles in the future (assuming we ever do that).
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halleyifeq ($(OSNAME),solaris)
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # prepend current directory to relative pathnames.
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley NEW_GAMMADIR := \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley $(shell echo $(GAMMADIR) | \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley )
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley unexport NEW_GAMMADIR
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # If NEW_GAMMADIR doesn't already start with "/net/":
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),)
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # prepend /net/$(HOST)
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # remove /net/$(HOST) if name already began with /home/
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # remove /net/$(HOST) if name already began with /java/
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # remove /net/$(HOST) if name already began with /lab/
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley NEW_GAMMADIR := \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley $(shell echo $(NEW_GAMMADIR) | \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley sed -e "s=^\(.*\)=/net/$(HOST)\1=" \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley -e "s=^/net/$(HOST)/home/=/home/=" \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley -e "s=^/net/$(HOST)/java/=/java/=" \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley -e "s=^/net/$(HOST)/lab/=/lab/=" \
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley )
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # Don't use the new value for GAMMADIR unless a file with the new
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley # name actually exists.
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff ifneq ($(wildcard $(NEW_GAMMADIR)),)
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley GAMMADIR := $(NEW_GAMMADIR)
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley endif
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley endif
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halleyendif
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# BUILDARCH is set to "zero" for Zero builds. VARIANTARCH
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# is used to give the build directories meaningful names.
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyVARIANTARCH = $(subst i386,i486,$(ZERO_LIBARCH))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# There is a (semi-) regular correspondence between make targets and actions:
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# Target Tree Type Build Dir
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# debug compiler2 <os>_<arch>_compiler2/debug
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# fastdebug compiler2 <os>_<arch>_compiler2/fastdebug
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# jvmg compiler2 <os>_<arch>_compiler2/jvmg
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# optimized compiler2 <os>_<arch>_compiler2/optimized
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# profiled compiler2 <os>_<arch>_compiler2/profiled
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# product compiler2 <os>_<arch>_compiler2/product
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# debug1 compiler1 <os>_<arch>_compiler1/debug
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# fastdebug1 compiler1 <os>_<arch>_compiler1/fastdebug
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# jvmg1 compiler1 <os>_<arch>_compiler1/jvmg
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# optimized1 compiler1 <os>_<arch>_compiler1/optimized
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# profiled1 compiler1 <os>_<arch>_compiler1/profiled
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# product1 compiler1 <os>_<arch>_compiler1/product
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# debugcore core <os>_<arch>_core/debug
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# fastdebugcore core <os>_<arch>_core/fastdebug
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# jvmgcore core <os>_<arch>_core/jvmg
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# optimizedcore core <os>_<arch>_core/optimized
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# profiledcore core <os>_<arch>_core/profiled
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# productcore core <os>_<arch>_core/product
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# debugzero zero <os>_<arch>_zero/debug
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# fastdebugzero zero <os>_<arch>_zero/fastdebug
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# jvmgzero zero <os>_<arch>_zero/jvmg
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# optimizedzero zero <os>_<arch>_zero/optimized
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff# profiledzero zero <os>_<arch>_zero/profiled
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# productzero zero <os>_<arch>_zero/product
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# debugshark shark <os>_<arch>_shark/debug
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# fastdebugshark shark <os>_<arch>_shark/fastdebug
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# jvmgshark shark <os>_<arch>_shark/jvmg
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# optimizedshark shark <os>_<arch>_shark/optimized
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# profiledshark shark <os>_<arch>_shark/profiled
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff# productshark shark <os>_<arch>_shark/product
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley#
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# What you get with each target:
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff#
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# fastdebug* - optimized compile, but with asserts enabled
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# jvmg* - "fat" libjvm_g - debug info linked into libjvm_g.so
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# optimized* - optimized compile, no asserts
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# profiled* - gprof
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# product* - the shippable thing: optimized compile, no asserts, -DPRODUCT
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# This target list needs to be coordinated with the usage message
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# in the build.sh script:
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS = debug jvmg fastdebug optimized profiled product
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley SUBDIR_DOCS = $(OSNAME)_$(VARIANTARCH)_docs
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyelse
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleySUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleySUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleySUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleySUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleySUBDIRS_ZERO = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS))
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob HalleySUBDIRS_SHARK = $(addprefix $(OSNAME)_$(VARIANTARCH)_shark/,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS_C2 = $(TARGETS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS_C1 = $(addsuffix 1,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS_TIERED = $(addsuffix tiered,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS_CORE = $(addsuffix core,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS_ZERO = $(addsuffix zero,$(TARGETS))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyTARGETS_SHARK = $(addsuffix shark,$(TARGETS))
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob HalleyBUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
72e7662efe5c866d71652a26ee7907cf99b18c33Bob HalleyBUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob HalleyBUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob HalleyBUILDTREE_VARS += OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyBUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley#-------------------------------------------------------------------------------
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# Could make everything by default, but that would take a while.
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyall:
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley @echo "Try '$(MAKE) <target> ...' where <target> is one or more of"
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley @echo " $(TARGETS_C2)"
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley @echo " $(TARGETS_C1)"
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley @echo " $(TARGETS_CORE)"
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley @echo " $(TARGETS_ZERO)"
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley @echo " $(TARGETS_SHARK)"
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleychecks: check_os_version check_j2se_version
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# We do not want people accidentally building on old systems (e.g. Linux 2.2.x,
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# Solaris 2.5.1, 2.6).
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok.
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob HalleySUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3%
72e7662efe5c866d71652a26ee7907cf99b18c33Bob HalleyOS_VERSION := $(shell uname -r)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyEMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleycheck_os_version:
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff# jvmti.make requires XSLT (J2SE 1.4.x or newer):
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob HalleyXSLT_CHECK = $(REMOTE) $(RUN.JAVAP) javax.xml.transform.TransformerFactory
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# If not found then fail fast.
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleycheck_j2se_version:
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(QUIETLY) $(XSLT_CHECK) > /dev/null 2>&1; \
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley if [ $$? -ne 0 ]; then \
3f3f44c39637b478bba6518c321514ac1784b389Bob Halley $(REMOTE) $(RUN.JAVA) -version; \
3f3f44c39637b478bba6518c321514ac1784b389Bob Halley echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \
3f3f44c39637b478bba6518c321514ac1784b389Bob Halley "to bootstrap this build" 1>&2; \
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley exit 1; \
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley fi
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(SUBDIRS_TIERED): $(BUILDTREE_MAKE)
7fc55ea79fde452a7ad5f8127eb331665f40dddcBob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(BUILDTREE) VARIANT=tiered
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(SUBDIRS_C2): $(BUILDTREE_MAKE)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifeq ($(FORCE_TIERED),1)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyelse
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(BUILDTREE) VARIANT=compiler2
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley$(SUBDIRS_C1): $(BUILDTREE_MAKE)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(BUILDTREE) VARIANT=compiler1
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley$(SUBDIRS_CORE): $(BUILDTREE_MAKE)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(BUILDTREE) VARIANT=core
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley$(SUBDIRS_ZERO): $(BUILDTREE_MAKE) platform_zero
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) platform_zero
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(BUILDTREE) VARIANT=shark VARIANTARCH=$(VARIANTARCH)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyplatform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley $(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley# Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(TARGETS_C2): $(SUBDIRS_C2)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifdef INSTALL
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(TARGETS_TIERED): $(SUBDIRS_TIERED)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifdef INSTALL
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(TARGETS_C1): $(SUBDIRS_C1)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifdef INSTALL
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(TARGETS_CORE): $(SUBDIRS_CORE)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifdef INSTALL
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(TARGETS_ZERO): $(SUBDIRS_ZERO)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyifdef INSTALL
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleyendif
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley$(TARGETS_SHARK): $(SUBDIRS_SHARK)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyifdef INSTALL
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyendif
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
c3f4c82900590a79e6cb6660c0e2f6c0d2cda324Bob Halley# Just build the tree, and nothing else:
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleytree: $(SUBDIRS_C2)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleytree1: $(SUBDIRS_C1)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halleytreecore: $(SUBDIRS_CORE)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleytreezero: $(SUBDIRS_ZERO)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleytreeshark: $(SUBDIRS_SHARK)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley# Doc target. This is the same for all build options.
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# Hence create a docs directory beside ...$(ARCH)_[...]
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleydocs: checks
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(QUIETLY) mkdir -p $(SUBDIR_DOCS)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) jvmtidocs
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley# Synonyms for win32-like targets.
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleycompiler2: jvmg product
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleycompiler1: jvmg1 product1
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleycore: jvmgcore productcore
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyzero: jvmgzero productzero
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyshark: jvmgshark productshark
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyclean_docs:
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley rm -rf $(SUBDIR_DOCS)
dac44421298c23f03d99254ae9b2a0c6e8d8b614Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyclean_compiler1 clean_compiler2 clean_core clean_zero clean_shark:
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halleyclean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_shark clean_docs
72e7662efe5c866d71652a26ee7907cf99b18c33Bob Halley
34347e08444ccea80b5e3228cf06e685c968fddaBob Halleyinclude $(GAMMADIR)/make/cscope.make
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley#-------------------------------------------------------------------------------
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) $(TARGETS_SHARK)
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley.PHONY: tree tree1 treecore treezero treeshark
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley.PHONY: all compiler1 compiler2 core zero shark
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark docs clean_docs
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff.PHONY: checks check_os_version check_j2se_version
591ab6023e60c811112cff960d7351e490ae8d2eBob Halley