Defs-windows.gmk revision 3419
0N/A#
3258N/A# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
0N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A#
0N/A# This code is free software; you can redistribute it and/or modify it
0N/A# under the terms of the GNU General Public License version 2 only, as
2362N/A# published by the Free Software Foundation. Oracle designates this
0N/A# particular file as subject to the "Classpath" exception as provided
2362N/A# by Oracle in the LICENSE file that accompanied this code.
0N/A#
0N/A# This code is distributed in the hope that it will be useful, but WITHOUT
0N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A# version 2 for more details (a copy is included in the LICENSE file that
0N/A# accompanied this code).
0N/A#
0N/A# You should have received a copy of the GNU General Public License version
0N/A# 2 along with this work; if not, write to the Free Software Foundation,
0N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A#
2362N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A# or visit www.oracle.com if you need additional information or have any
2362N/A# questions.
0N/A#
0N/A
0N/A#
0N/A# Definitions for Windows.
0N/A#
0N/A
0N/A# Default for COMPILER_WARNINGS_FATAL on Windows (C++ compiler warnings)
0N/A# Level: Default is 3, 0 means none, 4 is the most but may be unreliable
0N/A# Some makefiles may have set this to 0 to turn off warnings completely,
0N/A# which also effectively creates a COMPILER_WARNINGS_FATAL=false situation.
0N/A# Program.gmk may turn this down to 2 (building .exe's).
0N/A# Windows 64bit platforms are less likely to be warning free.
0N/A# Historically, Windows 32bit builds should be mostly warning free.
0N/A# VS2010 introduced a large number of security warnings that are off by
0N/A# default but will be turned back on with SHOW_ALL_WARNINGS=true.
0N/Aifndef COMPILER_WARNING_LEVEL
0N/A COMPILER_WARNING_LEVEL=3
0N/Aendif
0N/Aifndef COMPILER_WARNINGS_FATAL
0N/A COMPILER_WARNINGS_FATAL=false
0N/Aendif
0N/Aifndef SHOW_ALL_WARNINGS
0N/A SHOW_ALL_WARNINGS = false
0N/Aendif
0N/A
0N/A# Windows should use parallel compilation for best build times
0N/Aifndef COMPILE_APPROACH
0N/A COMPILE_APPROACH = normal
0N/Aendif
0N/A
0N/A# Indication that we are doing an incremental build.
0N/A# This may trigger the creation of make depend files.
0N/A# (This may not be working on windows yet, always force to false.)
0N/Aoverride INCREMENTAL_BUILD = false
0N/A
0N/A# WARNING: This is extremely touch stuff, between CYGWIN vs. MKS and all
0N/A# variations of MKS and CYGWIN releases, and 32bit vs 64bit,
0N/A# this file can give you nightmares.
0N/A#
0N/A# Notes:
0N/A# Keep all paths in the windows "mixed" style except CYGWIN UNXIXCOMMAND_PATH.
0N/A# Use of PrefixPath is critical, some variables must end with / (see NOTE).
0N/A# Use of quotes is critical due to possible spaces in paths coming from
0N/A# the environment variables, be careful.
0N/A# First convert \ to / with subst, keep it quoted due to blanks, then
0N/A# use cygpath -s or dosname -s to get the short non-blank name.
0N/A# If the MKS is old and doesn't have a dosname -s, you will be forced
0N/A# to set ALT variables with the short non-space directory names.
0N/A# If dosname doesn't appear to work, we won't use it.
0N/A# The dosname utility also wants to accept stdin if it is not supplied
0N/A# any path on the command line, this is really dangerous when using
0N/A# make variables that can easily become empty, so I use:
0N/A# echo $1 | dosname -s instead of dosname -s $1
795N/A# to prevent dosname from hanging up the make process when $1 is empty.
0N/A# The cygpath utility does not have this problem.
0N/A# The ALT values should never really have spaces or use \.
0N/A# Suspect these environment variables to have spaces and/or \ characters:
0N/A# SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles,
0N/A# DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VCnnCOMNTOOLS,
3258N/A# MSVCDIR, MSVCDir.
3258N/A# So use $(subst \,/,) on them first adding quotes and placing them in
3258N/A# their own variable assigned with :=, then use FullPath.
3258N/A#
3258N/A
3258N/Aifdef USING_CYGWIN
3258N/A# All possible drive letters
3258N/Adrives=a b c d e f g h i j k l m n o p q r s t v u w x y z
0N/A# Convert /cygdrive/ paths to the mixed style without an exec of cygpath
0N/A# Must be a path with no spaces.
0N/Adefine MixedPath
0N/A$(patsubst /%,c:/cygwin/%,$(sort $(filter-out /cygdrive/%,$(foreach drive,$(drives),$(patsubst /cygdrive/$(drive)/%,$(drive):/%,$1)))))
0N/Aendef
3258N/A# Use FullPath to get C:/ style non-spaces path. Never ends with a /!
0N/A# We assume cygpath is available in the search path
0N/A# NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path!
2663N/ACYGPATH_CMD=cygpath -a -s -m
0N/Adefine FullPath
0N/A$(if $(word 2,$1),$(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL)),$(call MixedPath,$(realpath $(subst ",,$1))))
0N/Aendef
0N/Adefine OptFullPath
0N/A$(shell if [ "$1" != "" -a -d "$1" ]; then $(CYGPATH_CMD) "$1" 2> $(DEV_NULL); else echo "$1"; fi)
0N/Aendef
0N/Aelse
0N/A# Temporary until we upgrade to MKS 8.7, MKS pwd returns mixed mode path
0N/Adefine FullPath
0N/A$(shell cd $1 2> $(DEV_NULL) && pwd)
0N/Aendef
0N/Adefine OptFullPath
0N/A$(shell if [ "$1" != "" -a -d "$1" ]; then (cd $1 && pwd); else echo "$1"; fi)
0N/Aendef
0N/Aendif
0N/A
0N/A# System drive
0N/Aifdef SYSTEMDRIVE
0N/A _system_drive =$(SYSTEMDRIVE)
0N/Aelse
0N/A ifdef SystemDrive
0N/A _system_drive =$(SystemDrive)
0N/A endif
0N/Aendif
0N/A_system_drive:=$(call CheckValue,_system_drive,C:)
0N/A
0N/A# UNIXCOMMAND_PATH: path to where the most common Unix commands are.
0N/A# NOTE: Must end with / so that it could be empty, allowing PATH usage.
0N/Aifdef ALT_UNIXCOMMAND_PATH
0N/A xALT_UNIXCOMMAND_PATH :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))"
0N/A fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH))
0N/A UNIXCOMMAND_PATH :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH))
0N/Aelse
0N/A ifdef USING_CYGWIN
0N/A UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin)
0N/A else
0N/A ifdef ROOTDIR
0N/A xROOTDIR :="$(subst \,/,$(ROOTDIR))"
0N/A _rootdir :=$(call FullPath,$(xROOTDIR))
0N/A else
0N/A xROOTDIR :="$(_system_drive)/mksnt"
0N/A _rootdir :=$(call FullPath,$(xROOTDIR))
0N/A endif
0N/A ifneq ($(_rootdir),)
0N/A UNIXCOMMAND_PATH :=$(call PrefixPath,$(_rootdir)/mksnt)
0N/A endif
914N/A endif
0N/Aendif
0N/AUNIXCOMMAND_PATH:=$(call AltCheckSpaces,UNIXCOMMAND_PATH)
0N/A
0N/A# Get version of MKS or CYGWIN
0N/Aifndef USING_CYGWIN
0N/A_MKS_VER :=$(shell $(MKSINFO) 2>&1 | $(GREP) Release | $(TAIL) -1 | $(SED) -e 's@.*\(Release.*\)@\1@')
0N/AMKS_VER :=$(call GetVersion,$(_MKS_VER))
0N/A# At this point, we can re-define FullPath to use DOSNAME_CMD
0N/ACHECK_MKS87:=$(call CheckVersions,$(MKS_VER),8.7)
0N/ATRY_DOSNAME:=false
0N/Aifeq ($(CHECK_MKS87),same)
0N/ATRY_DOSNAME:=true
0N/Aendif
0N/A# Newer should be ok
0N/Aifeq ($(CHECK_MKS87),newer)
0N/ATRY_DOSNAME:=true
0N/Aendif
0N/Aifeq ($(TRY_DOSNAME),true)
0N/Aifeq ($(shell $(UNIXCOMMAND_PATH)dosname -s $(_system_drive)/ 2> $(DEV_NULL)),$(_system_drive)/)
0N/A_DOSNAME=$(UNIXCOMMAND_PATH)dosname
0N/ADOSNAME_CMD:=$(_DOSNAME) -s
0N/Adefine FullPath
0N/A$(subst //,/,$(shell echo $1 | $(DOSNAME_CMD) 2> $(DEV_NULL)))
0N/Aendef
0N/Aendif # test dosname -s
0N/Aendif # TRY_DOSNAME
0N/Aendif # MKS
0N/A
0N/A# We try to get references to what we need via the default component
0N/A# environment variables, or what was used historically.
0N/A
0N/A# Process Windows values into FullPath values, these paths may have \ chars
0N/A
0N/A# System root
0N/Aifdef SYSTEMROOT
0N/A xSYSTEMROOT :="$(subst \,/,$(SYSTEMROOT))"
0N/A _system_root :=$(call FullPath,$(xSYSTEMROOT))
0N/Aelse
0N/A ifdef SystemRoot
0N/A xSYSTEMROOT :="$(subst \,/,$(SystemRoot))"
0N/A _system_root :=$(call FullPath,$(xSYSTEMROOT))
0N/A else
0N/A ifdef WINDIR
0N/A xWINDIR :="$(subst \,/,$(WINDIR))"
0N/A _system_root :=$(call FullPath,$(xWINDIR))
0N/A else
0N/A ifdef windir
0N/A xWINDIR :="$(subst \,/,$(windir))"
0N/A _system_root :=$(call FullPath,$(xWINDIR))
0N/A endif
0N/A endif
0N/A endif
0N/Aendif
0N/A_system_root:=$(call CheckValue,_system_root,$(_system_drive)/WINNT)
0N/A
0N/A# Program Files directory
0N/Aifdef PROGRAMFILES
0N/A xPROGRAMFILES :="$(subst \,/,$(PROGRAMFILES))"
0N/Aelse
0N/A ifeq ($(ARCH_DATA_MODEL), 32)
0N/A xPROGRAMFILES :="$(_system_drive)/Program Files"
0N/A else
942N/A xPROGRAMFILES :="$(_system_drive)/Program Files (x86)"
0N/A endif
0N/Aendif
0N/Aifeq ($(ARCH_DATA_MODEL), 32)
0N/A _program_files :=$(call FullPath,$(xPROGRAMFILES))
0N/A _program_files32 :=$(_program_files)
0N/Aelse
0N/A ifdef PROGRAMW6432
0N/A xPROGRAMW6432 :="$(subst \,/,$(PROGRAMW6432))"
0N/A else
0N/A xPROGRAMW6432 :="$(_system_drive)/Program Files"
0N/A endif
0N/A _program_files :=$(call FullPath,$(xPROGRAMW6432))
0N/A _program_files32 :=$(call FullPath,$(xPROGRAMFILES))
0N/A ifneq ($(word 1,$(_program_files32)),$(_program_files32))
0N/A _program_files32:=
0N/A endif
0N/Aendif
0N/Aifneq ($(word 1,$(_program_files)),$(_program_files))
0N/A _program_files:=
0N/Aendif
0N/A
0N/A# DirectX SDK
0N/Aifdef ALT_DXSDK_DRIVE
0N/A _dx_sdk_dir =$(ALT_DXSDK_DRIVE):/DXSDK
0N/Aelse
0N/A ifdef DXSDK_DIR
0N/A xDXSDK_DIR :="$(subst \,/,$(DXSDK_DIR))"
0N/A else
3258N/A xDXSDK_DIR :="$(_system_drive)/DXSDK"
3258N/A endif
3258N/A _dx_sdk_dir :=$(call FullPath,$(xDXSDK_DIR))
3258N/Aendif
3258N/A
3258N/A# Use of the Visual Studio compilers requires certain env variables be set:
3258N/A# PATH should include the path to cl.exe
3258N/A# INCLUDE should be defined
3258N/A# LIB should be defined
3258N/A# LIBPATH should be defined
3258N/A# VS100COMNTOOLS should be defined
3258N/A# WINDOWSSDKDIR should be defined
3258N/A# The 7.0a path is from VS2010 Pro, the 7.1 path is the standalone SDK.
3258N/A# For 64bit either will work for us.
3258N/A# If a developer chooses to install the standalone SDK in some other
3258N/A# location, then they need to set WINDOWSSDKDIR.
3258N/A#
3258N/A# Compilers for 64bit may be from the free SDK, or Visual Studio Professional.
3258N/A# The free Express compilers don't contain 64 bit compilers, which is why
3258N/A# you instead need the SDK.
3258N/A# Release enginering will use VS2010 Pro, so the frequency of testing of
3258N/A# SDK based builds will depend entirely on individual usage.
3258N/A
3258N/A# We only need to do this once
3258N/Aifndef VS2010_EXISTS
3258N/A # The 2 key paths we need are WINDOWSSDKDIR and VS100COMNTOOLS.
3258N/A # If not defined try to see if default location exists.
3258N/A # If defined make sure that the path has no spaces.
3258N/A # Finally, export path with no spaces so logic minimizes FullPath calls.
3258N/A ifndef WINDOWSSDKDIR
3258N/A # The 7.0a SDK is the second choice.
3258N/A xWINDOWSSDKDIR :="$(_program_files32)/Microsoft SDKs/Windows/v7.0a/"
3258N/A fWINDOWSSDKDIR :=$(call FullPath,$(xWINDOWSSDKDIR))
0N/A # The 7.1 SDK is the second choice.
3258N/A ifeq ($(fWINDOWSSDKDIR),)
3258N/A xWINDOWSSDKDIR :="$(_program_files32)/Microsoft SDKs/Windows/v7.1/"
3258N/A fWINDOWSSDKDIR :=$(call FullPath,$(xWINDOWSSDKDIR))
3258N/A endif
3258N/A else
3258N/A ifneq ($(word 2,$(WINDOWSSDKDIR)),)
3258N/A xWINDOWSSDKDIR :="$(subst \,/,$(WINDOWSSDKDIR))"
3258N/A fWINDOWSSDKDIR :=$(call FullPath,$(xWINDOWSSDKDIR))
3258N/A else
3258N/A fWINDOWSSDKDIR :=$(WINDOWSSDKDIR)
3258N/A endif
3258N/A endif
3258N/A ifneq ($(fWINDOWSSDKDIR),)
3258N/A WINDOWSSDKDIR :=$(fWINDOWSSDKDIR)/
3258N/A endif
3258N/A ifndef VS100COMNTOOLS
3258N/A xVS100COMNTOOLS :="$(_program_files32)/Microsoft Visual Studio 10.0/Common7/Tools/"
3258N/A fVS100COMNTOOLS :=$(call FullPath,$(xVS100COMNTOOLS))
3258N/A else
0N/A ifneq ($(word 2,$(VS100COMNTOOLS)),)
0N/A xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
3258N/A fVS100COMNTOOLS :=$(call FullPath,$(xVS100COMNTOOLS))
3258N/A else
3258N/A fVS100COMNTOOLS :=$(xVS100COMNTOOLS)
3258N/A endif
3258N/A endif
3258N/A ifneq ($(fVS100COMNTOOLS),)
3258N/A VS100COMNTOOLS :=$(fVS100COMNTOOLS)/
3258N/A endif
3258N/A # Check to see that both exist
3258N/A ifeq ($(WINDOWSSDKDIR),)
3258N/A _vs2010_message := No WINDOWSSDKDIR found on system. $(_vs2010_message)
3258N/A VS2010_EXISTS := false
3258N/A endif
3258N/A ifeq ($(VS100COMNTOOLS),)
3258N/A _vs2010_message := No VS100COMNTOOLS found on system. $(_vs2010_message)
3258N/A VS2010_EXISTS := false
3258N/A endif
3258N/A ifeq ($(VS2010_EXISTS),false)
3258N/A x:=$(warning WARNING: No VS2010 available. $(_vs2010_message))
3258N/A VS100COMNTOOLS :=
3258N/A WINDOWSSDKDIR :=
3258N/A else
3258N/A VS2010_EXISTS := true
3258N/A _msvc_dir :=$(VS100COMNTOOLS)/../../Vc
3258N/A endif
3258N/A export VS2010_EXISTS
3258N/A export VS100COMNTOOLS
3258N/A export WINDOWSSDKDIR
3258N/Aendif
3258N/A
3258N/A# Setup for VS2010 is simple, others logic is historic
3258N/Aifeq ($(VS2010_EXISTS),true)
3258N/A
3258N/A # VS2010 Compiler root directory
3258N/A _msvc_dir :=$(VS100COMNTOOLS)/../../Vc
3258N/A # SDK root directory
3258N/A _ms_sdk :=$(WINDOWSSDKDIR)
3258N/A # Compiler bin directory and redist directory
3258N/A ifeq ($(ARCH_DATA_MODEL), 32)
3258N/A _compiler_bin :=$(_msvc_dir)/Bin
3258N/A _redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC100.CRT)
3258N/A endif
3258N/A ifeq ($(ARCH_DATA_MODEL), 64)
3258N/A _compiler_bin :=$(_msvc_dir)/bin/amd64
3258N/A _redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x64/Microsoft.VC100.CRT)
3258N/A endif
3258N/A ifeq ($(_redist_sdk),)
3258N/A _redist_sdk :=$(_system_root)/system32
3258N/A endif
3258N/A
3258N/Aelse # Not VS2010
3258N/A
3258N/A # Compilers, SDK, and Visual Studio (MSDEV) [32bit is different from 64bit]
3258N/A ifeq ($(ARCH_DATA_MODEL), 32)
3258N/A
3258N/A # Try looking in MSVCDIR or MSVCDir area first
3258N/A # (set by vcvars32.bat for VC .NET, not defined in the VC 2008/2010)
3258N/A ifdef MSVCDIR
3258N/A xMSVCDIR :="$(subst \,/,$(MSVCDIR))"
3258N/A _msvc_dir :=$(call FullPath,$(xMSVCDIR))
0N/A else
3258N/A ifdef MSVCDir
3258N/A xMSVCDIR :="$(subst \,/,$(MSVCDir))"
3258N/A _msvc_dir :=$(call FullPath,$(xMSVCDIR))
2324N/A endif
2324N/A endif
2324N/A # If we still don't have it, look for VSnnCOMNTOOLS (newest first),
942N/A # set by installer?
2324N/A ifeq ($(_msvc_dir),)
2324N/A ifdef VS90COMNTOOLS # /Common/Tools directory, use ../../Vc
942N/A xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))"
2324N/A _vs90tools :=$(call FullPath,$(xVS90COMNTOOLS))
2324N/A endif
2324N/A ifneq ($(_vs90tools),)
942N/A _msvc_dir :=$(_vs90tools)/../../Vc
2324N/A else
2324N/A ifdef VS80COMNTOOLS # /Common/Tools directory, use ../../Vc
2324N/A xVS80COMNTOOLS :="$(subst \,/,$(VS80COMNTOOLS))"
2324N/A _vs80tools :=$(call FullPath,$(xVS80COMNTOOLS))
2324N/A endif
2324N/A ifneq ($(_vs80tools),)
2324N/A _msvc_dir :=$(_vs80tools)/../../Vc
2324N/A else
2324N/A ifdef VS71COMNTOOLS # /Common/Tools directory, use ../../Vc7
2324N/A xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))"
942N/A _vs71tools :=$(call FullPath,$(xVS71COMNTOOLS))
942N/A endif
0N/A ifneq ($(_vs71tools),)
3258N/A _msvc_dir :=$(_vs71tools)/../../Vc7
3258N/A endif
3258N/A endif
3258N/A endif
3258N/A endif
3258N/A
3258N/A ifneq ($(_msvc_dir),)
3258N/A _compiler_bin :=$(_msvc_dir)/Bin
2324N/A # Assume PlatformSDK is in VS71 (will be empty if VS90)
3258N/A _ms_sdk :=$(call FullPath,$(_msvc_dir)/PlatformSDK)
2324N/A _redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC90.CRT)
942N/A ifeq ($(_redist_sdk),)
942N/A _redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC80.CRT)
0N/A ifeq ($(_redist_sdk),)
0N/A _redist_sdk :=$(call FullPath,$(_msvc_dir)/../SDK/v1.1/Bin)
3258N/A endif
3258N/A endif
3258N/A endif
3258N/A endif
942N/A
3258N/A # The Microsoft Platform SDK installed by itself
3258N/A ifneq ($(_program_files),)
3258N/A _PSDK :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
3258N/A _psdk :=$(call FullPath,$(xMSSDK61))
3258N/A ifeq ($(_psdk),)
3258N/A xPSDK :="$(_program_files)/Microsoft Platform SDK"
942N/A _psdk :=$(call FullPath,$(xPSDK))
0N/A ifeq ($(_psdk),)
0N/A xPSDK :="$(_program_files)/Microsoft SDK"
3258N/A _psdk :=$(call FullPath,$(xMSSDK))
3258N/A endif
3258N/A endif
0N/A endif
0N/A
0N/A # If no SDK found yet, look in other places
0N/A ifeq ($(_ms_sdk),)
0N/A ifdef MSSDK
0N/A xMSSDK :="$(subst \,/,$(MSSDK))"
0N/A _ms_sdk :=$(call FullPath,$(xMSSDK))
3258N/A else
3258N/A ifdef MSSdk
0N/A xMSSDK :="$(subst \,/,$(MSSdk))"
0N/A _ms_sdk :=$(call FullPath,$(xMSSDK))
3258N/A else
3258N/A _ms_sdk :=$(_psdk)
3258N/A endif
2324N/A endif
2324N/A endif
2324N/A
2324N/A # Compilers for 64bit may be from the free SDK, or Visual Studio Professional.
2324N/A ifeq ($(ARCH_DATA_MODEL), 64)
2324N/A xVS2008 :="$(_program_files32)/Microsoft Visual Studio 9.0/"
2428N/A VS2008 :=$(call FullPath,$(xVS2008))
2324N/A ifneq ($(VS2008),)
2324N/A _compiler_bin :=$(VS2008)/VC/Bin/$(ARCH)
2324N/A xMSSDK61 :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
2324N/A MSSDK61 :=$(call FullPath,$(xMSSDK61))
2324N/A _redist_sdk :=$(VS2008)/VC/redist/x64/Microsoft.VC90.CRT
2324N/A else
2324N/A ifneq ($(_ms_sdk),)
2324N/A ifeq ($(ARCH), ia64)
2324N/A _compiler_bin :=$(_ms_sdk)/Bin/Win64
942N/A endif
0N/A ifeq ($(ARCH), amd64)
0N/A _compiler_bin :=$(_ms_sdk)/Bin/Win64/x86/$(ARCH)
3258N/A _redist_sdk :=$(_ms_sdk)/redist/win64/AMD64
3258N/A endif
0N/A endif
0N/A endif
0N/A endif
0N/A
0N/Aendif # VS2010_EXISTS
0N/A
0N/A# Location on system where jdk installs might be
0N/Aifneq ($(_program_files),)
0N/A USRJDKINSTANCES_PATH =$(_program_files)/Java
0N/Aelse
0N/A USRJDKINSTANCES_PATH =$(_system_drive)/
0N/Aendif
0N/A
0N/A# SLASH_JAVA: location of all network accessable files
0N/Aifdef ALT_SLASH_JAVA
0N/A xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))"
0N/A SLASH_JAVA :=$(call FullPath,$(xALT_SLASH_JAVA))
0N/Aelse
0N/A ifdef ALT_JDK_JAVA_DRIVE
0N/A SLASH_JAVA =$(JDK_JAVA_DRIVE)
0N/A else
0N/A SLASH_JAVA =J:
0N/A endif
0N/Aendif
0N/ASLASH_JAVA:=$(call AltCheckSpaces,SLASH_JAVA)
0N/ASLASH_JAVA:=$(call AltCheckValue,SLASH_JAVA)
0N/A
0N/A# JDK_DEVTOOLS_DIR: common path for all the java devtools
0N/Aifdef ALT_JDK_DEVTOOLS_DIR
0N/A xALT_JDK_DEVTOOLS_DIR :="$(subst \,/,$(ALT_JDK_DEVTOOLS_DIR))"
0N/A JDK_DEVTOOLS_DIR :=$(call FullPath,$(xALT_JDK_DEVTOOLS_DIR))
0N/Aelse
0N/A JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
0N/Aendif
0N/AJDK_DEVTOOLS_DIR:=$(call AltCheckSpaces,JDK_DEVTOOLS_DIR)
0N/AJDK_DEVTOOLS_DIR:=$(call AltCheckValue,JDK_DEVTOOLS_DIR)
0N/A
0N/A# COMPILER_PATH: path to where the compiler and tools are installed.
0N/A# NOTE: Must end with / so that it could be empty, allowing PATH usage.
0N/Aifdef ALT_COMPILER_PATH
0N/A xALT_COMPILER_PATH :="$(subst \,/,$(ALT_COMPILER_PATH))"
0N/A fxALT_COMPILER_PATH :=$(call FullPath,$(xALT_COMPILER_PATH))
0N/A COMPILER_PATH :=$(call PrefixPath,$(fxALT_COMPILER_PATH))
0N/Aelse
0N/A COMPILER_PATH :=$(call PrefixPath,$(_compiler_bin))
0N/Aendif
0N/ACOMPILER_PATH :=$(call AltCheckSpaces,COMPILER_PATH)
0N/A
0N/A# MSDEVTOOLS_PATH: path to where the additional MS Compiler tools are.
0N/A# NOTE: Must end with / so that it could be empty, allowing PATH usage.
0N/Aifdef ALT_MSDEVTOOLS_PATH
0N/A xALT_MSDEVTOOLS_PATH :="$(subst \,/,$(ALT_MSDEVTOOLS_PATH))"
0N/A fxALT_MSDEVTOOLS_PATH :=$(call FullPath,$(xALT_MSDEVTOOLS_PATH))
0N/A MSDEVTOOLS_PATH :=$(call PrefixPath,$(fxALT_MSDEVTOOLS_PATH))
0N/Aelse
0N/A ifeq ($(ARCH_DATA_MODEL), 64)
0N/A ifdef MSTOOLS
0N/A xMSTOOLS :="$(subst \,/,$(MSTOOLS))"
0N/A _ms_tools :=$(call FullPath,$(xMSTOOLS))
0N/A else
0N/A ifdef Mstools
0N/A xMSTOOLS :="$(subst \,/,$(Mstools))"
0N/A _ms_tools :=$(call FullPath,$(xMSTOOLS))
0N/A else
0N/A _ms_tools :=
0N/A endif
0N/A endif
0N/A ifneq ($(_ms_tools),)
0N/A _ms_tools_bin :=$(_ms_tools)/Bin
0N/A else
0N/A # Assumes compiler bin is .../Bin/win64/x86/AMD64, rc.exe is 3 levels up
0N/A _ms_tools_bin :=$(_compiler_bin)/../../..
0N/A endif
0N/A else
0N/A _ms_tools_bin :=$(_compiler_bin)
0N/A endif
0N/A MSDEVTOOLS_PATH :=$(call PrefixPath,$(_ms_tools_bin))
0N/Aendif
0N/AMSDEVTOOLS_PATH:=$(call AltCheckSpaces,MSDEVTOOLS_PATH)
0N/A
0N/A# DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
0N/A# NOTE: Must end with / so that it could be empty, allowing PATH usage.
0N/Aifdef ALT_DEVTOOLS_PATH
0N/A xALT_DEVTOOLS_PATH :="$(subst \,/,$(ALT_DEVTOOLS_PATH))"
0N/A fxALT_DEVTOOLS_PATH :=$(call FullPath,$(xALT_DEVTOOLS_PATH))
0N/A DEVTOOLS_PATH :=$(call PrefixPath,$(fxALT_DEVTOOLS_PATH))
0N/Aelse
0N/A ifdef USING_CYGWIN
0N/A DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
0N/A else
0N/A xDEVTOOLS_PATH :="$(_system_drive)/utils"
0N/A fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
0N/A DEVTOOLS_PATH :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
0N/A endif
1220N/Aendif
0N/ADEVTOOLS_PATH:=$(call AltCheckSpaces,DEVTOOLS_PATH)
0N/A
0N/A# _BOOTDIR1: First choice for a Bootstrap JDK, previous released JDK.
1220N/A# _BOOTDIR2: Second choice
0N/A# The _BOOTDIR3 is defind optionally.
0N/Aifndef ALT_BOOTDIR
942N/A _BOOTDIR1 =$(_system_drive)/jdk$(PREVIOUS_JDK_VERSION)
0N/A _BOOTDIR2 =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
942N/A _BOOTDIR3 =$(SLASH_JAVA)/re/jdk/$(PREVIOUS_JDK_VERSION)/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
942N/Aendif
942N/A
942N/A# 32 bit always needs 2 runtimes, 64 bit usually does too
942N/A
942N/A# MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
942N/Aifdef ALT_MSVCRT_DLL_PATH
942N/A xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
942N/A MSVCRT_DLL_PATH :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
0N/Aelse
942N/A MSVCRT_DLL_PATH :=$(call FullPath,$(_system_root)/system32/)
0N/Aendif
942N/AMSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
942N/AMSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
3258N/A
942N/A# 32bit always needs the MSVCRNN runtime, 64bit does when using VS2008
2324N/Aifeq ($(ARCH_DATA_MODEL), 32)
2324N/A _NEEDS_MSVCRNN = true
2324N/Aelse
2324N/A ifeq ($(VS2010_EXISTS),true)
2324N/A _NEEDS_MSVCRNN = true
2324N/A else
0N/A ifneq ($(VS2008),)
942N/A _NEEDS_MSVCRNN = true
942N/A else
942N/A _NEEDS_MSVCRNN = false
795N/A endif
795N/A endif
795N/Aendif
795N/A
0N/Aifeq ($(_NEEDS_MSVCRNN), true)
942N/A # MSVCRNN_DLL_PATH: location of msvcrnn.dll that will be re-distributed
0N/A ifdef ALT_MSVCRNN_DLL_PATH
795N/A xALT_MSVCRNN_DLL_PATH :="$(subst \,/,$(ALT_MSVCRNN_DLL_PATH))"
795N/A MSVCRNN_DLL_PATH :=$(call FullPath,$(xALT_MSVCRNN_DLL_PATH))
0N/A else
0N/A MSVCRNN_DLL_PATH :=$(_redist_sdk)
0N/A endif
0N/A MSVCRNN_DLL_PATH :=$(call AltCheckSpaces,MSVCRNN_DLL_PATH)
0N/A MSVCRNN_DLL_PATH:=$(call AltCheckValue,MSVCRNN_DLL_PATH)
0N/Aendif
0N/A
0N/A# DXSDK_PATH: path to Microsoft DirectX SDK Include and Lib
0N/Aifdef ALT_DXSDK_PATH
0N/A xALT_DXSDK_PATH :="$(subst \,/,$(ALT_DXSDK_PATH))"
0N/A DXSDK_PATH :=$(call FullPath,$(xALT_DXSDK_PATH))
0N/Aelse
0N/A _DXSDK_PATH1 :=$(_dx_sdk_dir)
0N/A _DXSDK_PATH2 :=$(JDK_DEVTOOLS_DIR)/windows/dxsdk
0N/A DXSDK_PATH :=$(call DirExists,$(_DXSDK_PATH1),$(_DXSDK_PATH2),$(_dx_sdk_dir))
0N/Aendif
0N/ADXSDK_PATH :=$(call AltCheckSpaces,DXSDK_PATH)
0N/ADXSDK_PATH:=$(call AltCheckValue,DXSDK_PATH)
0N/A
0N/A# DXSDK_INCLUDE_PATH: path to Microsoft DirectX SDK Include
0N/Aifdef ALT_DXSDK_INCLUDE_PATH
0N/A xALT_DXSDK_INCLUDE_PATH :="$(subst \,/,$(ALT_DXSDK_INCLUDE_PATH))"
0N/A DXSDK_INCLUDE_PATH :=$(call FullPath,$(xALT_DXSDK_INCLUDE_PATH))
0N/Aelse
0N/A DXSDK_INCLUDE_PATH =$(subst //,/,$(DXSDK_PATH)/Include)
0N/Aendif
0N/A
0N/A# DXSDK_LIB_PATH: path to Microsoft DirectX SDK Lib
0N/Aifdef ALT_DXSDK_LIB_PATH
0N/A xALT_DXSDK_LIB_PATH :="$(subst \,/,$(ALT_DXSDK_LIB_PATH))"
0N/A DXSDK_LIB_PATH :=$(call FullPath,$(xALT_DXSDK_LIB_PATH))
0N/Aelse
0N/A ifeq ($(ARCH_DATA_MODEL), 64)
0N/A # 64bit libs are located in "Lib/x64" subdir
0N/A DXSDK_LIB_PATH =$(subst //,/,$(DXSDK_PATH)/Lib/x64)
0N/A else
0N/A DXSDK_LIB_PATH =$(subst //,/,$(DXSDK_PATH)/Lib)
0N/A endif
0N/Aendif
0N/A
0N/A# DEPLOY_MSSDK: Microsoft SDK for this platform (for deploy)
0N/Aifdef ALT_DEPLOY_MSSDK
0N/A xALT_DEPLOY_MSSDK :="$(subst \,/,$(ALT_DEPLOY_MSSDK))"
0N/A DEPLOY_MSSDK :=$(call FullPath,$(xALT_DEPLOY_MSSDK))
0N/Aelse
0N/A DEPLOY_MSSDK :=$(_ms_sdk)
0N/Aendif
0N/ADEPLOY_MSSDK:=$(call AltCheckSpaces,DEPLOY_MSSDK)
0N/A
1365N/A# INSTALL_MSSDK: Microsoft Installer SDK for this platform (for install)
0N/Aifdef ALT_INSTALL_MSSDK
0N/A xALT_INSTALL_MSSDK :="$(subst \,/,$(ALT_INSTALL_MSSDK))"
0N/A INSTALL_MSSDK :=$(call FullPath,$(xALT_INSTALL_MSSDK))
0N/Aelse
0N/A INSTALL_MSSDK :=$(_ms_sdk)
0N/Aendif
0N/AINSTALL_MSSDK:=$(call AltCheckSpaces,INSTALL_MSSDK)
0N/A
942N/A# INSTALL_MSIVAL2: Installation of MsiVal2 for this platform (for install)
0N/Aifdef ALT_INSTALL_MSIVAL2
0N/A xALT_INSTALL_MSIVAL2 :="$(subst \,/,$(ALT_INSTALL_MSIVAL2))"
0N/A INSTALL_MSIVAL2 :=$(call FullPath,$(xALT_INSTALL_MSIVAL2))
0N/Aelse
0N/A INSTALL_MSIVAL2 :=$(_program_files32)/MsiVal2
0N/Aendif
0N/AINSTALL_MSIVAL2:=$(call AltCheckSpaces,INSTALL_MSIVAL2)
0N/A
0N/A# WSCRIPT: path to wscript.exe (used in creating install bundles)
0N/Aifdef ALT_WSCRIPT
0N/A xALT_WSCRIPT :="$(subst \,/,$(ALT_WSCRIPT))"
0N/A WSCRIPT =$(xALT_WSCRIPT)
0N/Aelse
490N/A _WSCRIPT1 :=$(_system_root)/system32/wscript.exe
1117N/A _WSCRIPT2 :=$(DEVTOOLS_PATH)wscript.exe
0N/A WSCRIPT :=$(call FileExists,$(_WSCRIPT1),$(_WSCRIPT2))
0N/Aendif
0N/AWSCRIPT:=$(call AltCheckSpaces,WSCRIPT)
0N/A# batch mode no modal dialogs on errors, please.
0N/AWSCRIPT += -B
0N/A
0N/A# CSCRIPT: path to cscript.exe (used in creating install bundles)
0N/Aifdef ALT_CSCRIPT
0N/A xALT_CSCRIPT :="$(subst \,/,$(ALT_CSCRIPT))"
0N/A CSCRIPT =$(xALT_CSCRIPT)
0N/Aelse
0N/A _CSCRIPT1 :=$(_system_root)/system32/cscript.exe
2324N/A _CSCRIPT2 :=$(DEVTOOLS_PATH)cscript.exe
2324N/A CSCRIPT :=$(call FileExists,$(_CSCRIPT1),$(_CSCRIPT2))
2324N/Aendif
2324N/ACSCRIPT:=$(call AltCheckSpaces,CSCRIPT)
2324N/A
2324N/A# CABARC: path to cabarc.exe (used in creating install bundles)
2324N/Aifdef ALT_CABARC
2324N/A xALT_CABARC :="$(subst \,/,$(ALT_CABARC))"
2324N/A CABARC =$(xALT_CABARC)
2324N/Aelse
2324N/A _CABARC1 :=$(_system_root)/system32/cabarc.exe
0N/A _CABARC2 :=$(DEVTOOLS_PATH)cabarc.exe
0N/A CABARC :=$(call FileExists,$(_CABARC1),$(_CABARC2))
0N/Aendif
0N/ACABARC:=$(call AltCheckSpaces,CABARC)
0N/A
0N/A# MSIVAL2: path to msival2.exe (used in validating install msi files)
0N/Aifdef ALT_MSIVAL2
0N/A xALT_MSIVAL2 :="$(subst \,/,$(ALT_MSIVAL2))"
0N/A MSIVAL2 =$(xALT_MSIVAL2)
0N/Aelse
490N/A _MSIVAL2_1 :=$(INSTALL_MSIVAL2)/msival2.exe
1117N/A _MSIVAL2_2 :=$(DEVTOOLS_PATH)msival2.exe
1117N/A MSIVAL2 :=$(call FileExists,$(_MSIVAL2_1),$(_MSIVAL2_2))
1117N/Aendif
0N/AMSIVAL2:=$(call AltCheckSpaces,MSIVAL2)
0N/A# suppress msival2 checks, as it hangs jprt builds
0N/Aifdef SKIP_MSIVAL2
0N/A MSIVAL2 := $(ECHO)
0N/Aendif
0N/A
0N/A# LOGOCUB: path to cub file for (used in validating install msi files)
0N/Aifdef ALT_LOGOCUB
0N/A xALT_LOGOCUB :="$(subst \,/,$(ALT_LOGOCUB))"
0N/A LOGOCUB =$(xALT_LOGOCUB)
0N/Aelse
0N/A _LOGOCUB1 :=$(INSTALL_MSIVAL2)/logo.cub
0N/A _LOGOCUB2 :=$(DEVTOOLS_PATH)logo.cub
0N/A LOGOCUB :=$(call FileExists,$(_LOGOCUB1),$(_LOGOCUB2))
0N/Aendif
0N/ALOGOCUB:=$(call AltCheckSpaces,LOGOCUB)
0N/A
0N/A# MSITRAN: path to msitran.exe (used in creating install bundles and sponsors)
0N/Aifdef ALT_MSITRAN
0N/A xALT_MSITRAN :="$(subst \,/,$(ALT_MSITRAN))"
0N/A MSITRAN =$(xALT_MSITRAN)
0N/Aelse
0N/A _MSITRAN1 :=$(INSTALL_MSSDK)/Bin/msitran.exe
0N/A _MSITRAN2 :=$(DEVTOOLS_PATH)msitran.exe
0N/A MSITRAN :=$(call FileExists,$(_MSITRAN1),$(_MSITRAN2))
0N/Aendif
0N/AMSITRAN:=$(call AltCheckSpaces,MSITRAN)
0N/A
0N/A# MSICERT: path to msicert.exe (used in creating install bundles)
0N/Aifdef ALT_MSICERT
0N/A xALT_MSICERT :="$(subst \,/,$(ALT_MSICERT))"
0N/A MSICERT =$(xALT_MSICERT)
0N/Aelse
0N/A _MSICERT1 :=$(INSTALL_MSSDK)/Bin/msicert.exe
0N/A _MSICERT2 :=$(DEVTOOLS_PATH)msicert.exe
0N/A MSICERT :=$(call FileExists,$(_MSICERT1),$(_MSICERT2))
0N/Aendif
0N/AMSICERT:=$(call AltCheckSpaces,MSICERT)
0N/A
0N/A# Import JDK images allow for partial builds, components not built are
0N/A# imported (or copied from) these import areas when needed.
0N/A
0N/A# BUILD_JDK_IMPORT_PATH: location of JDK install trees to import for
0N/A# multiple platforms, e.g. windows-i586, solaris-sparc, linux-586, etc.
0N/Aifdef ALT_BUILD_JDK_IMPORT_PATH
0N/A BUILD_JDK_IMPORT_PATH :=$(call FullPath,$(ALT_BUILD_JDK_IMPORT_PATH))
0N/Aelse
0N/A BUILD_JDK_IMPORT_PATH = $(PROMOTED_BUILD_BINARIES)
0N/Aendif
0N/ABUILD_JDK_IMPORT_PATH:=$(call AltCheckSpaces,BUILD_JDK_IMPORT_PATH)
0N/ABUILD_JDK_IMPORT_PATH:=$(call AltCheckValue,BUILD_JDK_IMPORT_PATH)
0N/A
0N/A# JDK_IMPORT_PATH: location of previously built JDK (this version) to import
0N/Aifdef ALT_JDK_IMPORT_PATH
0N/A JDK_IMPORT_PATH :=$(call FullPath,$(ALT_JDK_IMPORT_PATH))
0N/Aelse
0N/A JDK_IMPORT_PATH = $(BUILD_JDK_IMPORT_PATH)/$(PLATFORM)-$(ARCH)$(_JDK_IMPORT_VARIANT)
0N/Aendif
0N/AJDK_IMPORT_PATH:=$(call AltCheckSpaces,JDK_IMPORT_PATH)
0N/AJDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
1370N/A
1370N/A# HOTSPOT_IMPORT_PATH: location of hotspot pre-built files
1370N/Aifdef ALT_HOTSPOT_IMPORT_PATH
1370N/A HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
1370N/Aelse
1370N/A # Default locations include the current $OUTPUTDIR, RE Promotions,
0N/A # and a JDK. Please be aware the JDK does not include a Kernel VM.
0N/A _HOTSPOT_IMPORT_PATH1 = $(OUTPUTDIR)/hotspot/import
0N/A _HOTSPOT_IMPORT_PATH2 = $(PROMOTED_BUILD_DISTDIR)/hotspot/import
0N/A _HOTSPOT_IMPORT_PATH3 = $(JDK_IMPORT_PATH)
0N/A HOTSPOT_IMPORT_PATH := $(call DirExists,$(_HOTSPOT_IMPORT_PATH1),$(_HOTSPOT_IMPORT_PATH2),$(_HOTSPOT_IMPORT_PATH3))
0N/Aendif
0N/AHOTSPOT_IMPORT_PATH:=$(call AltCheckSpaces,HOTSPOT_IMPORT_PATH)
0N/AHOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
0N/A
0N/A# HOTSPOT_CLIENT_PATH: location of client jvm library file.
0N/Aifeq ($(ARCH_DATA_MODEL), 32)
0N/A ifdef ALT_HOTSPOT_CLIENT_PATH
0N/A HOTSPOT_CLIENT_PATH :=$(call FullPath,$(ALT_HOTSPOT_CLIENT_PATH))
0N/A else
0N/A HOTSPOT_CLIENT_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/client
0N/A endif
0N/A HOTSPOT_CLIENT_PATH:=$(call AltCheckSpaces,HOTSPOT_CLIENT_PATH)
0N/A HOTSPOT_CLIENT_PATH:=$(call AltCheckValue,HOTSPOT_CLIENT_PATH)
0N/Aendif
0N/A
0N/A# HOTSPOT_SERVER_PATH: location of server jvm library file.
0N/Aifdef ALT_HOTSPOT_SERVER_PATH
0N/A HOTSPOT_SERVER_PATH :=$(call FullPath,$(ALT_HOTSPOT_SERVER_PATH))
0N/Aelse
0N/A HOTSPOT_SERVER_PATH =$(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/server
0N/Aendif
0N/AHOTSPOT_SERVER_PATH:=$(call AltCheckSpaces,HOTSPOT_SERVER_PATH)
0N/AHOTSPOT_SERVER_PATH:=$(call AltCheckValue,HOTSPOT_SERVER_PATH)
0N/A
0N/A# HOTSPOT_LIB_PATH: location of jvm.lib file.
0N/Aifdef ALT_HOTSPOT_LIB_PATH
0N/A xALT_HOTSPOT_LIB_PATH :="$(subst \,/,$(ALT_HOTSPOT_LIB_PATH))"
0N/A HOTSPOT_LIB_PATH :=$(call FullPath,$(xALT_HOTSPOT_LIB_PATH))
else
HOTSPOT_LIB_PATH =$(HOTSPOT_IMPORT_PATH)/lib
endif
HOTSPOT_LIB_PATH:=$(call AltCheckSpaces,HOTSPOT_LIB_PATH)
HOTSPOT_LIB_PATH:=$(call AltCheckValue,HOTSPOT_LIB_PATH)
# Special define for checking the binaries
ifeq ($(VS2010_EXISTS),true)
# All windows dll and exe files should have been built with /NXCOMPAT
# and be setup for dynamic base addresses.
# In addition, we should not be dependent on certain dll files that
# we do not or cannot redistribute.
# List of filenames we should NOT be dependent on
BANNED_DLLS=msvcp100[.]dll|msvcr100d[.]dll|msvcrtd[.]dll
# Macro to check it's input file for banned dependencies and verify the
# binary was built properly. Relies on process exit code.
define binary_file_verification # binary_file
( \
$(ECHO) "Checking for /NXCOMPAT usage in: $1" && \
if [ "`$(DUMPBIN) /headers $1 | $(EGREP) -i 'NX compatible'`" = "" ] ; then \
$(ECHO) "ERROR: Did not find 'NX compatible' in headers: $1" ; \
$(DUMPBIN) /headers $1 ; \
exit 7 ; \
fi ; \
$(ECHO) "Checking for /DYNAMICBASE usage in: $1" && \
if [ "`$(DUMPBIN) /headers $1 | $(EGREP) -i 'Dynamic base'`" = "" ] ; then \
$(ECHO) "ERROR: Did not find 'Dynamic base' in headers: $1" ; \
$(DUMPBIN) /headers $1 ; \
exit 8 ; \
fi ; \
$(ECHO) "Checking for banned dependencies in: $1" && \
if [ "`$(DUMPBIN) /dependents $1 | $(EGREP) -i '$(BANNED_DLLS)'`" != "" ] ; then \
$(ECHO) "ERROR: Found us of $(BANNED_DLLS)"; \
$(DUMPBIN) /dependents $1 ; \
exit 9 ; \
fi ; \
)
endef
else
# Macro to check it's input file for banned dependencies and verify the
# binary was built properly. Relies on process exit code.
define binary_file_verification # binary_file
endef
endif