|
From: <qh...@us...> - 2010-02-02 08:42:54
|
Revision: 1834
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1834&view=rev
Author: qhuang8
Date: 2010-02-02 08:42:48 +0000 (Tue, 02 Feb 2010)
Log Message:
-----------
Rollback to BaseTools revision 1799. The patch tries to use Win32 platform specific method to solve multi-thread build issue. We might need complete solution after more detailed investigation.
Revision Links:
--------------
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1799&view=rev
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-02-02 06:44:31 UTC (rev 1833)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-02-02 08:42:48 UTC (rev 1834)
@@ -22,10 +22,6 @@
import time
import platform
import traceback
-import types
-if sys.platform == "win32":
- import subprocess
- from _subprocess import CreateProcess
from threading import *
from optparse import OptionParser
@@ -217,43 +213,6 @@
if ExitFlag.isSet():
break
-class WinPopen(Popen):
- def _execute_child(self, args, executable, preexec_fn, close_fds,
- cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
- p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite):
- """Execute program (MS Windows version)"""
-
- if not isinstance(args, types.StringTypes):
- args = subprocess.list2cmdline(args)
-
- # Start the process
- try:
- hp, ht, pid, tid = CreateProcess(executable, args,
- None, None,
- 0,
- creationflags,
- env,
- cwd,
- None)
- except IOError, e:
- raise WindowsError(*e.args)
-
- # Retain the process handle, but close the thread handle
- self._child_created = True
- self._handle = hp
- self.pid = pid
- ht.Close()
-
- if p2cread is not None:
- p2cread.Close()
- if c2pwrite is not None:
- c2pwrite.Close()
- if errwrite is not None:
- errwrite.Close()
-
## Launch an external program
#
# This method will call subprocess.Popen to execute an external program with
@@ -273,10 +232,7 @@
EndOfProcedure = None
try:
# launch the command
- if sys.platform == "win32":
- Proc = WinPopen(Command, stdout=PIPE, stderr=PIPE, env=os.environ, cwd=WorkingDir, bufsize=-1)
- else:
- Proc = Popen(Command, stdout=PIPE, stderr=PIPE, env=os.environ, cwd=WorkingDir, bufsize=-1)
+ Proc = Popen(Command, stdout=PIPE, stderr=PIPE, env=os.environ, cwd=WorkingDir, bufsize=-1)
# launch two threads to read the STDOUT and STDERR
EndOfProcedure = Event()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-02-08 09:05:19
|
Revision: 1853
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1853&view=rev
Author: lgao4
Date: 2010-02-08 09:05:12 +0000 (Mon, 08 Feb 2010)
Log Message:
-----------
Update ImageSize to align 4K page size for load module at fix address feature.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-02-08 07:06:35 UTC (rev 1852)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-02-08 09:05:12 UTC (rev 1853)
@@ -663,6 +663,7 @@
self.BaseName = BaseName
self.Guid = Guid
self.OutpuDir = OutpuDir
+ ImageClass.Size = (ImageClass.Size / 0x1000 + 1) * 0x1000
self.Image = ImageClass
## The class implementing the EDK2 build process
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-02-10 11:59:25
|
Revision: 1861
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1861&view=rev
Author: lgao4
Date: 2010-02-10 11:59:18 +0000 (Wed, 10 Feb 2010)
Log Message:
-----------
1. Support EFI image with none zero base address.
2. Check whether the specified fixed top address is page alignment.
3. Make sure that IPF runtime EFI image at 2 page alignment address.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-02-10 11:57:15 UTC (rev 1860)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-02-10 11:59:18 UTC (rev 1861)
@@ -653,18 +653,19 @@
#
# Constructor will load all required image information.
#
- # @param FileName The full file path of image.
- # @param Size The required memory size of image.
- # @param EntryPointOffset The entry point offset to image base.
+ # @param BaseName The full file path of image.
# @param Guid The GUID for image.
+ # @param Arch Arch of this image.
# @param OutpuDir The output directory for image.
+ # @param ImageClass PeImage Information
#
- def __init__(self, BaseName, Guid, OutpuDir, ImageClass):
+ def __init__(self, BaseName, Guid, Arch, OutpuDir, ImageClass):
self.BaseName = BaseName
self.Guid = Guid
+ self.Arch = Arch
self.OutpuDir = OutpuDir
- ImageClass.Size = (ImageClass.Size / 0x1000 + 1) * 0x1000
self.Image = ImageClass
+ self.Image.Size = (self.Image.Size / 0x1000 + 1) * 0x1000
## The class implementing the EDK2 build process
#
@@ -876,7 +877,9 @@
except:
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (LoadFixAddressString))
if self.LoadFixAddress < 0:
- EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS can't be set to negative value %s" % (LoadFixAddressString))
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value %s" % (LoadFixAddressString))
+ if self.LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self.LoadFixAddress % 0x1000 != 0:
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value %s" % (LoadFixAddressString))
if self.SkuId == None or self.SkuId == '':
self.SkuId = self.Platform.SkuName
@@ -1007,14 +1010,44 @@
#
LaunchCommand(["GenFw", "--address", str(BaseAddress), "-r", ModuleInfo.Image.FileName], ModuleInfo.OutpuDir)
#
+ # Collect funtion address from Map file
+ #
+ ImageMapTable = ModuleInfo.Image.FileName.replace('.efi', '.map')
+ FunctionList = []
+ if os.path.exists(ImageMapTable):
+ OrigImageBaseAddress = 0
+ ImageMap = open (ImageMapTable, 'r')
+ for LinStr in ImageMap:
+ if len (LinStr.strip()) == 0:
+ continue
+ #
+ # Get the preferred address set on link time.
+ #
+ if LinStr.find ('Preferred load address is') != -1:
+ StrList = LinStr.split()
+ OrigImageBaseAddress = int (StrList[len(StrList) - 1], 16)
+
+ StrList = LinStr.split()
+ if len (StrList) > 4:
+ if StrList[3] == 'f' or StrList[3] =='F':
+ Name = StrList[1]
+ RelativeAddress = int (StrList[2], 16) - OrigImageBaseAddress
+ FunctionList.append ((Name, RelativeAddress))
+ if ModuleInfo.Arch == 'IPF' and Name.endswith('_ModuleEntryPoint'):
+ #
+ # Get the real entry point address for IPF image.
+ #
+ ModuleInfo.Image.EntryPoint = RelativeAddress
+ ImageMap.close()
+ #
# Add general information.
#
if ModeIsSmm:
- MapBuffer.write('\n\n%s (Fix SMRAM Offset, BaseAddress=0x%010X, EntryPoint=0x%010X)\n' % (ModuleName, BaseAddress, BaseAddress + ModuleInfo.Image.EntryPoint))
+ MapBuffer.write('\n\n%s (Fixed SMRAM Offset, BaseAddress=0x%010X, EntryPoint=0x%010X)\n' % (ModuleName, BaseAddress, BaseAddress + ModuleInfo.Image.EntryPoint))
elif AddrIsOffset:
- MapBuffer.write('\n\n%s (Fix Memory Offset, BaseAddress=-0x%010X, EntryPoint=-0x%010X)\n' % (ModuleName, 0 - BaseAddress, 0 - (BaseAddress + ModuleInfo.Image.EntryPoint)))
+ MapBuffer.write('\n\n%s (Fixed Memory Offset, BaseAddress=-0x%010X, EntryPoint=-0x%010X)\n' % (ModuleName, 0 - BaseAddress, 0 - (BaseAddress + ModuleInfo.Image.EntryPoint)))
else:
- MapBuffer.write('\n\n%s (Fix Memory Address, BaseAddress=0x%010X, EntryPoint=0x%010X)\n' % (ModuleName, BaseAddress, BaseAddress + ModuleInfo.Image.EntryPoint))
+ MapBuffer.write('\n\n%s (Fixed Memory Address, BaseAddress=0x%010X, EntryPoint=0x%010X)\n' % (ModuleName, BaseAddress, BaseAddress + ModuleInfo.Image.EntryPoint))
#
# Add guid and general seciton section.
#
@@ -1023,7 +1056,7 @@
for SectionHeader in ModuleInfo.Image.SectionHeaderList:
if SectionHeader[0] == '.text':
TextSectionAddress = SectionHeader[1]
- elif SectionHeader[1] == '.data':
+ elif SectionHeader[0] in ['.data', '.sdata']:
DataSectionAddress = SectionHeader[1]
if AddrIsOffset:
MapBuffer.write('(GUID=%s, .textbaseaddress=-0x%010X, .databaseaddress=-0x%010X)\n\n' % (ModuleInfo.Guid, 0 - (BaseAddress + TextSectionAddress), 0 - (BaseAddress + DataSectionAddress)))
@@ -1032,20 +1065,11 @@
#
# Add funtion address
#
- ImageMapTable = ModuleInfo.Image.FileName.replace('.efi', '.map')
- if not os.path.exists(ImageMapTable):
- continue
- ImageMap = open (ImageMapTable, 'r')
- for LinStr in ImageMap:
- if len (LinStr.strip()) == 0:
- continue
- StrList = LinStr.split()
- if len (StrList) > 4:
- if StrList[3] == 'f' or StrList[3] =='F':
- if AddrIsOffset:
- MapBuffer.write(' -0x%010X %s\n' % (0 - (BaseAddress + int (StrList[2], 16)), StrList[1]))
- else:
- MapBuffer.write(' 0x%010X %s\n' % (BaseAddress + int (StrList[2], 16), StrList[1]))
+ for Function in FunctionList:
+ if AddrIsOffset:
+ MapBuffer.write(' -0x%010X %s\n' % (0 - (BaseAddress + Function[1]), Function[0]))
+ else:
+ MapBuffer.write(' 0x%010X %s\n' % (BaseAddress + Function[1], Function[0]))
ImageMap.close()
#
@@ -1087,6 +1111,9 @@
RtSize = 0
# reserve 4K size in SMRAM to make SMM module address not from 0.
SmmSize = 0x1000
+ IsIpfPlatform = False
+ if 'IPF' in self.ArchList:
+ IsIpfPlatform = True
for Module in ModuleList:
GlobalData.gProcessingFile = "%s [%s, %s, %s]" % (Module.MetaFile, Module.Arch, Module.ToolChain, Module.BuildTarget)
@@ -1100,19 +1127,22 @@
ImageClass = PeImageClass (OutputImageFile)
if not ImageClass.IsValid:
EdkLogger.error("build", FILE_PARSE_FAILURE, ExtraData=ImageClass.ErrorInfo)
- ImageInfo = PeImageInfo(Module.Name, Module.Guid, Module.OutputDir, ImageClass)
+ ImageInfo = PeImageInfo(Module.Name, Module.Guid, Module.Arch, Module.OutputDir, ImageClass)
if Module.ModuleType in ['PEI_CORE', 'PEIM', 'COMBINED_PEIM_DRIVER','PIC_PEIM', 'RELOCATABLE_PEIM', 'DXE_CORE']:
PeiModuleList[Module.MetaFile] = ImageInfo
- PeiSize += ImageClass.Size
+ PeiSize += ImageInfo.Image.Size
elif Module.ModuleType in ['BS_DRIVER', 'DXE_DRIVER', 'UEFI_DRIVER']:
BtModuleList[Module.MetaFile] = ImageInfo
- BtSize += ImageClass.Size
+ BtSize += ImageInfo.Image.Size
elif Module.ModuleType in ['DXE_RUNTIME_DRIVER', 'RT_DRIVER', 'DXE_SAL_DRIVER', 'SAL_RT_DRIVER']:
RtModuleList[Module.MetaFile] = ImageInfo
- RtSize += ImageClass.Size
+ #IPF runtime driver needs to be at 2 page alignment.
+ if IsIpfPlatform and ImageInfo.Image.Size % 0x2000 != 0:
+ ImageInfo.Image.Size = (ImageInfo.Image.Size / 0x2000 + 1) * 0x2000
+ RtSize += ImageInfo.Image.Size
elif Module.ModuleType in ['SMM_CORE', 'DXE_SMM_DRIVER']:
SmmModuleList[Module.MetaFile] = ImageInfo
- SmmSize += ImageClass.Size
+ SmmSize += ImageInfo.Image.Size
if Module.ModuleType == 'DXE_SMM_DRIVER':
PiSpecVersion = 0
if 'PI_SPECIFICATION_VERSION' in Module.Module.Specification:
@@ -1120,7 +1150,7 @@
# for PI specification < PI1.1, DXE_SMM_DRIVER also runs as BOOT time driver.
if PiSpecVersion < 0x0001000A:
BtModuleList[Module.MetaFile] = ImageInfo
- BtSize += ImageClass.Size
+ BtSize += ImageInfo.Image.Size
break
#
# EFI image is final target.
@@ -1147,6 +1177,22 @@
PatchEfiImageList.append (OutputImageFile)
#
+ # Get Top Memory address
+ #
+ ReservedRuntimeMemorySize = 0
+ TopMemoryAddress = 0
+ if self.LoadFixAddress == 0xFFFFFFFFFFFFFFFF:
+ TopMemoryAddress = 0
+ else:
+ TopMemoryAddress = self.LoadFixAddress
+ if TopMemoryAddress < RtSize + BtSize + PeiSize:
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is too low to load driver")
+ # Make IPF runtime driver at 2 page alignment.
+ if IsIpfPlatform:
+ ReservedRuntimeMemorySize = TopMemoryAddress % 0x2000
+ RtSize = RtSize + ReservedRuntimeMemorySize
+
+ #
# Patch FixAddress related PCDs into EFI image
#
for EfiImage in PatchEfiImageList:
@@ -1168,29 +1214,20 @@
ReturnValue, ErrorInfo = PatchBinaryFile (EfiImage, PcdInfo[1], TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_DXE_PAGE_SIZE_DATA_TYPE, str (BtSize/0x1000))
elif PcdInfo[0] == TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_RUNTIME_PAGE_SIZE:
ReturnValue, ErrorInfo = PatchBinaryFile (EfiImage, PcdInfo[1], TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_RUNTIME_PAGE_SIZE_DATA_TYPE, str (RtSize/0x1000))
- elif PcdInfo[0] == TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE:
+ elif PcdInfo[0] == TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE and len (SmmModuleList) > 0:
ReturnValue, ErrorInfo = PatchBinaryFile (EfiImage, PcdInfo[1], TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE_DATA_TYPE, str (SmmSize/0x1000))
if ReturnValue != 0:
EdkLogger.error("build", PARAMETER_INVALID, "Patch PCD value failed", ExtraData=ErrorInfo)
- #
- # Get Top Memory address
- #
- TopMemoryAddress = 0
- if self.LoadFixAddress == 0xFFFFFFFFFFFFFFFF:
- TopMemoryAddress = 0
- else:
- TopMemoryAddress = self.LoadFixAddress
- if TopMemoryAddress < RtSize + BtSize + PeiSize:
- EdkLogger.error("build", PARAMETER_INVALID, "TopMemoryAddress is too low to load driver")
MapBuffer.write('PEI_CODE_PAGE_NUMBER = 0x%x\n' % (PeiSize/0x1000))
MapBuffer.write('BOOT_CODE_PAGE_NUMBER = 0x%x\n' % (BtSize/0x1000))
MapBuffer.write('RUNTIME_CODE_PAGE_NUMBER = 0x%x\n' % (RtSize/0x1000))
- MapBuffer.write('SMM_CODE_PAGE_NUMBER = 0x%x\n' % (SmmSize/0x1000))
+ if len (SmmModuleList) > 0:
+ MapBuffer.write('SMM_CODE_PAGE_NUMBER = 0x%x\n' % (SmmSize/0x1000))
PeiBaseAddr = TopMemoryAddress - RtSize - BtSize
BtBaseAddr = TopMemoryAddress - RtSize
- RtBaseAddr = TopMemoryAddress
+ RtBaseAddr = TopMemoryAddress - ReservedRuntimeMemorySize
self._RebaseModule (MapBuffer, PeiBaseAddr, PeiModuleList, TopMemoryAddress == 0)
self._RebaseModule (MapBuffer, BtBaseAddr, BtModuleList, TopMemoryAddress == 0)
@@ -1245,7 +1282,7 @@
# Check whether the set fix address is above 4G for 32bit image.
#
if (Arch == 'IA32' or Arch == 'ARM') and self.LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self.LoadFixAddress >= 0x100000000:
- EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS can't be set to larger than 4G for the platorm with IA32 arch modules")
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS can't be set to larger than or equal to 4G for the platorm with IA32 or ARM arch modules")
#
# Get Module List
#
@@ -1405,7 +1442,7 @@
# Check whether the set fix address is above 4G for 32bit image.
#
if (Arch == 'IA32' or Arch == 'ARM') and self.LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self.LoadFixAddress >= 0x100000000:
- EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS can't be set to larger than 4G for the platorm with IA32 arch modules")
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS can't be set to larger than or equal to 4G for the platorm with IA32 or ARM arch modules")
#
# Get Module List
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-02-23 14:16:28
|
Revision: 1885
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1885&view=rev
Author: lgao4
Date: 2010-02-23 14:16:18 +0000 (Tue, 23 Feb 2010)
Log Message:
-----------
Create load fix address map when single module build with fds target.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-02-23 08:53:17 UTC (rev 1884)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-02-23 14:16:18 UTC (rev 1885)
@@ -1355,7 +1355,43 @@
(', '.join(self.ArchList), self.Platform),
ExtraData=self.ModuleFile
)
+ # Create MAP file when Load Fix Address is enabled.
+ if self.LoadFixAddress != 0 and self.Target == "fds" and self.Fdf != '':
+ for Arch in self.ArchList:
+ #
+ # Check whether the set fix address is above 4G for 32bit image.
+ #
+ if (Arch == 'IA32' or Arch == 'ARM') and self.LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self.LoadFixAddress >= 0x100000000:
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS can't be set to larger than or equal to 4G for the platorm with IA32 or ARM arch modules")
+ #
+ # Get Module List
+ #
+ ModuleList = []
+ for Pa in Wa.AutoGenObjectList:
+ for Ma in Pa.ModuleAutoGenList:
+ if Ma == None:
+ continue
+ if not Ma.IsLibrary:
+ ModuleList.append (Ma)
+ MapBuffer = StringIO('')
+ #
+ # Rebase module to the preferred memory address before GenFds
+ #
+ self._CollectModuleMapBuffer(MapBuffer, ModuleList)
+ #
+ # create FDS again for the updated EFI image
+ #
+ self._Build("fds", Wa)
+ #
+ # Create MAP file for all platform FVs after GenFds.
+ #
+ self._CollectFvMapBuffer(MapBuffer, Wa)
+ #
+ # Save MAP buffer into MAP file.
+ #
+ self._SaveMapFile (MapBuffer, Wa)
+
## Build a platform in multi-thread mode
#
def _MultiThreadBuildPlatform(self):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <qh...@us...> - 2010-03-04 02:48:41
|
Revision: 1911
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1911&view=rev
Author: qhuang8
Date: 2010-03-04 02:48:34 +0000 (Thu, 04 Mar 2010)
Log Message:
-----------
Treat "TARGET" as a special global macro. This can help to use single DSC file for debug/release profile.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-03-04 02:45:19 UTC (rev 1910)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-03-04 02:48:34 UTC (rev 1911)
@@ -738,6 +738,16 @@
# parse target.txt, tools_def.txt, and platform file
#self.RestoreBuildData()
self.LoadConfiguration()
+
+ #
+ # @attention Treat $(TARGET) in meta data files as special macro when it has only one build target.
+ # This is not a complete support for $(TARGET) macro as it can only support one build target in ONE
+ # invocation of build command. However, it should cover the frequent usage model that $(TARGET) macro
+ # is used in DSC files to specify different libraries & PCD setting for debug/release build.
+ #
+ if len(self.BuildTargetList) == 1:
+ self.Db._GlobalMacros.setdefault("TARGET", self.BuildTargetList[0])
+
self.InitBuild()
# print current build environment and configuration
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-03-11 09:56:05
|
Revision: 1925
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1925&view=rev
Author: lgao4
Date: 2010-03-11 09:55:59 +0000 (Thu, 11 Mar 2010)
Log Message:
-----------
1. Create platform MAP file to record the fixed function address for XIP module.
2. Show module name not module guid for readability in platform MAP file.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-03-11 06:00:49 UTC (rev 1924)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-03-11 09:55:59 UTC (rev 1925)
@@ -1090,9 +1090,10 @@
## Collect MAP information of all FVs
#
- def _CollectFvMapBuffer (self, MapBuffer, Wa):
+ def _CollectFvMapBuffer (self, MapBuffer, Wa, ModuleList):
if self.Fdf != '':
# First get the XIP base address for FV map file.
+ GuidPattern = re.compile("[-a-fA-F0-9]+")
for FvName in Wa.FdfProfile.FvDict.keys():
FvMapBuffer = os.path.join(Wa.FvDir, FvName + '.Fv.map')
if not os.path.exists(FvMapBuffer):
@@ -1103,7 +1104,16 @@
FvMap.readline()
FvMap.readline()
FvMap.readline()
- MapBuffer.write(FvMap.read())
+ for Line in FvMap:
+ MatchGuid = GuidPattern.match(Line)
+ if MatchGuid != None:
+ #
+ # Replace GUID with module name
+ #
+ GuidString = MatchGuid.group()
+ if GuidString.upper() in ModuleList:
+ Line = Line.replace(GuidString, ModuleList[GuidString.upper()].Name)
+ MapBuffer.write('%s' % (Line))
FvMap.close()
## Collect MAP information of all modules
@@ -1124,7 +1134,8 @@
IsIpfPlatform = False
if 'IPF' in self.ArchList:
IsIpfPlatform = True
- for Module in ModuleList:
+ for ModuleGuid in ModuleList:
+ Module = ModuleList[ModuleGuid]
GlobalData.gProcessingFile = "%s [%s, %s, %s]" % (Module.MetaFile, Module.Arch, Module.ToolChain, Module.BuildTarget)
OutputImageFile = ''
@@ -1259,7 +1270,8 @@
#
SaveFileOnChange(MapFilePath, MapBuffer.getvalue(), False)
MapBuffer.close()
- sys.stdout.write ("\nLoad Module At Fix Address Map file saved to %s\n" %(MapFilePath))
+ if self.LoadFixAddress != 0:
+ sys.stdout.write ("\nLoad Module At Fix Address Map file saved to %s\n" %(MapFilePath))
sys.stdout.flush()
## Build active platform for different build targets and different tool chains
@@ -1286,7 +1298,7 @@
self._Build(self.Target, Wa)
# Create MAP file when Load Fix Address is enabled.
- if self.Target in ["", "all", "fds"] and self.LoadFixAddress != 0:
+ if self.Target in ["", "all", "fds"]:
for Arch in self.ArchList:
#
# Check whether the set fix address is above 4G for 32bit image.
@@ -1296,19 +1308,20 @@
#
# Get Module List
#
- ModuleList = []
+ ModuleList = {}
for Pa in Wa.AutoGenObjectList:
for Ma in Pa.ModuleAutoGenList:
if Ma == None:
continue
if not Ma.IsLibrary:
- ModuleList.append (Ma)
+ ModuleList[Ma.Guid.upper()] = Ma
MapBuffer = StringIO('')
- #
- # Rebase module to the preferred memory address before GenFds
- #
- self._CollectModuleMapBuffer(MapBuffer, ModuleList)
+ if self.LoadFixAddress != 0:
+ #
+ # Rebase module to the preferred memory address before GenFds
+ #
+ self._CollectModuleMapBuffer(MapBuffer, ModuleList)
if self.Fdf != '':
#
# create FDS again for the updated EFI image
@@ -1317,7 +1330,7 @@
#
# Create MAP file for all platform FVs after GenFds.
#
- self._CollectFvMapBuffer(MapBuffer, Wa)
+ self._CollectFvMapBuffer(MapBuffer, Wa, ModuleList)
#
# Save MAP buffer into MAP file.
#
@@ -1367,7 +1380,7 @@
ExtraData=self.ModuleFile
)
# Create MAP file when Load Fix Address is enabled.
- if self.LoadFixAddress != 0 and self.Target == "fds" and self.Fdf != '':
+ if self.Target == "fds" and self.Fdf != '':
for Arch in self.ArchList:
#
# Check whether the set fix address is above 4G for 32bit image.
@@ -1377,27 +1390,28 @@
#
# Get Module List
#
- ModuleList = []
+ ModuleList = {}
for Pa in Wa.AutoGenObjectList:
for Ma in Pa.ModuleAutoGenList:
if Ma == None:
continue
if not Ma.IsLibrary:
- ModuleList.append (Ma)
+ ModuleList[Ma.Guid.upper()] = Ma
MapBuffer = StringIO('')
+ if self.LoadFixAddress != 0:
+ #
+ # Rebase module to the preferred memory address before GenFds
+ #
+ self._CollectModuleMapBuffer(MapBuffer, ModuleList)
+ #
+ # create FDS again for the updated EFI image
+ #
+ self._Build("fds", Wa)
#
- # Rebase module to the preferred memory address before GenFds
- #
- self._CollectModuleMapBuffer(MapBuffer, ModuleList)
- #
- # create FDS again for the updated EFI image
- #
- self._Build("fds", Wa)
- #
# Create MAP file for all platform FVs after GenFds.
#
- self._CollectFvMapBuffer(MapBuffer, Wa)
+ self._CollectFvMapBuffer(MapBuffer, Wa, ModuleList)
#
# Save MAP buffer into MAP file.
#
@@ -1483,7 +1497,7 @@
EdkLogger.error("build", BUILD_ERROR, "Failed to build module", ExtraData=GlobalData.gBuildingModule)
# Create MAP file when Load Fix Address is enabled.
- if self.Target in ["", "all", "fds"] and self.LoadFixAddress != 0:
+ if self.Target in ["", "all", "fds"]:
for Arch in self.ArchList:
#
# Check whether the set fix address is above 4G for 32bit image.
@@ -1493,30 +1507,31 @@
#
# Get Module List
#
- ModuleList = []
+ ModuleList = {}
for Pa in Wa.AutoGenObjectList:
for Ma in Pa.ModuleAutoGenList:
if Ma == None:
continue
if not Ma.IsLibrary:
- ModuleList.append (Ma)
+ ModuleList[Ma.Guid.upper()] = Ma
#
# Rebase module to the preferred memory address before GenFds
#
MapBuffer = StringIO('')
- self._CollectModuleMapBuffer(MapBuffer, ModuleList)
+ if self.LoadFixAddress != 0:
+ self._CollectModuleMapBuffer(MapBuffer, ModuleList)
# Generate FD image if there's a FDF file found
if self.Fdf != '' and self.Target in ["", "all", "fds"]:
LaunchCommand(Wa.BuildCommand + ["fds"], Wa.MakeFileDir)
# Create MAP file for all platform FV after GenFds
- if self.Target in ["", "all", "fds"] and self.LoadFixAddress != 0:
+ if self.Target in ["", "all", "fds"]:
if self.Fdf != '':
#
# Create MAP file for all platform FVs after GenFds.
#
- self._CollectFvMapBuffer(MapBuffer, Wa)
+ self._CollectFvMapBuffer(MapBuffer, Wa, ModuleList)
#
# Save MAP buffer into MAP file.
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-03-15 10:01:14
|
Revision: 1931
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1931&view=rev
Author: lgao4
Date: 2010-03-15 10:01:05 +0000 (Mon, 15 Mar 2010)
Log Message:
-----------
Only create FD image once for each build.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-03-14 04:43:01 UTC (rev 1930)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-03-15 10:01:05 UTC (rev 1931)
@@ -1322,12 +1322,13 @@
# Rebase module to the preferred memory address before GenFds
#
self._CollectModuleMapBuffer(MapBuffer, ModuleList)
+ if self.Fdf != '':
+ #
+ # create FDS again for the updated EFI image
+ #
+ self._Build("fds", Wa)
if self.Fdf != '':
#
- # create FDS again for the updated EFI image
- #
- self._Build("fds", Wa)
- #
# Create MAP file for all platform FVs after GenFds.
#
self._CollectFvMapBuffer(MapBuffer, Wa, ModuleList)
@@ -1521,14 +1522,12 @@
if self.LoadFixAddress != 0:
self._CollectModuleMapBuffer(MapBuffer, ModuleList)
- # Generate FD image if there's a FDF file found
- if self.Fdf != '' and self.Target in ["", "all", "fds"]:
- LaunchCommand(Wa.BuildCommand + ["fds"], Wa.MakeFileDir)
-
- # Create MAP file for all platform FV after GenFds
- if self.Target in ["", "all", "fds"]:
if self.Fdf != '':
#
+ # Generate FD image if there's a FDF file found
+ #
+ LaunchCommand(Wa.BuildCommand + ["fds"], Wa.MakeFileDir)
+ #
# Create MAP file for all platform FVs after GenFds.
#
self._CollectFvMapBuffer(MapBuffer, Wa, ModuleList)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-03-16 08:43:37
|
Revision: 1933
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1933&view=rev
Author: lgao4
Date: 2010-03-16 08:43:28 +0000 (Tue, 16 Mar 2010)
Log Message:
-----------
Always update the generated Map file.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-03-16 08:24:57 UTC (rev 1932)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-03-16 08:43:28 UTC (rev 1933)
@@ -1269,7 +1269,9 @@
#
# Save address map into MAP file.
#
- SaveFileOnChange(MapFilePath, MapBuffer.getvalue(), False)
+ MapFile = open(MapFilePath, "wb")
+ MapFile.write(MapBuffer.getvalue())
+ MapFile.close()
MapBuffer.close()
if self.LoadFixAddress != 0:
sys.stdout.write ("\nLoad Module At Fix Address Map file saved to %s\n" %(MapFilePath))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lg...@us...> - 2010-03-18 10:29:45
|
Revision: 1936
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=1936&view=rev
Author: lgao4
Date: 2010-03-18 10:29:38 +0000 (Thu, 18 Mar 2010)
Log Message:
-----------
Ouput the full path of the generated EFI image in the map file.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-03-18 09:16:53 UTC (rev 1935)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-03-18 10:29:38 UTC (rev 1936)
@@ -656,14 +656,16 @@
# @param BaseName The full file path of image.
# @param Guid The GUID for image.
# @param Arch Arch of this image.
- # @param OutpuDir The output directory for image.
+ # @param OutputDir The output directory for image.
+ # @param DebugDir The debug directory for image.
# @param ImageClass PeImage Information
#
- def __init__(self, BaseName, Guid, Arch, OutpuDir, ImageClass):
+ def __init__(self, BaseName, Guid, Arch, OutputDir, DebugDir, ImageClass):
self.BaseName = BaseName
self.Guid = Guid
self.Arch = Arch
- self.OutpuDir = OutpuDir
+ self.OutputDir = OutputDir
+ self.DebugDir = DebugDir
self.Image = ImageClass
self.Image.Size = (self.Image.Size / 0x1000 + 1) * 0x1000
@@ -1008,22 +1010,26 @@
sys.stdout.flush()
ModuleInfo = ModuleList[InfFile]
ModuleName = ModuleInfo.BaseName
+ ModuleOutputImage = ModuleInfo.Image.FileName
+ ModuleDebugImage = os.path.join(ModuleInfo.DebugDir, ModuleInfo.BaseName + '.efi')
## for SMM module in SMRAM, the SMRAM will be allocated from base to top.
if not ModeIsSmm:
BaseAddress = BaseAddress - ModuleInfo.Image.Size
#
# Update Image to new BaseAddress by GenFw tool
#
- LaunchCommand(["GenFw", "--rebase", str(BaseAddress), "-r", ModuleInfo.Image.FileName], ModuleInfo.OutpuDir)
+ LaunchCommand(["GenFw", "--rebase", str(BaseAddress), "-r", ModuleOutputImage], ModuleInfo.OutputDir)
+ LaunchCommand(["GenFw", "--rebase", str(BaseAddress), "-r", ModuleDebugImage], ModuleInfo.DebugDir)
else:
#
# Set new address to the section header only for SMM driver.
#
- LaunchCommand(["GenFw", "--address", str(BaseAddress), "-r", ModuleInfo.Image.FileName], ModuleInfo.OutpuDir)
+ LaunchCommand(["GenFw", "--address", str(BaseAddress), "-r", ModuleOutputImage], ModuleInfo.OutputDir)
+ LaunchCommand(["GenFw", "--address", str(BaseAddress), "-r", ModuleDebugImage], ModuleInfo.DebugDir)
#
# Collect funtion address from Map file
#
- ImageMapTable = ModuleInfo.Image.FileName.replace('.efi', '.map')
+ ImageMapTable = ModuleOutputImage.replace('.efi', '.map')
FunctionList = []
if os.path.exists(ImageMapTable):
OrigImageBaseAddress = 0
@@ -1070,10 +1076,14 @@
elif SectionHeader[0] in ['.data', '.sdata']:
DataSectionAddress = SectionHeader[1]
if AddrIsOffset:
- MapBuffer.write('(GUID=%s, .textbaseaddress=-0x%010X, .databaseaddress=-0x%010X)\n\n' % (ModuleInfo.Guid, 0 - (BaseAddress + TextSectionAddress), 0 - (BaseAddress + DataSectionAddress)))
+ MapBuffer.write('(GUID=%s, .textbaseaddress=-0x%010X, .databaseaddress=-0x%010X)\n' % (ModuleInfo.Guid, 0 - (BaseAddress + TextSectionAddress), 0 - (BaseAddress + DataSectionAddress)))
else:
- MapBuffer.write('(GUID=%s, .textbaseaddress=0x%010X, .databaseaddress=0x%010X)\n\n' % (ModuleInfo.Guid, BaseAddress + TextSectionAddress, BaseAddress + DataSectionAddress))
+ MapBuffer.write('(GUID=%s, .textbaseaddress=0x%010X, .databaseaddress=0x%010X)\n' % (ModuleInfo.Guid, BaseAddress + TextSectionAddress, BaseAddress + DataSectionAddress))
#
+ # Add debug image full path.
+ #
+ MapBuffer.write('(IMAGE=%s)\n\n' % (ModuleDebugImage))
+ #
# Add funtion address
#
for Function in FunctionList:
@@ -1095,6 +1105,7 @@
if self.Fdf != '':
# First get the XIP base address for FV map file.
GuidPattern = re.compile("[-a-fA-F0-9]+")
+ GuidName = re.compile("\(GUID=[-a-fA-F0-9]+")
for FvName in Wa.FdfProfile.FvDict.keys():
FvMapBuffer = os.path.join(Wa.FvDir, FvName + '.Fv.map')
if not os.path.exists(FvMapBuffer):
@@ -1115,6 +1126,15 @@
if GuidString.upper() in ModuleList:
Line = Line.replace(GuidString, ModuleList[GuidString.upper()].Name)
MapBuffer.write('%s' % (Line))
+ #
+ # Add the debug image full path.
+ #
+ MatchGuid = GuidName.match(Line)
+ if MatchGuid != None:
+ GuidString = MatchGuid.group().split("=")[1]
+ if GuidString.upper() in ModuleList:
+ MapBuffer.write('(IMAGE=%s)\n' % (os.path.join(ModuleList[GuidString.upper()].DebugDir, ModuleList[GuidString.upper()].Name + '.efi')))
+
FvMap.close()
## Collect MAP information of all modules
@@ -1149,7 +1169,7 @@
ImageClass = PeImageClass (OutputImageFile)
if not ImageClass.IsValid:
EdkLogger.error("build", FILE_PARSE_FAILURE, ExtraData=ImageClass.ErrorInfo)
- ImageInfo = PeImageInfo(Module.Name, Module.Guid, Module.Arch, Module.OutputDir, ImageClass)
+ ImageInfo = PeImageInfo(Module.Name, Module.Guid, Module.Arch, Module.OutputDir, Module.DebugDir, ImageClass)
if Module.ModuleType in ['PEI_CORE', 'PEIM', 'COMBINED_PEIM_DRIVER','PIC_PEIM', 'RELOCATABLE_PEIM', 'DXE_CORE']:
PeiModuleList[Module.MetaFile] = ImageInfo
PeiSize += ImageInfo.Image.Size
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2010-10-25 08:09:38
|
Revision: 2077
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2077&view=rev
Author: jsu1
Date: 2010-10-25 08:09:32 +0000 (Mon, 25 Oct 2010)
Log Message:
-----------
Enhance build time display format, change to following format:
Build environment: Windows-Vista-6.1.7600
Build start time: 13:46:43, Oct.21 2010
?\226?\128?\166?\226?\128?\166
- Failed -
Build end time: 13:47:00, Oct.21 2010
Build total time: 00:16
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2010-10-22 06:50:08 UTC (rev 2076)
+++ trunk/BaseTools/Source/Python/build/build.py 2010-10-25 08:09:32 UTC (rev 2077)
@@ -1786,7 +1786,8 @@
else:
GlobalData.gIsWindows = False
- EdkLogger.quiet(time.strftime("%H:%M:%S, %b.%d %Y ", time.localtime()) + "[%s]\n" % platform.platform())
+ EdkLogger.quiet("Build environment: %s" % platform.platform())
+ EdkLogger.quiet(time.strftime("Build start time: %H:%M:%S, %b.%d %Y\n", time.localtime()));
ReturnCode = 0
MyBuild = None
try:
@@ -1918,8 +1919,9 @@
MyBuild.BuildReport.GenerateReport(BuildDuration)
MyBuild.Db.Close()
EdkLogger.SetLevel(EdkLogger.QUIET)
- EdkLogger.quiet("\n- %s -\n%s [%s]" % (Conclusion, time.strftime("%H:%M:%S, %b.%d %Y", time.localtime()), BuildDuration))
-
+ EdkLogger.quiet("\n- %s -" % Conclusion)
+ EdkLogger.quiet(time.strftime("Build end time: %H:%M:%S, %b.%d %Y", time.localtime()))
+ EdkLogger.quiet("Build total time: %s\n" % BuildDuration)
return ReturnCode
if __name__ == '__main__':
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gi...@us...> - 2011-03-04 01:00:53
|
Revision: 2125
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2125&view=rev
Author: gikidy
Date: 2011-03-04 01:00:46 +0000 (Fri, 04 Mar 2011)
Log Message:
-----------
Fix baseTools hardcode ECP_SOURCE as %WORKSPACE%/EdkCompatibilityPkg, now if ECP_SOURCE has exist in OS environment, will use the value form OS environment.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2011-03-02 02:16:51 UTC (rev 2124)
+++ trunk/BaseTools/Source/Python/build/build.py 2011-03-04 01:00:46 UTC (rev 2125)
@@ -102,7 +102,8 @@
#
# Check EFI_SOURCE (R8 build convention). EDK_SOURCE will always point to ECP
#
- os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)
+ if "ECP_SOURCE" not in os.environ:
+ os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)
if "EFI_SOURCE" not in os.environ:
os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]
if "EDK_SOURCE" not in os.environ:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mdk...@us...> - 2011-04-19 23:25:53
|
Revision: 2141
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2141&view=rev
Author: mdkinney
Date: 2011-04-19 23:25:47 +0000 (Tue, 19 Apr 2011)
Log Message:
-----------
1) Make sure all evaluations of the PI_SPECIFICATION_VERSION are converted from a string to an int() before any comparison operations.
2) Make sure all evaluations of the UEFI_SPECIFICATION_VERSION are converted from a string to an int() before any comparison operations.
3) Make sure the default string vale for PI_SPECIFICATION_VERSION is the string '0x00000000' and not the value 0.
4) Make sure the default string vale for UEFI_SPECIFICATION_VERSION is the string '0x00000000' and not the value 0.
5) Update AutoGen to produce a Binary INF file for every module built in the module's OUTPUT directory.
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2011-04-19 23:16:19 UTC (rev 2140)
+++ trunk/BaseTools/Source/Python/build/build.py 2011-04-19 23:25:47 UTC (rev 2141)
@@ -1,7 +1,7 @@
## @file
# build a platform or a module
#
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2011, 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
@@ -885,6 +885,7 @@
if not self.SkipAutoGen or Target == 'genmake':
self.Progress.Start("Generating makefile")
AutoGenObject.CreateMakeFile(CreateDepsMakeFile)
+ AutoGenObject.CreateAsBuiltInf()
self.Progress.Stop("done!")
if Target == "genmake":
return True
@@ -922,8 +923,8 @@
InfFileNameList = ModuleList.keys()
#InfFileNameList.sort()
for InfFile in InfFileNameList:
- sys.stdout.write (".")
- sys.stdout.flush()
+ sys.stdout.write (".")
+ sys.stdout.flush()
ModuleInfo = ModuleList[InfFile]
ModuleName = ModuleInfo.BaseName
ModuleOutputImage = ModuleInfo.Image.FileName
@@ -1056,8 +1057,8 @@
## Collect MAP information of all modules
#
def _CollectModuleMapBuffer (self, MapBuffer, ModuleList):
- sys.stdout.write ("Generate Load Module At Fix Address Map")
- sys.stdout.flush()
+ sys.stdout.write ("Generate Load Module At Fix Address Map")
+ sys.stdout.flush()
PatchEfiImageList = []
PeiModuleList = {}
BtModuleList = {}
@@ -1102,11 +1103,11 @@
SmmModuleList[Module.MetaFile] = ImageInfo
SmmSize += ImageInfo.Image.Size
if Module.ModuleType == 'DXE_SMM_DRIVER':
- PiSpecVersion = 0
- if 'PI_SPECIFICATION_VERSION' in Module.Module.Specification:
- PiSpecVersion = Module.Module.Specification['PI_SPECIFICATION_VERSION']
+ PiSpecVersion = '0x00000000'
+ if 'PI_SPECIFICATION_VERSION' in Module.Module.Specification:
+ PiSpecVersion = Module.Module.Specification['PI_SPECIFICATION_VERSION']
# for PI specification < PI1.1, DXE_SMM_DRIVER also runs as BOOT time driver.
- if PiSpecVersion < 0x0001000A:
+ if int(PiSpecVersion, 16) < 0x0001000A:
BtModuleList[Module.MetaFile] = ImageInfo
BtSize += ImageInfo.Image.Size
break
@@ -1160,7 +1161,7 @@
#
# Get PCD offset in EFI image by GenPatchPcdTable function
#
- PcdTable = parsePcdInfoFromMapFile(EfiImageMap, EfiImage)
+ PcdTable = parsePcdInfoFromMapFile(EfiImageMap, EfiImage)
#
# Patch real PCD value by PatchPcdValue tool
#
@@ -1192,8 +1193,8 @@
self._RebaseModule (MapBuffer, RtBaseAddr, RtModuleList, TopMemoryAddress == 0)
self._RebaseModule (MapBuffer, 0x1000, SmmModuleList, AddrIsOffset = False, ModeIsSmm = True)
MapBuffer.write('\n\n')
- sys.stdout.write ("\n")
- sys.stdout.flush()
+ sys.stdout.write ("\n")
+ sys.stdout.flush()
## Save platform Map file
#
@@ -1206,10 +1207,10 @@
# Save address map into MAP file.
#
SaveFileOnChange(MapFilePath, MapBuffer.getvalue(), False)
- MapBuffer.close()
- if self.LoadFixAddress != 0:
- sys.stdout.write ("\nLoad Module At Fix Address Map file can be found at %s\n" %(MapFilePath))
- sys.stdout.flush()
+ MapBuffer.close()
+ if self.LoadFixAddress != 0:
+ sys.stdout.write ("\nLoad Module At Fix Address Map file can be found at %s\n" %(MapFilePath))
+ sys.stdout.flush()
## Build active platform for different build targets and different tool chains
#
@@ -1417,6 +1418,7 @@
if not self.SkipAutoGen or self.Target == 'genmake':
Ma.CreateMakeFile(True)
+ Ma.CreateAsBuiltInf()
if self.Target == "genmake":
continue
self.Progress.Stop("done!")
@@ -1606,11 +1608,11 @@
if DefineList != None:
for Define in DefineList:
DefineTokenList = Define.split("=", 1)
- if not GlobalData.gMacroNamePattern.match(DefineTokenList[0]):
- EdkLogger.error('build', FORMAT_INVALID,
- "The macro name must be in the pattern [A-Z][A-Z0-9_]*",
- ExtraData=DefineTokenList[0])
-
+ if not GlobalData.gMacroNamePattern.match(DefineTokenList[0]):
+ EdkLogger.error('build', FORMAT_INVALID,
+ "The macro name must be in the pattern [A-Z][A-Z0-9_]*",
+ ExtraData=DefineTokenList[0])
+
if len(DefineTokenList) == 1:
DefineDict[DefineTokenList[0]] = ""
else:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gi...@us...> - 2011-07-08 02:08:04
|
Revision: 2207
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2207&view=rev
Author: gikidy
Date: 2011-07-08 02:07:58 +0000 (Fri, 08 Jul 2011)
Log Message:
-----------
Fix time hour information missing bug when build duration larger than 1 hour.
Signed-off-by: kgui1
Reviewed-by: jsu1
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2011-07-08 01:57:02 UTC (rev 2206)
+++ trunk/BaseTools/Source/Python/build/build.py 2011-07-08 02:07:58 UTC (rev 2207)
@@ -1853,14 +1853,19 @@
else:
Conclusion = "Failed"
FinishTime = time.time()
- BuildDuration = time.strftime("%M:%S", time.gmtime(int(round(FinishTime - StartTime))))
+ BuildDuration = time.gmtime(int(round(FinishTime - StartTime)))
+ BuildDurationStr = ""
+ if BuildDuration.tm_yday > 1:
+ BuildDurationStr = time.strftime("%H:%M:%S", BuildDuration) + ", %d day(s)"%(BuildDuration.tm_yday - 1)
+ else:
+ BuildDurationStr = time.strftime("%H:%M:%S", BuildDuration)
if MyBuild != None:
- MyBuild.BuildReport.GenerateReport(BuildDuration)
+ MyBuild.BuildReport.GenerateReport(BuildDurationStr)
MyBuild.Db.Close()
EdkLogger.SetLevel(EdkLogger.QUIET)
EdkLogger.quiet("\n- %s -" % Conclusion)
EdkLogger.quiet(time.strftime("Build end time: %H:%M:%S, %b.%d %Y", time.localtime()))
- EdkLogger.quiet("Build total time: %s\n" % BuildDuration)
+ EdkLogger.quiet("Build total time: %s\n" % BuildDurationStr)
return ReturnCode
if __name__ == '__main__':
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gi...@us...> - 2011-12-05 02:47:51
|
Revision: 2456
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2456&view=rev
Author: gikidy
Date: 2011-12-05 02:47:45 +0000 (Mon, 05 Dec 2011)
Log Message:
-----------
Print active platform information during build.
Signed-off-by: gikidy
Reviewed-by: lgao4
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2011-12-05 01:16:52 UTC (rev 2455)
+++ trunk/BaseTools/Source/Python/build/build.py 2011-12-05 02:47:45 UTC (rev 2456)
@@ -750,7 +750,7 @@
EdkLogger.info('%-16s = %s' % ("Build target", ' '.join(self.BuildTargetList)))
EdkLogger.info('%-16s = %s' % ("Toolchain", ' '.join(self.ToolChainList)))
- #EdkLogger.info('\n%-24s = %s' % ("Active Platform", self.PlatformFile))
+ EdkLogger.info('\n%-24s = %s' % ("Active Platform", self.PlatformFile))
if self.ModuleFile:
EdkLogger.info('%-16s = %s' % ("Active Module", self.ModuleFile))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gi...@us...> - 2011-12-05 03:19:48
|
Revision: 2458
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2458&view=rev
Author: gikidy
Date: 2011-12-05 03:19:42 +0000 (Mon, 05 Dec 2011)
Log Message:
-----------
Make print information format consistent.
Signed-off-by: gikidy
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2011-12-05 03:09:46 UTC (rev 2457)
+++ trunk/BaseTools/Source/Python/build/build.py 2011-12-05 03:19:42 UTC (rev 2458)
@@ -750,7 +750,7 @@
EdkLogger.info('%-16s = %s' % ("Build target", ' '.join(self.BuildTargetList)))
EdkLogger.info('%-16s = %s' % ("Toolchain", ' '.join(self.ToolChainList)))
- EdkLogger.info('\n%-24s = %s' % ("Active Platform", self.PlatformFile))
+ EdkLogger.info('\n%-16s = %s' % ("Active Platform", self.PlatformFile))
if self.ModuleFile:
EdkLogger.info('%-16s = %s' % ("Active Module", self.ModuleFile))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <yi...@us...> - 2012-01-13 05:52:29
|
Revision: 2479
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2479&view=rev
Author: yingke
Date: 2012-01-13 05:52:23 +0000 (Fri, 13 Jan 2012)
Log Message:
-----------
Add ARCH, FAMILY, TOOL_CHAIN_TAG, TARGET as highest priority macros which can be used in FDF and DSC file.
Signed-off-by: yingke
Reviewed-by: jsu1
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2012-01-12 13:11:16 UTC (rev 2478)
+++ trunk/BaseTools/Source/Python/build/build.py 2012-01-13 05:52:23 UTC (rev 2479)
@@ -1809,6 +1809,19 @@
EdkLogger.error("build", OPTION_VALUE_INVALID, "UNI flag must be one of -c or -s")
MyBuild = Build(Target, Workspace, Option)
+ GlobalData.gCommandLineDefines['ARCH'] = ' '.join(MyBuild.ArchList)
+ GlobalData.gCommandLineDefines['TOOL_CHAIN_TAG'] = ' '.join(MyBuild.ToolChainList)
+ FamilyList = []
+ for ToolChain in MyBuild.ToolChainList:
+ Family = 'MSFT'
+ try:
+ Family = MyBuild.ToolDef.ToolsDefTxtDatabase[TAB_TOD_DEFINES_FAMILY][ToolChain]
+ except KeyError:
+ pass
+ if Family not in FamilyList:
+ FamilyList.append(Family)
+ GlobalData.gCommandLineDefines['FAMILY'] = ' '.join(FamilyList)
+ GlobalData.gCommandLineDefines['TARGET'] = ' '.join(MyBuild.BuildTargetList)
MyBuild.Launch()
#MyBuild.DumpBuildData()
except FatalError, X:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <xf...@us...> - 2012-02-27 01:46:12
|
Revision: 2488
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2488&view=rev
Author: xfzyr
Date: 2012-02-27 01:46:05 +0000 (Mon, 27 Feb 2012)
Log Message:
-----------
Fix a issue of build breaks when there are some temp tables not cleaned in database.
Signed-off-by: yzeng15
Reviewed-by: hchen30
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2012-02-23 04:21:54 UTC (rev 2487)
+++ trunk/BaseTools/Source/Python/build/build.py 2012-02-27 01:46:05 UTC (rev 2488)
@@ -59,6 +59,8 @@
gBuildCacheDir = "Conf/.cache"
gToolsDefinition = "Conf/tools_def.txt"
+TemporaryTablePattern = re.compile(r'^_\d+_\d+_[a-fA-F0-9]+$')
+
## Check environment PATH variable to make sure the specified tool is found
#
# If the tool is found in the PATH, then True is returned
@@ -1448,7 +1450,16 @@
if BuildTask.HasError():
EdkLogger.error("build", BUILD_ERROR, "Failed to build module", ExtraData=GlobalData.gBuildingModule)
+ #
+ # Drop temp tables to avoid database be locked.
#
+ for Key in Wa.BuildDatabase._CACHE_:
+ if Wa.BuildDatabase._CACHE_[Key]._RawData and Wa.BuildDatabase._CACHE_[Key]._RawData._Table and Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Table:
+ if TemporaryTablePattern.match(Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Table):
+ Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Drop()
+ Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Table = 0
+ #
+ #
# All modules have been put in build tasks queue. Tell task scheduler
# to exit if all tasks are completed
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <yi...@us...> - 2012-03-14 00:53:09
|
Revision: 2501
http://edk2-buildtools.svn.sourceforge.net/edk2-buildtools/?rev=2501&view=rev
Author: yingke
Date: 2012-03-14 00:53:03 +0000 (Wed, 14 Mar 2012)
Log Message:
-----------
Set TARGET and TOOLCHAIN value to the current building value.
Signed-off-by: yingke
Reviewed-by: lgao4
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2012-03-13 05:25:56 UTC (rev 2500)
+++ trunk/BaseTools/Source/Python/build/build.py 2012-03-14 00:53:03 UTC (rev 2501)
@@ -1821,18 +1821,6 @@
MyBuild = Build(Target, Workspace, Option)
GlobalData.gCommandLineDefines['ARCH'] = ' '.join(MyBuild.ArchList)
- GlobalData.gCommandLineDefines['TOOL_CHAIN_TAG'] = ' '.join(MyBuild.ToolChainList)
- FamilyList = []
- for ToolChain in MyBuild.ToolChainList:
- Family = 'MSFT'
- try:
- Family = MyBuild.ToolDef.ToolsDefTxtDatabase[TAB_TOD_DEFINES_FAMILY][ToolChain]
- except KeyError:
- pass
- if Family not in FamilyList:
- FamilyList.append(Family)
- GlobalData.gCommandLineDefines['FAMILY'] = ' '.join(FamilyList)
- GlobalData.gCommandLineDefines['TARGET'] = ' '.join(MyBuild.BuildTargetList)
MyBuild.Launch()
#MyBuild.DumpBuildData()
except FatalError, X:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lh...@us...> - 2013-07-03 14:50:00
|
Revision: 2586
http://sourceforge.net/p/edk2-buildtools/code/2586
Author: lhauch
Date: 2013-07-03 14:49:57 +0000 (Wed, 03 Jul 2013)
Log Message:
-----------
Updated multi-threaded build to wait until all auto generated files have been created before starting the build tasks. This change was required to remove a race condition when building on newer, faster workstations.
Signed-off-by: Larry Hauch <lar...@in...>
Reviewed-by: Liu Yingke <yin...@in...>
Modified Paths:
--------------
trunk/BaseTools/Source/Python/build/build.py
Modified: trunk/BaseTools/Source/Python/build/build.py
===================================================================
--- trunk/BaseTools/Source/Python/build/build.py 2013-06-20 01:46:19 UTC (rev 2585)
+++ trunk/BaseTools/Source/Python/build/build.py 2013-07-03 14:49:57 UTC (rev 2586)
@@ -1,7 +1,7 @@
## @file
# build a platform or a module
#
-# Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2013, 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
@@ -23,7 +23,7 @@
import time
import platform
import traceback
-import encodings.ascii
+import encodings.ascii
from struct import *
from threading import *
@@ -47,9 +47,9 @@
import Common.GlobalData as GlobalData
# Version and Copyright
-VersionNumber = "0.5" + ' ' + gBUILD_VERSION
+VersionNumber = "0.51" + ' ' + gBUILD_VERSION
__version__ = "%prog Version " + VersionNumber
-__copyright__ = "Copyright (c) 2007 - 2010, Intel Corporation All rights reserved."
+__copyright__ = "Copyright (c) 2007 - 2013, Intel Corporation All rights reserved."
## standard targets of build command
gSupportedTarget = ['all', 'genc', 'genmake', 'modules', 'libraries', 'fds', 'clean', 'cleanall', 'cleanlib', 'run']
@@ -119,12 +119,12 @@
EfiSourceDir = os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"]))
EdkSourceDir = os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"]))
EcpSourceDir = os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"]))
-
+
os.environ["EFI_SOURCE"] = EfiSourceDir
os.environ["EDK_SOURCE"] = EdkSourceDir
os.environ["ECP_SOURCE"] = EcpSourceDir
os.environ["EDK_TOOLS_PATH"] = os.path.normcase(os.environ["EDK_TOOLS_PATH"])
-
+
if not os.path.exists(EcpSourceDir):
EdkLogger.verbose("ECP_SOURCE = %s doesn't exist. Edk modules could not be built." % EcpSourceDir)
elif ' ' in EcpSourceDir:
@@ -313,7 +313,7 @@
if not BuildCommand:
EdkLogger.error("build", OPTION_MISSING,
"No build command found for this module. "
- "Please check your setting of %s_%s_%s_MAKE_PATH in Conf/tools_def.txt file." %
+ "Please check your setting of %s_%s_%s_MAKE_PATH in Conf/tools_def.txt file." %
(Obj.BuildTarget, Obj.ToolChain, Obj.Arch),
ExtraData=str(Obj))
@@ -669,7 +669,7 @@
#
# Constructor will load all required image information.
#
- # @param BaseName The full file path of image.
+ # @param BaseName The full file path of image.
# @param Guid The GUID for image.
# @param Arch Arch of this image.
# @param OutputDir The output directory for image.
@@ -838,7 +838,7 @@
#
def InitBuild(self):
# parse target.txt, tools_def.txt, and platform file
- self.LoadConfiguration()
+ self.LoadConfiguration()
# Allow case-insensitive for those from command line or configuration file
ErrorCode, ErrorInfo = self.PlatformFile.Validate(".dsc", False)
@@ -897,7 +897,7 @@
if BuildCommand == None or len(BuildCommand) == 0:
EdkLogger.error("build", OPTION_MISSING,
"No build command found for this module. "
- "Please check your setting of %s_%s_%s_MAKE_PATH in Conf/tools_def.txt file." %
+ "Please check your setting of %s_%s_%s_MAKE_PATH in Conf/tools_def.txt file." %
(AutoGenObject.BuildTarget, AutoGenObject.ToolChain, AutoGenObject.Arch),
ExtraData=str(AutoGenObject))
@@ -994,9 +994,9 @@
elif SectionHeader[0] in ['.data', '.sdata']:
DataSectionAddress = SectionHeader[1]
if AddrIsOffset:
- MapBuffer.write('(GUID=%s, .textbaseaddress=-0x%010X, .databaseaddress=-0x%010X)\n' % (ModuleInfo.Guid, 0 - (BaseAddress + TextSectionAddress), 0 - (BaseAddress + DataSectionAddress)))
+ MapBuffer.write('(GUID=%s, .textbaseaddress=-0x%010X, .databaseaddress=-0x%010X)\n' % (ModuleInfo.Guid, 0 - (BaseAddress + TextSectionAddress), 0 - (BaseAddress + DataSectionAddress)))
else:
- MapBuffer.write('(GUID=%s, .textbaseaddress=0x%010X, .databaseaddress=0x%010X)\n' % (ModuleInfo.Guid, BaseAddress + TextSectionAddress, BaseAddress + DataSectionAddress))
+ MapBuffer.write('(GUID=%s, .textbaseaddress=0x%010X, .databaseaddress=0x%010X)\n' % (ModuleInfo.Guid, BaseAddress + TextSectionAddress, BaseAddress + DataSectionAddress))
#
# Add debug image full path.
#
@@ -1076,7 +1076,7 @@
for ModuleGuid in ModuleList:
Module = ModuleList[ModuleGuid]
GlobalData.gProcessingFile = "%s [%s, %s, %s]" % (Module.MetaFile, Module.Arch, Module.ToolChain, Module.BuildTarget)
-
+
OutputImageFile = ''
for ResultFile in Module.CodaTargetList:
if str(ResultFile.Target).endswith('.efi'):
@@ -1127,15 +1127,15 @@
if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE and Pcd.TokenCName in TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_LIST:
ModuleIsPatch = True
break
-
+
if not ModuleIsPatch:
continue
#
# Module includes the patchable load fix address PCDs.
- # It will be fixed up later.
+ # It will be fixed up later.
#
PatchEfiImageList.append (OutputImageFile)
-
+
#
# Get Top Memory address
#
@@ -1155,14 +1155,14 @@
#
# Patch FixAddress related PCDs into EFI image
#
- for EfiImage in PatchEfiImageList:
+ for EfiImage in PatchEfiImageList:
EfiImageMap = EfiImage.replace('.efi', '.map')
if not os.path.exists(EfiImageMap):
continue
#
# Get PCD offset in EFI image by GenPatchPcdTable function
#
- PcdTable = parsePcdInfoFromMapFile(EfiImageMap, EfiImage)
+ PcdTable = parsePcdInfoFromMapFile(EfiImageMap, EfiImage)
#
# Patch real PCD value by PatchPcdValue tool
#
@@ -1178,16 +1178,16 @@
ReturnValue, ErrorInfo = PatchBinaryFile (EfiImage, PcdInfo[1], TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE_DATA_TYPE, str (SmmSize/0x1000))
if ReturnValue != 0:
EdkLogger.error("build", PARAMETER_INVALID, "Patch PCD value failed", ExtraData=ErrorInfo)
-
+
MapBuffer.write('PEI_CODE_PAGE_NUMBER = 0x%x\n' % (PeiSize/0x1000))
MapBuffer.write('BOOT_CODE_PAGE_NUMBER = 0x%x\n' % (BtSize/0x1000))
MapBuffer.write('RUNTIME_CODE_PAGE_NUMBER = 0x%x\n' % (RtSize/0x1000))
if len (SmmModuleList) > 0:
MapBuffer.write('SMM_CODE_PAGE_NUMBER = 0x%x\n' % (SmmSize/0x1000))
-
- PeiBaseAddr = TopMemoryAddress - RtSize - BtSize
+
+ PeiBaseAddr = TopMemoryAddress - RtSize - BtSize
BtBaseAddr = TopMemoryAddress - RtSize
- RtBaseAddr = TopMemoryAddress - ReservedRuntimeMemorySize
+ RtBaseAddr = TopMemoryAddress - ReservedRuntimeMemorySize
self._RebaseModule (MapBuffer, PeiBaseAddr, PeiModuleList, TopMemoryAddress == 0)
self._RebaseModule (MapBuffer, BtBaseAddr, BtModuleList, TopMemoryAddress == 0)
@@ -1196,7 +1196,7 @@
MapBuffer.write('\n\n')
sys.stdout.write ("\n")
sys.stdout.flush()
-
+
## Save platform Map file
#
def _SaveMapFile (self, MapBuffer, Wa):
@@ -1243,7 +1243,7 @@
self.BuildReport.AddPlatformReport(Wa)
self.Progress.Stop("done!")
self._Build(self.Target, Wa)
-
+
# Create MAP file when Load Fix Address is enabled.
if self.Target in ["", "all", "fds"]:
for Arch in Wa.ArchList:
@@ -1292,7 +1292,7 @@
GlobalData.gGlobalDefines['TARGET'] = BuildTarget
for ToolChain in self.ToolChainList:
GlobalData.gGlobalDefines['TOOLCHAIN'] = ToolChain
- GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain
+ GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain
#
# module build needs platform build information, so get platform
# AutoGen first
@@ -1383,7 +1383,7 @@
GlobalData.gGlobalDefines['TARGET'] = BuildTarget
for ToolChain in self.ToolChainList:
GlobalData.gGlobalDefines['TOOLCHAIN'] = ToolChain
- GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain
+ GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain
Wa = WorkspaceAutoGen(
self.WorkspaceDir,
self.PlatformFile,
@@ -1414,6 +1414,7 @@
Pa = PlatformAutoGen(Wa, self.PlatformFile, BuildTarget, ToolChain, Arch)
if Pa == None:
continue
+ pModules = []
for Module in Pa.Platform.Modules:
# Get ModuleAutoGen object to generate C code file and makefile
Ma = ModuleAutoGen(Wa, Module, BuildTarget, ToolChain, Arch, self.PlatformFile)
@@ -1433,6 +1434,9 @@
if self.Target == "genmake":
continue
self.Progress.Stop("done!")
+ pModules.append(Ma)
+
+ for Ma in pModules:
# Generate build task for the module
Bt = BuildTask.New(ModuleMakeUnit(Ma, self.Target))
# Break build if any build thread has error
@@ -1537,10 +1541,10 @@
if not os.path.exists(FvDir):
continue
- for Arch in self.ArchList:
+ for Arch in self.ArchList:
# Build up the list of supported architectures for this build
prefix = '%s_%s_%s_' % (BuildTarget, ToolChain, Arch)
-
+
# Look through the tool definitions for GUIDed tools
guidAttribs = []
for (attrib, value) in self.ToolDef.ToolsDefTxtDictionary.iteritems():
@@ -1555,7 +1559,7 @@
path = self.ToolDef.ToolsDefTxtDictionary[path]
path = self.GetFullPathOfTool(path)
guidAttribs.append((guid, toolName, path))
-
+
# Write out GuidedSecTools.txt
toolsFile = os.path.join(FvDir, 'GuidedSectionTools.txt')
toolsFile = open(toolsFile, 'wt')
@@ -1632,7 +1636,7 @@
EdkLogger.error('build', FORMAT_INVALID,
"The macro name must be in the pattern [A-Z][A-Z0-9_]*",
ExtraData=DefineTokenList[0])
-
+
if len(DefineTokenList) == 1:
DefineDict[DefineTokenList[0]] = "TRUE"
else:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|