BaseTools: Modify gcc 4.8 and 4.9 tool chain definition to support building from Windows.

Here is a new patch that adds Windows support for both gcc 4.8.x and gcc 4.9.x. 
This time testing is more thorough: boot testing using Duet for all 4 combinations of 
IA32/X64 and gcc 4.8.2 and gcc 4.9.1 passes. A Windows hosted gcc 4.8.2 has been added here:
http://sourceforge.net/projects/edk2developertoolsforwindows/

The environment variable settings for Windows look like:

set UEFI_BUILD_TOOLS=%cd%\tools
set NASM_PREFIX=%UEFI_BUILD_TOOLS%\nasm211\
set GCC48_BIN=%UEFI_BUILD_TOOLS%\gcc482-x86\bin\
set GCC48_DLL=%UEFI_BUILD_TOOLS%\gcc482-x86\dll\;%GCC48_BIN%
set GCC48_ARM_PREFIX=%UEFI_BUILD_TOOLS%\gcc482-arm\bin\
set GCC48_AARCH64_PREFIX=%UEFI_BUILD_TOOLS%\gcc482-aarch64\bin\
set GCC49_BIN=%UEFI_BUILD_TOOLS%\gcc491-x86\bin\
set GCC49_DLL=%UEFI_BUILD_TOOLS%\gcc491-x86\dll\;%GCC49_BIN%
set GCC49_ARM_PREFIX=%UEFI_BUILD_TOOLS%\gcc491-arm\bin\
set GCC49_AARCH64_PREFIX=%UEFI_BUILD_TOOLS%\gcc491-aarch64\bin\

No change is needed for building from Linux. 

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Scott Duplichan <scott@notabs.org>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16400 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Scott Duplichan 2014-11-18 02:38:20 +00:00 committed by lgao4
parent d808fc659d
commit 285a175441
3 changed files with 37 additions and 12 deletions

View File

@ -131,11 +131,33 @@
<Command.GCC, Command.RVCT> <Command.GCC, Command.RVCT>
# For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
"$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
"$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
<Command.ARMGCC, Command.ARMLINUXGCC, command.XCODE> <Command.ARMGCC, Command.ARMLINUXGCC, command.XCODE>
"$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
[C-Code-File.COMMON.IPF]
<InputFile>
?.c
?.C
?.cc
?.CC
?.cpp
?.Cpp
?.CPP
<ExtraDependency>
$(MAKE_FILE)
<OutputFile>
$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
<Command.MSFT, Command.INTEL>
"$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
<Command.GCC, Command.RVCT>
# For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
"$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
"$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
[C-Header-File] [C-Header-File]
<InputFile> <InputFile>

View File

@ -179,11 +179,11 @@ DEFINE GCC46_X64_PREFIX = /usr/bin/
DEFINE GCC47_IA32_PREFIX = /usr/bin/ DEFINE GCC47_IA32_PREFIX = /usr/bin/
DEFINE GCC47_X64_PREFIX = /usr/bin/ DEFINE GCC47_X64_PREFIX = /usr/bin/
DEFINE GCC48_IA32_PREFIX = /usr/bin/ DEFINE GCC48_IA32_PREFIX = ENV(GCC48_BIN)
DEFINE GCC48_X64_PREFIX = /usr/bin/ DEFINE GCC48_X64_PREFIX = ENV(GCC48_BIN)
DEFINE GCC49_IA32_PREFIX = /usr/bin/ DEFINE GCC49_IA32_PREFIX = ENV(GCC49_BIN)
DEFINE GCC49_X64_PREFIX = /usr/bin/ DEFINE GCC49_X64_PREFIX = ENV(GCC49_BIN)
DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl
DEFINE WIN_ASL_BIN_DIR = C:\ASL DEFINE WIN_ASL_BIN_DIR = C:\ASL
@ -333,14 +333,14 @@ DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G
# Required to build platforms or ACPI tables: # Required to build platforms or ACPI tables:
# Intel(r) ACPI Compiler v20101013 from # Intel(r) ACPI Compiler v20101013 from
# http://www.acpica.org/downloads/previous_releases.php # http://www.acpica.org/downloads/previous_releases.php
# GCC48 -Linux- Requires: # GCC48 -Linux,Windows- Requires:
# GCC 4.8 # GCC 4.8 targeting x86_64-linux-gnu
# Optional: # Optional:
# Required to build platforms or ACPI tables: # Required to build platforms or ACPI tables:
# Intel(r) ACPI Compiler v20101013 from # Intel(r) ACPI Compiler v20101013 from
# http://www.acpica.org/downloads/previous_releases.php # http://www.acpica.org/downloads/previous_releases.php
# GCC49 -Linux- Requires: # GCC49 -Linux,Windows- Requires:
# GCC 4.9 # GCC 4.9 targeting x86_64-linux-gnu
# Optional: # Optional:
# Required to build platforms or ACPI tables: # Required to build platforms or ACPI tables:
# Intel(r) ACPI Compiler v20101013 from # Intel(r) ACPI Compiler v20101013 from
@ -4367,7 +4367,8 @@ RELEASE_GCC47_AARCH64_CC_FLAGS = DEF(GCC47_AARCH64_CC_FLAGS) -Wno-unused-but-s
#################################################################################### ####################################################################################
*_GCC48_*_*_FAMILY = GCC *_GCC48_*_*_FAMILY = GCC
*_GCC48_*_MAKE_PATH = make *_GCC48_*_MAKE_PATH = DEF(GCC48_IA32_PREFIX)make
*_GCC48_*_*_DLL = ENV(GCC48_DLL)
*_GCC48_*_ASL_PATH = DEF(UNIX_IASL_BIN) *_GCC48_*_ASL_PATH = DEF(UNIX_IASL_BIN)
*_GCC48_*_PP_FLAGS = DEF(GCC_PP_FLAGS) *_GCC48_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
@ -4489,7 +4490,8 @@ RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
#################################################################################### ####################################################################################
*_GCC49_*_*_FAMILY = GCC *_GCC49_*_*_FAMILY = GCC
*_GCC49_*_MAKE_PATH = make *_GCC49_*_MAKE_PATH = DEF(GCC49_IA32_PREFIX)make
*_GCC49_*_*_DLL = ENV(GCC49_DLL)
*_GCC49_*_ASL_PATH = DEF(UNIX_IASL_BIN) *_GCC49_*_ASL_PATH = DEF(UNIX_IASL_BIN)
*_GCC49_*_PP_FLAGS = DEF(GCC_PP_FLAGS) *_GCC49_*_PP_FLAGS = DEF(GCC_PP_FLAGS)

View File

@ -679,7 +679,8 @@ cleanlib:
NewFile = self.PlaceMacro(str(F), self.Macros) NewFile = self.PlaceMacro(str(F), self.Macros)
# In order to use file list macro as dependency # In order to use file list macro as dependency
if T.GenListFile: if T.GenListFile:
self.ListFileMacros[T.ListFileMacro].append(str(F)) # gnu tools need forward slash path separater, even on Windows
self.ListFileMacros[T.ListFileMacro].append(str(F).replace ('\\', '/'))
self.FileListMacros[T.FileListMacro].append(NewFile) self.FileListMacros[T.FileListMacro].append(NewFile)
elif T.GenFileListMacro: elif T.GenFileListMacro:
self.FileListMacros[T.FileListMacro].append(NewFile) self.FileListMacros[T.FileListMacro].append(NewFile)