*_ARMLINUXGCC_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
\r
*_ARMLINUXGCC_ARM_SLINK_FLAGS = -rc\r
-*_ARMLINUXGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --oformat=elf32-littlearm --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
+*_ARMLINUXGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -Ttext=0x0 --oformat=elf32-littlearm --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
\r
DEBUG_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARMGCC_CC_FLAGS) -Wno-address -O0\r
RELEASE_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARMGCC_CC_FLAGS) -Wno-address -Wno-unused-but-set-variable\r
-//This file is for build version number auto generation\r
-//\r
-#define __BUILD_VERSION "Build 2460"\r
+/** @file\r
+ This file is for build version number auto generation\r
+\r
+ Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ File Name: BuildVersion.h\r
+\r
+**/\r
+\r
+#define __BUILD_VERSION "Build 2474"\r
# @param SkuId SKU id from command line\r
#\r
def _Init(self, WorkspaceDir, ActivePlatform, Target, Toolchain, ArchList, MetaFileDb,\r
- BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=None, Fvs=None, Caps=None, SkuId='', UniFlag=None):\r
+ BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=None, Fvs=None, Caps=None, SkuId='', UniFlag=None, \r
+ Progress=None, BuildModule=None):\r
if Fds is None:\r
Fds = []\r
if Fvs is None:\r
# parse FDF file to get PCDs in it, if any\r
if not self.FdfFile:\r
self.FdfFile = self.Platform.FlashDefinition\r
- EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile)\r
+ \r
+ EdkLogger.info("")\r
+ if self.ArchList:\r
+ EdkLogger.info('%-16s = %s' % ("Architecture(s)", ' '.join(self.ArchList)))\r
+ EdkLogger.info('%-16s = %s' % ("Build target", self.BuildTarget))\r
+ EdkLogger.info('%-16s = %s' % ("Toolchain",self.ToolChain)) \r
+ \r
+ EdkLogger.info('\n%-24s = %s' % ("Active Platform", self.Platform))\r
+ if BuildModule:\r
+ EdkLogger.info('%-24s = %s' % ("Active Module", BuildModule))\r
+ \r
+ if self.FdfFile:\r
+ EdkLogger.info('%-24s = %s' % ("Flash Image Definition", self.FdfFile))\r
\r
+ EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile)\r
+ \r
+ if Progress:\r
+ Progress.Start("\nProcessing meta-data")\r
+ \r
if self.FdfFile:\r
#\r
# Mark now build in AutoGen Phase\r
if NumberOfLocalTokens == 0:
AutoGenC.Append(gEmptyPcdDatabaseAutoGenC.Replace(Dict))
else:
+ #
+ # Update Size Table to the right order, it should be same with LocalTokenNumberTable
+ #
+ SizeCNameTempList = []
+ SizeGuidTempList = []
+ SizeCurLenTempList = []
+ SizeMaxLenTempList = []
+ ReOrderFlag = True
+
+ if len(Dict['SIZE_TABLE_CNAME']) == 1:
+ if not (Dict['SIZE_TABLE_CNAME'][0] and Dict['SIZE_TABLE_GUID'][0]):
+ ReOrderFlag = False
+
+ if ReOrderFlag:
+ for Count in range(len(Dict['TOKEN_CNAME'])):
+ for Count1 in range(len(Dict['SIZE_TABLE_CNAME'])):
+ if Dict['TOKEN_CNAME'][Count] == Dict['SIZE_TABLE_CNAME'][Count1] and \
+ Dict['TOKEN_GUID'][Count] == Dict['SIZE_TABLE_GUID'][Count1]:
+ SizeCNameTempList.append(Dict['SIZE_TABLE_CNAME'][Count1])
+ SizeGuidTempList.append(Dict['SIZE_TABLE_GUID'][Count1])
+ SizeCurLenTempList.append(Dict['SIZE_TABLE_CURRENT_LENGTH'][Count1])
+ SizeMaxLenTempList.append(Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count1])
+
+ for Count in range(len(Dict['SIZE_TABLE_CNAME'])):
+ Dict['SIZE_TABLE_CNAME'][Count] = SizeCNameTempList[Count]
+ Dict['SIZE_TABLE_GUID'][Count] = SizeGuidTempList[Count]
+ Dict['SIZE_TABLE_CURRENT_LENGTH'][Count] = SizeCurLenTempList[Count]
+ Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count] = SizeMaxLenTempList[Count]
+
AutoGenC.Append(gPcdDatabaseAutoGenC.Replace(Dict))
return AutoGenH, AutoGenC
-#This file is for build version number auto generation\r
+## @file\r
#\r
-gBUILD_VERSION = "Build 2460"\r
+# This file is for build version number auto generation\r
+#\r
+# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials are licensed and made available \r
+# under the terms and conditions of the BSD License which accompanies this \r
+# distribution. The full text of the license may be found at \r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+gBUILD_VERSION = "Build 2474"\r
from optparse import OptionParser\r
from Configuration import Configuration\r
from Check import Check\r
-\r
+import Common.GlobalData as GlobalData\r
\r
from Common.String import NormPath\r
from Common.BuildVersion import gBUILD_VERSION\r
from Common import BuildToolError\r
-\r
+from Common.Misc import PathClass\r
from MetaFileWorkspace.MetaFileParser import DscParser\r
from MetaFileWorkspace.MetaFileParser import DecParser\r
from MetaFileWorkspace.MetaFileParser import InfParser\r
\r
# Parse the options and args\r
self.ParseOption()\r
-\r
+ \r
+ #\r
+ # Check EFI_SOURCE (Edk build convention). EDK_SOURCE will always point to ECP\r
+ #\r
+ WorkspaceDir = os.path.normcase(os.path.normpath(os.environ["WORKSPACE"]))\r
+ os.environ["WORKSPACE"] = WorkspaceDir\r
+ if "ECP_SOURCE" not in os.environ:\r
+ os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)\r
+ if "EFI_SOURCE" not in os.environ:\r
+ os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]\r
+ if "EDK_SOURCE" not in os.environ:\r
+ os.environ["EDK_SOURCE"] = os.environ["ECP_SOURCE"]\r
+\r
+ #\r
+ # Unify case of characters on case-insensitive systems\r
+ #\r
+ EfiSourceDir = os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"]))\r
+ EdkSourceDir = os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"]))\r
+ EcpSourceDir = os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"]))\r
+ \r
+ os.environ["EFI_SOURCE"] = EfiSourceDir\r
+ os.environ["EDK_SOURCE"] = EdkSourceDir\r
+ os.environ["ECP_SOURCE"] = EcpSourceDir\r
+ \r
+ GlobalData.gWorkspace = WorkspaceDir\r
+ GlobalData.gEfiSource = EfiSourceDir\r
+ GlobalData.gEdkSource = EdkSourceDir\r
+ GlobalData.gEcpSource = EcpSourceDir\r
+\r
+ GlobalData.gGlobalDefines["WORKSPACE"] = WorkspaceDir\r
+ GlobalData.gGlobalDefines["EFI_SOURCE"] = EfiSourceDir\r
+ GlobalData.gGlobalDefines["EDK_SOURCE"] = EdkSourceDir\r
+ GlobalData.gGlobalDefines["ECP_SOURCE"] = EcpSourceDir\r
+ \r
+ \r
# Generate checkpoints list\r
EccGlobalData.gConfig = Configuration(self.ConfigFile)\r
\r
EdkLogger.quiet("Parsing %s" % Filename)\r
Op.write("%s\r" % Filename)\r
#Dsc(Filename, True, True, EccGlobalData.gWorkspace, EccGlobalData.gDb)\r
- self.MetaFile = DscParser(Filename, MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True))\r
+ self.MetaFile = DscParser(PathClass(Filename, Root), MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True))\r
# alwasy do post-process, in case of macros change\r
self.MetaFile.DoPostProcess()\r
self.MetaFile.Start()\r
def Start(self):
Content = ''
try:
- Content = open(str(self.MetaFile), 'r').readlines()
+ Content = open(str(self.MetaFile.Path), 'r').readlines()
except:
EdkLogger.error("Parser", FILE_READ_FAILURE, ExtraData=self.MetaFile)
#
# Insert a record for file
#
- Filename = NormPath(self.MetaFile)
+ Filename = NormPath(self.MetaFile.Path)
FileID = self.TblFile.GetFileId(Filename)
if FileID:
self.FileID = FileID
self._IdMapping[Id] = self._LastItem
RecordList = self._Table.GetAll()
+ self._Table.Drop()
+ self._RawTable.Drop()
for Record in RecordList:
EccGlobalData.gDb.TblDsc.Insert(Record[1],Record[2],Record[3],Record[4],Record[5],Record[6],Record[7],Record[8],Record[9],Record[10],Record[11],Record[12],Record[13],Record[14])
GlobalData.gPlatformDefines.update(self._FileLocalMacros)
#
elif "ECP_SOURCE" in GlobalData.gCommandLineDefines.keys():
__IncludeMacros['ECP_SOURCE'] = GlobalData.gCommandLineDefines['ECP_SOURCE']
-
+
__IncludeMacros['EFI_SOURCE'] = GlobalData.gGlobalDefines['EFI_SOURCE']
__IncludeMacros['EDK_SOURCE'] = GlobalData.gGlobalDefines['EDK_SOURCE']
#
PreIndex = 0\r
StartPos = CurLine.find('$(', PreIndex)\r
EndPos = CurLine.find(')', StartPos+2)\r
- while StartPos != -1 and EndPos != -1:\r
+ while StartPos != -1 and EndPos != -1 and not (self.__Token == '!ifdef' or self.__Token == '!ifndef'):\r
MacroName = CurLine[StartPos+2 : EndPos]\r
MacorValue = self.__GetMacroValue(MacroName)\r
if MacorValue != None:\r
Buffer += pack('B', int(ByteList[Index1], 16))\r
\r
Guid = self.FvNameGuid.split('-')\r
- Buffer = pack('LHHBBBBBBBBL', \r
+ Buffer = pack('=LHHBBBBBBBBL', \r
int(Guid[0], 16), \r
int(Guid[1], 16), \r
int(Guid[2], 16), \r
-#This file is for build version number auto generation\r
+## @file\r
#\r
-gBUILD_VERSION = "Build 2460"\r
+# This file is for build version number auto generation\r
+#\r
+# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials are licensed and made available \r
+# under the terms and conditions of the BSD License which accompanies this \r
+# distribution. The full text of the license may be found at \r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+'''\r
+Build version information\r
+'''\r
+\r
+gBUILD_VERSION = "Build 2474"\r
DestFile = os.path.normpath(os.path.join(DestDir, DistFileName))\r
if os.path.exists(DestFile):\r
FileName, Ext = os.path.splitext(DistFileName)\r
- NewFileName = FileName + '_' + DistPkg.Header.GetGuid() + '_' + DistPkg.Header.GetVersion() + '.' + Ext\r
+ NewFileName = FileName + '_' + DistPkg.Header.GetGuid() + '_' + DistPkg.Header.GetVersion() + Ext\r
DestFile = os.path.normpath(os.path.join(DestDir, NewFileName))\r
if os.path.exists(DestFile):\r
#\r
if os.path.isabs(Path):\r
return False\r
else:\r
- if Path[1:2] == ':' or Path.find('\\') >=0:\r
+ if Path[1:2] == ':':\r
return False\r
if os.path.isabs(Path):\r
return False\r
def ConvertToSqlString2(String):\r
return String.replace("'", "''")\r
\r
-## RemoveBlockComment\r
-#\r
-# Remove comment block\r
-#\r
-# @param Lines: Block Comment Lines \r
-#\r
-def RemoveBlockComment(Lines):\r
- IsFindBlockComment = False\r
- ReservedLine = ''\r
- NewLines = []\r
-\r
- for Line in Lines:\r
- Line = Line.strip()\r
- #\r
- # Remove comment block\r
- #\r
- if Line.find(DataType.TAB_COMMENT_EDK1_START) > -1:\r
- ReservedLine = GetSplitList(Line, DataType.TAB_COMMENT_EDK1_START, 1)[0]\r
- IsFindBlockComment = True\r
- if Line.find(DataType.TAB_COMMENT_EDK1_END) > -1:\r
- Line = ReservedLine + GetSplitList(Line, DataType.TAB_COMMENT_EDK1_END, 1)[1]\r
- ReservedLine = ''\r
- IsFindBlockComment = False\r
- if IsFindBlockComment:\r
- NewLines.append('')\r
- continue\r
- NewLines.append(Line)\r
- return NewLines\r
-\r
## GetStringOfList\r
#\r
# Get String of a List\r
#\r
# Found the first section, No file header.\r
#\r
- if not DefineSectionParsedFlag:\r
+ if DefineSectionParsedFlag and not HeaderCommentEnd:\r
Logger.Error("InfParser", \r
FORMAT_INVALID, \r
ST.ERR_INF_PARSER_HEADER_MISSGING, \r
BinaryObj = self.Parser.InfBinariesSection.GetBinary()\r
\r
BinaryData = BinaryObj.keys()\r
- BinaryData.sort()\r
\r
#\r
# If the INF file does not contain a [Sources] section, and the INF file does contain a [Binaries] section, \r
self._LoadFixAddress = int (self._LoadFixAddress, 0)\r
except:\r
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (self._LoadFixAddress))\r
- if self._LoadFixAddress < 0:\r
- EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value %s" % (self._LoadFixAddress))\r
- if self._LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self._LoadFixAddress % 0x1000 != 0:\r
- EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value %s" % (self._LoadFixAddress))\r
+ \r
+ #\r
+ # If command line defined, should override the value in DSC file.\r
+ #\r
+ if 'FIX_LOAD_TOP_MEMORY_ADDRESS' in GlobalData.gCommandLineDefines.keys():\r
+ try:\r
+ self._LoadFixAddress = int(GlobalData.gCommandLineDefines['FIX_LOAD_TOP_MEMORY_ADDRESS'], 0)\r
+ except:\r
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (GlobalData.gCommandLineDefines['FIX_LOAD_TOP_MEMORY_ADDRESS']))\r
+ \r
+ if self._LoadFixAddress < 0:\r
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value 0x%x" % (self._LoadFixAddress))\r
+ if self._LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self._LoadFixAddress % 0x1000 != 0:\r
+ EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value 0x%x" % (self._LoadFixAddress))\r
+ \r
return self._LoadFixAddress\r
\r
## Retrieve RFCLanguage filter\r
EdkLogger.quiet("%-16s = %s" % ("EDK_TOOLS_PATH", os.environ["EDK_TOOLS_PATH"]))\r
\r
EdkLogger.info("")\r
- if self.ArchList:\r
- EdkLogger.info('%-16s = %s' % ("Architecture(s)", ' '.join(self.ArchList)))\r
- EdkLogger.info('%-16s = %s' % ("Build target", ' '.join(self.BuildTargetList)))\r
- EdkLogger.info('%-16s = %s' % ("Toolchain", ' '.join(self.ToolChainList)))\r
-\r
- EdkLogger.info('\n%-16s = %s' % ("Active Platform", self.PlatformFile))\r
- if self.ModuleFile:\r
- EdkLogger.info('%-16s = %s' % ("Active Module", self.ModuleFile))\r
\r
os.chdir(self.WorkspaceDir)\r
- self.Progress.Start("\nProcessing meta-data")\r
\r
## Load configuration\r
#\r
self.FvList,\r
self.CapList,\r
self.SkuId,\r
- self.UniFlag\r
+ self.UniFlag,\r
+ self.Progress\r
)\r
self.Fdf = Wa.FdfFile\r
self.LoadFixAddress = Wa.Platform.LoadFixAddress\r
self.FvList,\r
self.CapList,\r
self.SkuId,\r
- self.UniFlag\r
+ self.UniFlag,\r
+ self.Progress,\r
+ self.ModuleFile\r
)\r
self.Fdf = Wa.FdfFile\r
self.LoadFixAddress = Wa.Platform.LoadFixAddress\r
self.FvList,\r
self.CapList,\r
self.SkuId,\r
- self.UniFlag\r
+ self.UniFlag,\r
+ self.Progress\r
)\r
self.Fdf = Wa.FdfFile\r
self.LoadFixAddress = Wa.Platform.LoadFixAddress\r