diff -r fd16c54261b3 -r 90ce3da70b43 jdk/make/common/shared/Sanity.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/common/shared/Sanity.gmk Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,1633 @@ +# +# Copyright 2005-2007 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. +# + +# +# Shared sanity rules for the JDK builds. +# + +.SUFFIXES: .hdiffs + +# All files created during sanity checking + +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 + +# How to say "You are using:" +YOU_ARE_USING=You appear to be using + +# 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;}') + REQ_PATCH_LIST = $(JDK_TOPDIR)/make/PatchList.solaris + ifeq ($(ARCH_FAMILY), sparc) + PATCH_POSITION = $$4 + else + PATCH_POSITION = $$6 + 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 +endif + +ifeq ($(PLATFORM), windows) + WINVER=$(JDK_TOPDIR)/make/tools/winver/bin/winver.exe + FREE_SPACE := $(shell $(DF) -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}') + TEMP_FREE_SPACE := $(shell $(DF) -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}') + WINDOWS_VERSION := $(shell \ + if [ -x $(WINVER) ]; then \ + $(WINVER) ; \ + else \ + $(ECHO) "Unknown Windows Version"; \ + fi) + DXSDK_VER := $(shell $(EGREP) DIRECTDRAW_VERSION $(DXSDK_INCLUDE_PATH)/ddraw.h 2>&1 | \ + $(EGREP) "\#define" | $(NAWK) '{print $$3}') +endif + +# Get the version numbers of what we are using +_MAKE_VER :=$(shell $(MAKE) --version 2>&1 | $(HEAD) -n 1) +_ZIP_VER :=$(shell $(ZIPEXE) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^Zip') +_UNZIP_VER :=$(shell $(UNZIP) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^UnZip') +_BOOT_VER :=$(shell $(BOOTDIR)/bin/java -version 2>&1 | $(HEAD) -n 1) +MAKE_VER :=$(call GetVersion,"$(_MAKE_VER)") +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)") + +REQUIRED_FINDBUGS_VER := 1.1 +_FINDBUGS_VER :=$(shell $(FINDBUGS) -version 2>&1 ) +FINDBUGS_VER :=$(call GetVersion,"$(_FINDBUGS_VER)") + +ifdef ALT_BINDIR + ALT_BINDIR_VERSION := $(shell $(ALT_BINDIR)/java$(EXE_SUFFIX) -version 2>&1 | $(NAWK) -F'"' '{ print $$2 }') + ALT_BINDIR_OK := $(shell $(ECHO) $(ALT_BINDIR_VERSION) | $(EGREP) -c '^$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION)') +endif + +INSTALL_PATCHES_FILE = $(TEMPDIR)/installed.patches + +# Get ALL_SETTINGS defined +include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk + +.PHONY: \ + sane-copyrightyear\ + sane-settings \ + sane-insane \ + sane-build_number \ + sane-os_version \ + sane-memory_check \ + sane-windows \ + sane-locale \ + sane-linux \ + sane-cygwin \ + sane-cygwin-shell \ + sane-mks \ + sane-arch_data_model \ + sane-os_patch_level \ + sane-classpath \ + sane-java_home \ + sane-fonts \ + sane-binary-plugs \ + sane-variant \ + sane-ld_library_path \ + sane-ld_library_path_64 \ + sane-ld_options \ + sane-ld_run_path \ + sane-makeflags \ + sane-alt_outputdir \ + sane-outputdir \ + sane-alt_bootdir \ + sane-bootdir \ + sane-cups \ + sane-devtools_path \ + sane-compiler_path \ + sane-unixcommand_path \ + sane-usrbin_path \ + sane-unixccs_path \ + sane-docs_import \ + sane-math_iso \ + sane-libCrun \ + sane-odbcdir \ + sane-msdevtools_path \ + sane-hotspot_binaries \ + sane-hotspot_import \ + sane-hotspot_import_dir \ + sane-hotspot_import_include \ + sane-compiler \ + sane-link \ + sane-cacerts \ + sane-alsa-versioncheck \ + sane-alsa-headers \ + sane-ant_version \ + sane-findbugs_version \ + sane-zip_version \ + sane-unzip_version \ + sane-msvcrt_path \ + sane-freetype + +###################################################### +# check for COPYRIGHT_YEAR variable +###################################################### +sane-copyrightyear: +ifdef ALT_COPYRIGHT_YEAR + @$(ECHO) "WARNING: ALT_COPYRIGHT_YEAR but not the current year\n" \ + " will be used for copyright year.\n " \ + "" >>$(WARNING_FILE) +endif + +###################################################### +# check for INSANE variable +###################################################### +sane-insane: +ifdef INSANE + @$(ECHO) "WARNING: You are building in 'INSANE' mode. You \n" \ + " should not use this mode, and in fact, \n" \ + " it may be removed at any time. If you \n" \ + " have build problems as a result of using \n" \ + " INSANE mode, then you should not expect \n" \ + " assistance from anyone with the problems \n" \ + " or consequences you experience. \n" \ + "" >> $(WARNING_FILE) +endif + +###################################################### +# check for GNU Make version +###################################################### +MAKE_CHECK :=$(call CheckVersions,$(MAKE_VER),$(REQUIRED_MAKE_VER)) +sane-make: + @if [ "$(MAKE_CHECK)" != "same" -a "$(MAKE_CHECK)" != "newer" ]; then \ + $(ECHO) "WARNING: The version of make being used is older than \n" \ + " the required version of '$(REQUIRED_MAKE_VER)'. \n" \ + " The version of make found was '$(MAKE_VER)'. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check the BUILD_NUMBER to make sure it contains bNN +###################################################### +sane-build_number: + @if [ "`$(ECHO) $(BUILD_NUMBER) | $(SED) 's@.*b[0-9][0-9]*.*@bNN@'`" != "bNN" ] ; then \ + $(ECHO) "WARNING: The BUILD_NUMBER needs to contain b[0-9][0-9]*. Currently BUILD_NUMBER=$(BUILD_NUMBER). \n" \ + " This has been known to cause build failures. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check the ARCH_DATA_MODEL setting +###################################################### +sane-arch_data_model: + @if [ "$(ARCH_DATA_MODEL)" != 32 -a "$(ARCH_DATA_MODEL)" != 64 ]; then \ + $(ECHO) "ERROR: The setting of ARCH_DATA_MODEL must be 32 or 64.\n" \ + " $(YOU_ARE_USING) ARCH_DATA_MODEL=$(ARCH_DATA_MODEL). \n" \ + "" >> $(ERROR_FILE) ; \ + fi + +###################################################### +# Check the OS version (windows and linus have release name checks) +# NOTE: OPENJDK explicitly does not check for OS release information. +# Unless we know for sure that it will not build somewhere, we cannot +# 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)) +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 [ "$(WINDOWS_VERSION)" != "$(REQUIRED_WINDOWS_VERSION)" ]; then \ + $(ECHO) "WARNING: $(YOU_ARE_USING) an unsupported version of $(REQUIRED_WINDOWS_NAME). \n" \ + " The supported version is $(REQUIRED_WINDOWS_NAME) $(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 +endif # OPENJDK + +ifeq ($(PLATFORM), windows) + sane-os_version:: sane-cygwin sane-mks sane-cygwin-shell +endif + +###################################################### +# Check the memory available on this machine +###################################################### +sane-memory_check: + @if [ "$(LOW_MEMORY_MACHINE)" = "true" ]; then \ + $(ECHO) "WARNING: This machine appears to only have $(MB_OF_MEMORY)Mb of physical memory, \n" \ + " builds on this machine could be slow. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check the locale (value of LC_ALL, not being empty or ==C can be a problem) +###################################################### +sane-locale: +ifneq ($(PLATFORM), windows) + @if [ "$(LC_ALL)" != "" -a "$(LC_ALL)" != "C" ]; then \ + $(ECHO) "WARNING: LC_ALL has been set to $(LC_ALL), this can cause build failures. \n" \ + " Try setting LC_ALL to \"C\". \n" \ + "" >> $(WARNING_FILE) ; \ + fi + @if [ "$(LANG)" != "" -a "$(LANG)" != "C" ]; then \ + $(ECHO) "WARNING: LANG has been set to $(LANG), this can cause build failures. \n" \ + " Try setting LANG to \"C\". \n" \ + "" >> $(WARNING_FILE) ; \ + fi +endif + +###################################################### +# Check the Windows cygwin version +###################################################### +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 + endif +endif + +###################################################### +# Check the cygwin shell is used, not cmd.exe +###################################################### +ifeq ($(PLATFORM), windows) +sane-cygwin-shell: + ifdef USING_CYGWIN + @if [ "$(SHLVL)" = "" -a "$(_)" = "" ]; then \ + $(ECHO) "ERROR: You are using an unsupported shell. \n" \ + " Use either sh, bash, ksh, zsh, or tcsh. \n" \ + " Using the cmd.exe utility is not supported. \n" \ + " If you still want to try your current shell, \n" \ + " please export SHLVL=1 when running $(MAKE). \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif +endif + +###################################################### +# Check the Windows mks version +###################################################### +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 + endif +endif + +###################################################### +# Get list of installed patches (this file has a particular format) +###################################################### +$(INSTALL_PATCHES_FILE): + @$(prep-target) +ifeq ($(PLATFORM), solaris) + ifeq ($(OS_VERSION),$(REQUIRED_OS_VERSION)) + $(SHOWREV) -p > $@ 2>&1 + endif +endif + @$(ECHO) "" >> $@ + +###################################################### +# Check list of Solaris patches +###################################################### +sane-os_patch_level: $(INSTALL_PATCHES_FILE) +ifeq ($(PLATFORM), solaris) + ifeq ($(OS_VERSION),$(REQUIRED_OS_VERSION)) + @$(NAWK) 'BEGIN { \ + readingInstallPatches = 0; \ + requiredCount = 0; \ + installCount = 0; \ +} \ +{ \ + if (readingInstallPatches) { \ + if ($$1=="Patch:") { \ + ns = split($$2,parts,"-"); \ + installPatchNo[installCount]=parts[1]; \ + installPatchRev[installCount]=parts[2]; \ + installCount++; \ + } \ + } \ + \ + if (!readingInstallPatches) { \ + if (index($$1,"#") != 0) continue; \ + if (match($$1,"BUILD") > 0 \ + && $$2 == $(OS_VERSION) \ + && ($$7 == "REQ" || $$7 == "req") \ + && $(PATCH_POSITION) != "none" \ + && $(PATCH_POSITION) != "NONE") { \ + ns = split($(PATCH_POSITION),parts,"-"); \ + requiredPatchNo[requiredCount]=parts[1]; \ + requiredPatchRev[requiredCount]=parts[2]; \ + requiredCount++; \ + } \ + } \ +} \ +END { \ + errorCount=0; \ + for (i=0; i= requiredPatchRev[i]) { \ + foundMatch = 1; \ + break; \ + } \ + } \ + if ( foundMatch == 0) { \ + printf("WARNING: Your solaris install is missing the required patch %s-%s\n", requiredPatchNo[i], requiredPatchRev[i] ); \ + printf(" Please update your your system patches or build on a different machine.\n\n" ); \ + errorCount++; \ + } \ + } \ +}' $(REQ_PATCH_LIST) readingInstallPatches=1 $(INSTALL_PATCHES_FILE) >> $(WARNING_FILE) + endif +endif # PLATFORM + +###################################################### +# CLASSPATH cannot be set, unless you are insane. +###################################################### +sane-classpath: +ifdef CLASSPATH + @$(ECHO) "ERROR: Your CLASSPATH environment variable is set. This will \n" \ + " most likely cause the build to fail. Please unset it \n" \ + " and start your build again. \n" \ + "" >> $(ERROR_FILE) +endif + +###################################################### +# JAVA_HOME cannot be set, unless you are insane. +###################################################### +sane-java_home: +ifdef JAVA_HOME + @$(ECHO) "ERROR: Your JAVA_HOME environment variable is set. This will \n" \ + " most likely cause the build to fail. Please unset it \n" \ + " and start your build again. \n" \ + "" >> $(ERROR_FILE) +endif + +###################################################### +# Make sure the fonts are there +# Exceptions are when explicitly building OPENJDK, or +# when the entire CLOSED_SRC dir is excluded, so we are +# implicitly building OPENJDK +###################################################### +FONT_FILE=$(CLOSED_SRC)/share/lib/fonts/LucidaTypewriterRegular.ttf +sane-fonts: +ifndef OPENJDK + @if [ -d $(CLOSED_SRC) ] ; then \ + if [ ! -f $(FONT_FILE) ] ; then \ + $(ECHO) "ERROR: Missing $(FONT_FILE). \n" \ + " Verify you have downloaded and overlayed on the source area all the binary files. \n" \ + "" >> $(ERROR_FILE); \ + fi \ + fi +endif + +###################################################### +# If building OPENJDK check pre-built binaries are +# available for binary plug source components. +###################################################### +ifdef OPENJDK +sane-binary-plugs: + @if [ ! -d "$(BINARY_PLUGS_PATH)" ]; then \ + $(ECHO) "ERROR: Can't locate pre-built libraries. \n" \ + " Please check your access to \n" \ + " $(BINARY_PLUGS_PATH) \n" \ + " and/or check your value of ALT_BINARY_PLUGS_PATH. \n" \ + "" >> $(ERROR_FILE); \ + fi +endif + +###################################################### +# VARIANT must be set to DBG or OPT +###################################################### +sane-variant: + @if [ "$(VARIANT)" != DBG -a "$(VARIANT)" != OPT ] ; then \ + $(ECHO) "ERROR: Your VARIANT environment variable is set to $(VARIANT). \n" \ + " Needs to be set to DBG or OPT \n" \ + "" >> $(ERROR_FILE); \ + fi + +###################################################### +# LD_LIBRARY_PATH should not be set, unless you are insane. +###################################################### +sane-ld_library_path: +ifdef LD_LIBRARY_PATH + @$(ECHO) "ERROR: Your LD_LIBRARY_PATH environment variable is set. This may \n" \ + " produce binaries binaries incorrectly. Please unset it \n" \ + " and start your build again. \n" \ + "" >> $(ERROR_FILE) +endif + +###################################################### +# LD_LIBRARY_PATH_64 should not be set, unless you are insane. +###################################################### +sane-ld_library_path_64: +ifdef LD_LIBRARY_PATH_64 + @$(ECHO) "ERROR: Your LD_LIBRARY_PATH_64 environment variable is set. This may \n" \ + " produce binaries binaries incorrectly. Please unset it \n" \ + " and start your build again. \n" \ + "" >> $(ERROR_FILE) +endif + +###################################################### +# LD_OPTIONS should not be set, unless you are insane. +###################################################### +sane-ld_options: +ifdef LD_OPTIONS + @$(ECHO) "ERROR: Your LD_OPTIONS environment variable is set. This may \n" \ + " produce binaries binaries incorrectly. Please unset it \n" \ + " and start your build again. \n" \ + "" >> $(ERROR_FILE) +endif + +###################################################### +# LD_RUN_PATH should not be set, unless you are insane. +###################################################### +sane-ld_run_path: +ifdef LD_RUN_PATH + @$(ECHO) "ERROR: Your LD_RUN_PATH environment variable is set. This may \n" \ + " produce binaries binaries incorrectly. Please unset it \n" \ + " produce binaries binaries incorrectly. Please unset it \n" \ + " and start your build again. \n" \ + "" >> $(ERROR_FILE) +endif + +###################################################### +# MAKEFLAGS cannot be set, unless you are insane. +###################################################### +ifeq ($(PLATFORM), windows) +ifdef USING_CYGWIN +REAL_MAKEFLAGS:=$(subst --unix,,$(MAKEFLAGS)) +else +REAL_MAKEFLAGS:=$(MAKEFLAGS) +endif +else +REAL_MAKEFLAGS:=$(MAKEFLAGS) +endif +sane-makeflags: +# ifneq ($(strip $(REAL_MAKEFLAGS)),) +ifeq ($(origin MAKEFLAGS),environment) + @# + @# it is unacceptable to have the-e or --environment-overrides value in MAKEFLAGS + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(e|--environment-overrides)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -e or \n" \ + " --environment-overrides, or the MAKEFLAGS environment \n" \ + " variable has this value set. This will cause any \n" \ + " environment variables you have defined to override \n" \ + " the values defined by the makefiles. This practice is \n" \ + " not recommemded by the authors of GNU Make, and \n" \ + " will lead to an improper build. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# it is unacceptable to havethe -i or --ignore-errors value in MAKEFLAGS + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(i|--ignore-errors)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -i or \n" \ + " --ignore-errors, or the MAKEFLAGS environment \n" \ + " variable has this value set. 1111 You will be unable \n" \ + " to determine if the build is broken or not. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# it is unacceptable to have the -I or --include-dir value in MAKEFLAGS + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(I|--include-dir)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -I or \n" \ + " --include-dir, or the MAKEFLAGS environment \n" \ + " variable has this value set. This will render your \n" \ + " build questionable as not all the rules and depenencies \n" \ + " are captured by the build. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# it is unacceptable to have the -k or --keep-going value in MAKEFLAGS: + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(k|--keep-going)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -k or \n" \ + " --keep-going, or the MAKEFLAGS environment \n" \ + " variable has this value set. 222 You will be unable \n" \ + " to determine if the build is broken or not. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# it is unacceptable to have the -o or --assume-old or --old-filevalue in MAKEFLAGS: + @# Note - this rule never gets invoked because it is processed out + @# in GNU Make startup + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(o|--assume-old|--old-file)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -o or \n" \ + " --assume-old or --old-file, or the MAKEFLAGS environment \n" \ + " variable has this value set. This could prevent the \n" \ + " build from executing rules it should, thus rendering a \n" \ + " questionable result. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# it is unacceptable to have the -r or --nobuiltin-rules value in MAKEFLAGS + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(r|--no-builtin-rules)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -r or \n" \ + " --no-builtin-rules, or the MAKEFLAGS environment \n" \ + " variable has this value set. This may break the build \n" \ + " by not allowing builtin rules that may be required. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# it is unacceptable to have the -t or --touch value in MAKEFLAGS + @# Note - this rule never gets invoked because it is processed out + @# in GNU Make startup + @# + @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(t|--touch)( |$$)'` -ne 0 ]; then \ + $(ECHO) "ERROR: Either the build was started with the flag -t or \n" \ + " --touch, or the MAKEFLAGS environment \n" \ + " variable has this value set. This will leave the \n" \ + " build in a unclear state and could lead to not executing \n" \ + " rules which should be executed. \n" \ + " Please fix and restart the build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# show what is in MAKEFLAGS so the user is aware... + @# + @$(ECHO) "WARNING: Your MAKEFLAGS environment variable is set. \n" \ + " You should be very careful about the values set here. \n" \ + "\n" \ + " MAKEFLAGS is set to =>$(MAKEFLAGS)<= \n" \ + "" >> $(WARNING_FILE) +endif + +###################################################### +# if specified, ALT_OUTPUTDIR must point to non-relative path if set +###################################################### +sane-alt_outputdir: +ifdef ALT_OUTPUTDIR + @if [ `$(ECHO) $(subst \,/,$(ALT_OUTPUTDIR)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \ + $(ECHO) "ERROR: ALT_OUTPUTDIR must be an Absolute Path Name, \n" \ + " not a Relative Path Name. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + ifeq ($(PLATFORM), windows) + @if [ `$(ECHO) $(subst \,/,$(ALT_OUTPUTDIR)) | $(EGREP) -ci '^([a-z]:)'` -ne 1 ]; then \ + $(ECHO) "ERROR: On windows, ALT_OUTPUTDIR must contain the drive letter. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif +endif + +###################################################### +# OUTPUTDIR tests +###################################################### +sane-outputdir: + @# + @# OUTPUTDIR must be a directory... + @# + @if [ ! -d "$(OUTPUTDIR)" ]; then \ + $(ECHO) "ERROR: OUTPUTDIR must be an existing directory. The current \n" \ + " value of OUTPUTDIR is \n" \ + " $(OUTPUTDIR) \n" \ + " Please check your value of ALT_OUTPUTDIR. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# OUTPUTDIR must be writeable by user... + @# + @if [ ! -w "$(OUTPUTDIR)" ]; then \ + $(ECHO) "ERROR: You must have write permissions to OUTPUTDIR. The \n" \ + " current value of OUTPUTDIR is \n" \ + " $(OUTPUTDIR) \n" \ + " Either obtain these permissions or set ALT_OUTPUTDIR. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# OUTPUTDIR must have enough free space... + @# + @if [ $(FREE_SPACE) -lt $(REQUIRED_FREE_SPACE) ]; then \ + $(ECHO) "WARNING: You may not have enough free space in your OUTPUTDIR. The \n" \ + " current value of OUTPUTDIR is \n" \ + " $(OUTPUTDIR) \n" \ + " You need "$(REQUIRED_FREE_SPACE)" Kbytes free on this device to build \n" \ + " and it appears that only "$(FREE_SPACE)" Kbytes are free. \n" \ + " Either obtain more space or set ALT_OUTPUTDIR to a larger disk. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# if specified, ALT_BOOTDIR must point to non-relative path if set +###################################################### +sane-alt_bootdir: +ifdef ALT_BOOTDIR + @if [ `$(ECHO) $(subst \,/,$(ALT_BOOTDIR)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \ + $(ECHO) "ERROR: ALT_BOOTDIR must be an Absolute Path Name, \n" \ + " not a Relative Path Name. \n" \ + " The current value of ALT_BOOTDIR is \n" \ + " $(ALT_BOOTDIR) \n" \ + " Please fix this and continue your build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# BOOTDIR must point to a valid JDK. +###################################################### +BOOT_CHECK :=$(call CheckVersions,$(BOOT_VER),$(REQUIRED_BOOT_VER)) +sane-bootdir: + @if [ "$(BOOT_CHECK)" != "same" -a "$(BOOT_CHECK)" != "newer" ]; then \ + $(ECHO) "ERROR: Your BOOTDIR environment variable does not point \n" \ + " to a valid JDK for bootstrapping this build. \n" \ + " A JDK $(JDK_MINOR_VERSION) $(MARKET_NAME) build must be bootstrapped using \n" \ + " JDK $(PREVIOUS_JDK_VERSION) fcs (or later). \n" \ + " Apparently, your bootstrap JDK is version $(BOOT_VER) \n" \ + " Please update your ALT_BOOTDIR setting and start your build again. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + +###################################################### +# CACERTS_FILE must be absoulte path and readable +###################################################### +sane-cacerts: + ifdef ALT_CACERTS_FILE + @if [ `$(ECHO) $(subst \,/,$(ALT_CACERTS_FILE)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \ + $(ECHO) "ERROR: ALT_CACERTS_FILE must be an Absolute Path Name, \n" \ + " not a Relative Path Name. \n" \ + " The current value of ALT_CACERTS_FILE is \n" \ + " $(ALT_CACERTS_FILE) \n" \ + " Please fix this and continue your build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif + @# + @# CACERTS_FILE must be readable + @# + @if [ ! -r "$(subst \,/,$(CACERTS_FILE))" ]; then \ + $(ECHO) "ERROR: You do not have access to a valid cacerts file. \n" \ + " Please check your access to \n" \ + " $(subst \,/,$(CACERTS_FILE)) \n" \ + " and/or check your value of ALT_CACERTS_FILE. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# CACERTS_FILE must be a file + @# + @if [ -d "$(subst \,/,$(CACERTS_FILE))" ]; then \ + $(ECHO) "ERROR: You do not have access to a valid cacerts file.\n" \ + " The value of CACERTS_FILE must point to a normal file.\n" \ + " Please check your access to \n" \ + " $(subst \,/,$(CACERTS_FILE)) \n" \ + " and/or check your value of ALT_CACERTS_FILE. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + + +###################################################### +# Check for availability of FreeType (OpenJDK specific) +###################################################### + +ifdef OPENJDK + +#name of test program that prints out "Failed" if freetype is not good enough +FREETYPE_VERSION_CHECK_NAME = freetype_versioncheck +FREETYPE_VERSION_CHECK = $(TEMPDIR)/$(FREETYPE_VERSION_CHECK_NAME)$(EXE_SUFFIX) + +sane-freetype: + @-($(CD) $(BUILDDIR)/tools/freetypecheck && \ + $(MAKE) REQUIRED_FREETYPE_VERSION=$(REQUIRED_FREETYPE_VERSION) \ + FT_TEST=$(FREETYPE_VERSION_CHECK_NAME) \ + FT_HEADERS=$(FREETYPE_HEADERS_PATH) \ + FT_LIB=$(FREETYPE_LIB_PATH) \ + XARCH=$(XARCH)) + @if [ ! -r $(FREETYPE_VERSION_CHECK) -o \ + "`$(FREETYPE_VERSION_CHECK) | $(GREP) Fail`" != "" ]; then \ + $(ECHO) "ERROR: FreeType version " $(REQUIRED_FREETYPE_VERSION) \ + "or higher is required. \n" >> $(ERROR_FILE) ; \ + fi + +else +#do nothing (not OpenJDK) +sane-freetype: +endif + +###################################################### +# CUPS_HEADERS_PATH must be valid +###################################################### +sane-cups: +ifneq ($(PLATFORM), windows) + @if [ ! -r $(CUPS_HEADERS_PATH)/cups/cups.h ]; then \ + $(ECHO) "ERROR: You do not have access to valid Cups header files. \n" \ + " Please check your access to \n" \ + " $(CUPS_HEADERS_PATH)/cups/cups.h \n" \ + " and/or check your value of ALT_CUPS_HEADERS_PATH, \n" \ + " CUPS is frequently pre-installed on many systems, \n" \ + " or may be downloaded from http://www.cups.org \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Check for existence of DEVTOOLS_PATH +###################################################### +sane-devtools_path: + @if [ "$(DEVTOOLS_PATH)" != "" -a ! -r "$(DEVTOOLS_PATH)" ]; then \ + $(ECHO) "ERROR: You do not have a valid DEVTOOLS_PATH setting. \n" \ + " Please check your access to \n" \ + " $(DEVTOOLS_PATH) \n" \ + " and/or check your value of ALT_DEVTOOLS_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + +###################################################### +# Check for existence of MS_RUNTIME_LIBRARIES +###################################################### +sane-msvcrt_path: +ifeq ($(PLATFORM), windows) + @if [ ! -r "$(MSVCRT_DLL_PATH)/msvcrt.dll" ]; then \ + $(ECHO) "ERROR: You do not have access to msvcrt.dll. \n" \ + " Please check your access to \n" \ + " $(MSVCRT_DLL_PATH) \n" \ + " and/or check your value of ALT_MSVCRT_DLL_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + ifeq ($(ARCH_DATA_MODEL), 32) + ifeq ($(COMPILER_VERSION), VS2003) + @if [ ! -r "$(MSVCR71_DLL_PATH)/msvcr71.dll" ]; then \ + $(ECHO) "ERROR: You do not have access to msvcr71.dll. \n" \ + " Please check your access to \n" \ + " $(MSVCR71_DLL_PATH) \n" \ + " and/or check your value of ALT_MSVCR71_DLL_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif + endif +endif + +###################################################### +# Check for existence of COMPILER_PATH +###################################################### +sane-compiler_path: + @if [ "$(COMPILER_PATH)" != "" -a ! -r "$(COMPILER_PATH)" ]; then \ + $(ECHO) "ERROR: You do not have a valid COMPILER_PATH setting. \n" \ + " Please check your access to \n" \ + " $(COMPILER_PATH) \n" \ + " and/or check your value of ALT_COMPILER_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + +###################################################### +# Check for existence of UNIXCOMMAND_PATH +###################################################### +sane-unixcommand_path: + @if [ "$(UNIXCOMMAND_PATH)" != "" -a ! -r "$(UNIXCOMMAND_PATH)" ]; then \ + $(ECHO) "ERROR: You do not have a valid UNIXCOMMAND_PATH setting. \n" \ + " Please check your access to \n" \ + " $(UNIXCOMMAND_PATH) \n" \ + " and/or check your value of ALT_UNIXCOMMAND_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +ifeq ($(PLATFORM), windows) + @for utility in cpio ar file m4 ; do \ + if [ ! -r "`$(WHICH) $${utility}`" ]; then \ + $(ECHO) "WARNING: You do not have the utility $${utility} in the \n" \ + " directory $(UNIXCOMMAND_PATH). \n" \ + " The utilities cpio, ar, file, and m4 are required. \n" \ + "" >> $(WARNING_FILE) ; \ + fi; \ + done +endif + +###################################################### +# Check for existence of USRBIN_PATH on linux +###################################################### +sane-usrbin_path: +ifeq ($(PLATFORM), linux) + @if [ "$(USRBIN_PATH)" != "" -a ! -r "$(USRBIN_PATH)" ]; then \ + $(ECHO) "ERROR: You do not have a valid USRBIN_PATH setting. \n" \ + " Please check your access to \n" \ + " $(USRBIN_PATH) \n" \ + " and/or check your value of ALT_USRBIN_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Check for existence of UNIXCCS_PATH on solaris +###################################################### +sane-unixccs_path: +ifeq ($(PLATFORM), solaris) + @if [ "$(UNIXCCS_PATH)" != "" -a ! -r "$(UNIXCCS_PATH)" ]; then \ + $(ECHO) "ERROR: You do not have a valid UNIXCCS_PATH setting. \n" \ + " Please check your access to \n" \ + " $(UNIXCCS_PATH) \n" \ + " and/or check your value of ALT_UNIXCCS_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Verify the docs directory exists +###################################################### +sane-docs_import: + @if [ ! -d "$(HOTSPOT_DOCS_IMPORT_PATH)" ]; then \ + $(ECHO) "WARNING: The directory HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_DOCS_IMPORT_PATH) \n" \ + " does not exist, check your value of ALT_HOTSPOT_DOCS_IMPORT_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check for possible problem regarding __fabsf, math_iso.h and the libm patch. +# Hotspot should have been changed in Mustang 6.0 Build 47 to not depend +# on __fabsf, this is just checking that fact now. +###################################################### +sane-math_iso: +ifeq ($(PLATFORM), solaris) + @if [ -f $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \ + if [ "`$(NM) $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) | $(GREP) __fabsf`" != "" ]; then \ + $(ECHO) "WARNING: This version of hotspot relies on __fabsf \n" \ + " which is not always available on Solaris 8 and 9 machines \n" \ + " unless they have the latest libm patch and the file \n" \ + " /usr/include/iso/math_iso.h which can trigger this dependency.\n" \ + " Hotspot should NOT be dependent on this extern, check the \n" \ + " version of the hotspot library you are using. \n" \ + "" >> $(WARNING_FILE) ; \ + fi; \ + fi +endif + +###################################################### +# Check for possible patch problem regarding /usr/lib/libCrun.so +###################################################### +sane-libCrun: +ifeq ($(PLATFORM), solaris) + @if [ "`$(NM) /usr/lib/libCrun.so.1 | $(GREP) __1c2n6FIpv_0_`" = "" ]; then \ + $(ECHO) "WARNING: The file /usr/lib/libCrun.so.1 is missing the extern \n" \ + " __1c2n6FIpv_0_ which indicates that the system is missing \n" \ + " a required Solaris patch, or you are using a pre-FCS release \n" \ + " of Solaris 10. You need the latest /usr/lib/libCrun.so.1 \n" \ + " which comes with the FCS release of Solaris 10 and available \n" \ + " through the latest Solaris 8 or 9 C++ runtime patches. \n" \ + "" >> $(WARNING_FILE) ; \ + fi +endif + +###################################################### +# Check for existence of MSDEVTOOLS_PATH on windows +###################################################### +sane-msdevtools_path: +ifeq ($(PLATFORM), windows) + @if [ "$(MSDEVTOOLS_PATH)" != "" -a ! -r "$(MSDEVTOOLS_PATH)" ]; then \ + $(ECHO) "ERROR: You do not have a valid MSDEVTOOLS_PATH setting. \n" \ + " Please check your access to \n" \ + " $(MSDEVTOOLS_PATH) \n" \ + " and/or check your value of ALT_MSDEVTOOLS_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Check for existence of Hotspot binaries +###################################################### +sane-hotspot_binaries: +ifeq ($(ARCH_DATA_MODEL), 32) + @if [ ! -r $(HOTSPOT_CLIENT_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \ + $(ECHO) "ERROR: HOTSPOT_CLIENT_PATH does not point to a valid HotSpot VM. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_CLIENT_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) \n" \ + " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + @if [ ! -r $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \ + $(ECHO) "ERROR: HOTSPOT_SERVER_PATH does not point to a valid HotSpot VM. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) \n" \ + " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# Check value of HOTSPOT_LIB_PATH + @# +ifeq ($(PLATFORM), windows) + @if [ ! -r $(HOTSPOT_LIB_PATH)/jvm.lib ]; then \ + $(ECHO) "ERROR: HOTSPOT_LIB_PATH does not point to a valid HotSpot library. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_LIB_PATH)/jvm.lib \n" \ + " and/or check your value of ALT_HOTSPOT_LIB_PATH. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @# + @# Check for the .map files - its OK if they are not there.. + @# + ifeq ($(ARCH_DATA_MODEL), 32) + @# There is no 64-bit HotSpot client VM + @if [ ! -r $(HOTSPOT_CLIENT_PATH)/jvm.map ]; then \ + $(ECHO) "WARNING: HOTSPOT_CLIENT_PATH does not point to valid HotSpot .map files. \n" \ + " These files are optional and aid in the debugging of the JVM. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_CLIENT_PATH)/jvm.map \n" \ + " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + @if [ ! -r $(HOTSPOT_CLIENT_PATH)/jvm.pdb ]; then \ + $(ECHO) "WARNING: HOTSPOT_CLIENT_PATH does not point to valid HotSpot .pdb files. \n" \ + " These files are optional and aid in the debugging of the JVM. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_CLIENT_PATH)/jvm.pdb \n" \ + " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + endif + @if [ ! -r $(HOTSPOT_SERVER_PATH)/jvm.map ]; then \ + $(ECHO) "WARNING: HOTSPOT_SERVER_PATH does not point to valid HotSpot .map files. \n" \ + " These files are optional and aid in the debugging of the JVM. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_SERVER_PATH)/jvm.map \n" \ + " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + @if [ ! -r $(HOTSPOT_SERVER_PATH)/jvm.pdb ]; then \ + $(ECHO) "WARNING: HOTSPOT_SERVER_PATH does not point to valid HotSpot .pdb files. \n" \ + " These files are optional and aid in the debugging of the JVM. \n" \ + " Please check your access to \n" \ + " $(HOTSPOT_SERVER_PATH)/jvm.pdb \n" \ + " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + fi +endif + + +###################################################### +# Check for existence of misc Hotspot imported files +###################################################### +HOTSPOT_INCLUDE_FILE_LIST = jvmti.h +#HOTSPOT_INCLUDE_FILE_LIST += jni.h jni_md.h +#HOTSPOT_INCLUDE_FILE_LIST += jvm.h jvm_md.h +#HOTSPOT_INCLUDE_FILE_LIST += jmm.h +TMP_SDK_INCLUDE_FILE_LIST=$(HOTSPOT_INCLUDE_FILE_LIST:%.h=$(TEMPDIR)/%.h) +TMP_SDK_INCLUDE_FILE_DIFFS=$(HOTSPOT_INCLUDE_FILE_LIST:%.h=$(TEMPDIR)/%.hdiffs) + +# These include files must have a pattern: 'version: MAJOR.MINOR.MICRO' +# where MACRO, MINOR, and MICRO are numbers, e.g. 1.0.1, 0.2.90, etc. +# The critical version we are checking is MAJOR.MINOR, we print all three +# when we detect an error. + +TMP_SDK_INCLUDE_FIND_VERSION= $(EGREP) 'version:' +TMP_SDK_INCLUDE_GET_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \ + $(SED) -e 's@.*\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9].*@\1@' +TMP_SDK_INCLUDE_GET_FULL_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \ + $(SED) -e 's@.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*@\1@' + +# Compare an interface file (Rule creates 2 temp files: %.h and %.h.IMPORT) +# Files jvm.h, jvm_md.h and jmm.h are special in that they are not publicly +# exported but do represent VM interfaces used by the rest of the jdk. +# So these 3 will not be found in a promoted build and can only +# be checked when this represents a full control build (i.e. the +# HOTSPOT_IMPORT_PATH includes these files in it's 'include' directory). +$(TEMPDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h + @$(install-file) + @$(RM) $@.IMPORT + @if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(@F) ]; then \ + $(CP) $(HOTSPOT_IMPORT_PATH)/include/$(@F) $@.IMPORT ; \ + elif [ "$(@F)" != "jvm.h" -a "$(@F)" != "jmm.h" ] ; then \ + $(ECHO) "WARNING: HOTSPOT_IMPORT_PATH does not contain the interface file $(@F). \n" \ + " Check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + $(CP) $< $@.IMPORT; \ + else \ + $(CP) $< $@.IMPORT; \ + fi + +$(TEMPDIR)/%.h: $(PLATFORM_SRC)/javavm/export/%.h + @$(install-file) + @$(RM) $@.IMPORT + @if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) ]; then \ + $(CP) $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) $@.IMPORT ; \ + elif [ "$(@F)" != "jvm_md.h" ] ; then \ + $(ECHO) "WARNING: HOTSPOT_IMPORT_PATH does not contain the interface file $(@F). \n" \ + " Check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + $(CP) $< $@.IMPORT; \ + else \ + $(CP) $< $@.IMPORT; \ + fi + +# Compares the two tempfiles: %.h and %.h.IMPORT, answer in %.hdiffs +# Note: Putting anything into the hdiffs file will trigger generic IMPORT +# warning message in hotspot_import_include. +# First checks the major.minor versions, the micro number can differ. +# Second checks the full version. +# Lastly does a full diff if the full version differs or it has no version +$(TEMPDIR)/%.hdiffs: $(TEMPDIR)/%.h + @$(prep-target) + @$(TOUCH) $@ + @if [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_GET_VERSION)`" != \ + "`$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_VERSION)`" ] ; then \ + $(ECHO) "WARNING: The file $(> $(WARNING_FILE) ; \ + $(ECHO) "Version mis-match" > $@ ; \ + fi + @if [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)`" != \ + "`$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)`" ] ; then \ + $(RM) $<.filtered $<.IMPORT.filtered; \ + $(EGREP) -v 'VERSION' $< > $<.filtered; \ + $(EGREP) -v 'VERSION' $<.IMPORT > $<.IMPORT.filtered; \ + ($(DIFF) -w $<.filtered $<.IMPORT.filtered || exit 0) >> $@ ; \ + elif [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_FIND_VERSION)`" = "" ] ; then \ + $(RM) $<.filtered $<.IMPORT.filtered; \ + $(EGREP) -v '@\(#\)' $< > $<.filtered; \ + $(EGREP) -v '@\(#\)' $<.IMPORT > $<.IMPORT.filtered; \ + ($(DIFF) -w $<.filtered $<.IMPORT.filtered || exit 0) >> $@ ; \ + fi + +# Verify all imported hotspot files +sane-hotspot_import:: sane-hotspot_import_dir sane-hotspot_import_include + +# Verify the base directory exists +sane-hotspot_import_dir: + @$(RM) $(TMP_SDK_INCLUDE_FILE_DIFFS) + @$(RM) $(TMP_SDK_INCLUDE_FILE_LIST) + @if [ ! -d "$(HOTSPOT_IMPORT_PATH)" ]; then \ + $(ECHO) "WARNING: The directory HOTSPOT_IMPORT_PATH=$(HOTSPOT_IMPORT_PATH) \n" \ + " does not exist, check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +# Verify hotspot include files +sane-hotspot_import_include: $(TMP_SDK_INCLUDE_FILE_LIST) $(TMP_SDK_INCLUDE_FILE_DIFFS) + @if [ "`$(CAT) $(TMP_SDK_INCLUDE_FILE_DIFFS)`" != "" ] ; then \ + $(ECHO) "WARNING: Possible HotSpot VM interface conflict. \n" \ + " HOTSPOT_IMPORT_PATH is used to import files from the VM build. \n" \ + " It is also used to verify that any copied files are consistent between \n" \ + " these two components. It has been detected that one or more of the \n" \ + " VM interface files inside this workspace may not match the interfaces \n" \ + " exported by the VM, or the VM versions could not be found. \n" \ + " The list of VM interface files is: \n" \ + " $(HOTSPOT_INCLUDE_FILE_LIST). \n" \ + " This workspace has copies of these files at: \n" \ + " $(SHARE_SRC)/javavm/export and $(PLATFORM_SRC)/javavm/export \n" \ + " for build purposes, and they should contain the same interfaces \n" \ + " as the VM versions imported from: \n" \ + " \$$(HOTSPOT_IMPORT_PATH)/include \n" \ + " (i.e. $(HOTSPOT_IMPORT_PATH)/include) \n" \ + " If an interface indeed doesn't match, then the use of this interface \n" \ + " at JDK runtime could cause serious errors. \n" \ + "" >> $(WARNING_FILE) ; \ + for i in $(TMP_SDK_INCLUDE_FILE_DIFFS); do \ + if [ -s $$i ] ; then \ + $(ECHO) " " >> $(WARNING_FILE); \ + $(ECHO) "VM Interface Differences: $$i" >> $(WARNING_FILE); \ + $(CAT) $$i >> $(WARNING_FILE); \ + $(ECHO) " " >> $(WARNING_FILE); \ + fi; \ + done; \ + fi + @$(RM) $(TMP_SDK_INCLUDE_FILE_DIFFS) + @$(RM) $(TMP_SDK_INCLUDE_FILE_LIST) + +# The JDI-SA feature is not currently released on some platforms. +# See the Defs-.gmk files. + +ifeq ($(INCLUDE_SA), true) +# Verify that hotspot Serviceability Agent files are present. To keep +# it simple, we will just check for one of them. The others have arch +# dependent paths. + +sane-hotspot_import:: + @if [ ! -r $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar ] ; then \ + $(ECHO) "WARNING: File $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar does not exist.\n" \ + " The JDI binding for the Serviceability Agent will not be included in the build.\n" \ + " Please check your access to\n" \ + " $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar\n" \ + " and/or check your value of ALT_HOTSPOT_IMPORT_PATH.\n" \ + "" >> $(WARNING_FILE) ; \ + fi +endif + +###################################################### +# Check the ant version +###################################################### +ANT_CHECK :=$(call CheckVersions,$(ANT_VER),$(REQUIRED_ANT_VER)) +sane-ant_version: + @if [ "$(ANT_CHECK)" != "same" \ + -a "$(ANT_CHECK)" != "newer" ]; then \ + $(ECHO) "WARNING: The version of ant being used is older than \n" \ + " the required version of '$(REQUIRED_ANT_VER)'. \n" \ + " The version of ant found was '$(ANT_VER)'. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check the findbugs version +###################################################### +FINDBUGS_CHECK :=$(call CheckVersions,$(FINDBUGS_VER),$(REQUIRED_FINDBUGS_VER)) +sane-findbugs_version: + @if [ "$(FINDBUGS_CHECK)" != "same" \ + -a "$(FINDBUGS_CHECK)" != "newer" ]; then \ + $(ECHO) "WARNING: The version of findbugs being used is older than \n" \ + " the required version of '$(REQUIRED_FINDBUGS_VER)'. \n" \ + " The version of findbugs found was '$(FINDBUGS_VER)'. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check the zip file version +###################################################### +ZIP_CHECK :=$(call CheckVersions,$(ZIP_VER),$(REQUIRED_ZIP_VER)) +sane-zip_version: sane-unzip_version + @if [ "$(ZIP_CHECK)" != "same" -a "$(ZIP_CHECK)" != "newer" ]; then \ + $(ECHO) "WARNING: The version of zip being used is older than \n" \ + " the required version of '$(REQUIRED_ZIP_VER)'. \n" \ + " The version of zip found was '$(ZIP_VER)'. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check the unzip file version +###################################################### +UNZIP_CHECK :=$(call CheckVersions,$(UNZIP_VER),$(REQUIRED_UNZIP_VER)) +sane-unzip_version: + @if [ "$(UNZIP_CHECK)" != "same" -a "$(UNZIP_CHECK)" != "newer" ]; then \ + $(ECHO) "WARNING: The version of unzip being used is older than \n" \ + " the required version of '$(REQUIRED_UNZIP_VER)'. \n" \ + " The version of unzip found was '$(UNZIP_VER)'. \n" \ + "" >> $(WARNING_FILE) ; \ + fi + +###################################################### +# Check for windows DirectX sdk directory +###################################################### +sane-dxsdk: +ifeq ($(PLATFORM), windows) + @if [ ! -r $(DXSDK_INCLUDE_PATH)/ddraw.h ]; then \ + $(ECHO) "ERROR: You do not have access to a valid DirectX SDK Include dir.\n" \ + " The value of DXSDK_INCLUDE_PATH must point a valid DX SDK dir.\n" \ + " Please check your access to \n" \ + " $(DXSDK_INCLUDE_PATH) \n" \ + " and/or check your value of ALT_DXSDK_PATH or ALT_DXSDK_INCLUDE_PATH.\n" \ + " Microsoft DirectX 9 SDK (Summer 2004 Update or newer) can be downloaded from the following location:\n" \ + " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \ + " Or http://www.microsoft.com/directx\n" \ + "" >> $(ERROR_FILE) ; \ + else \ + if [ ! "$(DXSDK_VER)" = "$(REQUIRED_DXSDK_VER)" ]; then \ + $(ECHO) "ERROR: The DirectX SDK must be version $(REQUIRED_DXSDK_VER).\n" \ + " $(YOU_ARE_USING) DirectX SDK version: $(DXSDK_VER)\n" \ + " The DirectX SDK was obtained from the following location: \n" \ + " $(DXSDK_PATH) \n" \ + " Please change your DirectX SDK. \n" \ + " Microsoft DirectX 9 SDK (Summer 2004 Update or newer) can be downloaded from the following location:\n" \ + " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \ + " Or http://www.microsoft.com/directx\n" \ + "" >> $(ERROR_FILE) ; \ + else \ + if [ -r $(DXSDK_INCLUDE_PATH)/basetsd.h ]; then \ + if [ `$(EGREP) -c __int3264 $(DXSDK_INCLUDE_PATH)/basetsd.h` -ne 0 ]; then \ + $(ECHO) "WARNING: The DirectX SDK Include directory contains a newer basetsd.h,\n" \ + " which may indicate that you're using an incorrect version of DirectX SDK.\n" \ + " This may result in a build failure.\n" \ + " The DirectX SDK Include dir was obtained from the following location:\n" \ + " $(DXSDK_INCLUDE_PATH) \n" \ + " Please change your DirectX SDK to version 7 or 9 (Summer 2004 Update or newer).\n" \ + " Microsoft DirectX 9 SDK can be downloaded from the following location:\n" \ + " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \ + " Or http://www.microsoft.com/directx\n" \ + "" >> $(WARNING_FILE) ; \ + fi \ + fi \ + fi \ + fi +endif + +###################################################### +# Check the linker version(s) +###################################################### +ifeq ($(PLATFORM), windows) + LINK_CHECK :=$(call CheckVersions,$(LINK_VER),$(REQUIRED_LINK_VER)) +endif +sane-link: +ifdef LINK_VER + @if [ "$(LINK_CHECK)" = "missing" ]; then \ + $(ECHO) "ERROR: The Linker version is undefined. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + @if [ "$(LINK_CHECK)" != "same" ]; then \ + $(ECHO) "WARNING: To build Java 2 SDK $(JDK_VERSION) you need : \n" \ + " $(COMPILER_VERSION) - link.exe version \"$(REQUIRED_LINK_VER)\" \n" \ + " Specifically the $(COMPILER_NAME) link.exe. \n " \ + " $(YOU_ARE_USING) Linker version \"$(LINK_VER)\" \n" \ + "" >> $(WARNING_FILE) ; \ + fi +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" \ + "" >> $(ERROR_FILE) ; \ + fi +ifndef OPENJDK + @if [ "$(CC_CHECK)" != "same" ]; then \ + $(ECHO) "WARNING: The $(PLATFORM) compiler is not version $(COMPILER_VERSION) $(REQUIRED_CC_VER) \n" \ + " Specifically the $(COMPILER_NAME) $(CC_TYPE) compiler. \n " \ + " $(YOU_ARE_USING) compiler version: $(CC_VER) \n" \ + " The compiler was obtained from the following location: \n" \ + " $(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) + @$(ECHO) "WARNING: Should be using VS2005 compiler on 64bit platform. \n" \ + "" >> $(WARNING_FILE) + endif + endif + endif +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 +###################################################### + +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" \ + "int main(char** argv, int argc) {\n" \ + " printf(\"%s\", SND_LIB_VERSION_STR);\n" \ + " return 0;\n" \ + "}\n" \ + > $@ +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" \ + " 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" \ + " 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" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +# If a sanity file doesn't exist, just make sure it's dir exists +$(SANITY_FILES): + -@$(prep-target) + +###################################################### +# dump out the variable settings... +###################################################### +sane-settings:: sane-alsa-versioncheck + @$(ECHO) >> $(MESSAGE_FILE) + @$(ECHO) $(ALL_SETTINGS) >> $(MESSAGE_FILE) + @$(ECHO) >> $(MESSAGE_FILE) + +###################################################### +# Check for existence of DEPLOY_MSSDK on windows +###################################################### +sane-mssdk_path: +ifeq ($(PLATFORM), windows) + @if [ -z "$(DEPLOY_MSSDK)" ]; then \ + $(ECHO) "WARNING: Your DEPLOY_MSSDK setting is empty.\n" \ + " It is recommended to set ALT_DEPLOY_MSSDK.\n" \ + "" >> $(WARNING_FILE) ; \ + fi + @if [ ! -r "$(DEPLOY_MSSDK)" ]; then \ + $(ECHO) "ERROR: You do not have a valid DEPLOY_MSSDK setting. \n" \ + " Please check your access to \n" \ + " $(DEPLOY_MSSDK) \n" \ + " and/or check your value of ALT_DEPLOY_MSSDK. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Check for existence of INSTALL_MSSDK on windows +###################################################### +sane-install-mssdk_path: +ifeq ($(PLATFORM), windows) + @if [ -z "$(INSTALL_MSSDK)" ]; then \ + $(ECHO) "WARNING: Your INSTALL_MSSDK setting is empty.\n" \ + " It is recommended to set ALT_INSTALL_MSSDK.\n" \ + "" >> $(WARNING_FILE) ; \ + fi + @if [ ! -r "$(INSTALL_MSSDK)" ]; then \ + $(ECHO) "ERROR: You do not have a valid INSTALL_MSSDK setting. \n" \ + " Please check your access to \n" \ + " $(INSTALL_MSSDK) \n" \ + " and/or check your value of ALT_INSTALL_MSSDK. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Check for existence of INSTALL_MSIVAL2 on windows +###################################################### +sane-install-msival2_path: +ifeq ($(PLATFORM), windows) + @if [ -z "$(INSTALL_MSIVAL2)" ]; then \ + $(ECHO) "WARNING: Your INSTALL_MSIVAL2 setting is empty.\n" \ + " It is recommended to set ALT_INSTALL_MSIVAL2.\n" \ + "" >> $(WARNING_FILE) ; \ + fi + @if [ ! -r "$(INSTALL_MSIVAL2)" ]; then \ + $(ECHO) "ERROR: You do not have a valid INSTALL_MSIVAL2 setting. \n" \ + " Please check your access to \n" \ + " $(INSTALL_MSIVAL2) \n" \ + " and/or check your value of ALT_INSTALL_MSIVAL2. \n" \ + "" >> $(ERROR_FILE) ; \ + fi +endif + +###################################################### +# Check the Solaris GNU c++ compiler for solaris plugin +###################################################### +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" \ + " You are using the following compiler version: $(GCC_VER) \n" \ + " The compiler was obtained from the following location: \n" \ + " $(GCC_COMPILER_PATH) \n" \ + " Please change your compiler. \n" \ + "" >> $(ERROR_FILE) ; \ + fi \ + else \ + $(ECHO) "ERROR: You do not have a valid GCC_COMPILER_PATH setting. \n" \ + " Please check your access to \n" \ + " $(GCC_COMPILER_PATH) \n" \ + " and/or check your value of ALT_GCC_COMPILER_PATH. \n" \ + " This will affect you if you build the plugin target. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif + + ifeq ($(PLATFORM), linux) + ifdef ALT_GCC29_COMPILER_PATH + @if [ ! -x $(ALT_GCC29_COMPILER_PATH)/bin/gcc ]; then \ + $(ECHO) "ERROR: You do not have a valid ALT_GCC29_COMPILER_PATH setting. \n" \ + " Please check your access to \n" \ + " $(ALT_GCC29_COMPILER_PATH)/bin/gcc \n" \ + " This will affect you if you build the plugin target. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif + ifdef ALT_GCC29_PLUGIN_LIB_PATH + @if [ ! -r $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so ]; then \ + $(ECHO) "Error: You do not have a valid ALT_GCC29_PLUGIN_LIB_PATH setting. \n" \ + " Please check your access to \n" \ + " $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so \n" \ + " This will affect you if you build the plugin target, specifically for gcc 2.9 version of OJI plugin library. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + else + @if [ ! -r $(GCC29_COMPILER_PATH) ]; then \ + $(ECHO) "ERROR: You do not have a valid GCC29_COMPILER_PATH setting. \n" \ + " Please check your access to \n" \ + " $(GCC29_COMPILER_PATH) \n" \ + " and/or check your value of ALT_GCC29_COMPILER_PATH. \n" \ + " This will affect you if you build the plugin target. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif + endif +endif + + +###################################################### +# MOZILLA_HEADERS_PATH must be valid +###################################################### +sane-mozilla: +ifeq ($(ARCH_DATA_MODEL), 32) + ifdef ALT_MOZILLA_HEADERS_PATH + @if [ `$(ECHO) $(subst \,/,$(ALT_MOZILLA_HEADERS_PATH)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \ + $(ECHO) "ERROR: ALT_MOZILLA_HEADERS_PATH must be an Absolute Path Name, \n" \ + " not a Relative Path Name. \n" \ + " The current value of ALT_MOZILLA_HEADERS_PATH is \n" \ + " $(ALT_MOZILLA_HEADERS_PATH) \n" \ + " Please fix this and continue your build. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif + @# + @# MOZILLA_HEADERS_PATH must be valid.... + @# + ifeq ($(PLATFORM), windows) + @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18.win32/java/bool.h ]; then \ + $(ECHO) "ERROR: You do not have access to valid Mozilla header files. \n" \ + " Please check your access to \n" \ + " $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18.win32/java/bool.h \n" \ + " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \ + " and on Windows, ALT_JDK_JAVA_DRIVE. \n" \ + "" >> $(ERROR_FILE) ; \ + fi + else + @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18/java/bool.h ]; then \ + $(ECHO) "ERROR: You do not have access to valid Mozilla header files. \n" \ + " Please check your access to \n" \ + " $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18/java/bool.h \n" \ + " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \ + "" >> $(ERROR_FILE) ; \ + fi + endif +endif + + +###################################################### +# SECURITY_BASELINE_142 test +###################################################### +security_baseline_142: +ifeq ($(PLATFORM), windows) + @if [ -z "$(SECURITY_BASELINE_142)" ]; then \ + $(ECHO) "WARNING: Your SECURITY_BASELINE_142 setting is empty.\n" \ + " Setting it to the default value of 1.4.2_10.\n" \ + " It is recommended to set SECURITY_BASELINE_142.\n" \ + "" >> $(WARNING_FILE) ; \ + fi +endif + +###################################################### +# SECURITY_BASELINE_150 test +###################################################### +security_baseline_150: +ifeq ($(PLATFORM), windows) + @if [ -z "$(SECURITY_BASELINE_150)" ]; then \ + $(ECHO) "WARNING: Your SECURITY_BASELINE_150 setting is empty.\n" \ + " Setting it to the default value of 1.5.0_07.\n" \ + " It is recommended to set SECURITY_BASELINE_150.\n" \ + "" >> $(WARNING_FILE) ; \ + fi +endif + + +###################################################### +# this should be the last rule in any target's sanity rule. +###################################################### +sane-lastrule: +ifndef EXTERNALSANITYCONTROL + @if [ -r $(MESSAGE_FILE) ]; then \ + $(CAT) $(MESSAGE_FILE) ; \ + fi + @if [ -r $(WARNING_FILE) ]; then \ + $(CAT) $(WARNING_FILE) ; \ + fi + @if [ "x$(INSANE)" != x ]; then \ + $(ECHO) "INSANE mode requested. \n" \ + "Sanity will not force a build termination, even with errors.\n" \ + "" >> $(ERROR_FILE); \ + fi + @if [ -r $(ERROR_FILE) ]; then \ + if [ "x$(INSANE)" = x ]; then \ + $(ECHO) "Exiting because of the above error(s). \n" \ + "">> $(ERROR_FILE); \ + fi ; \ + $(CAT) $(ERROR_FILE) ; \ + if [ "x$(INSANE)" = x ]; then \ + exit 1 ; \ + fi ; \ + fi +ifdef PEDANTIC + @if [ -r $(WARNING_FILE) ]; then \ + $(ECHO) "PEDANTIC mode requested. \n" \ + "Exiting because of the above warning(s). \n" \ + "" >> $(ERROR_FILE); \ + $(CAT) $(ERROR_FILE) ; \ + exit 1 ; \ + fi +endif # PEDANTIC + @if [ ! -r $(ERROR_FILE) ]; then \ + $(ECHO) "Sanity check passed." ; \ + fi +endif # EXTERNALSANITYCONTROL +