6728161: Add SKIP_BOOT_CYCLE feature to create boot jdk and use it during build
Summary: Needed BOOT_JAR_JFLAGS. Fixed PREVIOUS_RELEASE_IMAGE.
Reviewed-by: tbell
## Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.## This code is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License version 2 only, as# published by the Free Software Foundation. Sun designates this# particular file as subject to the "Classpath" exception as provided# by Sun in the LICENSE file that accompanied this code.## This code is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License# version 2 for more details (a copy is included in the LICENSE file that# accompanied this code).## You should have received a copy of the GNU General Public License version# 2 along with this work; if not, write to the Free Software Foundation,# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.## Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,# CA 95054 USA or visit www.sun.com if you need additional information or# have any questions.### Shared platform (OS/ARCH) variable settings for the JDK builds.## Includes basic system requirements, versions of utilities required,# suffixes on files, and basic defaults attributed to the build platform.### Assumes some basic unix system utilities (e.g. uname) are in the search path# in order to figure out the system.#ifndef PLATFORM_SHAREDPLATFORM_SHARED=done# Possible Input variables:# ARCH_DATA_MODEL 32 or 64, default to 32# USER, LOGNAME user name (runs logname, or id if not set)# PROCESSOR_IDENTIFIER windows only: needed in environment## (Also gets input by running the utilities uname, logname, isainfo, or id.)## Variables set by this file:# SYSTEM_UNAME what 'uname' says this system is# USER login name of user (minus blanks)# PLATFORM windows, solaris, or linux# VARIANT OPT or DBG, OPT is the default# OS_NAME solaris, linux, or nt# OS_VERSION specific version of os, 5.10, 2.4.9-e.3, etc.# OS_VENDOR company name# TEMP_DISK /tmp or C:/temp# ARCH_DATA_MODEL 32 or 64# ARCH sparc, sparcv9, i586, amd64, or ia64# ARCH_FAMILY sparc or i586# ARCHPROP sparc or x86# ARCH_VM_SUBDIR jre/bin, jre/lib/sparc, etc.# LIBARCH sparc, sparcv9, i386, amd64, or ia64# DEV_NULL destination of /dev/null, NUL or /dev/NULL# CLASSPATH_SEPARATOR separator in classpath, ; or :# LIB_PREFIX dynamic or static library prefix, lib or empty# LIB_SUFFIX static library file suffix, .lib or .a?# LIBRARY_SUFFIX dynamic library file suffix, .dll or .so# OBJECT_SUFFIX object file suffix, .o or .obj# EXE_SUFFIX executable file suffix, .exe or empty# BUNDLE_FILE_SUFFIX suffix for bundles: .tar or .tar.gz# ISA_DIR solaris only: /sparcv9 or /amd64# LIBARCH32 solaris only: sparc or i386# LIBARCH64 solaris only: sparcv9 or amd64# REQUIRED_WINDOWS_VERSION windows only: specific version of windows # USING_CYGWIN windows only: true or false# WINDOWS_NT_VERSION_STRING windows only: long version name# REQUIRED_OS_VERSION required OS version, e.g. 5.10, 2.4# REQUIRED_FREE_SPACE minimum disk space needed for outputdir# ISHIELD_TEMP_MIN windows only: minimum disk space in temp area# REQUIRED_ZIP_VER required version of zip# REQUIRED_UNZIP_VER required version of unzip# REQUIRED_DXSDK_VER windows only: required version of DirectX# LINUX_VERSION_INFO linux only: location of linux release file# REQUIRED_LINUX_VER linux only: required version of linux# REQUIRED_LINUX_FULLVER linux only: required full version of linux# REQUIRED_ALSA_VERSION linux only: required version of ALSA# REQUIRED_FREETYPE_VERSION openjdk only: required version of freetype SYSTEM_UNAME := $(shell uname)# Normal boot jdk is previous release, but a hard requirement is a 1.5 bootREQUIRED_BOOT_VER = 1.5# If we are using freetype, this is the required versionREQUIRED_FREETYPE_VERSION=2.3.0## Prune out all known SCM (Source Code Management) directories# so they will not be included when copying directory trees# or packaging up .jar files, etc. This applies to all workspaces.#SCM_DIRs = .hg .svn CVS RCS SCCS Codemgr_wsdata deleted_files .hgignore .hgtags# When changing SCM_DIRs also change SCM_DIRS_rexp and SCM_DIRS_prune:SCM_DIRS_rexp = ".hg|.svn|CVS|RCS|SCCS|Codemgr_wsdata|deleted_files|.hgignore|.hgtags"SCM_DIRS_prune = \( -name .hg -o -name .svn -o -name CVS -o -name RCS -o -name SCCS -o -name Codemgr_wsdata -o -name deleted_files -o -name .hgignore -o -name .hgtags \) -prune# Don't define this unless it's not definedifndef VARIANT VARIANT=OPTendif# Platform settings specific to Solarisifeq ($(SYSTEM_UNAME), SunOS) PLATFORM = solaris OS_NAME = solaris OS_VERSION := $(shell uname -r) # Solaris sparc build can be either 32-bit or 64-bit. # Default to 32, but allow explicit setting to 32 or 64. ifndef ARCH_DATA_MODEL ARCH_DATA_MODEL=32 endif ifeq ($(ARCH_DATA_MODEL), 32) processor := $(shell uname -p) archExpr = case "$(processor)" in \ i[3-9]86) \ echo i586 \ ;; \ sparc*) \ echo sparc \ ;; \ *) \ echo $(processor) \ ;; \ esac ARCH := $(shell $(archExpr)) else ARCH := $(shell isainfo -n) # ISA_DIR is used to locate 64-bit specific libraries which are generally # in the same general place as other libraries under the ./$(ARCH) directory ISA_DIR = /$(ARCH) endif # Need to maintain the jre/lib/i386 location for 32-bit Intel ifeq ($(ARCH), i586) ARCH_FAMILY = $(ARCH) LIBARCH = i386 # Value of Java os.arch property ARCHPROP = x86 else ifeq ($(ARCH), amd64) ARCH_FAMILY = i586 else ARCH_FAMILY = sparc endif LIBARCH = $(ARCH) # Value of Java os.arch property ARCHPROP = $(LIBARCH) endif # The two LIBARCH names ifeq ($(ARCH_FAMILY), sparc) LIBARCH32 = sparc LIBARCH64 = sparcv9 else LIBARCH32 = i386 LIBARCH64 = amd64 endif # Suffix for file bundles used in previous release BUNDLE_FILE_SUFFIX=.tar OS_VENDOR = Sun Microsystems # Required Solaris version REQUIRED_OS_VERSION = 5.10 # Minimum disk space needed as determined by running 'du -sk' on # a fully built workspace. ifeq ($(ARCH_FAMILY), sparc) REQUIRED_FREE_SPACE=1300000 else REQUIRED_FREE_SPACE=1040000 endif # How much RAM does this machine have: MB_OF_MEMORY=$(shell /etc/prtconf | fgrep 'Memory size:' | expand | cut -d' ' -f3)endif# Platform settings specific to Linuxifeq ($(SYSTEM_UNAME), Linux) PLATFORM = linux OS_NAME = linux OS_VERSION := $(shell uname -r) # Arch and OS name/version mach := $(shell uname -m) archExpr = case "$(mach)" in \ i[3-9]86) \ echo i586 \ ;; \ ia64) \ echo ia64 \ ;; \ x86_64) \ echo amd64 \ ;; \ sparc*) \ echo sparc \ ;; \ *) \ echo $(mach) \ ;; \ esac ARCH := $(shell $(archExpr) ) ARCH_FAMILY := $(ARCH) # Linux builds may be 32-bit or 64-bit data model. ifeq ($(ARCH), sparc) # Linux sparc build can be either 32-bit or 64-bit. # Default to 32, but allow explicit setting to 32 or 64. ifndef ARCH_DATA_MODEL ARCH_DATA_MODEL=32 endif ifeq ($(ARCH_DATA_MODEL), 32) ARCH=sparc else ARCH=sparcv9 endif else # i586 is 32-bit, amd64 is 64-bit ifndef ARCH_DATA_MODEL ifeq ($(ARCH), i586) ARCH_DATA_MODEL=32 else ARCH_DATA_MODEL=64 endif endif endif # Need to maintain the jre/lib/i386 location for 32-bit Intel ifeq ($(ARCH), i586) LIBARCH = i386 else LIBARCH = $(ARCH) endif # Value of Java os.arch property ARCHPROP = $(LIBARCH) # Suffix for file bundles used in previous release BUNDLE_FILE_SUFFIX=.tar.gz # Minimum disk space needed as determined by running 'du -sk' on # a fully built workspace. REQUIRED_FREE_SPACE=1460000 LINUX_VERSION_INFO = /etc/redhat-release OS_VENDOR = Red Hat ifeq ($(ARCH_DATA_MODEL), 32) REQUIRED_LINUX_VER = Advanced Server REQUIRED_LINUX_FULLVER = Advanced Server release 2.1AS REQUIRED_OS_VERSION = 2.4.9-e.3 else ifeq ($(ARCH), amd64) LINUX_VERSION_INFO = /etc/SuSE-release OS_VENDOR = SuSE Enterprise REQUIRED_LINUX_VER = 8.1 REQUIRED_LINUX_FULLVER = $(REQUIRED_LINUX_VER) SLSE AMD64 REQUIRED_OS_VERSION = 2.4.19-SMP else REQUIRED_LINUX_VER = Advanced Server REQUIRED_LINUX_FULLVER = Advanced Server release 2.1AS 64 bit REQUIRED_OS_VERSION = 2.4.19-SMP endif endif ifneq ($(ARCH), ia64) # ALSA 0.9.1 and above REQUIRED_ALSA_VERSION = ^((0[.]9[.][1-9])|(1[.]0[.][0-9]))[0-9]* endif # How much RAM does this machine have: MB_OF_MEMORY := $(shell free -m | fgrep Mem: | awk '{print $$2;}' )endif# Windows with and without CYGWIN will be slightly differentifeq ($(SYSTEM_UNAME), Windows_NT) PLATFORM = windows OS_VERSION := $(shell uname -r) WINDOWS_NT_VERSION_STRING=Windows_NT REQUIRED_MKS_VER=6.1endififneq (,$(findstring CYGWIN,$(SYSTEM_UNAME))) PLATFORM = windows OS_VERSION := 5 USING_CYGWIN = true export USING_CYGWIN WINDOWS_NT_VERSION_STRING=CYGWIN_NT REQUIRED_CYGWIN_VER=4.0endif# Platform settings specific to Windowsifeq ($(PLATFORM), windows) OS_NAME = nt REQUIRED_OS_VERSION=5 # Windows builds default to the appropriate for the underlaying # architecture. # Temporary disk area TEMP_DISK=C:/temp # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead. ifndef ARCH_DATA_MODEL ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64) ARCH_DATA_MODEL=64 else ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64) ARCH_DATA_MODEL=64 else ARCH_DATA_MODEL=32 endif endif endif export ARCH_DATA_MODEL ifeq ($(ARCH_DATA_MODEL), 64) # If the user wants to perform a cross compile build then they must # - set ARCH_DATA_MODEL=64 and either # + set ARCH to ia64 or amd64, or REQUIRED_WINDOWS_VERSION=Server 2003 Enterprise x64 Edition ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)), AMD64) ARCH=amd64 else ARCH=ia64 endif LIBARCH=$(ARCH) # Value of Java os.arch property ARCHPROP=$(LIBARCH) else REQUIRED_WINDOWS_VERSION=2000 or Unknown #REQUIRED_WINDOWS_VERSION=XP Professional # LIBARCH is used to preserve the jre/lib/i386 directory name for 32-bit intel ARCH=i586 LIBARCH=i386 # Value of Java os.arch property ARCHPROP=x86 endif ARCH_FAMILY = $(ARCH) # Where is unwanted output to be delivered? DEV_NULL = NUL export DEV_NULL # Classpath separator CLASSPATH_SEPARATOR = ; # The suffix used for object file (.o for unix .obj for windows) OBJECT_SUFFIX = obj # The suffix applied to executables (.exe for windows, nothing for solaris) EXE_SUFFIX = .exe # The prefix applied to library files (lib for solaris, nothing for windows) LIB_PREFIX= LIBRARY_SUFFIX = dll LIB_SUFFIX = lib # User name determination (set _USER) ifndef USER ifdef USERNAME _USER := $(USERNAME) else ifdef LOGNAME _USER := $(LOGNAME) else _USER := $(shell id -un) endif endif else _USER:=$(USER) endif # Location of client/server directories ARCH_VM_SUBDIR=jre/bin # Suffix for file bundles used in previous release BUNDLE_FILE_SUFFIX=.tar # Minimum disk space needed as determined by running 'du -sk' on # a fully built workspace. REQUIRED_FREE_SPACE=500000 # ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a # bundles build on windows. ISHIELD_TEMP_MIN=250000 REQUIRED_DXSDK_VER = 0x0700 OS_VENDOR = Microsoft # How much RAM does this machine have: ifeq ($(JDK_HAS_MEM_INFO),) ifeq ($(USING_CYGWIN),true) # CYGWIN has the 'free' utility _MB_OF_MEMORY := \ $(shell free -m | grep Mem: | awk '{print $$2;}' ) else # Windows 2000 has the mem utility, but two memory areas # extended memory is what is beyond 1024M _B_OF_EXT_MEMORY := \ $(shell mem 2> $(DEV_NULL) | \ grep 'total contiguous extended memory' | awk '{print $$1;}') ifeq ($(_B_OF_EXT_MEMORY),) _B_OF_MEMORY := \ $(shell mem 2> $(DEV_NULL) | \ grep 'total conventional memory' | awk '{print $$1;}') else _B_OF_MEMORY := \ $(shell expr 1048576 '+' $(_B_OF_EXT_MEMORY) 2> $(DEV_NULL)) endif ifeq ($(_B_OF_MEMORY),) # Windows 2003 has the systeminfo utility use it if mem doesn't work _MB_OF_MEMORY := \ $(shell systeminfo 2> $(DEV_NULL) | \ grep 'Total Physical Memory:' | \ awk '{print $$4;}' | sed -e 's@,@@') else _MB_OF_MEMORY := $(shell expr $(_B_OF_MEMORY) '/' 1024 2> $(DEV_NULL)) endif endif ifeq ($(shell expr $(_MB_OF_MEMORY) '+' 0 2> $(DEV_NULL)), $(_MB_OF_MEMORY)) MB_OF_MEMORY := $(_MB_OF_MEMORY) else MB_OF_MEMORY := 512 endif endifendifREQUIRED_ZIP_VER = 2.2REQUIRED_UNZIP_VER = 5.12REQUIRED_MAKE_VER = 3.78# Unix type settings (same for all unix platforms)ifneq ($(PLATFORM), windows) # Temporary disk area TEMP_DISK=/tmp # Where is unwanted output to be delivered? DEV_NULL = /dev/null export DEV_NULL # Character used between entries in classpath CLASSPATH_SEPARATOR = : # suffix used for object file (.o for unix .obj for windows) OBJECT_SUFFIX = o # The suffix applied to runtime libraries LIBRARY_SUFFIX = so # The suffix applied to link libraries LIB_SUFFIX = so # The suffix applied to executables (.exe for windows, nothing for solaris) EXE_SUFFIX = # The prefix applied to library files (lib for solaris, nothing for windows) LIB_PREFIX = lib # User name determination (set _USER) ifndef USER ifdef LOGNAME _USER := $(LOGNAME) else _USER := $(shell logname) endif else _USER:=$(USER) endif # Location of client/server directories ARCH_VM_SUBDIR=jre/lib/$(LIBARCH)endif# Machines with 512Mb or less of real memory are considered low memory# build machines and adjustments will be made to prevent excessing# system swapping during the build.# If we don't know, assume 512. Subtract 128 from MB for VM MAX.# Don't set VM max over 1024-128=896.ifeq ($(JDK_HAS_MEM_INFO),) JDK_HAS_MEM_INFO=true export JDK_HAS_MEM_INFO ifneq ($(MB_OF_MEMORY),) LOW_MEMORY_MACHINE := $(shell \ if [ $(MB_OF_MEMORY) -le 512 ] ; then \ echo "true"; \ else \ echo "false"; \ fi) MAX_VM_MEMORY := $(shell \ if [ $(MB_OF_MEMORY) -le 1024 ] ; then \ expr $(MB_OF_MEMORY) '-' 128 2> $(DEV_NULL) ; \ else \ echo "896"; \ fi) MIN_VM_MEMORY := $(shell \ if [ $(MAX_VM_MEMORY) -le 128 ] ; then \ expr $(MAX_VM_MEMORY) '-' 8 2> $(DEV_NULL) ; \ else \ echo "128"; \ fi) else MB_OF_MEMORY := unknown LOW_MEMORY_MACHINE := true MAX_VM_MEMORY := 384 MIN_VM_MEMORY := 128 endif export MB_OF_MEMORY export LOW_MEMORY_MACHINE export MAX_VM_MEMORY export MIN_VM_MEMORYendif# If blanks in the username, use the first 4 words and pack them together_USER1:=$(subst ', ,$(_USER))_USER2:=$(subst ", ,$(_USER1))USER:=$(word 1,$(_USER2))$(word 2,$(_USER2))$(word 3,$(_USER2))$(word 4,$(_USER2))export USERexport PLATFORMendif