diff --git a/jdk/make/common/Defs-linux.gmk b/jdk/make/common/Defs-linux.gmk index 28d58376fe2..9ecdd4d7156 100644 --- a/jdk/make/common/Defs-linux.gmk +++ b/jdk/make/common/Defs-linux.gmk @@ -116,6 +116,14 @@ LDFLAGS_COMMON_sparc += -m32 -mcpu=v9 CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH)) LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH)) +# If this is a --hash-style=gnu system, use --hash-style=both +# The gnu .hash section won't work on some Linux systems like SuSE 10. +_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | $(GREP) -- '--hash-style=gnu') +ifneq ($(_HAS_HASH_STYLE_GNU),) + LDFLAGS_HASH_STYLE = -Wl,--hash-style=both +endif +LDFLAGS_COMMON += $(LDFLAGS_HASH_STYLE) + # # Selection of warning messages # diff --git a/jdk/make/common/shared/Compiler-gcc.gmk b/jdk/make/common/shared/Compiler-gcc.gmk index 27501956368..13feb4cf98c 100644 --- a/jdk/make/common/shared/Compiler-gcc.gmk +++ b/jdk/make/common/shared/Compiler-gcc.gmk @@ -68,24 +68,6 @@ ifeq ($(PLATFORM), linux) else CXX = $(COMPILER_PATH)g++ endif - ifneq ("$(findstring sparc,$(ARCH))", "") - # sparc or sparcv9 - REQUIRED_CC_VER = 4.0 - REQUIRED_GCC_VER = 4.0.* - else - REQUIRED_CC_VER = 3.2 - ifeq ($(ARCH_DATA_MODEL), 32) - REQUIRED_GCC_VER = 3.2.1* - REQUIRED_GCC_VER_INT = 3.2.1-7a - else - ifeq ($(ARCH), amd64) - REQUIRED_GCC_VER = 3.2.* - endif - ifeq ($(ARCH), ia64) - REQUIRED_GCC_VER = 2.9[56789].* - endif - endif - endif # Option used to create a shared library SHARED_LIBRARY_FLAG = -shared -mimpure-text SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 ) @@ -98,18 +80,10 @@ ifeq ($(PLATFORM), solaris) CC = $(COMPILER_PATH)gcc CPP = $(COMPILER_PATH)gcc -E CXX = $(COMPILER_PATH)g++ - REQUIRED_CC_VER = 3.2 # Option used to create a shared library SHARED_LIBRARY_FLAG = -G - # But gcc is still needed no matter what on 32bit - ifeq ($(ARCH_DATA_MODEL), 32) - REQUIRED_GCC_VER = 2.95 - GCC =$(GCC_COMPILER_PATH)gcc - _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 ) - GCC_VER :=$(call GetVersion,"$(_GCC_VER)") - endif - + endif # Get gcc version diff --git a/jdk/make/common/shared/Compiler-msvc.gmk b/jdk/make/common/shared/Compiler-msvc.gmk index d23529f3935..4671366b5c3 100644 --- a/jdk/make/common/shared/Compiler-msvc.gmk +++ b/jdk/make/common/shared/Compiler-msvc.gmk @@ -41,8 +41,6 @@ ifeq ($(PLATFORM), windows) # Fill in unknown values COMPILER_NAME=Unknown MSVC Compiler COMPILER_VERSION= - REQUIRED_CC_VER= - REQUIRED_LINK_VER= # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake NMAKE = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo @@ -56,8 +54,6 @@ ifeq ($(PLATFORM), windows) CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) ifeq ($(CC_MAJORVER), 13) # This should be: CC_VER=13.10.3077 LINK_VER=7.10.3077 - REQUIRED_CC_VER = 13.10.3077 - REQUIRED_LINK_VER = 7.10.3077 COMPILER_NAME=Visual Studio .NET 2003 Professional C++ COMPILER_VERSION=VS2003 REBASE = $(COMPILER_PATH)../../Common7/Tools/Bin/rebase @@ -67,9 +63,6 @@ ifeq ($(PLATFORM), windows) endif endif ifeq ($(CC_MAJORVER), 14) - # This should be: CC_VER=14.00.50727.42 LINK_VER=8.00.50727.42 - REQUIRED_CC_VER = 14.00.50727.42 - REQUIRED_LINK_VER = 8.00.50727.42 COMPILER_NAME=Visual Studio 8 COMPILER_VERSION=VS2005 REBASE = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase @@ -80,9 +73,6 @@ ifeq ($(PLATFORM), windows) endif endif ifeq ($(CC_MAJORVER), 15) - # This should be: CC_VER=15.00.21022.08 LINK_VER=9.00.21022.08 - REQUIRED_CC_VER = 15.00.21022.08 - REQUIRED_LINK_VER = 9.00.21022.08 COMPILER_NAME=Visual Studio 9 COMPILER_VERSION=VS2008 #rebase and midl moved out of Visual Studio into the SDK: @@ -99,14 +89,6 @@ ifeq ($(PLATFORM), windows) CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) CC_MINORVER :=$(call MinorVersion,$(CC_VER)) CC_MICROVER :=$(call MicroVersion,$(CC_VER)) - ifeq ($(ARCH), ia64) - REQUIRED_CC_VER = 13.00.9337.7 - REQUIRED_LINK_VER = 7.00.9337.7 - endif - ifeq ($(ARCH), amd64) - REQUIRED_CC_VER = 14.00.40310.41 - REQUIRED_LINK_VER = 8.00.40310.39 - endif ifeq ($(CC_MAJORVER), 13) ifeq ($(ARCH), ia64) # This should be: CC_VER=13.00.9337.7 LINK_VER=7.00.9337.7 diff --git a/jdk/make/common/shared/Compiler-sun.gmk b/jdk/make/common/shared/Compiler-sun.gmk index b3c4e2a90b1..a22196b34f0 100644 --- a/jdk/make/common/shared/Compiler-sun.gmk +++ b/jdk/make/common/shared/Compiler-sun.gmk @@ -32,27 +32,19 @@ COMPILER_NAME=Sun Studio # Sun Studio Compiler settings specific to Solaris ifeq ($(PLATFORM), solaris) COMPILER_VERSION=SS12 - REQUIRED_CC_VER=5.9 CC = $(COMPILER_PATH)cc CPP = $(COMPILER_PATH)cc -E CXX = $(COMPILER_PATH)CC LINT = $(COMPILER_PATH)lint # Option used to create a shared library SHARED_LIBRARY_FLAG = -G - # But gcc is still needed no matter what on 32bit - ifeq ($(ARCH_DATA_MODEL), 32) - REQUIRED_GCC_VER = 2.95 - GCC =$(GCC_COMPILER_PATH)gcc - _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 ) - GCC_VER :=$(call GetVersion,"$(_GCC_VER)") - endif + GCC =$(GCC_COMPILER_PATH)gcc endif # Sun Studio Compiler settings specific to Linux ifeq ($(PLATFORM), linux) # This has not been tested COMPILER_VERSION=SS12 - REQUIRED_CC_VER=5.9 CC = $(COMPILER_PATH)cc CPP = $(COMPILER_PATH)cc -E CXX = $(COMPILER_PATH)CC @@ -73,7 +65,7 @@ endif # Get compiler version _CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1) CC_VER :=$(call GetVersion,"$(_CC_VER)") - + # Arch specific settings (determines type of .o files and instruction set) # Starting in SS12 (5.9), the arch options changed. # The assembler /usr/ccs/bin/as wants older SS11 (5.8) style options. diff --git a/jdk/make/common/shared/Defs-versions.gmk b/jdk/make/common/shared/Defs-versions.gmk new file mode 100644 index 00000000000..007c08fd6bf --- /dev/null +++ b/jdk/make/common/shared/Defs-versions.gmk @@ -0,0 +1,183 @@ +# +# Copyright 2009 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. +# + +# +# WARNING: This file is shared with other workspaces. +# + +# This file needs these set: CC_VERSION, PLATFORM, ARCH_FAMILY, and ARCH_DATA_MODEL. + +########################################################################## +# +# List of JDK official minimum, expected, or required versions: +# +# REQUIRED_ALSA_VERSION +# Linux only: The ALSA sound library version expected. +# +# REQUIRED_ANT_VER +# The minimum 'ant' version. +# +# REQUIRED_BOOT_VER +# The minimum boot jdk version. +# +# REQUIRED_CC_VER +# The primary C compiler version expected. +# +# REQUIRED_CYGWIN_VER +# Windows only: If CYGWIN is used, the minimum CYGWIN version. +# +# REQUIRED_DXSDK_VER +# Windows only: The version of DirectX SDK expected. +# +# REQUIRED_FREE_SPACE +# The minimum disk space needed as determined by running 'du -sk' on a fully +# built workspace. +# +# REQUIRED_FREETYPE_VERSION +# If we are using freetype, the freetype version expected. +# +# REQUIRED_GCC_VER +# Solaris and Linux only. The required version of gcc/g++ for the plugin. +# +# REQUIRED_LINK_VER +# Windows only: The version of link.exe expected. +# +# REQUIRED_MAKE_VER +# The minimum version of GNU make. +# +# REQUIRED_MKS_VER +# Windows only: If MKS used instead of CYGWIN, the minimum version of MKS. +# +# REQUIRED_OS_VARIANT_NAME +# The OS variation name required. +# Solaris: Solaris or OpenSolaris +# Windows: Windows2000, WindowsXP, Windows2003, etc. +# Linux: Fedora, RedHat, SuSE, Ubuntu, etc. +# +# REQUIRED_OS_VARIANT_VERSION +# The version number associated with the above OS variant name. +# Solaris: output of uname -r +# Windows: 5.0 for Windows2000, 5.1 for WindowsXP, 5.2 for Windows2003, etc. +# Linux: number for the variant, e.g. 9 for Fedora 9 +# +# REQUIRED_OS_VERSION +# The formal OS version number. +# Solaris & Windows: same as REQUIRED_OS_VARIANT_VERSION +# Linux: the kernel version, or output of uname -r +# +# REQUIRED_UNZIP_VER +# The minimum version of unzip. +# +# REQUIRED_ZIP_VER +# The minimum version of unzip. +# +########### +# +# Differences in the build platform from these versions may trigger warnings +# messages during the sanity checking when building the JDK. +# +# When building the OpenJDK most of these required or expected versions are +# ignored or allowed to vary widely to accomodate the many build situations +# of the OpenJDK. +# +########################################################################## + +# Solaris specific +ifeq ($(PLATFORM), solaris) + REQUIRED_OS_VERSION = 5.10 + REQUIRED_OS_VARIANT_NAME = Solaris + REQUIRED_OS_VARIANT_VERSION = $(REQUIRED_OS_VERSION) + ifeq ($(ARCH_FAMILY), sparc) + REQUIRED_FREE_SPACE = 1300000 + else + REQUIRED_FREE_SPACE = 1040000 + endif + ifeq ($(CC_VERSION),sun) + REQUIRED_CC_VER = 5.9 + endif + ifeq ($(CC_VERSION),gcc) + REQUIRED_CC_VER = 3.4.3 + endif + REQUIRED_GCC_VER = 2.95.2 +endif + +# Linux specific +ifeq ($(PLATFORM), linux) + REQUIRED_OS_VERSION = 2.6 + REQUIRED_OS_VARIANT_NAME = Fedora + REQUIRED_OS_VARIANT_VERSION = 9 + REQUIRED_FREE_SPACE = 1460000 + REQUIRED_ALSA_VERSION = 0.9.1 + REQUIRED_GCC_VER = 2.95 + ifeq ($(CC_VERSION),gcc) + REQUIRED_CC_VER = 4.3.0 + endif + ifeq ($(CC_VERSION),sun) + REQUIRED_CC_VER = 5.9 + endif +endif + +# Windows specific +ifeq ($(PLATFORM), windows) + ifeq ($(ARCH_DATA_MODEL),64) + REQUIRED_OS_VERSION = 5.2 + REQUIRED_OS_VARIANT_NAME = Windows2003 + else + REQUIRED_OS_VERSION = 5.1 + REQUIRED_OS_VARIANT_NAME = WindowsXP + endif + REQUIRED_OS_VARIANT_VERSION = $(REQUIRED_OS_VERSION) + REQUIRED_CYGWIN_VER = 4.0 + REQUIRED_MKS_VER = 6.1 + REQUIRED_FREE_SPACE = 500000 + REQUIRED_DXSDK_VER = 0x0900 + ifeq ($(CC_VERSION),msvc) + ifeq ($(ARCH_DATA_MODEL), 32) + REQUIRED_CC_VER = 15.00.21022.08 + REQUIRED_LINK_VER = 9.00.21022.08 + else + ifeq ($(ARCH), ia64) + REQUIRED_CC_VER = 13.00.9337.7 + REQUIRED_LINK_VER = 7.00.9337.7 + endif + ifeq ($(ARCH), amd64) + REQUIRED_CC_VER = 14.00.40310.41 + REQUIRED_LINK_VER = 8.00.40310.39 + endif + endif + endif + ifeq ($(CC_VERSION),gcc) + REQUIRED_CC_VER = 3.4.3 + endif +endif + +# Generic +REQUIRED_ANT_VER = 1.6.3 +REQUIRED_BOOT_VER = 1.5 +REQUIRED_FREETYPE_VERSION = 2.3.0 +REQUIRED_MAKE_VER = 3.78 +REQUIRED_UNZIP_VER = 5.12 +REQUIRED_ZIP_VER = 2.2 + diff --git a/jdk/make/common/shared/Defs-windows.gmk b/jdk/make/common/shared/Defs-windows.gmk index 1ceb017b2f9..a7caa194893 100644 --- a/jdk/make/common/shared/Defs-windows.gmk +++ b/jdk/make/common/shared/Defs-windows.gmk @@ -136,10 +136,7 @@ endif UNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH) # Get version of MKS or CYGWIN -ifdef USING_CYGWIN -_CYGWIN_VER :=$(shell $(UNAME)) -CYGWIN_VER :=$(call GetVersion,$(_CYGWIN_VER)) -else # MKS +ifndef USING_CYGWIN _MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@') MKS_VER :=$(call GetVersion,$(_MKS_VER)) # At this point, we can re-define FullPath to use DOSNAME_CMD diff --git a/jdk/make/common/shared/Defs.gmk b/jdk/make/common/shared/Defs.gmk index 638cd363696..c297bfa4d08 100644 --- a/jdk/make/common/shared/Defs.gmk +++ b/jdk/make/common/shared/Defs.gmk @@ -116,9 +116,9 @@ $(shell \ fi) endef -# Given a line of text, get the major.minor version number from it +# Given a line of text, get the version number from it define GetVersion -$(shell echo $1 | sed -e 's@[^1-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*@\1@' ) +$(shell echo $1 | sed -e 's@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@' ) endef # Given a major.minor.micro version, return the major, minor, or micro number @@ -133,26 +133,26 @@ $(if $(word 3, $(subst ., ,$1)),$(word 3, $(subst ., ,$1)),0) endef # Macro that returns missing, same, newer, or older $1=version $2=required -# (currently does not check the micro number) define CheckVersions $(shell \ if [ "$1" = "" -o "$2" = "" ]; then \ echo missing; \ + elif [ "$1" = "$2" ]; then \ + echo same; \ + elif [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \ + echo older; \ + elif [ $(call MajorVersion,$1) -gt $(call MajorVersion,$2) ] ; then \ + echo newer; \ + elif [ $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \ + echo older; \ + elif [ $(call MinorVersion,$1) -gt $(call MinorVersion,$2) ]; then \ + echo newer; \ + elif [ $(call MicroVersion,$1) -lt $(call MicroVersion,$2) ]; then \ + echo older; \ + elif [ $(call MicroVersion,$1) -gt $(call MicroVersion,$2) ]; then \ + echo newer; \ else \ - if [ "$1" = "$2" ]; then \ - echo same; \ - else \ - if [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \ - echo older; \ - else \ - if [ $(call MajorVersion,$1) -eq $(call MajorVersion,$2) -a \ - $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \ - echo older; \ - else \ - echo newer; \ - fi; \ - fi; \ - fi; \ + echo same; \ fi) endef @@ -561,3 +561,6 @@ endif # Get shared compiler settings include $(JDK_MAKE_SHARED_DIR)/Compiler.gmk +# Get the REQUIRED versions +include $(JDK_MAKE_SHARED_DIR)/Defs-versions.gmk + diff --git a/jdk/make/common/shared/Platform.gmk b/jdk/make/common/shared/Platform.gmk index 8da23c83fc4..d343cdea1c3 100644 --- a/jdk/make/common/shared/Platform.gmk +++ b/jdk/make/common/shared/Platform.gmk @@ -51,9 +51,6 @@ PLATFORM_SHARED=done # 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 @@ -72,29 +69,11 @@ PLATFORM_SHARED=done # 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 boot -REQUIRED_BOOT_VER = 1.5 - -# If we are using freetype, this is the required version -REQUIRED_FREETYPE_VERSION=2.3.0 - # # Prune out all known SCM (Source Code Management) directories # so they will not be included when copying directory trees @@ -113,8 +92,6 @@ endif # Platform settings specific to Solaris ifeq ($(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 @@ -166,16 +143,6 @@ ifeq ($(SYSTEM_UNAME), SunOS) 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 @@ -183,8 +150,6 @@ endif # Platform settings specific to Linux ifeq ($(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 \ @@ -242,32 +207,6 @@ ifeq ($(SYSTEM_UNAME), Linux) # 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 @@ -275,23 +214,15 @@ endif # Windows with and without CYGWIN will be slightly different ifeq ($(SYSTEM_UNAME), Windows_NT) PLATFORM = windows - OS_VERSION := $(shell uname -r) - WINDOWS_NT_VERSION_STRING=Windows_NT - REQUIRED_MKS_VER=6.1 endif ifneq (,$(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.0 endif # Platform settings specific to Windows ifeq ($(PLATFORM), windows) - OS_NAME = nt - REQUIRED_OS_VERSION=5 # Windows builds default to the appropriate for the underlaying # architecture. # Temporary disk area @@ -314,7 +245,6 @@ ifeq ($(PLATFORM), windows) # 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 @@ -324,8 +254,6 @@ ifeq ($(PLATFORM), windows) # 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 @@ -364,14 +292,9 @@ ifeq ($(PLATFORM), windows) 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 = 0x0900 - OS_VENDOR = Microsoft # How much RAM does this machine have: ifeq ($(JDK_HAS_MEM_INFO),) ifeq ($(USING_CYGWIN),true) @@ -410,10 +333,6 @@ ifeq ($(PLATFORM), windows) endif endif -REQUIRED_ZIP_VER = 2.2 -REQUIRED_UNZIP_VER = 5.12 -REQUIRED_MAKE_VER = 3.78 - # Unix type settings (same for all unix platforms) ifneq ($(PLATFORM), windows) # Temporary disk area diff --git a/jdk/make/common/shared/Sanity-Settings.gmk b/jdk/make/common/shared/Sanity-Settings.gmk index f3ea2b35a79..54f1f5fc143 100644 --- a/jdk/make/common/shared/Sanity-Settings.gmk +++ b/jdk/make/common/shared/Sanity-Settings.gmk @@ -167,8 +167,6 @@ ALL_SETTINGS+=$(call addRequiredSetting,ARCHPROP) ifeq ($(PLATFORM),windows) ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_ARCHITECTURE) ALL_SETTINGS+=$(call addRequiredSetting,PROCESSOR_IDENTIFIER) - ALL_SETTINGS+=$(call addRequiredSetting,WINDOWS_VERSION) - ALL_SETTINGS+=$(call addRequiredSetting,WINDOWS_NT_VERSION_STRING) ifdef USING_CYGWIN ALL_SETTINGS+=$(call addRequiredSetting,USING_CYGWIN) ALL_SETTINGS+=$(call addRequiredVersionSetting,CYGWIN_VER) @@ -179,13 +177,11 @@ ifeq ($(PLATFORM),windows) endif endif ifeq ($(PLATFORM),linux) - ALL_SETTINGS+=$(call addRequiredSetting,LINUX_VERSION) - ifneq ($(ARCH), ia64) - ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION) - endif + ALL_SETTINGS+=$(call addRequiredSetting,ALSA_VERSION) endif ALL_SETTINGS+=$(call addRequiredVersionSetting,OS_VERSION) -ALL_SETTINGS+=$(call addRequiredSetting,OS_NAME) +ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_NAME) +ALL_SETTINGS+=$(call addOptionalSetting,OS_VARIANT_VERSION) ALL_SETTINGS+=$(call addRequiredSetting,TEMP_FREE_SPACE) ALL_SETTINGS+=$(call addRequiredSetting,FREE_SPACE) ALL_SETTINGS+=$(call addRequiredSetting,MB_OF_MEMORY) diff --git a/jdk/make/common/shared/Sanity.gmk b/jdk/make/common/shared/Sanity.gmk index 997e848904a..a3c421e74b3 100644 --- a/jdk/make/common/shared/Sanity.gmk +++ b/jdk/make/common/shared/Sanity.gmk @@ -38,60 +38,106 @@ SANITY_FILES = $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE) # How to say "The Release Engineering people use this" -THE_OFFICIAL_USES=The official $(PLATFORM) builds use +THE_OFFICIAL_USES=The official builds on $(PLATFORM) use # How to say "You are using:" YOU_ARE_USING=You appear to be using +# Error message +define SanityError +$(ECHO) "ERROR: $1\n" >> $(ERROR_FILE) +endef + +# Warning message +define SanityWarning +$(ECHO) "WARNING: $1\n" >> $(WARNING_FILE) +endef + +# Official version error message: name version required_version +define OfficialErrorMessage +$(call SanityError,\ +$(THE_OFFICIAL_USES) $1 $3. Your $1 $(if $2,undefined,$2) will not work.) +endef + +# Official version warning message: name version required_version +define OfficialWarningMessage +$(call SanityWarning,\ +$(THE_OFFICIAL_USES) $1 $3. $(YOU_ARE_USING) $1 $2.) +endef + + # Settings and rules to validate the JDK build environment. ifeq ($(PLATFORM), solaris) FREE_SPACE := $(shell $(DF) -b $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$2;}') TEMP_FREE_SPACE := $(shell $(DF) -b $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$2;}') + # What kind of system we are using (Variations are Solaris and OpenSolaris) + OS_VERSION := $(shell uname -r) + OS_VARIANT_NAME := $(strip $(shell head -1 /etc/release | awk '{print $$1;}') ) + OS_VARIANT_VERSION := $(OS_VERSION) REQ_PATCH_LIST = $(JDK_TOPDIR)/make/PatchList.solaris ifeq ($(ARCH_FAMILY), sparc) PATCH_POSITION = $$4 else PATCH_POSITION = $$6 endif + ifndef OPENJDK + _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 ) + GCC_VER :=$(call GetVersion,"$(_GCC_VER)") + endif endif ifeq ($(PLATFORM), linux) FREE_SPACE := $(shell $(DF) --sync -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}') TEMP_FREE_SPACE := $(shell $(DF) --sync -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}') - ifeq ($(ARCH), amd64) - LINUX_VERSION := $(shell \ - if [ -r "$(LINUX_VERSION_INFO)" ] ; then \ - $(CAT) $(LINUX_VERSION_INFO) | $(TAIL) -1 | $(NAWK) '{ print $$3; }';\ - else \ - $(ECHO) "Unknown linux"; \ - fi ) - else - LINUX_VERSION := $(shell \ - if [ -r "$(LINUX_VERSION_INFO)" ] ; then \ - $(NAWK) '{ print $$4" "$$5; }' $(LINUX_VERSION_INFO) ; \ - else \ - $(ECHO) "Unknown linux"; \ - fi ) - endif - ifneq ($(ARCH), ia64) - # dummy program that outputs ALSA's version (created in target sane-alsa-versioncheck) - ALSA_VERSION_CHECK = $(TEMPDIR)/alsaversioncheck - ALSA_VERSION = `if [ -f "$(ALSA_VERSION_CHECK)" ] ; then $(ALSA_VERSION_CHECK) ; fi` - endif + # What kind of system we are using (Variation is the Linux vendor) + OS_VERSION := $(shell uname -r) + OS_VARIANT_NAME := $(shell \ + if [ -f /etc/fedora-release ] ; then \ + echo "Fedora"; \ + elif [ -f /etc/redhat-release ] ; then \ + echo "RedHat"; \ + elif [ -f /etc/SuSE-release ] ; then \ + echo "SuSE"; \ + else \ + echo "Unknown"; \ + fi) + OS_VARIANT_VERSION := $(shell \ + if [ "$(OS_VARIANT_NAME)" = "Fedora" ] ; then \ + $(CAT) /etc/fedora-release | $(HEAD) -1 | $(NAWK) '{ print $$3; }' ; \ + fi) + ALSA_INCLUDE=/usr/include/alsa/version.h + ALSA_LIBRARY=/usr/lib/libasound.so + _ALSA_VERSION := $(shell $(EGREP) SND_LIB_VERSION_STR $(ALSA_INCLUDE) | \ + $(SED) -e 's@.*\"\(.*\)\".*@\1@' ) + ALSA_VERSION := $(call GetVersion,$(_ALSA_VERSION)) endif ifeq ($(PLATFORM), windows) FREE_SPACE := $(shell $(DF) -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}') TEMP_FREE_SPACE := $(shell $(DF) -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}') - # Localized systeminfo has localized labels, but not localized values. - _WINDOWS_VERSION := \ - $(shell systeminfo 2> $(DEV_NULL) | grep 'Microsoft' | grep 'Windows' | \ - cut -d':' -f2) - ifeq ($(_WINDOWS_VERSION),) - _WINDOWS_VERSION := Windows 2000 or Unknown (no systeminfo utility) + # Windows 2000 is 5.0, Windows XP is 5.1, Windows 2003 is 5.2 + # Assume 5.0 (Windows 2000) if systeminfo does not help + WINDOWS_MAPPING-5.0 := Windows2000 + WINDOWS_MAPPING-5.1 := WindowsXP + WINDOWS_MAPPING-5.2 := Windows2003 + # What kind of system we are using (Variation is the common name) + _OS_VERSION := \ + $(shell systeminfo 2> $(DEV_NULL) | \ + egrep '^OS Version:' | \ + awk '{print $$3;}' ) + ifeq ($(_OS_VERSION),) + OS_VERSION = 5.0 + else + OS_VERSION = $(_OS_VERSION) + endif + OS_VARIANT_NAME := $(WINDOWS_MAPPING-$(OS_VERSION)) + OS_VARIANT_VERSION := $(OS_VERSION) + ifdef USING_CYGWIN + # CYGWIN version + _CYGWIN_VER := $(SYSTEM_UNAME) + CYGWIN_VER :=$(call GetVersion,$(_CYGWIN_VER)) endif - WINDOWS_VERSION := $(strip $(_WINDOWS_VERSION)) DXSDK_VER := $(shell $(EGREP) DIRECT3D_VERSION $(DXSDK_INCLUDE_PATH)/d3d9.h 2>&1 | \ $(EGREP) "\#define" | $(NAWK) '{print $$3}') endif @@ -106,7 +152,6 @@ ZIP_VER :=$(call GetVersion,"$(_ZIP_VER)") UNZIP_VER :=$(call GetVersion,"$(_UNZIP_VER)") BOOT_VER :=$(call GetVersion,"$(_BOOT_VER)") -REQUIRED_ANT_VER := 1.6.3 _ANT_VER:=$(shell $(ANT) -version 2>&1 ) ANT_VER:=$(call GetVersion,"$(_ANT_VER)") @@ -167,7 +212,6 @@ include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk sane-compiler \ sane-link \ sane-cacerts \ - sane-alsa-versioncheck \ sane-alsa-headers \ sane-ant_version \ sane-zip_version \ @@ -239,35 +283,29 @@ sane-arch_data_model: # generate a fatal sanity error, and a warning about the official # build platform just becomes clutter. ###################################################### -OS_CHECK :=$(call CheckVersions,$(OS_VERSION),$(REQUIRED_OS_VERSION)) +ifndef OPENJDK + OS_VERSION_CHECK := \ + $(call CheckVersions,$(OS_VERSION),$(REQUIRED_OS_VERSION)) + ifeq ($(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME)) + OS_VARIANT_VERSION_CHECK := \ + $(call CheckVersions,$(OS_VARIANT_VERSION),$(REQUIRED_OS_VARIANT_VERSION)) + endif +endif sane-os_version:: sane-arch_data_model sane-memory_check sane-locale sane-os_patch_level ifndef OPENJDK - @if [ "$(OS_CHECK)" = "missing" ]; then \ - $(ECHO) "ERROR: The $(PLATFORM) OS version is undefined (Try: uname -r). \n" \ - "" >> $(ERROR_FILE) ; \ - fi - @if [ "$(OS_CHECK)" != "same" ]; then \ - $(ECHO) "WARNING: $(THE_OFFICIAL_USES) OS version $(REQUIRED_OS_VERSION). \n" \ - " $(YOU_ARE_USING) OS version $(OS_VERSION). \n" \ - "" >> $(WARNING_FILE) ; \ - fi - ifeq ($(PLATFORM), windows) - @if [ "$(findstring $(REQUIRED_WINDOWS_VERSION),$(WINDOWS_VERSION))" = "" ]; then \ - $(ECHO) "WARNING: $(YOU_ARE_USING) an unknown version of Windows. \n" \ - " The required version is $(REQUIRED_WINDOWS_VERSION). \n" \ - " $(YOU_ARE_USING) $(WINDOWS_VERSION) \n" \ - "" >> $(WARNING_FILE) ; \ - fi - endif # windows - ifeq ($(PLATFORM), linux) - @if [ `$(ECHO) "$(LINUX_VERSION)" | $(EGREP) -c '$(REQUIRED_LINUX_VER)'` -ne 1 ]; then \ - $(ECHO) "WARNING: The build is being done on Linux $(LINUX_VERSION). \n" \ - " $(THE_OFFICIAL_USES) Linux $(REQUIRED_LINUX_VER), \n" \ - " specifically Linux $(REQUIRED_LINUX_FULLVER). \n" \ - " The version found was '$(OS_VERSION)'. \n" \ - "" >> $(WARNING_FILE) ; \ - fi - endif # linux + ifneq ($(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME)) + ifeq ($(OS_VERSION_CHECK),missing) + @$(call OfficialErrorMessage,OS version,$(OS_VERSION),$(REQUIRED_OS_VERSION)) + endif + ifneq ($(OS_VERSION_CHECK),same) + @$(call OfficialWarningMessage,OS version,$(OS_VERSION),$(REQUIRED_OS_VERSION)) + endif + @$(call OfficialWarningMessage,OS variant,$(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME)) + else + ifneq ($(OS_VARIANT_VERSION_CHECK),same) + @$(call OfficialWarningMessage,$(OS_VARIANT_NAME) version,$(OS_VARIANT_VERSION),$(REQUIRED_OS_VARIANT_VERSION)) + endif + endif endif # OPENJDK ifeq ($(PLATFORM), windows) @@ -308,16 +346,12 @@ ifeq ($(PLATFORM), windows) CYGWIN_CHECK :=$(call CheckVersions,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER)) sane-cygwin: ifdef USING_CYGWIN - @if [ "$(CYGWIN_CHECK)" = "missing" ]; then \ - $(ECHO) "ERROR: The CYGWIN version is undefined. \n" \ - " $(THE_OFFICIAL_USES) CYGWIN $(REQUIRED_CYGWIN_VER). \n" \ - "" >> $(ERROR_FILE) ; \ - fi - @if [ "$(CYGWIN_CHECK)" = "older" ]; then \ - $(ECHO) "ERROR: The build cannot be done on CYGWIN $(CYGWIN_VER). \n" \ - " Use CYGWIN $(REQUIRED_CYGWIN_VER) or higher. \n" \ - "" >> $(ERROR_FILE) ; \ - fi + ifeq ($(CYGWIN_CHECK),missing) + @$(call OfficialErrorMessage,CYGWIN version,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER)) + endif + ifeq ($(CYGWIN_CHECK),older) + @$(call OfficialWarningMessage,CYGWIN version,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER)) + endif endif endif @@ -345,16 +379,12 @@ ifeq ($(PLATFORM), windows) MKS_CHECK :=$(call CheckVersions,$(MKS_VER),$(REQUIRED_MKS_VER)) sane-mks: ifndef USING_CYGWIN - @if [ "$(MKS_CHECK)" = "missing" ]; then \ - $(ECHO) "ERROR: The MKS version is undefined. \n" \ - " $(THE_OFFICIAL_USES) MKS $(REQUIRED_MKS_VER). \n" \ - "" >> $(ERROR_FILE) ; \ - fi - @if [ "$(MKS_CHECK)" = "older" ]; then \ - $(ECHO) "ERROR: The build cannot be done on MKS $(MKS_VER). \n" \ - " Use MKS $(REQUIRED_MKS_VER) or higher. \n" \ - "" >> $(ERROR_FILE) ; \ - fi + ifeq ($(MKS_CHECK),missing) + @$(call OfficialErrorMessage,MKS version,$(MKS_VER),$(REQUIRED_MKS_VER)) + endif + ifeq ($(MKS_CHECK),older) + @$(call OfficialErrorMessage,MKS version,$(MKS_VER),$(REQUIRED_MKS_VER)) + endif endif endif @@ -1295,11 +1325,6 @@ endif # Check the compiler version(s) ###################################################### CC_CHECK :=$(call CheckVersions,$(CC_VER),$(REQUIRED_CC_VER)) -ifeq ($(PLATFORM), solaris) - ifeq ($(ARCH_DATA_MODEL), 32) - GCC_CHECK :=$(call CheckVersions,$(GCC_VER),$(REQUIRED_GCC_VER)) - endif -endif sane-compiler: sane-link @if [ "$(CC_CHECK)" = "missing" ]; then \ $(ECHO) "ERROR: The Compiler version is undefined. \n" \ @@ -1314,16 +1339,6 @@ ifndef OPENJDK " $(COMPILER_PATH) \n" \ "" >> $(WARNING_FILE) ; \ fi - ifdef GCC_CHECK - @if [ "$(GCC_CHECK)" != "same" ]; then \ - $(ECHO) "WARNING: The $(PLATFORM) GCC compiler must be version $(REQUIRED_GCC_VER) \n" \ - " $(YOU_ARE_USING) compiler version: $(GCC_VER) \n" \ - " The compiler was obtained from the following location: \n" \ - " $(GCC_COMPILER_PATH) \n" \ - " Please change your compiler. \n" \ - "" >> $(WARNING_FILE) ; \ - fi - endif ifeq ($(PLATFORM), windows) ifeq ($(ARCH_DATA_MODEL), 64) ifneq ($(COMPILER_VERSION), VS2005) @@ -1337,39 +1352,24 @@ endif ###################################################### # Check that ALSA headers and libs are installed and # that the header has the right version. We only -# need /usr/include/alsa/*.h and /usr/lib/libasound.so +# need /usr/include/alsa/version.h and /usr/lib/libasound.so ###################################################### -ifdef ALSA_VERSION_CHECK -$(ALSA_VERSION_CHECK): $(ALSA_VERSION_CHECK).c - @$(prep-target) - @$(CC) -lasound -o $@ $< - -$(ALSA_VERSION_CHECK).c: - @$(prep-target) - @$(ECHO) "#include \n" \ - "#include \n" \ - "int main(int argc, char** argv) {\n" \ - " printf(\"%s\", SND_LIB_VERSION_STR);\n" \ - " return 0;\n" \ - "}\n" \ - > $@ +ifdef REQUIRED_ALSA_VERSION + ALSA_CHECK := $(call CheckVersions,$(ALSA_VERSION),$(REQUIRED_ALSA_VERSION)) endif - -sane-alsa-versioncheck: $(ALSA_VERSION_CHECK) -sane-alsa-headers: sane-alsa-versioncheck -ifdef ALSA_VERSION_CHECK - @if [ -f "$(ALSA_VERSION_CHECK)" ]; then \ - if [ `$(ALSA_VERSION_CHECK) | $(EGREP) -c '$(REQUIRED_ALSA_VERSION)'` -ne 1 ] ; then \ - $(ECHO) "ERROR: The ALSA version must be 0.9.1 or higher. \n" \ - " You have the following ALSA version installed: $(ALSA_VERSION) \n" \ +sane-alsa-headers: +ifdef REQUIRED_ALSA_VERSION + if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer" ] ; then \ + $(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \ + " You have the following ALSA version installed: $${alsa_version) \n" \ " Please reinstall ALSA (drivers and lib). You can download \n" \ " the source distribution from http://www.alsa-project.org \n" \ " or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \ "" >> $(ERROR_FILE) ; \ fi \ else \ - $(ECHO) "ERROR: You seem to not have installed ALSA 0.9.1 or higher. \n" \ + $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \ " Please install ALSA (drivers and lib). You can download the \n" \ " source distribution from http://www.alsa-project.org or go to \n" \ " http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \ @@ -1384,7 +1384,7 @@ $(SANITY_FILES): ###################################################### # dump out the variable settings... ###################################################### -sane-settings:: sane-alsa-versioncheck +sane-settings:: @$(ECHO) >> $(MESSAGE_FILE) @$(ECHO) $(ALL_SETTINGS) >> $(MESSAGE_FILE) @$(ECHO) >> $(MESSAGE_FILE) @@ -1453,8 +1453,8 @@ sane-gcc-compiler: ifeq ($(PLATFORM), solaris) ifndef OPENJDK @if [ -r $(GCC_COMPILER_PATH) ]; then \ - if [ ! "$(GCC_VER)" = 2.95.2 ]; then \ - $(ECHO) "ERROR: The Solaris GCC compiler version must be 2.95.2. \n" \ + if [ ! "$(GCC_VER)" = $(REQUIRED_GCC_VERSION) ]; then \ + $(ECHO) "ERROR: The Solaris GCC compiler version must be $(REQUIRED_GCC_VERSION). \n" \ " You are using the following compiler version: $(GCC_VER) \n" \ " The compiler was obtained from the following location: \n" \ " $(GCC_COMPILER_PATH) \n" \