6844879: Source distribution should be more robustly built without the security source distribution
Reviewed-by: ohair
## Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.## This code is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License version 2 only, as# published by the Free Software Foundation. Oracle designates this# particular file as subject to the "Classpath" exception as provided# by Oracle in the LICENSE file that accompanied this code.## This code is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License# version 2 for more details (a copy is included in the LICENSE file that# accompanied this code).## You should have received a copy of the GNU General Public License version# 2 along with this work; if not, write to the Free Software Foundation,# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.## Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA# or visit www.oracle.com if you need additional information or have any# questions.### Definitions for all platforms.## Normally the convention is that these alternate definitions of# primary make variables are never defined inside the Makefiles anywhere# but are defined via environment variables or set on the make command# line. So you should never see an ALT_* variable defined in any# makefiles, just used. This is the convention and there are some# exceptions, either mistakes or unusual circumstances.## The naming convention for the default value of one of these variables# that has an ALT_* override capability is to name the default value with a# leading underscore (_). So for XXX you would have:# _XXX default value# ALT_XXX any override the user is providing if any# XXX the final value, either the default _XXX or the ALT_XXX value.## On Directory names. In very rare cases should the Windows directory# names use the backslash, please use the C:/ style of windows paths.# Avoid duplicating the // characters in paths, this has known to cause# strange problems with jar and other utilities, e.g. /a//b/ != /a/b/.# Some of these variables have an explicit trailing / character, but in# general, they should NOT have the trailing / character.# Get shared system utilities macros definedinclude $(JDK_MAKE_SHARED_DIR)/Defs-utils.gmk# Assumes ARCH, PLATFORM, ARCH_VM_SUBDIR, JDK_TOPDIR, etc. have been defined.# Simple pwd path# NOTE: Just use the shell's cd and pwd here, more reliable at sanity time.define PwdPath$(shell cd $1 2> $(DEV_NULL) && pwd)endefdefine AbsPwdPathCheck$(shell cd .. 2> $(DEV_NULL) && cd $1 2> $(DEV_NULL) && pwd)endef# Checks an ALT value for spaces (should be one word), # warns and returns Check_ALT_$1 if spacesdefine AltCheckSpaces$(if $(word 2,$($1)),$(warning "WARNING: Value of $1 contains a space: '$($1)', check or set ALT_$1")Check_ALT_$1,$($1))endef# Checks an ALT value for empty, warns and returns Check_ALT_$1 if emptydefine AltCheckValue$(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, check or set ALT_$1")Check_ALT_$1)endef# Checks any value for empty, warns and returns $2 if emptydefine CheckValue$(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, will use '$2'")$2)endef# Prefix for a utility prefix path, if empty leave alone, otherwise end with a /define PrefixPath$(if $1,$(subst //,/,$1/),)endef# Select a directory if it exists, or the alternate 2 or the alternate 3define DirExists$(shell \ if [ -d "$1" ]; then \ echo "$1"; \ elif [ -d "$2" ]; then \ echo "$2"; \ else \ echo "$3"; \ fi)endef# Select a directory if it exists, or the alternate 2, or the alternate 3, or the alternate 4define DirExists4$(shell \ if [ -d "$1" ]; then \ echo "$1"; \ elif [ -d "$2" ]; then \ echo "$2"; \ elif [ -d "$3" ]; then \ echo "$3"; \ else \ echo "$4"; \ fi)endef# Select a writable directory if it exists and is writable, or the alternatedefine WriteDirExists$(shell \ if [ -d "$1" -a -w "$1" ]; then \ echo "$1"; \ else \ echo "$2"; \ fi)endef# Select a file if it exists, or the alternate 1, or the alternate 2define FileExists$(shell \ if [ -r "$1" ]; then \ echo "$1"; \ elif [ -r "$2" ]; then \ echo "$2"; \ else \ echo "NO_FILE_EXISTS"; \ fi)endef# Given a line of text, get the version number from itdefine GetVersion$(shell echo $1 | sed -e 's@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@' )endef# Return one part of the version numbers, watch out for non digits.define VersionWord # Number Version$(word $1,$(subst ., ,$(subst -, ,$2)))endef# Given a major.minor.micro version, return the major, minor, or micro numberdefine MajorVersion$(if $(call VersionWord,1,$1),$(call VersionWord,1,$1),0)endefdefine MinorVersion$(if $(call VersionWord,2,$1),$(call VersionWord,2,$1),0)endefdefine MicroVersion$(if $(call VersionWord,3,$1),$(call VersionWord,3,$1),0)endef# Macro that returns missing, same, newer, or older $1=version $2=requireddefine 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 \ echo same; \ fi)endef# Make sure certain variables are non-empty at this point_check_values:=\$(call CheckValue,ARCH,),\$(call CheckValue,ARCH_DATA_MODEL,),\$(call CheckValue,ARCH_VM_SUBDIR,),\$(call CheckValue,JDK_TOPDIR,),\$(call CheckValue,JDK_MAKE_SHARED_DIR,),\$(call CheckValue,VARIANT,),\$(call CheckValue,PLATFORM,)# Misc common settings for all workspaces# This determines the version of the product, and the previous version or bootifndef JDK_MAJOR_VERSION JDK_MAJOR_VERSION = 1 PREVIOUS_MAJOR_VERSION = 1endififndef JDK_MINOR_VERSION JDK_MINOR_VERSION = 7 PREVIOUS_MINOR_VERSION = 6endififndef JDK_MICRO_VERSION JDK_MICRO_VERSION = 0 PREVIOUS_MICRO_VERSION = 0endififndef MILESTONE MILESTONE = internalendif# Default namesifdef OPENJDK LAUNCHER_NAME = openjdk PRODUCT_NAME = OpenJDK PRODUCT_SUFFIX = Runtime Environment JDK_RC_PLATFORM_NAME = Platform COMPANY_NAME = N/Aelse LAUNCHER_NAME = java PRODUCT_NAME = Java(TM) PRODUCT_SUFFIX = SE Runtime Environment JDK_RC_PLATFORM_NAME = Platform SE COMPANY_NAME = Oracle CorporationendifRUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)ifndef BUILD_NUMBER JDK_BUILD_NUMBER = b00else ifndef JDK_BUILD_NUMBER JDK_BUILD_NUMBER = $(BUILD_NUMBER) endifendif# Default variant is the optimized version of everything# can be OPT or DBG, default is OPT# Determine the extra pattern to add to the release name for debug/fastdebug.# Determine the JDK_IMPORT_VARIANT, so we get the right VM files copied over.# Determine suffix for obj directory or OBJDIR, for .o files.# (by keeping .o files separate, just .o files, they don't clobber each# other, however, the library files will clobber each other).#ifeq ($(VARIANT), DBG) BUILD_VARIANT_RELEASE=-debug OBJDIRNAME_SUFFIX=_gelse BUILD_VARIANT_RELEASE= OBJDIRNAME_SUFFIX=endififeq ($(FASTDEBUG), true) VARIANT=DBG BUILD_VARIANT_RELEASE=-fastdebug OBJDIRNAME_SUFFIX=_gO _JDK_IMPORT_VARIANT=/fastdebugendif# Depending on the flavor of the build, add a -debug or -fastdebug to the nameifdef DEBUG_NAME BUILD_VARIANT_RELEASE=-$(DEBUG_NAME)endif# These default values are redefined during a release build.# CTE can set JDK_UPDATE_VERSION during the update releaseifdef JDK_UPDATE_VERSION JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)_$(JDK_UPDATE_VERSION) MARKETING_NUMBER := $(shell \ $(ECHO) $(JDK_UPDATE_VERSION) | $(NAWK) '{if (substr($$0,1,1)=="0") print substr($$0, 2); else print $$0;}') MARKET_NAME= $(shell $(ECHO) " Update $(MARKETING_NUMBER)") JDK_MKTG_VERSION = $(JDK_MINOR_VERSION)u$(MARKETING_NUMBER)else JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION) JDK_MKTG_VERSION = $(JDK_MINOR_VERSION) MARKET_NAME=endifJDK_UNDERSCORE_VERSION = $(subst .,_,$(JDK_VERSION))JDK_MKTG_UNDERSCORE_VERSION = $(subst .,_,$(JDK_MKTG_VERSION))# RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is setifneq ($(MILESTONE),fcs) RELEASE = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)else RELEASE = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)endif# FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is setifdef BUILD_NUMBER FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)else BUILD_NUMBER = b00 ifndef USER_RELEASE_SUFFIX BUILD_DATE := $(shell $(DATE) '+%Y_%m_%d_%H_%M') CLEAN_USERNAME := $(shell $(ECHO) "$(USER)" | $(TR) -d -c '[:alnum:]') USER_RELEASE_SUFFIX := $(shell $(ECHO) "$(CLEAN_USERNAME)_$(BUILD_DATE)" | $(TR) '[:upper:]' '[:lower:]' ) endif export USER_RELEASE_SUFFIX FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)endif# Promoted build locationPROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promotedPROMOTED_BUILD_LATEST = latestPROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)PROMOTED_BUILD_DISTDIR = $(PROMOTED_BUILD_BASEDIR)/dist/$(PLATFORM)-$(ARCH)PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries# PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.# If the user sets ALT_PARALLEL_COMPILE_JOBS, then COMPILE_APPROACH is set# to parallel.## Recommended setting: 2 seems to be ideal for single cpu machines,# 2 times the number of CPU's is a basic formula, # but probably not more than 4 if the machine is # being shared by others, or the machine is limited # in RAM or swap.#ifdef ALT_PARALLEL_COMPILE_JOBS PARALLEL_COMPILE_JOBS=$(ALT_PARALLEL_COMPILE_JOBS)else PARALLEL_COMPILE_JOBS=2endif# Previous JDK release (version of BOOTDIR version)ifdef ALT_PREVIOUS_JDK_VERSION PREVIOUS_JDK_VERSION = $(ALT_PREVIOUS_JDK_VERSION)else PREVIOUS_JDK_VERSION = $(PREVIOUS_MAJOR_VERSION).$(PREVIOUS_MINOR_VERSION).$(PREVIOUS_MICRO_VERSION)endifexport PREVIOUS_JDK_VERSIONPREVIOUS_JDK_VERSION:=$(call AltCheckSpaces,PREVIOUS_JDK_VERSION)PREVIOUS_JDK_VERSION:=$(call AltCheckValue,PREVIOUS_JDK_VERSION)# Version with _ instead of . in numberifeq ($(PREVIOUS_MINOR_VERSION),5) PREVIOUS_JDK_UNDERSCORE_VERSION = $(subst .,_,$(PREVIOUS_JDK_VERSION))else PREVIOUS_JDK_UNDERSCORE_VERSION = $(PREVIOUS_MINOR_VERSION)endif# Include any private definitions for this set of workspaces_PRIVATE_DEFS_FILE=$(JDK_MAKE_SHARED_DIR)/PrivateDefs.gmkifeq ($(USING_PRIVATE_DEFS),) USING_PRIVATE_DEFS:=$(shell if [ -f $(_PRIVATE_DEFS_FILE) ]; then echo true; else echo false; fi)endififeq ($(USING_PRIVATE_DEFS),true)dummy:=$(warning "WARNING: Using definitions from $(_PRIVATE_DEFS_FILE)")include $(_PRIVATE_DEFS_FILE)endif# OUTPUTDIR: Location of all output for the buildifdef ALT_OUTPUTDIR OUTPUTDIR:=$(subst \,/,$(ALT_OUTPUTDIR)) # Assumes this is absolute (checks later) ABS_OUTPUTDIR:=$(OUTPUTDIR)else ifndef _OUTPUTDIR # Default: Get "build" parent directory, which should always exist ifndef BUILD_PARENT_DIRECTORY BUILD_PARENT_DIRECTORY=$(BUILDDIR)/.. endif ifdef OPENJDK _OUTPUTDIRNAME=$(PLATFORM)-$(ARCH)$(OPENJDK_SUFFIX) else _OUTPUTDIRNAME=$(PLATFORM)-$(ARCH) endif _OUTPUTDIR=$(BUILD_PARENT_DIRECTORY)/build/$(_OUTPUTDIRNAME) endif OUTPUTDIR:=$(_OUTPUTDIR)endif# Check for spaces and null valueOUTPUTDIR:=$(call AltCheckSpaces,OUTPUTDIR)OUTPUTDIR:=$(call AltCheckValue,OUTPUTDIR)# Get platform specific settings# NB: OUTPUTDIR must be defined. Otherwise hotspot import detection will not work correctly# On other hand this must be included early as it provides platform specific defines such as FullPathinclude $(JDK_MAKE_SHARED_DIR)/Defs-versions.gmk# Get platform specific settings (defines COMPILER_PATH)include $(JDK_MAKE_SHARED_DIR)/Defs-$(PLATFORM).gmk# Componentsifdef ALT_LANGTOOLS_DIST LANGTOOLS_DIST :=$(call FullPath,$(ALT_LANGTOOLS_DIST))else LANGTOOLS_DIST =endififdef ALT_CORBA_DIST CORBA_DIST :=$(call FullPath,$(ALT_CORBA_DIST))else CORBA_DIST =endififdef ALT_JAXP_DIST JAXP_DIST :=$(call FullPath,$(ALT_JAXP_DIST))else JAXP_DIST =endififdef ALT_JAXWS_DIST JAXWS_DIST :=$(call FullPath,$(ALT_JAXWS_DIST))else JAXWS_DIST =endif# HOTSPOT_DOCS_IMPORT_PATH: Path to hotspot docs files to import into the docs generationifdef ALT_HOTSPOT_DOCS_IMPORT_PATH HOTSPOT_DOCS_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_DOCS_IMPORT_PATH))else HOTSPOT_DOCS_IMPORT_PATH :=$(call DirExists,$(HOTSPOT_IMPORT_PATH)/docs,$(PROMOTED_BUILD_BASEDIR)/docs,/NO_DOCS_DIR)endif# These are the same on all platforms but require the above platform include 1st# BOOTDIR: Bootstrap JDK, previous released JDK.# _BOOTDIR1 and _BOOTDIR2 picked by platform# Platform may optionally define _BOOTDIR3 as well.ifdef ALT_BOOTDIR BOOTDIR =$(ALT_BOOTDIR)else ifdef _BOOTDIR3 BOOTDIR :=$(call DirExists4,$(_BOOTDIR1),$(_BOOTDIR2),$(_BOOTDIR3),/NO_BOOTDIR) else BOOTDIR :=$(call DirExists,$(_BOOTDIR1),$(_BOOTDIR2),/NO_BOOTDIR) endifendifexport BOOTDIRBOOTDIR:=$(call AltCheckSpaces,BOOTDIR)BOOTDIR:=$(call AltCheckValue,BOOTDIR)# PREVIOUS_FCS_RE_AREA: re path to where previous release binaries/bundles arePREVIOUS_FCS_RE_AREA = $(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs# PREVIOUS_RELEASE_IMAGE: Previous install image to compare againstifdef ALT_PREVIOUS_RELEASE_IMAGE # Explicit image provided, no bundle access needed PREVIOUS_RELEASE_IMAGE :=$(call FullPath,$(ALT_PREVIOUS_RELEASE_IMAGE))else # PREVIOUS_RELEASE_PATH: path to where previous release bundles are ifdef ALT_PREVIOUS_RELEASE_PATH PREVIOUS_RELEASE_PATH :=$(call OptFullPath,$(ALT_PREVIOUS_RELEASE_PATH)) else PREVIOUS_RELEASE_PATH := \ $(call DirExists,$(PREVIOUS_FCS_RE_AREA)/bundles/$(PLATFORM)-$(ARCH),,) endif # Depending on if we have access to these bundles ifeq ($(PREVIOUS_RELEASE_PATH),) # Use images in re area or BOOTDIR (which is normally the previous release) PREVIOUS_RELEASE_IMAGE := \ $(call DirExists,$(PREVIOUS_FCS_RE_AREA)/binaries/$(PLATFORM)-$(ARCH),$(BOOTDIR),) else # Get names of and paths to bundles PREVIOUS_RELEASE_PATH:=$(call AltCheckSpaces,PREVIOUS_RELEASE_PATH) PREVIOUS_RELEASE_PATH:=$(call AltCheckValue,PREVIOUS_RELEASE_PATH) export PREVIOUS_RELEASE_PATH # PREVIOUS_JDK_FILE: filename of install bundle for previous JDK ifdef ALT_PREVIOUS_JDK_FILE PREVIOUS_JDK_FILE =$(ALT_PREVIOUS_JDK_FILE) else PREVIOUS_JDK_FILE = \ jdk-$(PREVIOUS_JDK_UNDERSCORE_VERSION)-$(PLATFORM)-$(ARCH)$(BUNDLE_FILE_SUFFIX) endif export PREVIOUS_JDK_FILE PREVIOUS_JDK_FILE:=$(call AltCheckSpaces,PREVIOUS_JDK_FILE) PREVIOUS_JDK_FILE:=$(call AltCheckValue,PREVIOUS_JDK_FILE) # PREVIOUS_JRE_FILE: filename of install bundle for previous JRE ifdef ALT_PREVIOUS_JRE_FILE PREVIOUS_JRE_FILE =$(ALT_PREVIOUS_JRE_FILE) else PREVIOUS_JRE_FILE = \ jre-$(PREVIOUS_JDK_UNDERSCORE_VERSION)-$(PLATFORM)-$(ARCH)$(BUNDLE_FILE_SUFFIX) endif export PREVIOUS_JRE_FILE PREVIOUS_JRE_FILE:=$(call AltCheckSpaces,PREVIOUS_JRE_FILE) PREVIOUS_JRE_FILE:=$(call AltCheckValue,PREVIOUS_JRE_FILE) # Paths to these bundles PREVIOUS_JRE_BUNDLE = $(PREVIOUS_RELEASE_PATH)/$(PREVIOUS_JRE_FILE) PREVIOUS_JDK_BUNDLE = $(PREVIOUS_RELEASE_PATH)/$(PREVIOUS_JDK_FILE) endifendif# Indicate we are using an image comparisonifneq ($(PREVIOUS_RELEASE_IMAGE),) PREVIOUS_RELEASE_PATH = USING-PREVIOUS_RELEASE_IMAGE PREVIOUS_JRE_BUNDLE = USING-PREVIOUS_RELEASE_IMAGE PREVIOUS_JDK_BUNDLE = USING-PREVIOUS_RELEASE_IMAGEendif# CACERTS_FILE: if OPENJDK is false and the internal version of the file # (that is, non-empty) is available, use it, otherwise use an # empty keystore.## We put this variable here for sanity checks and in case another# components will need to know which cacerts file is being used.#ifdef ALT_CACERTS_FILE CACERTS_FILE = $(ALT_CACERTS_FILE)else CACERTS_EXT = $(SHARE_SRC)/lib/security/cacerts ifdef OPENJDK CACERTS_FILE :=$(CACERTS_EXT) else # (!OPENJDK) CACERTS_INT = $(CLOSED_SHARE_SRC)/lib/security/cacerts.internal CACERTS_FILE :=$(call FileExists,$(CACERTS_INT),$(CACERTS_EXT)) endif # (OPENJDK)endifCACERTS_FILE:=$(call AltCheckSpaces,CACERTS_FILE)CACERTS_FILE:=$(call AltCheckValue,CACERTS_FILE)## When signing the JCE framework and provider, we could be using built# bits on a read-only filesystem. If so, this test will fail and crash# the build.#ifndef IGNORE_WRITABLE_OUTPUTDIR_TEST# Create the output directory and make sure it exists and is writable_create_outputdir:=$(shell $(MKDIR) -p "$(OUTPUTDIR)" > $(DEV_NULL) 2>&1)ifeq ($(call WriteDirExists,$(OUTPUTDIR),/dev/null),/dev/null) _outputdir_error:=$(error "ERROR: OUTPUTDIR '$(OUTPUTDIR)' not created or not writable")endifendif# Define absolute path if needed and check for spaces and null valueifndef ABS_OUTPUTDIR ifdef _OUTPUTDIRNAME #Could not define this at the same time as _OUTPUTDIRNAME as FullPath is not defined at that point ABS_BUILD_PARENT_DIRECTORY:=$(call FullPath,$(BUILD_PARENT_DIRECTORY)) ABS_OUTPUTDIR:=$(ABS_BUILD_PARENT_DIRECTORY)/build/$(_OUTPUTDIRNAME) else ABS_OUTPUTDIR:=$(call FullPath,$(OUTPUTDIR)) endifendifABS_OUTPUTDIR:=$(call AltCheckSpaces,ABS_OUTPUTDIR)ABS_OUTPUTDIR:=$(call AltCheckValue,ABS_OUTPUTDIR)# Make doubly sure this is a full pathifeq ($(call AbsPwdPathCheck,$(ABS_OUTPUTDIR)), ) ifdef ALT_OUTPUTDIR _outputdir_error:=$(error "ERROR: Trouble with the absolute path for OUTPUTDIR '$(OUTPUTDIR)', was ALT_OUTPUTDIR '$(ALT_OUTPUTDIR)' an absolute path?") else _outputdir_error:=$(error "ERROR: Trouble with the absolute path for OUTPUTDIR '$(OUTPUTDIR)'") endifendif_dir1:=$(call FullPath,$(ABS_OUTPUTDIR))_dir2:=$(call FullPath,$(OUTPUTDIR))ifneq ($(_dir1),$(_dir2)) _outputdir_error:=$(error "ERROR: ABS_OUTPUTDIR '$(ABS_OUTPUTDIR)' is not the same directory as OUTPUTDIR '$(OUTPUTDIR)', '$(_dir1)'!='$(_dir2)'")endif# Bin directory# NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR)# MOZILLA_HEADERS_PATH: path to mozilla header files for pluginifdef ALT_MOZILLA_HEADERS_PATH MOZILLA_HEADERS_PATH :=$(call FullPath,$(ALT_MOZILLA_HEADERS_PATH))else MOZILLA_HEADERS_PATH =$(JDK_DEVTOOLS_DIR)/share/pluginendifMOZILLA_HEADERS_PATH:=$(call AltCheckSpaces,MOZILLA_HEADERS_PATH)MOZILLA_HEADERS_PATH:=$(call AltCheckValue,MOZILLA_HEADERS_PATH)# CUPS_HEADERS_PATH: path to Cups headers files for Unix printingifneq ($(PLATFORM), windows)JDK_CUPS_HEADERS_PATH=$(JDK_DEVTOOLS_DIR)/share/cups/include ifdef ALT_CUPS_HEADERS_PATH CUPS_HEADERS_PATH:=$(call FullPath,$(ALT_CUPS_HEADERS_PATH)) CUPS_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH) else CUPS_HEADERS_PATH:= \ $(shell if [ -d "$(JDK_CUPS_HEADERS_PATH)" ]; then \ echo "$(JDK_CUPS_HEADERS_PATH)"; \ else \ echo "$(_CUPS_HEADERS_PATH)";\ fi) endifendif# Utilities antifeq ($(PLATFORM), windows) ifeq ($(ANT_HOME),) ANT_HOME := $(call DirExists,$(JDK_DEVTOOLS_DIR)/share/ant/latest,,) endifendif# There are few problems with ant we need to workaround:# 1) ant is using temporary directory java.io.tmpdir# However, this directory is not unique enough and two separate ant processes# can easily end up using the exact same temp directory. This may lead to weird build failures# To workaround this we will define tmp dir explicitly# 2) ant attempts to detect JDK location based on java.exe location# This is fragile as developer may have JRE first on the PATH. # To workaround this we will specify JAVA_HOME explicitlyANT_TMPDIR = $(ABS_OUTPUTDIR)/tmpANT_WORKAROUNDS = ANT_OPTS=-Djava.io.tmpdir='$(ANT_TMPDIR)' JAVA_HOME='$(BOOTDIR)'ifeq ($(ANT_HOME),) ANT = $(ANT_WORKAROUNDS) antelse ANT = $(ANT_WORKAROUNDS) $(ANT_HOME)/bin/antendififdef ALT_COPYRIGHT_YEAR COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)else COPYRIGHT_YEAR = $(shell $(DATE) '+%Y')endif# Get the compiler specific settings (will run the compiler to find out)# NOTE: COMPILER_PATH must be set by this time.# Up until we include this file, we don't know what specific compiler# version is actually being used (i.e. what is in PATH or COMPILER_PATH).include $(JDK_MAKE_SHARED_DIR)/Compiler-$(CC_VERSION).gmk