#/*++
#   
#  Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
#  This program and the accompanying materials                          
#  are licensed and made available under the terms and conditions of the BSD License         
#  which accompanies this distribution.  The full text of the license may be found at        
#  http://opensource.org/licenses/bsd-license.php                                            
#                                                                                            
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
#  
#  Module Name:
#
#    LocalTools.env
#   
#  Abstract:
#   
#    This file is included by CommonTools.env, which is included by 
#    makefiles when building.
#   
#    It can be customized to identify the locations of the tools 
#    necessary to build the EFI source code for different systems. 
#   
#--*/

# 
# Customize to define the base path to MASM for IA32
#
!IFNDEF MASMPATH
MASMPATH   = c:\masm611
!ENDIF

# 
# Customize to define the base path to iASL
#
!IFNDEF ASLPATH
ASLPATH   = c:\Asl
!ENDIF

#
# Customize to define the base path to the tools for IPF
#
!IFNDEF EFI_IA64TOOLPATH
!IF "$(USE_NEWDDK)" == "YES"
EFI_IA64TOOLPATH  = C:\WINDDK\3790.1830\bin\win64\x86
!ELSE
EFI_IA64TOOLPATH  = C:\DDK3790
!ENDIF
!ENDIF

!IFNDEF EFI_IA64ASMPATH
!IF "$(USE_NEWDDK)" == "YES"
EFI_IA64ASMPATH   = C:\WINDDK\3790.1830\bin\win64\x86
!ELSE
EFI_IA64ASMPATH   = C:\DDK3790
!ENDIF
!ENDIF

# 
# Customize to define the base path to the EBC tools
#
!IFNDEF EBC_TOOLS_PATH
EBC_TOOLS_PATH  = c:\progra~1\intel\ebc
!ENDIF

#
# Customize to define the base path to WINDDK for X64
#
!IFNDEF WIN_DDK_PATH
WIN_DDK_X64_PATH = C:\WINDDK\3790.1830\bin\win64\x86\amd64
!ELSE
WIN_DDK_X64_PATH = $(WIN_DDK_PATH)\bin\win64\x86\amd64
!ENDIF

#
# Customize to define the base path to VC8 for X64
#
!IF "$(USE_VC8_X64)" == "YES"
!IFNDEF VCINSTALLDIR
VC8_X64_PATH = c:\Program Files\Microsoft Visual Studio 8\VC\bin\x86_amd64
!ELSE
VC8_X64_PATH = $(VCINSTALLDIR)\bin\x86_amd64
!ENDIF
!ENDIF

#
# Customize to define the base path to VC8 for IPF
#
!IF "$(USE_VC8_IPF)" == "YES"
!IFNDEF VCINSTALLDIR
VC8_IPF_PATH = c:\Program Files\Microsoft Visual Studio 8\VC\bin\x86_ia64
!ELSE
VC8_IPF_PATH = $(VCINSTALLDIR)\bin\x86_ia64
!ENDIF
!ENDIF
