## @file\r
# Global variables for GenFds\r
#\r
-# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
##\r
# Import Modules\r
#\r
+from __future__ import print_function\r
import Common.LongFilePathOs as os\r
import sys\r
import subprocess\r
TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)\r
if DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary:\r
BuildRuleFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF]\r
- if BuildRuleFile in [None, '']:\r
+ if not BuildRuleFile:\r
BuildRuleFile = 'Conf/build_rule.txt'\r
GenFdsGlobalVariable.__BuildRuleDatabase = BuildRule(BuildRuleFile)\r
ToolDefinitionFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
@staticmethod\r
def GetBuildRules(Inf, Arch):\r
if not Arch:\r
- Arch = 'COMMON'\r
+ Arch = DataType.TAB_COMMON\r
\r
if not Arch in GenFdsGlobalVariable.OutputDirDict:\r
return {}\r
FileList.append((File, DataType.TAB_UNKNOWN_FILE))\r
\r
for File in Inf.Binaries:\r
- if File.Target in ['COMMON', '*', GenFdsGlobalVariable.TargetName]:\r
+ if File.Target in [DataType.TAB_COMMON, '*', GenFdsGlobalVariable.TargetName]:\r
FileList.append((File, File.Type))\r
\r
for File, FileType in FileList:\r
Source = SourceList[Index]\r
Index = Index + 1\r
\r
- if File.IsBinary and File == Source and Inf.Binaries != None and File in Inf.Binaries:\r
+ if File.IsBinary and File == Source and Inf.Binaries is not None and File in Inf.Binaries:\r
# Skip all files that are not binary libraries\r
if not Inf.LibraryClass:\r
continue \r
# GenFdsGlobalVariable.OutputDirDict = OutputDir\r
GenFdsGlobalVariable.FdfParser = FdfParser\r
GenFdsGlobalVariable.WorkSpace = WorkSpace\r
- GenFdsGlobalVariable.FvDir = os.path.join(GenFdsGlobalVariable.OutputDirDict[ArchList[0]], 'FV')\r
+ GenFdsGlobalVariable.FvDir = os.path.join(GenFdsGlobalVariable.OutputDirDict[ArchList[0]], DataType.TAB_FV_DIRECTORY)\r
if not os.path.exists(GenFdsGlobalVariable.FvDir) :\r
os.makedirs(GenFdsGlobalVariable.FvDir)\r
GenFdsGlobalVariable.FfsDir = os.path.join(GenFdsGlobalVariable.FvDir, 'Ffs')\r
GenFdsGlobalVariable.PlatformName = WorkSpace.Db.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch,\r
GlobalData.gGlobalDefines['TARGET'],\r
GlobalData.gGlobalDefines['TOOLCHAIN']].PlatformName\r
- GenFdsGlobalVariable.FvDir = os.path.join(GenFdsGlobalVariable.OutputDirDict[ArchList[0]], 'FV')\r
+ GenFdsGlobalVariable.FvDir = os.path.join(GenFdsGlobalVariable.OutputDirDict[ArchList[0]], DataType.TAB_FV_DIRECTORY)\r
if not os.path.exists(GenFdsGlobalVariable.FvDir):\r
os.makedirs(GenFdsGlobalVariable.FvDir)\r
GenFdsGlobalVariable.FfsDir = os.path.join(GenFdsGlobalVariable.FvDir, 'Ffs')\r
if not os.path.exists(Output):\r
return True\r
# always update "Output" if no "Input" given\r
- if Input == None or len(Input) == 0:\r
+ if Input is None or len(Input) == 0:\r
return True\r
\r
# if fdf file is changed after the 'Output" is generated, update the 'Output'\r
\r
@staticmethod\r
def GenerateSection(Output, Input, Type=None, CompressionType=None, Guid=None,\r
- GuidHdrLen=None, GuidAttr=[], Ui=None, Ver=None, InputAlign=None, BuildNumber=None, DummyFile=None, IsMakefile=False):\r
+ GuidHdrLen=None, GuidAttr=[], Ui=None, Ver=None, InputAlign=[], BuildNumber=None, DummyFile=None, IsMakefile=False):\r
Cmd = ["GenSec"]\r
- if Type not in [None, '']:\r
- Cmd += ["-s", Type]\r
- if CompressionType not in [None, '']:\r
- Cmd += ["-c", CompressionType]\r
- if Guid != None:\r
- Cmd += ["-g", Guid]\r
- if DummyFile != None:\r
- Cmd += ["--dummy", DummyFile]\r
- if GuidHdrLen not in [None, '']:\r
- Cmd += ["-l", GuidHdrLen]\r
- if len(GuidAttr) != 0:\r
- #Add each guided attribute\r
- for Attr in GuidAttr:\r
- Cmd += ["-r", Attr]\r
- if InputAlign != None:\r
- #Section Align is only for dummy section without section type\r
- for SecAlign in InputAlign:\r
- Cmd += ["--sectionalign", SecAlign]\r
+ if Type:\r
+ Cmd += ("-s", Type)\r
+ if CompressionType:\r
+ Cmd += ("-c", CompressionType)\r
+ if Guid is not None:\r
+ Cmd += ("-g", Guid)\r
+ if DummyFile is not None:\r
+ Cmd += ("--dummy", DummyFile)\r
+ if GuidHdrLen:\r
+ Cmd += ("-l", GuidHdrLen)\r
+ #Add each guided attribute\r
+ for Attr in GuidAttr:\r
+ Cmd += ("-r", Attr)\r
+ #Section Align is only for dummy section without section type\r
+ for SecAlign in InputAlign:\r
+ Cmd += ("--sectionalign", SecAlign)\r
\r
CommandFile = Output + '.txt'\r
- if Ui not in [None, '']:\r
- #Cmd += ["-n", '"' + Ui + '"']\r
+ if Ui:\r
if IsMakefile:\r
- Cmd += ["-n", "$(MODULE_NAME)"]\r
- Cmd += ["-o", Output]\r
- #SaveFileOnChange(CommandFile, ' '.join(Cmd), False)\r
+ if Ui == "$(MODULE_NAME)":\r
+ Cmd += ('-n', Ui)\r
+ else:\r
+ Cmd += ("-n", '"' + Ui + '"')\r
+ Cmd += ("-o", Output)\r
if ' '.join(Cmd).strip() not in GenFdsGlobalVariable.SecCmdList:\r
GenFdsGlobalVariable.SecCmdList.append(' '.join(Cmd).strip())\r
else:\r
GenFdsGlobalVariable.SectionHeader.pack_into(SectionData, 0, Len & 0xff, (Len >> 8) & 0xff, (Len >> 16) & 0xff, 0x15)\r
SaveFileOnChange(Output, SectionData.tostring())\r
\r
- elif Ver not in [None, '']:\r
- Cmd += ["-n", Ver]\r
+ elif Ver:\r
+ Cmd += ("-n", Ver)\r
if BuildNumber:\r
- Cmd += ["-j", BuildNumber]\r
- Cmd += ["-o", Output]\r
+ Cmd += ("-j", BuildNumber)\r
+ Cmd += ("-o", Output)\r
\r
SaveFileOnChange(CommandFile, ' '.join(Cmd), False)\r
if IsMakefile:\r
return\r
GenFdsGlobalVariable.CallExternalTool(Cmd, "Failed to generate section")\r
else:\r
- Cmd += ["-o", Output]\r
+ Cmd += ("-o", Output)\r
Cmd += Input\r
\r
SaveFileOnChange(CommandFile, ' '.join(Cmd), False)\r
if IsMakefile:\r
if ' '.join(Cmd).strip() not in GenFdsGlobalVariable.SecCmdList:\r
GenFdsGlobalVariable.SecCmdList.append(' '.join(Cmd).strip())\r
- elif GenFdsGlobalVariable.NeedsUpdate(Output, list(Input)):\r
+ elif GenFdsGlobalVariable.NeedsUpdate(Output, list(Input) + [CommandFile]):\r
GenFdsGlobalVariable.DebugLogger(EdkLogger.DEBUG_5, "%s needs update because of newer %s" % (Output, Input))\r
GenFdsGlobalVariable.CallExternalTool(Cmd, "Failed to generate section")\r
if (os.path.getsize(Output) >= GenFdsGlobalVariable.LARGE_FILE_SIZE and\r
\r
@staticmethod\r
def GetAlignment (AlignString):\r
- if AlignString == None:\r
+ if AlignString is None:\r
return 0\r
if AlignString in ("1K", "2K", "4K", "8K", "16K", "32K", "64K", "128K", "256K", "512K"):\r
return int (AlignString.rstrip('K')) * 1024\r
Cmd = ["GenFfs", "-t", Type, "-g", Guid]\r
mFfsValidAlign = ["0", "8", "16", "128", "512", "1K", "4K", "32K", "64K", "128K", "256K", "512K", "1M", "2M", "4M", "8M", "16M"]\r
if Fixed == True:\r
- Cmd += ["-x"]\r
+ Cmd.append("-x")\r
if CheckSum:\r
- Cmd += ["-s"]\r
- if Align not in [None, '']:\r
+ Cmd.append("-s")\r
+ if Align:\r
if Align not in mFfsValidAlign:\r
Align = GenFdsGlobalVariable.GetAlignment (Align)\r
for index in range(0, len(mFfsValidAlign) - 1):\r
if ((Align > GenFdsGlobalVariable.GetAlignment(mFfsValidAlign[index])) and (Align <= GenFdsGlobalVariable.GetAlignment(mFfsValidAlign[index + 1]))):\r
break\r
Align = mFfsValidAlign[index + 1]\r
- Cmd += ["-a", Align]\r
+ Cmd += ("-a", Align)\r
\r
- Cmd += ["-o", Output]\r
+ Cmd += ("-o", Output)\r
for I in range(0, len(Input)):\r
Cmd += ("-i", Input[I])\r
- if SectionAlign not in [None, '', []] and SectionAlign[I] not in [None, '']:\r
+ if SectionAlign and SectionAlign[I]:\r
Cmd += ("-n", SectionAlign[I])\r
\r
CommandFile = Output + '.txt'\r
\r
GenFdsGlobalVariable.DebugLogger(EdkLogger.DEBUG_5, "%s needs update because of newer %s" % (Output, Input))\r
if MakefilePath:\r
- if (tuple(Cmd),tuple(GenFdsGlobalVariable.SecCmdList),tuple(GenFdsGlobalVariable.CopyList)) not in GenFdsGlobalVariable.FfsCmdDict.keys():\r
+ if (tuple(Cmd),tuple(GenFdsGlobalVariable.SecCmdList),tuple(GenFdsGlobalVariable.CopyList)) not in GenFdsGlobalVariable.FfsCmdDict:\r
GenFdsGlobalVariable.FfsCmdDict[tuple(Cmd), tuple(GenFdsGlobalVariable.SecCmdList), tuple(GenFdsGlobalVariable.CopyList)] = MakefilePath\r
GenFdsGlobalVariable.SecCmdList = []\r
GenFdsGlobalVariable.CopyList = []\r
else:\r
- if not GenFdsGlobalVariable.NeedsUpdate(Output, list(Input)):\r
+ if not GenFdsGlobalVariable.NeedsUpdate(Output, list(Input) + [CommandFile]):\r
return\r
GenFdsGlobalVariable.CallExternalTool(Cmd, "Failed to generate FFS")\r
\r
GenFdsGlobalVariable.DebugLogger(EdkLogger.DEBUG_5, "%s needs update because of newer %s" % (Output, Input))\r
\r
Cmd = ["GenFv"]\r
- if BaseAddress not in [None, '']:\r
- Cmd += ["-r", BaseAddress]\r
+ if BaseAddress:\r
+ Cmd += ("-r", BaseAddress)\r
\r
if ForceRebase == False:\r
- Cmd += ["-F", "FALSE"]\r
+ Cmd += ("-F", "FALSE")\r
elif ForceRebase == True:\r
- Cmd += ["-F", "TRUE"]\r
+ Cmd += ("-F", "TRUE")\r
\r
if Capsule:\r
- Cmd += ["-c"]\r
+ Cmd.append("-c")\r
if Dump:\r
- Cmd += ["-p"]\r
- if AddressFile not in [None, '']:\r
- Cmd += ["-a", AddressFile]\r
- if MapFile not in [None, '']:\r
- Cmd += ["-m", MapFile]\r
+ Cmd.append("-p")\r
+ if AddressFile:\r
+ Cmd += ("-a", AddressFile)\r
+ if MapFile:\r
+ Cmd += ("-m", MapFile)\r
if FileSystemGuid:\r
- Cmd += ["-g", FileSystemGuid]\r
- Cmd += ["-o", Output]\r
+ Cmd += ("-g", FileSystemGuid)\r
+ Cmd += ("-o", Output)\r
for I in Input:\r
- Cmd += ["-i", I]\r
+ Cmd += ("-i", I)\r
\r
GenFdsGlobalVariable.CallExternalTool(Cmd, "Failed to generate FV")\r
\r
GenFdsGlobalVariable.DebugLogger(EdkLogger.DEBUG_5, "%s needs update because of newer %s" % (Output, Input))\r
\r
Cmd = ["GenVtf"]\r
- if BaseAddress not in [None, ''] and FvSize not in [None, ''] \\r
+ if BaseAddress and FvSize \\r
and len(BaseAddress) == len(FvSize):\r
for I in range(0, len(BaseAddress)):\r
- Cmd += ["-r", BaseAddress[I], "-s", FvSize[I]]\r
- Cmd += ["-o", Output]\r
+ Cmd += ("-r", BaseAddress[I], "-s", FvSize[I])\r
+ Cmd += ("-o", Output)\r
for F in Input:\r
- Cmd += ["-f", F]\r
+ Cmd += ("-f", F)\r
\r
GenFdsGlobalVariable.CallExternalTool(Cmd, "Failed to generate VTF")\r
\r
\r
Cmd = ["GenFw"]\r
if Type.lower() == "te":\r
- Cmd += ["-t"]\r
- if SubType not in [None, '']:\r
- Cmd += ["-e", SubType]\r
- if TimeStamp not in [None, '']:\r
- Cmd += ["-s", TimeStamp]\r
- if Align not in [None, '']:\r
- Cmd += ["-a", Align]\r
- if Padding not in [None, '']:\r
- Cmd += ["-p", Padding]\r
+ Cmd.append("-t")\r
+ if SubType:\r
+ Cmd += ("-e", SubType)\r
+ if TimeStamp:\r
+ Cmd += ("-s", TimeStamp)\r
+ if Align:\r
+ Cmd += ("-a", Align)\r
+ if Padding:\r
+ Cmd += ("-p", Padding)\r
if Zero:\r
- Cmd += ["-z"]\r
+ Cmd.append("-z")\r
if Strip:\r
- Cmd += ["-l"]\r
+ Cmd.append("-l")\r
if Replace:\r
- Cmd += ["-r"]\r
+ Cmd.append("-r")\r
if Join:\r
- Cmd += ["-j"]\r
+ Cmd.append("-j")\r
if Convert:\r
- Cmd += ["-m"]\r
- Cmd += ["-o", Output]\r
+ Cmd.append("-m")\r
+ Cmd += ("-o", Output)\r
Cmd += Input\r
if IsMakefile:\r
if " ".join(Cmd).strip() not in GenFdsGlobalVariable.SecCmdList:\r
if len(EfiInput) > 0:\r
\r
if Compress:\r
- Cmd += ["-ec"]\r
+ Cmd.append("-ec")\r
else:\r
- Cmd += ["-e"]\r
+ Cmd.append("-e")\r
\r
for EfiFile in EfiInput:\r
- Cmd += [EfiFile]\r
+ Cmd.append(EfiFile)\r
InputList.append (EfiFile)\r
\r
if len(BinaryInput) > 0:\r
- Cmd += ["-b"]\r
+ Cmd.append("-b")\r
for BinFile in BinaryInput:\r
- Cmd += [BinFile]\r
+ Cmd.append(BinFile)\r
InputList.append (BinFile)\r
\r
# Check List\r
return\r
GenFdsGlobalVariable.DebugLogger(EdkLogger.DEBUG_5, "%s needs update because of newer %s" % (Output, InputList))\r
\r
- if ClassCode != None:\r
- Cmd += ["-l", ClassCode]\r
- if Revision != None:\r
- Cmd += ["-r", Revision]\r
- if DeviceId != None:\r
- Cmd += ["-i", DeviceId]\r
- if VendorId != None:\r
- Cmd += ["-f", VendorId]\r
-\r
- Cmd += ["-o", Output]\r
+ if ClassCode is not None:\r
+ Cmd += ("-l", ClassCode)\r
+ if Revision is not None:\r
+ Cmd += ("-r", Revision)\r
+ if DeviceId is not None:\r
+ Cmd += ("-i", DeviceId)\r
+ if VendorId is not None:\r
+ Cmd += ("-f", VendorId)\r
+\r
+ Cmd += ("-o", Output)\r
if IsMakefile:\r
if " ".join(Cmd).strip() not in GenFdsGlobalVariable.SecCmdList:\r
GenFdsGlobalVariable.SecCmdList.append(" ".join(Cmd).strip())\r
\r
Cmd = [ToolPath, ]\r
Cmd += Options.split(' ')\r
- Cmd += ["-o", Output]\r
+ Cmd += ("-o", Output)\r
Cmd += Input\r
if IsMakefile:\r
if " ".join(Cmd).strip() not in GenFdsGlobalVariable.SecCmdList:\r
\r
try:\r
PopenObject = subprocess.Popen(' '.join(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)\r
- except Exception, X:\r
+ except Exception as X:\r
EdkLogger.error("GenFds", COMMAND_FAILURE, ExtraData="%s: %s" % (str(X), cmd[0]))\r
(out, error) = PopenObject.communicate()\r
\r
- while PopenObject.returncode == None :\r
+ while PopenObject.returncode is None :\r
PopenObject.wait()\r
if returnValue != [] and returnValue[0] != 0:\r
#get command return value\r
GenFdsGlobalVariable.InfLogger (out)\r
GenFdsGlobalVariable.InfLogger (error)\r
if PopenObject.returncode != 0:\r
- print "###", cmd\r
+ print("###", cmd)\r
EdkLogger.error("GenFds", COMMAND_FAILURE, errorMess)\r
\r
def VerboseLogger (msg):\r
# @param Str String that may contain macro\r
# @param MacroDict Dictionary that contains macro value pair\r
#\r
- def MacroExtend (Str, MacroDict={}, Arch='COMMON'):\r
- if Str == None :\r
+ def MacroExtend (Str, MacroDict={}, Arch=DataType.TAB_COMMON):\r
+ if Str is None :\r
return None\r
\r
Dict = {'$(WORKSPACE)' : GenFdsGlobalVariable.WorkSpaceDir,\r
'$(SPACE)' : ' '\r
}\r
OutputDir = GenFdsGlobalVariable.OutputDirFromDscDict[GenFdsGlobalVariable.ArchList[0]]\r
- if Arch != 'COMMON' and Arch in GenFdsGlobalVariable.ArchList:\r
+ if Arch != DataType.TAB_COMMON and Arch in GenFdsGlobalVariable.ArchList:\r
OutputDir = GenFdsGlobalVariable.OutputDirFromDscDict[Arch]\r
\r
Dict['$(OUTPUT_DIRECTORY)'] = OutputDir\r
\r
- if MacroDict != None and len (MacroDict) != 0:\r
+ if MacroDict is not None and len (MacroDict) != 0:\r
Dict.update(MacroDict)\r
\r
- for key in Dict.keys():\r
+ for key in Dict:\r
if Str.find(key) >= 0 :\r
Str = Str.replace (key, Dict[key])\r
\r
# @param PcdPattern pattern that labels a PCD.\r
#\r
def GetPcdValue (PcdPattern):\r
- if PcdPattern == None :\r
+ if PcdPattern is None :\r
return None\r
PcdPair = PcdPattern.lstrip('PCD(').rstrip(')').strip().split('.')\r
TokenSpace = PcdPair[0]\r
for Key in PcdDict:\r
PcdObj = PcdDict[Key]\r
if (PcdObj.TokenCName == TokenCName) and (PcdObj.TokenSpaceGuidCName == TokenSpace):\r
- if PcdObj.Type != 'FixedAtBuild':\r
+ if PcdObj.Type != DataType.TAB_PCDS_FIXED_AT_BUILD:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not FixedAtBuild type." % PcdPattern)\r
- if PcdObj.DatumType != 'VOID*':\r
+ if PcdObj.DatumType != DataType.TAB_VOID:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not VOID* datum type." % PcdPattern)\r
\r
PcdValue = PcdObj.DefaultValue\r
for Key in PcdDict:\r
PcdObj = PcdDict[Key]\r
if (PcdObj.TokenCName == TokenCName) and (PcdObj.TokenSpaceGuidCName == TokenSpace):\r
- if PcdObj.Type != 'FixedAtBuild':\r
+ if PcdObj.Type != DataType.TAB_PCDS_FIXED_AT_BUILD:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not FixedAtBuild type." % PcdPattern)\r
- if PcdObj.DatumType != 'VOID*':\r
+ if PcdObj.DatumType != DataType.TAB_VOID:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not VOID* datum type." % PcdPattern)\r
\r
PcdValue = PcdObj.DefaultValue\r