892dcc25fc
Reviewed-by: katleman
464 lines
15 KiB
Plaintext
464 lines
15 KiB
Plaintext
#
|
|
# Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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. Oracle designates this
|
|
# particular file as subject to the "Classpath" exception as provided
|
|
# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
# or visit www.oracle.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_SHARED
|
|
|
|
PLATFORM_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
|
|
# 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
|
|
# USING_CYGWIN windows only: true or false
|
|
# ISHIELD_TEMP_MIN windows only: minimum disk space in temp area
|
|
|
|
# Only run uname once in this make session.
|
|
ifndef SYSTEM_UNAME
|
|
SYSTEM_UNAME := $(shell uname)
|
|
export SYSTEM_UNAME
|
|
endif
|
|
|
|
#
|
|
# 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 defined
|
|
ifndef VARIANT
|
|
VARIANT=OPT
|
|
endif
|
|
|
|
# Platform settings specific to Solaris
|
|
ifeq ($(SYSTEM_UNAME), SunOS)
|
|
PLATFORM = solaris
|
|
# 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
|
|
# How much RAM does this machine have (zones send an error to stderr):
|
|
MB_OF_MEMORY:=$(shell /usr/sbin/prtconf 2>/dev/null | fgrep 'Memory size:' | expand | cut -d' ' -f3)
|
|
endif
|
|
|
|
# Platform settings specific to Linux
|
|
ifeq ($(SYSTEM_UNAME), Linux)
|
|
PLATFORM = linux
|
|
# Arch and OS name/version
|
|
ifdef CROSS_COMPILE_ARCH
|
|
mach := $(CROSS_COMPILE_ARCH)
|
|
else
|
|
mach := $(shell uname -m)
|
|
endif
|
|
archExpr = case "$(mach)" in \
|
|
i[3-9]86) \
|
|
echo i586 \
|
|
;; \
|
|
ia64) \
|
|
echo ia64 \
|
|
;; \
|
|
x86_64) \
|
|
echo amd64 \
|
|
;; \
|
|
sparc*) \
|
|
echo sparc \
|
|
;; \
|
|
arm*) \
|
|
echo arm \
|
|
;; \
|
|
*) \
|
|
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
|
|
# Most archs are 32-bit
|
|
ifndef ARCH_DATA_MODEL
|
|
ARCH_DATA_MODEL=32
|
|
ifeq ($(ARCH), amd64)
|
|
ARCH_DATA_MODEL=64
|
|
endif
|
|
ifeq ($(ARCH), ia64)
|
|
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
|
|
# 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 different
|
|
ifeq ($(SYSTEM_UNAME), Windows_NT)
|
|
PLATFORM = windows
|
|
endif
|
|
ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
|
|
PLATFORM = windows
|
|
USING_CYGWIN = true
|
|
export USING_CYGWIN
|
|
CYGPATH_CMD=cygpath -a -s -m
|
|
# Only run "cygpath /" once in this make session.
|
|
ifndef CYGWIN_HOME
|
|
CYGWIN_HOME := $(shell $(CYGPATH_CMD) /)
|
|
export CYGWIN_HOME
|
|
endif
|
|
endif
|
|
|
|
# Platform settings specific to Windows
|
|
ifeq ($(PLATFORM), windows)
|
|
# 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.
|
|
# And sometimes PROCESSOR_IDENTIFIER is not defined at all
|
|
# (in some restricted shells), so we use uname if we have to.
|
|
ifeq ($(PROCESSOR_IDENTIFIER),)
|
|
# Only run uname -m once in this make session.
|
|
ifndef SYSTEM_UNAME_M
|
|
SYSTEM_UNAME_M := $(shell uname -m)
|
|
export SYSTEM_UNAME_M
|
|
endif
|
|
PROC_ARCH:=$(SYSTEM_UNAME_M)
|
|
else
|
|
PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
|
|
endif
|
|
# Cover all the possibilities, MKS uname, CYGWIN uname, PROCESSOR_IDENTIFIER
|
|
# Get: X86, X64, or IA64
|
|
PROC_ARCH:=$(patsubst 386,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst 486,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst 586,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst 686,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst i386,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst i486,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst i586,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst i686,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst x86,X86,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst intel64,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst Intel64,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst INTEL64,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst em64t,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst EM64T,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst amd64,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst AMD64,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst 8664,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst x86_64,X64,$(PROC_ARCH))
|
|
PROC_ARCH:=$(patsubst ia64,IA64,$(PROC_ARCH))
|
|
ifndef ARCH_DATA_MODEL
|
|
ifeq ($(PROC_ARCH),IA64)
|
|
ARCH_DATA_MODEL=64
|
|
else
|
|
ifeq ($(PROC_ARCH),X64)
|
|
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
|
|
ifeq ($(PROC_ARCH),X64)
|
|
ARCH=amd64
|
|
else
|
|
ifeq ($(PROC_ARCH),IA64)
|
|
ARCH=ia64
|
|
endif
|
|
endif
|
|
LIBARCH=$(ARCH)
|
|
# Value of Java os.arch property
|
|
ARCHPROP=$(LIBARCH)
|
|
else
|
|
# 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?
|
|
# MKS uses the special file "NUL", cygwin uses the customary unix file.
|
|
ifeq ($(USING_CYGWIN),true)
|
|
DEV_NULL = /dev/null
|
|
else
|
|
DEV_NULL = NUL
|
|
endif
|
|
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
|
|
# ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a
|
|
# bundles build on windows.
|
|
ISHIELD_TEMP_MIN=250000
|
|
# 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
|
|
endif
|
|
endif
|
|
|
|
# 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.
|
|
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 := 512
|
|
MIN_VM_MEMORY := $(MAX_VM_MEMORY)
|
|
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_MEMORY
|
|
endif
|
|
|
|
# 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 USER
|
|
|
|
export PLATFORM
|
|
endif
|
|
|