summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py')
-rw-r--r--BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py2477
1 files changed, 0 insertions, 2477 deletions
diff --git a/BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py b/BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py
deleted file mode 100644
index 2c81c995bd..0000000000
--- a/BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py
+++ /dev/null
@@ -1,2477 +0,0 @@
-#!/usr/bin/env python
-#
-#
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
-# This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-
-""" This program converts EDK II MSA files into EDK II Extended INF format files """
-
-import os, re, sys, fnmatch, xml.dom.minidom
-from optparse import OptionParser
-from AutoGenExterns import *
-from Common.XmlRoutines import * # XmlParseFile, XmlElement, XmlAttribute, XmlList, XmlElementData, XmlNode
-from Common.EdkIIWorkspace import *
-
-versionNumber = "0.9"
-__version__ = "%prog Version " + versionNumber
-__copyright__ = "Copyright (c) 2007 - 2010, Intel Corporation All rights reserved."
-
-commonHeaderFilename = "CommonHeader.h"
-entryPointFilename = "EntryPoint.c"
-
-AutoGenLibraryMapping = {
- "HiiLib":"HiiLibFramework",
- "EdkIfrSupportLib":"IfrSupportLibFramework",
- "EdkScsiLib":"ScsiLib",
- "EdkUsbLib":"UsbLib",
- "EdkFvbServiceLib":"FvbServiceLib",
- "EdkGraphicsLib":"GraphicsLib"
- }
-
-def myOptionParser():
- """ Argument Parser """
- usage = "%prog [options] -f input_filename"
- parser = OptionParser(usage=usage,description=__copyright__,version="%prog " + str(versionNumber))
- parser.add_option("-f", "--file", dest="filename", help="Name of MSA file to convert")
- parser.add_option("-o", "--output", dest="outfile", help="Specific Name of the INF file to create, otherwise it is the MSA filename with the extension repalced.")
- parser.add_option("-a", "--auto", action="store_true", dest="autowrite", default=False, help="Automatically create output files and write the INF file")
- parser.add_option("-i", "--interactive", action="store_true", dest="interactive", default=False, help="Set Interactive mode, user must approve each change.")
- parser.add_option("-q", "--quiet", action="store_const", const=0, dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")
- parser.add_option("-v", "--verbose", action="count", dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")
- parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Enable printing of debug messages.")
- parser.add_option("-c", "--convert", action="store_true", dest="convert", default=False, help="Convert package: OldMdePkg->MdePkg EdkModulePkg->MdeModulePkg.")
- parser.add_option("-e", "--event", action="store_true", dest="event", default=False, help="Enable handling of Exit Boot Services & Virtual Address Changed Event")
- parser.add_option("-m", "--manual", action="store_true", dest="manual", default=False, help="Generate CommonHeader.txt, user picks up & copy it to a module common header")
- parser.add_option("-w", "--workspace", dest="workspace", default=str(os.environ.get('WORKSPACE')), help="Specify workspace directory.")
- (options, args) = parser.parse_args(sys.argv[1:])
-
- return options,args
-
-
-def openDatabase(f):
- """ Parse XML in the FrameworkDatabase.db file pointed to by f """
- if (options.debug and options.verbose > 1):
- print "Opening the database file:", f
- if os.path.exists(f):
- fdb = XmlParseFile(f)
- else:
- return "None"
- return fdb
-
-def openSpd(s):
- """ Parse XML in the SPD file pointed to by s """
- if (options.debug and options.verbose > 1):
- print "Opening the SPD file:", s
- if os.path.exists(s):
- spd = XmlParseFile(s)
- else:
- return "None"
- return spd
-
-def openMsa(m):
- """ Parse XML in the MSA file pointed to by m """
- if (options.debug and options.verbose > 1):
- print "Opening the MSA file:", m
- if os.path.exists(m):
- msa = XmlParseFile(m)
- else:
- return "None"
- return msa
-
-def AddGuid(ArchList, CName, Usage):
- """ Add a GUID to the Architecture array that the GUID is valid for. """
- if "IA32" in ArchList:
- GuidCNameIa32.insert(0, str(" %-45s # %s" % (CName, Usage)))
- if "X64" in ArchList:
- GuidCNameX64.insert(0, str(" %-45s # %s" % (CName, Usage)))
- if "IPF" in ArchList:
- GuidCNameIPF.insert(0, str(" %-45s # %s" % (CName, Usage)))
- if "EBC" in ArchList:
- GuidCNameEBC.insert(0, str(" %-45s # %s" % (CName, Usage)))
- if "ALL" in ArchList:
- GuidCName.insert(0, str(" %-45s # %s" % (CName, Usage)))
-
-
-def removeDups(CN, ListName):
- """ Remove Duplicate Entries from the Guid List passed in """
- for Entry in ListName[:]:
- if " " + CN + " " in Entry:
- if (options.verbose > 1):
- print "Removing C Name %s Entry from Guids List." % (CN)
- ListName.remove(Entry)
-
-def chkArch(Archs):
- """ Process the supported architectures passed in to combine if possible """
- Archs = Archs.upper()
- if (("IA32" in Archs) & ("X64" in Archs) & ("IPF" in Archs) & ("EBC" in Archs)):
- Archs = "ALL"
- if (len(Archs) == 0):
- Archs = "ALL"
- return Archs
-
-def saveSourceFile(moduleDir, sourceFilename, sourceFileContents):
- newFilename = os.path.join(moduleDir, sourceFilename)
-
- try:
- f = open(newFilename, "w+")
- f.write(sourceFileContents)
- f.close()
- except:
- print "IO error in saving %s" % sourceFilename
-
- return sourceFilename
-
-def openSourceFile(moduleDir, sourceFilename):
- newFilename = os.path.join(moduleDir, sourceFilename)
- sourceFileContents = ""
- try:
- f = open(newFilename, "r")
- sourceFileContents = f.read()
- f.close()
- except:
- print "IO error in opening %s" % sourceFilename
-
- return sourceFileContents
-
-def MatchOption(eline, ToolChainFamily, Targets, Archs, ToolCode, Value):
- IDs = eline.split("_")
-
- if len(IDs) < 5:
- return []
-
- MatchedTargets = []
- if (Targets[0] == "*") or IDs[0] in Targets:
- MatchedTargets.append(IDs[0])
- elif IDs[0] == "*":
- MatchedTargets = Targets
-
- MatchedArchs = []
- if Archs[0] == "*" or IDs[2] in Archs:
- MatchedArchs.append(IDs[2])
- elif IDs[2] == "*":
- MatchedArchs = Archs
-
- if IDs[3] != ToolCode and IDs[3] != "*":
- return []
-
- result = []
- for arch in MatchedArchs:
- for target in MatchedTargets:
- line = "%s:%s_%s_%s_%s_FLAGS = %s" % (ToolChainFamily, target, IDs[1], arch, ToolCode, Value)
- result.append(line)
-
- return result
-
-def main():
-
- AutoGenSource = ""
- AutoGenHeader = ""
- AutoGenDeclaration = ""
- AutoGenModuleFolder = None
-
- workspace = ""
-
- if (options.workspace == None):
- print "ERROR: E0000: WORKSPACE not defined.\n Please set the WORKSPACE environment variable to the location of the EDK II install directory."
- sys.exit(1)
- else:
- workspace = options.workspace
- if (options.debug):
- print "Using Workspace:", workspace
-
- try:
- options.verbose +=1
- except:
- options.verbose = 1
- pass
-
-
- FdbPath = os.path.join(workspace, "Conf")
- FdbPath = os.path.join(FdbPath, "FrameworkDatabase.db")
- if os.path.exists(FdbPath):
- FdbFile = FdbPath
- else:
- print "ERROR: E0001: WORKSPACE does not contain the FrameworkDatabase File.\n Please run EdkSetup from the EDK II install directory.\n"
- sys.exit(1)
-
- Fdb = openDatabase(FdbFile)
- if (Fdb == 'None'):
- print "ERROR: E0002 Could not open the Framework Database file:", FdbFile
- sys.exit(1)
-
- if (options.debug):
- print "FrameworkDataBase.db file:", FdbFile
-
- #
- InitializeAutoGen(workspace, Fdb)
-
- if (options.filename):
- filename = options.filename
- if ((options.verbose > 1) | (options.autowrite)):
- print "Filename:", filename
- else:
- print "ERROR: E0001 - You must specify an input filename"
- sys.exit(1)
-
- if (options.outfile):
- outputFile = options.outfile
- else:
- outputFile = filename.replace('.msa', '.inf')
-
- if ((options.verbose > 2) or (options.debug)):
- print "Output Filename:", outputFile
-
- Msa = openMsa(filename)
- if (Msa == 'None'):
- ## Maybe developer think WORKSPACE macro is the root directory of file name
- ## So we will try to add WORKSPACE path into filename
- MsaFileName = ""
- MsaFileName = os.path.join(workspace, filename)
- Msa = openMsa(MsaFileName)
- if (Msa == 'None'):
- print "ERROR: E0002: Could not open the file:", filename
- sys.exit(1)
-
- AutoGenModuleFolder = os.path.dirname(filename)
-
- MsaHeader = "/ModuleSurfaceArea/MsaHeader/"
- MsaDefs = "/ModuleSurfaceArea/ModuleDefinitions/"
- BaseName = str(XmlElement(Msa, MsaDefs + "OutputFileBasename")).strip()
-
- if (len(BaseName) < 1):
- BaseName = str(XmlElement(Msa, MsaHeader + "BaseName")).strip()
- BaseName = re.sub(' ', '_', BaseName)
-
- GuidValue = str(XmlElement(Msa, MsaHeader + "GuidValue")).strip()
- VerString = str(XmlElement(Msa, MsaHeader + "Version")).strip()
- ModType = str(XmlElement(Msa, MsaHeader + "ModuleType")).strip()
- CopyRight = str(XmlElement(Msa, MsaHeader + "Copyright")).strip()
- Abstract = str(XmlElement(Msa, MsaHeader + "Abstract")).strip()
- Description = str(XmlElement(Msa, MsaHeader + "Description")).strip().replace(" ", " ").replace(" ", " ").replace(" ", " ")
- if not CopyRight.find("2007"):
- CopyRight = CopyRight.replace("2006", "2007")
- License = str(XmlElement(Msa, MsaHeader + "License")).strip().replace(" ", " ")
- MsaDefs = "/ModuleSurfaceArea/ModuleDefinitions/"
- BinModule = ""
- try:
- BinModule = str(XmlElement(Msa, MsaDefs + "BinaryModule")).strip()
- except:
- pass
-
- SupportedArchitectures = ""
- try:
- SupportedArchitectures = str(XmlElement(Msa, MsaDefs + "SupportedArchitectures")).strip()
- except:
- pass
-
- DefinesComments = []
- if (len(SupportedArchitectures) > 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
- DefinesComments.append("# VALID_ARCHITECTURES = " + SupportedArchitectures + "\n")
- DefinesComments.append("#\n")
-
- MsaExtern = "/ModuleSurfaceArea/Externs/"
- PcdIsDriver = ""
- try:
- PcdIsDriver = str(XmlElement(Msa, MsaExtern + "PcdIsDriver")).strip()
- except:
- pass
-
- SpecList = []
- List = []
- try:
- List = XmlList(Msa, MsaExtern + "Specification")
- except:
- pass
-
- if (len(List) > 0):
- for spec in List[:]:
- SpecList.insert(0, str(XmlElementData(spec)).strip())
-
- DriverModules = []
- LibraryModules = []
- Externlist = []
- Flag = (DefinesComments == [])
-
- # Data structure to insert autogen code
- AutoGenDriverModel = []
- AutoGenExitBootServices = []
- AutoGenVirtualAddressChanged = []
- AutoGenEntryPoint = ""
- AutoGenUnload = ""
- AutoGenGuid = []
- AutoGenLibClass = []
- AutoGenPackage = []
- AutoGenSourceFiles = []
- OldEntryPoint = ""
- OldUnload = ""
-
- try:
- Externlist = XmlList(Msa, MsaExtern + "Extern")
- except:
- pass
-
- if (len(Externlist) > 0):
- if (options.debug and options.verbose > 2):
- print "In Extern Parsing Routine"
- for extern in Externlist:
- EntryPoint = ""
- Unload = ""
- DBinding = ""
- CompName = ""
- Diag = ""
- Config = ""
- Constr = ""
- Destr = ""
- CallBack = ""
- lFlag = False
- AutoGenDriverModelItem = []
- try:
- EntryPoint = str(XmlElementData(extern.getElementsByTagName("ModuleEntryPoint")[0])).strip()
- AutoGenEntryPoint = EntryPoint
- #DriverModules.append(" %-30s = %s\n" % ("ENTRY_POINT" , EntryPoint))
- except:
- pass
-
- try:
- Unload = str(XmlElementData(extern.getElementsByTagName("ModuleUnloadImage")[0])).strip()
- AutoGenUnload = Unload
- DriverModules.append(" %-30s = %s\n" % ("UNLOAD_IMAGE", Unload))
- except:
- pass
-
- try:
- DBinding = str(XmlElementData(extern.getElementsByTagName("DriverBinding")[0])).strip()
- AutoGenDriverModelItem.append("&" + DBinding)
- DefinesComments.append("# %-29s = %-45s\n" % ("DRIVER_BINDING", DBinding))
- lFlag = True
- except:
- pass
-
- try:
- CompName = str(XmlElementData(extern.getElementsByTagName("ComponentName")[0])).strip()
- AutoGenDriverModelItem.append("&" + CompName)
- DefinesComments.append("# %-29s = %-45s\n" % ("COMPONENT_NAME", CompName))
- lFlag = True
- except:
- if lFlag:
- AutoGenDriverModelItem.append("NULL")
- pass
-
- try:
- Config = str(XmlElementData(extern.getElementsByTagName("DriverConfig")[0])).strip()
- AutoGenDriverModelItem.append("&" + Config)
- DefinesComments.append("# %-29s = %-45s\n" % ("DRIVER_CONFIG", Config))
- lFlag = True
- except:
- if lFlag:
- AutoGenDriverModelItem.append("NULL")
- pass
-
- try:
- Diag = str(XmlElementData(extern.getElementsByTagName("DriverDiag")[0])).strip()
- AutoGenDriverModelItem.append("&" + Diag)
- DefinesComments.append("# %-29s = %-45s\n" % ("DRIVER_DIAG", Diag))
- lFlag = True
- except:
- if lFlag:
- AutoGenDriverModelItem.append("NULL")
- pass
-
- if len(AutoGenDriverModelItem) > 0:
- AutoGenDriverModel.append(AutoGenDriverModelItem)
-
- try:
- Constr = str(XmlElementData(extern.getElementsByTagName("Constructor")[0])).strip()
- LibraryModules.append(" %-30s = %s\n" % ("CONSTRUCTOR", Constr))
- except:
- pass
-
- try:
- Destr = str(XmlElementData(extern.getElementsByTagName("Destructor")[0])).strip()
- LibraryModules.append(" %-30s = %s\n" % ("DESTRUCTOR", Destr))
- except:
- pass
-
- try:
- CallBack = str(XmlElement(extern, "Extern/SetVirtualAddressMapCallBack")).strip()
- if CallBack != "":
- AutoGenVirtualAddressChanged.append(CallBack)
- DefinesComments.append("# %-29s = %-45s\n" % ("VIRTUAL_ADDRESS_MAP_CALLBACK", CallBack))
- lFlag = True
- except:
-
- pass
-
- try:
- CallBack = str(XmlElement(extern, "Extern/ExitBootServicesCallBack")).strip()
- if CallBack != "":
- AutoGenExitBootServices.append(CallBack)
- DefinesComments.append("# %-29s = %-45s\n" % ("EXIT_BOOT_SERVICES_CALLBACK", CallBack))
- lFlag = True
- except:
- pass
-
-
- Flag = False
-
- """ Get the Module's custom build options """
- MBOlines = []
- MBO = "/ModuleSurfaceArea/ModuleBuildOptions/Options/Option"
- mboList = []
- try:
- mboList = XmlList(Msa, MBO)
- except:
- pass
-
- if (len(mboList) > 0):
- for Option in mboList:
- Targets = []
- Archs = []
-
- bt = ""
- try:
- bt = str(Option.getAttribute("BuildTargets"))
- except:
- pass
-
- if (len(bt) > 0):
- if (re.findall(" ", bt) > 0):
- Targets = bt.split()
- else:
- Targets.insert(0, bt)
- else:
- Targets.insert(0, "*")
-
- if (options.debug and options.verbose > 2):
- print "Targets", len(Targets), Targets
-
- pro = ""
- try:
- pro = Option.getAttribute("SupArchList")
- if (re.findall(" ", pro) > 0):
- Archs = pro.split()
- elif (re.findall(",", pro) > 0):
- Archs = pro.split(",")
- except:
- pass
-
- if (len(pro) == 0):
- Archs.insert(0, "*")
-
- if (options.debug and options.verbose > 2):
- print "Archs", len(Archs), Archs
-
- ToolCode = ""
- try:
- ToolCode = str(Option.getAttribute("ToolCode"))
- except:
- pass
-
- if (len(ToolCode) == 0):
- ToolCode="*"
-
- value = ""
- try:
- value = str(XmlElementData(Option))
- except:
- pass
- Tags = []
- TagName = ""
- try:
- TagName = str(Option.getAttribute("TagName"))
- except:
- pass
-
- if (len(TagName) > 0) :
- if (options.debug and options.verbose > 2):
- print "TagName was defined:", TagName
- Tags.insert(0, TagName)
- else:
- if (options.debug and options.verbose > 2):
- print "TagName was NOT defined!"
- TagName = "*"
- Tags.insert(0, "*")
-
- Family = ""
- try:
- Family = str(Option.getAttribute("ToolChainFamily")).strip()
- except:
- pass
-
- if (len(Family) > 0):
- if (options.debug):
- print "Searching tools_def.txt for Tool Tags that belong to:", Family, "family"
- TCF = []
- tdFile = ""
- tdPath = os.path.join(workspace, "Tools")
- tdPath = os.path.join(tdPath, "Conf")
- tdPath = os.path.join(tdPath, "tools_def.txt")
- tdPath = tdPath.replace("\\", "/")
- if os.path.exists(tdPath):
- tdFile = tdPath
- else:
- tdPath = os.path.join(workspace, "Conf")
- tdPath = os.path.join(tdPath, "tools_def.txt")
- if os.path.exists(tdPath):
- tdFile = tdPath
- else:
- print "ERROR: E0001: WORKSPACE does not contain the tools_def.txt File.\n Please run EdkSetup from the EDK II install directory.\n"
- sys.exit(1)
-
- if (options.debug and options.verbose > 2):
- print "Opening:", tdFile
-
- TagNameList = []
- tools_def = open(tdFile, "r")
- for tdline in tools_def:
- if "# " in tdline:
- continue
- if "FAMILY" in tdline:
- if (options.debug and options.verbose > 2):
- print "Testing for FAMILY:", Family, "in the line:", tdline.strip()
- if Family in tdline:
- enter = tdline.split("=")[0]
- if (options.debug and options.verbose > 2):
- print "Adding TNL:", tdline
- TagNameList.insert(0, enter)
- tools_def.close()
-
- if (options.debug and options.verbose > 2):
- print "TagNameList:", TagNameList
-
- olinesSet = {}
- for eline in TagNameList:
- if "# " in eline:
- continue
- if (options.debug and options.verbose > 2):
- print "ToolsDef entry:", eline
-
- olines = MatchOption(eline, Family, Targets, Archs, ToolCode, value)
- for oline in olines:
- olinesSet[oline] = 1
-
- for oline in olinesSet:
- if (options.debug and options.verbose > 2):
- print "Adding:", str(oline)
- MBOlines.insert(0, oline)
- else:
- for targ in Targets:
- for arch in Archs:
- oline = " %s_%s_%s_%s_FLAGS = %s" % (targ, Tags[0], arch, str(ToolCode), str(Value))
- if (options.debug and options.verbose > 2):
- print "Adding:", str(oline)
- MBOlines.insert(0, oline)
-
-
-
-
- for tag in Tags:
- for targ in Targets:
- for arch in Archs:
- oline = " " + str(targ) + "_" + str(tag) + "_" + str(arch) + "_" + str(ToolCode) + "_FLAGS = " + str(value)
- if (options.debug and options.verbose > 2):
- print "Adding:", str(oline)
- #MBOlines.insert(0, oline)
-
-
- """ Get the Library Class information """
- MsaLcDefs = "/ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass"
- LcDefList = []
- try:
- LcDefList = XmlList(Msa, MsaLcDefs)
- except:
- pass
-
- IamLibrary = []
- LibClassList = []
- LibClassListIa32 = []
- LibClassListX64 = []
- LibClassListIpf = []
- LibClassListEbc = []
-
-
- if (len(LcDefList) > 0):
- for Lc in LcDefList:
- lcKeyword = ""
- try:
- lcKeyword = str(XmlElementData(Lc.getElementsByTagName("Keyword")[0]))
- except:
- raise SyntaxError, "The MSA is not correctly formed, a Library Class Keyword Element is required"
-
- lcUsage = ""
- try:
- lcUsage = str(XmlAttribute(Lc, "Usage"))
- except:
- raise SyntaxError, "The MSA is not correctly formed, a Usage Attribute is required for all Library Class Elements"
-
- Archs = ""
- try:
- Archs = str(XmlAttribute(Lc, "SupArchList"))
- except:
- pass
-
- Archs = chkArch(Archs)
-
- if (options.debug and options.verbose > 2):
- print "Attr: ", lcUsage, lcKeyword, Archs
-
- if (options.convert):
- lcKeyword = AutoGenLibraryMapping.get(lcKeyword, lcKeyword)
-
- if re.findall("PRODUCED", lcUsage, re.IGNORECASE):
- try:
- lcSupModList = ""
-
- try:
- lcSupModList = str(XmlAttribute(Lc, "SupModuleList"))
- except:
- lcSupModList = ""
- pass
-
- lcLine = lcKeyword
- AutoGenLibClass.append(lcKeyword)
- if len(lcSupModList) > 0:
- lcLine = lcLine + "|" + lcSupModList
- IamLibrary.insert(0, lcLine)
- except:
- pass
- elif lcKeyword != "UefiDriverModelLib":
- AutoGenLibClass.append(lcKeyword)
- # This section handles the library classes that are CONSUMED
- if "IA32" in Archs:
- LibClassListIa32.insert(0, lcKeyword)
- if "X64" in Archs:
- LibClassListX64.insert(0, lcKeyword)
- if "IPF" in Archs:
- LibClassListIpf.insert(0, lcKeyword)
- if "EBC" in Archs:
- LibClassListEbc.insert(0, lcKeyword)
- if "ALL" in Archs:
- LibClassList.insert(0, lcKeyword)
- if len(AutoGenDriverModel) > 0 and "UefiLib" not in LibClassList:
- AutoGenLibClass.append("UefiLib")
- LibClassList.insert(0, "UefiLib")
-
- AutoGenDxsFiles = []
- """ Get the Source File list """
- SrcFilenames = []
- SrcFilenamesIa32 = []
- SrcFilenamesX64 = []
- SrcFilenamesIpf = []
- SrcFilenamesEbc = []
- SrcFiles = "/ModuleSurfaceArea/SourceFiles/Filename"
- SrcList = []
- try:
- SrcList = XmlList(Msa, SrcFiles)
- except:
- pass
-
- if (len(SrcList) > 0):
- for fn in SrcList:
- file = ""
- Archs = ""
-
- try:
- Archs = fn.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- file = str(XmlElementData(fn))
- except:
- pass
-
- if file.endswith(".dxs"):
- AutoGenDxsFiles.append((file, Archs))
- else:
- AutoGenSourceFiles.append(file)
- if "IA32" in Archs:
- SrcFilenamesIa32.insert(0, file)
- if "X64" in Archs:
- SrcFilenamesX64.insert(0, file)
- if "IPF" in Archs:
- SrcFilenamesIpf.insert(0, file)
- if "EBC" in Archs:
- SrcFilenamesEbc.insert(0, file)
- if "ALL" in Archs:
- SrcFilenames.insert(0, file)
-
- """ Package Dependency section """
- DbPkgList = "/FrameworkDatabase/PackageList/Filename"
- WorkspacePkgs = []
- try:
- WorkspacePkgs = XmlList(Fdb, DbPkgList)
- except:
- print "Could not tet the package data from the database"
- sys.exit(1)
-
- PkgDb = []
- HeaderLocations = []
-
- if (options.debug and options.verbose > 1):
- print "Found %s packages in the WORKSPACE" % (len(WorkspacePkgs))
-
- Dirs = []
- GuidDecls = []
- if (len(WorkspacePkgs) > 0):
- SpdHeader = "/PackageSurfaceArea/SpdHeader/"
- for Pkg in WorkspacePkgs[:]:
- PackageGuid = ""
- PackageVersion = ""
- file = ""
- try:
- file = str(XmlElementData(Pkg))
- except:
- pass
-
- if (options.debug and options.verbose > 2):
- print "PKG:", file
-
- if fnmatch.fnmatch(file, "*.dec"):
- print "parsing " + os.path.join(workspace, file)
- PackageGuid = ""
- PackageVersion = ""
- try:
- Lines = open(os.path.join(workspace, file)).readlines()
- except:
- print "Could not parse the Package file:", file
- sys.exit(1)
-
- for Line in Lines:
- Line = Line.split("#")[0]
- Items = Line.split("=")
- if len(Items) != 2:
- continue
-
- Key = Items[0].strip().upper()
- if Key == "PACKAGE_GUID":
- PackageGuid = Items[1].strip()
- if Key == "PACKAGE_VERSION":
- PackageVersion = Items[1].strip()
-
- else:
- Spd = openSpd(os.path.join(workspace, file))
- if (Spd == 'None'):
- print "Could not parse the Package file:", file
- sys.exit(1)
-
- path = os.path.split(file)[0]
- file = file.replace(".nspd", ".dec")
- file = file.replace(".spd", ".dec")
-
- try:
- PackageGuid = str(XmlElement(Spd, SpdHeader + "GuidValue"))
- except:
- pass
-
- try:
- PackageVersion = str(XmlElement(Spd, SpdHeader + "Version"))
- except:
- pass
-
- file = file + "|" + PackageGuid + "|" + PackageVersion
- PkgDb.insert(0, file)
-
- GuidEntries = []
- try:
- GuidEntries = XmlList(Spd, "/PackageSurfaceArea/GuidDeclarations/Entry")
- except:
- pass
-
- if (len(GuidEntries) > 0):
- for Entry in GuidEntries[:]:
- try:
- GuidDecls.append(str(XmlElementData(Entry.getElementsByTagName("C_Name")[0])).strip())
- except:
- pass
-
-
- pHdrs = []
- try:
- pHdrs = XmlList(Spd, "/PackageSurfaceArea/PackageHeaders/IncludePkgHeader")
- except:
- pass
-
- if (len(pHdrs) > 0):
- for Hdr in pHdrs[:]:
- try:
- ModTypeList = str(Hdr.getAttribute("ModuleType"))
- if (ModType in ModTypeList):
- HeaderName= str(XmlElementData(Hdr))[0]
- Dirs.insert(0, os.path.join(packagepath,str(os.path.split(HeaderName))))
- except:
- pass
-
- # Get the Guid:Header from the Packages
- SpdLcDec = "/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass"
- lcList = []
- try:
- lcList = XmlList(Spd, SpdLcDec)
- except:
- pass
-
- if (len(lcList) > 0):
- for Lc in lcList[:]:
- Name = ""
- try:
- Name = Lc.getAttribute("Name")
- except:
- pass
-
- Header = ""
- try:
- Header = XmlElementData(Lc.getElementsByTagName("IncludeHeader")[0])
- except:
- pass
-
- if ((len(Name) > 0) and (len(Header) > 0)):
- line = Name + "|" + os.path.join(path, Header)
- if (options.debug and options.verbose > 2):
- print "Adding:", line
- HeaderLocations.insert(0, line)
-
- ishList = []
- try:
- IndStdHeaders = "/PackageSurfaceArea/IndustryStdIncludes/IndustryStdHeader"
- ishList = XmlList(Spd, IndStdHeaders)
- except:
- pass
-
- if (len(ishList) > 0):
- for Lc in ishList[:]:
- Name = ""
- try:
- Name = str(Lc.getAttribute("Name")).strip()
- except:
- pass
-
- Header = ""
- try:
- Header = str(XmlElementData(Lc.getElementsByTagName("IncludeHeader")[0])).strip()
- except:
- pass
-
- if ((len(Name) > 0) and (len(Header) > 0)):
- line = Name + "|" + os.path.join(path, Header)
- HeaderLocations.insert(0, str(line))
-
- PkgList = []
- PkgListIa32 = []
- PkgListX64 = []
- PkgListIpf = []
- PkgListEbc = []
- Pkgs = "/ModuleSurfaceArea/PackageDependencies/Package"
- pkgL = []
- try:
- pkgL = XmlList(Msa, Pkgs)
- except:
- pass
-
-
- gUnknownPkgGuid = {}
- if (len(pkgL) > 0):
- if (options.debug and options.verbose > 1):
- print "Found %s packages in the module" % (len(pkgL))
- for pkg in pkgL[:]:
- Archs = ""
- pkgGuid = ""
- pkgVer = ""
-
- FindPkgGuid = False
- try:
- Archs = pkg.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- pkgGuid = pkg.getAttribute("PackageGuid")
- except:
- pass
-
- if options.convert:
- if pkgGuid.lower() == "5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec":
- pkgGuid = "1E73767F-8F52-4603-AEB4-F29B510B6766"
- if pkgGuid.lower() == "68169ab0-d41b-4009-9060-292c253ac43d":
- pkgGuid = "BA0D78D6-2CAF-414b-BD4D-B6762A894288"
- AutoGenPackage.append(pkgGuid)
- try:
- pkgVer = pkg.getAttribute("PackageVersion")
- except:
- pass
-
- for PkgEntry in PkgDb[:]:
- if pkgGuid in PkgEntry:
- if len(pkgVer) > 0:
- if pkgVer in PkgEntry:
- FindPkgGuid = True
- if "IA32" in Archs:
- PkgListIa32.insert(0, PkgEntry.split("|")[0])
- if "X64" in Archs:
- PkgListX64.insert(0, PkgEntry.split("|")[0])
- if "IPF" in Archs:
- PkgListIpf.insert(0, PkgEntry.split("|")[0])
- if "EBC" in Archs:
- PkgListEbc.insert(0, PkgEntry.split("|")[0])
- if "ALL" in Archs:
- PkgList.insert(0, PkgEntry.split("|")[0])
- else:
- FindPkgGuid = True
- if "IA32" in Archs:
- PkgListIa32.insert(0, PkgEntry.split("|")[0])
- if "X64" in Archs:
- PkgListX64.insert(0, PkgEntry.split("|")[0])
- if "IPF" in Archs:
- PkgListIpf.insert(0, PkgEntry.split("|")[0])
- if "EBC" in Archs:
- PkgListEbc.insert(0, PkgEntry.split("|")[0])
- if "ALL" in Archs:
- PkgList.insert(0, PkgEntry.split("|")[0])
-
- if not FindPkgGuid:
- gUnknownPkgGuid[str(pkgGuid)] = 1
-
- for UnknownPkgGuid in gUnknownPkgGuid:
- print "Cannot resolve package dependency Guid:", UnknownPkgGuid
-
- PkgList.reverse()
- PkgListIa32.reverse()
- PkgListX64.reverse()
- PkgListIpf.reverse()
- PkgListEbc.reverse()
- if (options.debug):
- print "Package List:", PkgList
-
-
-
- """ Setup the Global GuidCName arrays that will hold data from various MSA locations """
- global GuidCName
- global GuidCNameIa32
- global GuidCNameX64
- global GuidCNameIPF
- global GuidCNameEBC
- GuidCName = []
- GuidCNameIa32 = []
- GuidCNameX64 = []
- GuidCNameIPF = []
- GuidCNameEBC = []
-
- """ Check for the GUIDs Element """
- Guids = "/ModuleSurfaceArea/Guids/GuidCNames"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- except:
- pass
-
- try:
- CName = str(XmlElementData(Guid.getElementsByTagName("GuidCName")[0]))
- if CName in GuidDecls:
- if (options.debug and options.verbose > 1):
- print "Guids Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- else:
- raise AssertionError, "Guid %s defined in %s is not declared in any package (.dec) file!" % (CName, filename)
- except:
- pass
-
- if (options.debug and options.verbose > 2):
- print "Guid C Name List:", GuidCName
-
- """ Check for Events """
- Guids = "/ModuleSurfaceArea/Events/CreateEvents/EventTypes"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- Type = str(XmlElementData(Guid.getElementsByTagName("EventType")[0]))
- Usage += " Create Event: " + Type
- except:
- pass
-
- try:
- CName = str(Guid.getAttribute("EventGuidCName"))
- if CName in GuidDecls:
- if (options.debug and options.verbose > 1):
- print "CreateEvent Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- else:
- if (len(DefinesComments) == 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
- DefinesComments.append("# Create Event Guid C Name: " + CName + " Event Type: " + Type + "\n")
- Flag = True
- except:
- pass
-
- if (Flag):
- DefinesComments.append("#\n")
- Flag = False
-
- Guids = "/ModuleSurfaceArea/Events/SignalEvents/EventTypes"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- Type = str(XmlElementData(Guid.getElementsByTagName("EventType")[0]))
- Usage += " Signal Event: " + Type
- except:
- pass
-
- try:
- CName = str(Guid.getAttribute("EventGuidCName"))
- if CName in GuidDecls:
- if (options.debug and options.verbose > 1):
- print "SignalEvent Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- else:
- if (len(DefinesComments) == 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
- DefinesComments.append("# Signal Event Guid C Name: " + CName + " Event Type: " + Type + "\n")
- Flag = True
- except:
- pass
-
- if (Flag):
- DefinesComments.append("#\n")
- Flag = False
-
- """ Check the HOB guids """
- Guids = "/ModuleSurfaceArea/Hobs/HobTypes"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- Type = str(XmlElementData(Guid.getElementsByTagName("HobType")[0]))
- Usage += " Hob: " + Type
- except:
- pass
-
- try:
- CName = str(Guid.getAttribute("HobGuidCName"))
- if CName in GuidDecls:
- if (options.debug and options.verbose > 1):
- print "Hob Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- else:
- if (len(DefinesComments) == 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
- DefinesComments.append("# HOB Guid C Name: " + CName + " Hob Type: " + Type + "\n")
- Flag = True
- except:
- if (len(DefinesComments) == 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
- DefinesComments.append("# HOB: " + Type + "\n")
- Flag = True
- pass
-
- if (Flag):
- DefinesComments.append("#\n")
- Flag = False
-
- """ Check for the SystemTables Element """
- Guids = "/ModuleSurfaceArea/SystemTables/SystemTableCNames"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- Usage += " System Table"
- except:
- pass
-
- try:
- CName = str(XmlElementData(Guid.getElementsByTagName("SystemTableCName")[0]))
- if (options.debug and options.verbose > 1):
- print "System Table Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- except:
- pass
-
- """ Check for the DataHubs Element """
- Guids = "/ModuleSurfaceArea/DataHubs/DataHubRecord"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- Usage += " Data Hub"
- except:
- pass
-
- try:
- CName = str(XmlElementData(Guid.getElementsByTagName("DataHubCName")[0]))
- if (options.debug and options.verbose > 1):
- print "Data Hub Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- except:
- pass
-
- """ Check for the HiiPackages Element """
- Guids = "/ModuleSurfaceArea/HiiPackages/HiiPackage"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- Usage += " HII Formset"
- except:
- pass
-
- try:
- CName = str(XmlElementData(Guid.getElementsByTagName("HiiCName")[0]))
- if (options.debug and options.verbose > 1):
- print "Hii Formset Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- except:
- pass
-
- """ Check for the Variables Element """
- Guids = "/ModuleSurfaceArea/Variables/Variable"
- GuidList = []
- try:
- GuidList = XmlList(Msa, Guids)
- except:
- pass
-
- if (len(GuidList) > 0):
- for Guid in GuidList:
- Archs = ""
- Usage = ""
- CName = ""
- VariableName = ""
-
- try:
- Archs = Guid.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Guid.getAttribute("Usage")
- except:
- pass
-
- try:
- VariableName = str(XmlElementData(Guid.getElementsByTagName("VariableName")[0]))
- CName = str(XmlElementData(Guid.getElementsByTagName("GuidC_Name")[0]))
-
- HexData = VariableName.strip().split()
- UniString = " L\""
- for dig in HexData[:]:
- UniString += str(unichr(eval(dig)))
- UniString += "\""
-
- Usage += UniString
-
- if CName in set(GuidDecls):
- removeDups(CName, GuidCName)
- removeDups(CName, GuidCNameIa32)
- removeDups(CName, GuidCNameX64)
- removeDups(CName, GuidCNameIPF)
- removeDups(CName, GuidCNameEBC)
-
- if (options.debug):
- print "Variable Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
- AddGuid(Archs, CName, Usage)
- AutoGenGuid.append(CName)
- else:
- if (len(DefinesComments) == 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
- DefinesComments.append("# Variable Guid C Name: " + CName + " Variable Name:" + UniString + "\n")
- Flag = True
- except:
- pass
-
- if (Flag):
- DefinesComments.append("#\n")
- Flag = False
-
- """ Check for the Protocol Element """
- Protocols = "/ModuleSurfaceArea/Protocols/Protocol"
- ProtocolList = []
- ProtocolCName = []
- ProtocolCNameIa32 = []
- ProtocolCNameX64 = []
- ProtocolCNameIPF = []
- ProtocolCNameEBC = []
-
- try:
- ProtocolList = XmlList(Msa, Protocols)
- except:
- pass
-
- if (len(ProtocolList) > 0):
- for Protocol in ProtocolList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Protocol.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Protocol.getAttribute("Usage")
- except:
- pass
-
- try:
- CName = str(XmlElementData(Protocol.getElementsByTagName("ProtocolCName")[0]))
- AutoGenGuid.append(CName)
- removeDups(CName, GuidCName)
- removeDups(CName, GuidCNameIa32)
- removeDups(CName, GuidCNameX64)
- removeDups(CName, GuidCNameIPF)
- removeDups(CName, GuidCNameEBC)
-
- if (options.debug and options.verbose > 1):
- print "Found %s - %s - %s " % (CName, Usage, str(len(Archs)))
-
- if "IA32" in Archs:
- ProtocolCNameIa32.insert(0, str(" %-45s # PROTOCOL %s" % (CName, Usage)))
- if "X64" in Archs:
- ProtocolCNameX64.insert(0, str(" %-45s # PROTOCOL %s" % (CName, Usage)))
- if "IPF" in Archs:
- ProtocolCNameIPF.insert(0, str(" %-45s # PROTOCOL %s" % (CName, Usage)))
- if "EBC" in Archs:
- ProtocolCNameEBC.insert(0, str(" %-45s # PROTOCOL %s" % (CName, Usage)))
- if "ALL" in Archs:
- ProtocolCName.insert(0, str(" %-45s # PROTOCOL %s" % (CName, Usage)))
- except:
- pass
-
-
- Protocols = "/ModuleSurfaceArea/Protocols/ProtocolNotify"
- try:
- ProtocolList = XmlList(Msa, Protocols)
- except:
- pass
-
- if (len(ProtocolList) > 0):
- for Protocol in ProtocolList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Protocol.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Protocol.getAttribute("Usage")
- except:
- pass
-
- try:
- CName = str(XmlElementData(Protocol.getElementsByTagName("ProtocolNotifyCName")[0]))
- AutoGenGuid.append(CName)
- removeDups(CName, GuidCName)
- removeDups(CName, GuidCNameIa32)
- removeDups(CName, GuidCNameX64)
- removeDups(CName, GuidCNameIPF)
- removeDups(CName, GuidCNameEBC)
-
- if "IA32" in Archs:
- ProtocolCNameIa32.insert(0, " %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
- if "X64" in Archs:
- ProtocolCNameX64.insert(0, " %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
- if "IPF" in Archs:
- ProtocolCNameIPF.insert(0, " %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
- if "EBC" in Archs:
- ProtocolCNameEBC.insert(0, " %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
- if "ALL" in Archs:
- ProtocolCName.insert(0, " %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
- except:
- pass
-
- """ Check for the PPIs Element """
- PPIs = "/ModuleSurfaceArea/PPIs/Ppi"
- PPIsList = []
- PpiCName = []
- PpiCNameIa32 = []
- PpiCNameX64 = []
- PpiCNameIPF = []
- PpiCNameEBC = []
-
- try:
- PPIsList = XmlList(Msa, PPIs)
- except:
- pass
-
- if (len(PPIsList) > 0):
- for Ppi in PPIsList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = str(Ppi.getAttribute("SupArchList"))
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = str(Ppi.getAttribute("Usage"))
- except:
- pass
-
- try:
- CName = str(XmlElementData(Ppi.getElementsByTagName("PpiCName")[0])).strip()
- AutoGenGuid.append(CName)
- removeDups(CName, GuidCName)
- removeDups(CName, GuidCNameIa32)
- removeDups(CName, GuidCNameX64)
- removeDups(CName, GuidCNameIPF)
- removeDups(CName, GuidCNameEBC)
-
- if "IA32" in Archs:
- PpiCNameIa32.insert(0, " %-45s # PPI %s" % (CName, Usage))
- if "X64" in Archs:
- PpiCNameX64.insert(0, " %-45s # PPI %s" % (CName, Usage))
- if "IPF" in Archs:
- PpiCNameIPF.insert(0, " %-45s # PPI %s" % (CName, Usage))
- if "EBC" in Archs:
- PpiCNameEBC.insert(0, " %-45s # PPI %s" % (CName, Usage))
- if "ALL" in Archs:
- PpiCName.insert(0, " %-45s # PPI %s" % (CName, Usage))
- except:
- pass
-
-
- PPIs = "/ModuleSurfaceArea/PPIs/PpiNotify"
- try:
- PPIsList = XmlList(Msa, PPIs)
- except:
- pass
-
- if (len(PPIsList) > 0):
- for Ppi in PPIsList:
- Archs = ""
- Usage = ""
- CName = ""
-
- try:
- Archs = Ppi.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- Usage = Ppi.getAttribute("Usage")
- except:
- pass
-
- try:
- CName = str(XmlElementData(Ppi.getElementsByTagName("PpiNotifyCName")[0]))
- AutoGenGuid.append(CName)
- removeDups(CName, GuidCName)
- removeDups(CName, GuidCNameIa32)
- removeDups(CName, GuidCNameX64)
- removeDups(CName, GuidCNameIPF)
- removeDups(CName, GuidCNameEBC)
-
- if "IA32" in Archs:
- PpiCNameIa32.insert(0, " %-45s # PPI_NOTIFY %s" % (CName, Usage))
- if "X64" in Archs:
- PpiCNameX64.insert(0, " %-45s # PPI_NOTIFY %s" % (CName, Usage))
- if "IPF" in Archs:
- PpiCNameIPF.insert(0, " %-45s # PPI_NOTIFY %s" % (CName, Usage))
- if "EBC" in Archs:
- PpiCNameEBC.insert(0, " %-45s # PPI_NOTIFY %s" % (CName, Usage))
- if "ALL" in Archs:
- PpiCName.insert(0, " %-45s # PPI_NOTIFY %s" % (CName, Usage))
- except:
- pass
-
-
- """ Get the PCD entries now """
- PcdCoded = "/ModuleSurfaceArea/PcdCoded/PcdEntry"
- PcdList = []
- try:
- PcdList = XmlList(Msa, PcdCoded)
- except:
- pass
-
- (PcdFF, PcdFFIa32, PcdFFX64, PcdFFIpf, PcdFFEbc) = ([],[],[],[],[])
- (PcdFAB, PcdFABIa32, PcdFABX64, PcdFABIpf, PcdFABEbc) = ([],[],[],[],[])
- (PcdPIM, PcdPIMIa32, PcdPIMX64, PcdPIMIpf, PcdPIMEbc) = ([],[],[],[],[])
- (PcdDY, PcdDYIa32, PcdDYX64, PcdDYIpf, PcdDYEbc) = ([],[],[],[],[])
- (PcdDYE, PcdDYEIa32, PcdDYEX64, PcdDYEIpf, PcdDYEEbc) = ([],[],[],[],[])
-
- if (len(PcdList) > 0):
- for Pcd in PcdList:
- Archs = ""
- Usage = ""
- CName = ""
- DefVal = ""
-
- try:
- Archs = Pcd.getAttribute("SupArchList")
- except:
- pass
-
- Archs = chkArch(Archs)
-
- try:
- ItemType = Pcd.getAttribute("PcdItemType")
- except:
- pass
-
- try:
- CName = str(XmlElementData(Pcd.getElementsByTagName("C_Name")[0]))
- except:
- raise SyntaxError, "ERROR: MSA has a PCD with no Pcd C_Name defined"
-
- try:
- TSGC = str(XmlElementData(Pcd.getElementsByTagName("TokenSpaceGuidCName")[0]))
- except:
- pass
-
- try:
- DefVal = str(XmlElementData(Pcd.getElementsByTagName("DefaultValue")))
- except:
- pass
-
- if (len(DefVal) > 0):
- line = TSGC + "." + CName + "|" + DefVal
- else:
- line = TSGC + "." + CName
-
- if (ItemType == "FEATURE_FLAG"):
- if ("IA32" in Archs):
- PcdFFIa32.insert(0, line)
- if ("IPF" in Archs):
- PcdFFIpf.insert(0, line)
- if ("X64" in Archs):
- PcdFFX64.insert(0, line)
- if ("EBC" in Archs):
- PcdFFEbc.insert(0, line)
- if ("ALL" in Archs):
- PcdFF.insert(0, line)
- elif (ItemType == "FIXED_AT_BUILD"):
- if ("IA32" in Archs):
- PcdFABIa32.insert(0, line)
- if ("IPF" in Archs):
- PcdFABIpf.insert(0, line)
- if ("X64" in Archs):
- PcdFABX64.insert(0, line)
- if ("EBC" in Archs):
- PcdFABEbc.insert(0, line)
- if ("ALL" in Archs):
- PcdFAB.insert(0, line)
- elif (ItemType == "PATCHABLE_IN_MODULE"):
- if ("IA32" in Archs):
- PcdPIMIa32.insert(0, line)
- if ("IPF" in Archs):
- PcdPIMIpf.insert(0, line)
- if ("X64" in Archs):
- PcdPIMX64.insert(0, line)
- if ("EBC" in Archs):
- PcdPIMEbc.insert(0, line)
- if ("ALL" in Archs):
- PcdFAB.insert(0, line)
- elif (ItemType == "DYNAMIC_EX"):
- if ("IA32" in Archs):
- PcdDYEIa32.insert(0, line)
- if ("IPF" in Archs):
- PcdDYEIpf.insert(0, line)
- if ("X64" in Archs):
- PcdDYEX64.insert(0, line)
- if ("EBC" in Archs):
- PcdDYEEbc.insert(0, line)
- if ("ALL" in Archs):
- PcdDYE.insert(0, line)
- else:
- if ("IA32" in Archs):
- PcdDYIa32.insert(0, line)
- if ("IPF" in Archs):
- PcdDYIpf.insert(0, line)
- if ("X64" in Archs):
- PcdDYX64.insert(0, line)
- if ("EBC" in Archs):
- PcdDYEbc.insert(0, line)
- if ("ALL" in Archs):
- PcdDY.insert(0, line)
-
- """ User Extensions Section """
- UEList = []
- UESectionList = []
- try:
- UESectionList = XmlList(Msa, "/ModuleSurfaceArea/UserExtensions")
- except:
- pass
-
- if (len(UESectionList) > 0):
- for UE in UESectionList[:]:
- UserId = ""
- Identifier = ""
- Value = ""
-
- try:
- UserId = str(UE.getAttribute("UserID"))
- except:
- raise SyntaxError, "ERROR: Malformed MSA, No UserID Specified in UserExtensions element"
-
- try:
- Identifier = str(UE.getAttribute("Identifier"))
- except:
- raise SyntaxError, "ERROR: Malformed MSA, No Identifier Specified in UserExtensions element"
-
- if (options.debug):
- print "FOUND A UE Element", UserId, Identifier
-
- try:
- Value = str(XmlElementData(UE))
- except:
- pass
-
- Entry = [UserId, Identifier, Value]
- UEList.insert(0, Entry)
-
-
-
- if (len(Externlist) > 0):
- AutoGenSource = ""
- AutoGenDefinitionSource = ""
- AutoGenEntryPointSource = ""
- AutoGenUnloadSource = ""
- if (len(AutoGenDriverModel) > 0):
- AutoGenCode = AddDriverBindingProtocolStatement(AutoGenDriverModel)
- AutoGenEntryPointSource += AutoGenCode[0]
- AutoGenUnloadSource += AutoGenCode[1]
- AutoGenDeclaration += AutoGenCode[3]
-
-
- if (len(AutoGenExitBootServices) > 0):
- print "[Warning] Please manually add Create Event statement for Exit Boot Service Event!"
- if options.event:
- AutoGenCode = AddBootServiceEventStatement(AutoGenExitBootServices)
- AutoGenEntryPointSource += AutoGenCode[0]
- AutoGenUnloadSource += AutoGenCode[1]
- AutoGenDefinitionSource += AutoGenCode[2]
- AutoGenDeclaration += AutoGenCode[3]
-
- if (len(AutoGenVirtualAddressChanged) > 0):
- print "[Warning] Please manually add Create Event statement for Virtual Address Change Event!"
- if options.event:
- AutoGenCode = AddVirtualAddressEventStatement(AutoGenVirtualAddressChanged)
- AutoGenEntryPointSource += AutoGenCode[0]
- AutoGenUnloadSource += AutoGenCode[1]
- AutoGenDefinitionSource += AutoGenCode[2]
- AutoGenDeclaration += AutoGenCode[3]
-
- if AutoGenEntryPointSource != "":
- OldEntryPoint = AutoGenEntryPoint
- AutoGenCode = AddNewEntryPointContentsStatement(BaseName, AutoGenEntryPoint, AutoGenEntryPointSource)
- AutoGenEntryPoint = AutoGenCode[0]
- AutoGenEntryPointSource = AutoGenCode[1]
- AutoGenDeclaration += AutoGenCode[2]
-
-
- if AutoGenEntryPoint != "":
- DriverModules.insert(0, " %-30s = %s\n" % ("ENTRY_POINT" , AutoGenEntryPoint))
-
- AutoGenSource = AutoGenDefinitionSource + AutoGenEntryPointSource + AutoGenUnloadSource
-
- if (lFlag):
- DefinesComments.append("#\n")
-
- if (Flag and len(DefinesComments) > 0):
- DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-
- if (options.debug and options.verbose > 2):
- if (len(DriverModules) > 0):
- print DriverModules
- if (len(LibraryModules) > 0):
- print LibraryModules
- if (len(DefinesComments) > 0):
- print DefinesComments
-
- Depex = []
- DepexIa32 = []
- DepexX64 = []
- DepexIpf = []
- DepexEbc = []
-
- for DxsFile, Archs in AutoGenDxsFiles:
- fileContents = openSourceFile(AutoGenModuleFolder, DxsFile)
- Contents, Unresolved = TranslateDpxSection(fileContents)
- if Contents == "":
- print "[warning] Cannot read dxs expression"
- else:
- if (len(Unresolved) > 0):
- print "[warning] Guid Macro(s): %s cannot find corresponding cNames. Please resolve it in [depex] section in extened inf" % ",".join(Unresolved)
-
- if ("IA32" in Archs):
- DepexIa32.insert(0, Contents)
- if ("IPF" in Archs):
- DepexIpf.insert(0, Contents)
- if ("X64" in Archs):
- DepexX64.insert(0, Contents)
- if ("EBC" in Archs):
- DepexEbc.insert(0, Contents)
- if ("ALL" in Archs):
- Depex.insert(0, Contents)
-
- AutoGenSourceHeaderFormat = "/**@file\n %s\n\n %s\n %s\n %s\n**/\n\n%s"
- includeCommonHeaderFileStatement = "#include \"%s\"" % commonHeaderFilename
-
- AutoGenHeader += AddSystemIncludeStatement(ModType, AutoGenPackage)
- AutoGenHeader += AddGuidStatement(AutoGenGuid)
- AutoGenHeader += AddLibraryClassStatement(AutoGenLibClass)
-
- if options.manual:
- saveSourceFile(AutoGenModuleFolder, "CommonHeader.txt", AutoGenHeader)
- else:
-
- commonHeaderFilename2 = re.sub("(?=[^a-z])", "_", commonHeaderFilename)
- commonHeaderFilename2 = "_" + commonHeaderFilename2.replace(".", "").upper() + "_"
- briefDiscription = "Common header file shared by all source files."
- detailedDiscription = "This file includes package header files, library classes and protocol, PPI & GUID definitions.\n"
- AutoGenHeader += AutoGenDeclaration
- AutoGenHeader = "#ifndef %s\n#define %s\n\n\n%s\n#endif\n" % (commonHeaderFilename2, commonHeaderFilename2, AutoGenHeader)
- AutoGenHeader = AutoGenSourceHeaderFormat % (briefDiscription, detailedDiscription, CopyRight, License, AutoGenHeader)
- saveSourceFile(AutoGenModuleFolder, commonHeaderFilename, AutoGenHeader)
- SrcFilenames.append(commonHeaderFilename)
-
- for source in AutoGenSourceFiles:
- extension = os.path.splitext(source)[1]
- if extension == ".c":
- sourceContents = openSourceFile(AutoGenModuleFolder, source)
- sourceContents = AddCommonInclusionStatement(sourceContents, includeCommonHeaderFileStatement)
- saveSourceFile(AutoGenModuleFolder, source, sourceContents)
-
-
- if AutoGenSource != "":
- briefDiscription = "Entry Point Source file."
- detailedDiscription = "This file contains the user entry point \n"
- AutoGenSource = AutoGenSourceHeaderFormat % (briefDiscription, detailedDiscription, CopyRight, License, AutoGenSource)
- AutoGenSource = AddCommonInclusionStatement(AutoGenSource, includeCommonHeaderFileStatement)
-
- saveSourceFile(AutoGenModuleFolder, entryPointFilename, AutoGenSource)
- SrcFilenames.append(entryPointFilename)
-
-
-
-
- # DONE Getting data, now output it in INF format.
- Msa.unlink()
- Fdb.unlink()
- Output = []
-
- """ Print the converted data format """
- head = "#/** @file\n"
- head += "# " + str(Abstract) + "\n#\n"
- head += "# " + str(Description).strip().replace("\n", "\n# ") + "\n"
- head += "# " + str(CopyRight) + "\n#\n"
- head += "# " + str(License).replace("\n", "\n# ").replace(" ", " ").strip() + "\n#\n"
- head += "#\n#**/\n"
-
- Output.append(head)
- if (options.debug):
- print head
-
-## Defines = "\n" + "#"*80+ "\n#\n"
-## if (BinModule != "false"):
-## Defines += "# Defines Section - statements that will be processed to generate a binary image.\n"
-## else:
-## Defines += "# Defines Section - statements that will be processed to create a Makefile.\n"
-## Defines += "#\n" + "#"*80 + "\n"
-
- Defines = "\n"
- Defines += "[Defines]\n"
- Defines += " %-30s = %s\n" % ("INF_VERSION", "0x00010005")
- Defines += " %-30s = %s\n" % ("BASE_NAME", BaseName)
- Defines += " %-30s = %s\n" % ("FILE_GUID", GuidValue)
- Defines += " %-30s = %s\n" % ("MODULE_TYPE", ModType)
- Defines += " %-30s = %s\n" % ("VERSION_STRING", VerString)
-
- if (len(PcdIsDriver) > 0):
- Defines += " %-30s = %s\n" % ("PCD_DRIVER", PcdIsDriver)
-
- if (len(IamLibrary) > 0):
- lcstr = ""
- for lc in IamLibrary[:]:
- lcstr += lc + " "
- Defines += " %-30s = %s" % ("LIBRARY_CLASS", lcstr)
- Defines += "\n"
-
- if (len(SpecList) > 0):
- for spec in SpecList[:]:
- (specname, specval) = spec.split()
- Defines += " %-30s = %s\n" % (specname, specval)
- Defines += "\n"
-
- if (len(DriverModules) > 0):
- for line in DriverModules[:]:
- Defines += line
-
- if (len(LibraryModules) > 0):
- for line in LibraryModules[:]:
- Defines += line
-
- if (len(DefinesComments) > 0):
- for line in DefinesComments[:]:
- Defines += line
-
- Output.append(Defines)
-
- if (options.debug):
- print Defines
-
- if (BinModule != "false"):
- """ Binary Module, so sources are really binaries. """
-## Sources = "\n" + "#"*80 + "\n#\n"
-## Sources += "# Binaries Section - list of binary files that are required for the build\n# to succeed.\n"
-## Sources += "#\n" + "#"*80 + "\n\n"
- Sources = "\n"
- if ModType == "UEFI_APPLICATION":
- FileType = "UEFI_APP"
- if options.verbose > 0:
- print "WARNING: Binary Module: %s is assuming UEFI_APPLICATION file type." % (options.filename)
- else:
- FileType = "FV"
- if options.verbose > 0:
- print "WARNING: Binary Module: %s is assuming FV file type." % (options.filename)
-
- if (len(SrcFilenames) > 0):
- Sources += "[Binaries.common]\n"
- for file in SrcFilenames[:]:
- file = file.replace("\\", "/")
- Sources += " " + FileType + "|" + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesIa32) > 0):
- Sources += "[Binaries.Ia32]\n"
- for file in SrcFilenamesIa32[:]:
- file = file.replace("\\", "/")
- Sources += " " + FileType + "|" + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesX64) > 0):
- Sources += "[Binaries.X64]\n"
- for file in SrcFilenamesX64[:]:
- file = file.replace("\\", "/")
- Sources += " " + FileType + "|" + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesIpf) > 0):
- Sources += "[Binaries.IPF]\n"
- for file in SrcFilenamesIpf[:]:
- file = file.replace("\\", "/")
- Sources += " " + FileType + "|" + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesEbc) > 0):
- Sources += "[Binaries.EBC]\n"
- for file in SrcFilenamesEbc[:]:
- file = file.replace("\\", "/")
- Sources += " " + FileType + "|" + file + "\n"
- Sources += "\n"
-
- Output.append(Sources)
- if (options.debug):
- print Sources
- else:
-## Sources = "\n" + "#"*80 + "\n#\n"
-## Sources += "# Sources Section - list of files that are required for the build to succeed.\n"
-## Sources += "#\n" + "#"*80 + "\n\n"
- Sources = "\n"
- if (len(SrcFilenames) > 0):
- Sources += "[Sources.common]\n"
- for file in SrcFilenames[:]:
- Sources += " " + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesIa32) > 0):
- Sources += "[Sources.Ia32]\n"
- for file in SrcFilenamesIa32[:]:
- Sources += " " + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesX64) > 0):
- Sources += "[Sources.X64]\n"
- for file in SrcFilenamesX64[:]:
- Sources += " " + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesIpf) > 0):
- Sources += "[Sources.IPF]\n"
- for file in SrcFilenamesIpf[:]:
- Sources += " " + file + "\n"
- Sources += "\n"
-
- if (len(SrcFilenamesEbc) > 0):
- Sources += "[Sources.EBC]\n"
- for file in SrcFilenamesEbc[:]:
- Sources += " " + file + "\n"
- Sources += "\n"
-
- Output.append(Sources)
- if (options.debug):
- print Sources
-
-
- includeLine = ""
- if ((len(HeaderLocations) > 0) or (len(Dirs) > 0)):
- allLcs = set(LibClassList + LibClassListIa32 + LibClassListX64 + LibClassListIpf + LibClassListEbc + Dirs)
- Lines = []
- for line in HeaderLocations[:]:
- for Lc in allLcs:
- (keyword, header) = line.split("|")
- if Lc in keyword:
- if (options.debug):
- print "FOUND", Lc, "in", keyword, "header", header
- path = "$(WORKSPACE)/" + os.path.split(header)[0]
- Lines.insert(0, path.strip())
- Includes = ""
-## Includes = "\n" + "#"*80 + "\n#\n"
-## Includes += "# Includes Section - list of Include locations that are required for\n"
-## Includes += "# this module.\n"
-## Includes += "#\n" + "#"*80 + "\n\n"
-## Includes += "[Includes]\n"
-## includeLines = []
-## includeLines = set(Lines)
-## if (options.debug):
-## print "There are", len(includeLines), "entries"
-## for Line in includeLines:
-## Includes += " " + str(Line).strip().replace("\\", "/") + "\n"
-
- Output.append(Includes)
- if (options.debug):
- print Includes
-
-
-
- if ((len(PkgList) + len(PkgListIa32) + len(PkgListX64) + len(PkgListIpf) + len(PkgListEbc)) > 0):
- """ We do this if and only if we have Package Dependencies """
-## PackageDepends = "\n" + "#"*80 + "\n#\n"
-## PackageDepends += "# Package Dependency Section - list of Package files that are required for\n"
-## PackageDepends += "# this module.\n"
-## PackageDepends += "#\n" + "#"*80 + "\n\n"
- PackageDepends = "\n"
- if (len(PkgList) > 0):
- PackageDepends += "[Packages]\n"
- for lc in PkgList[:]:
- lc = lc.replace("\\", "/")
- PackageDepends += " " + lc + "\n"
- PackageDepends += "\n"
-
- if (len(PkgListIa32) > 0):
- PackageDepends += "[Packages.IA32]\n"
- for lc in PkgListIa32[:]:
- lc = lc.replace("\\", "/")
- PackageDepends += " " + lc + "\n"
- PackageDepends += "\n"
-
- if (len(PkgListX64) > 0):
- PackageDepends += "[Packages.X64]\n"
- for lc in PkgListX64[:]:
- lc = lc.replace("\\", "/")
- PackageDepends += " " + lc + "\n"
- PackageDepends += "\n"
-
- if (len(PkgListIpf) > 0):
- PackageDepends += "[Packages.IPF]\n"
- for lc in PkgListIpf[:]:
- lc = lc.replace("\\", "/")
- PackageDepends += " " + lc + "\n"
- PackageDepends += "\n"
-
- if (len(PkgListEbc) > 0):
- PackageDepends += "[Packages.EBC]\n"
- for lc in PkgListEbc[:]:
- lc = lc.replace("\\", "/")
- PackageDepends += " " + lc + "\n"
- PackageDepends += "\n"
-
- Output.append(PackageDepends)
- if (options.debug):
- print PackageDepends
-
- if ((len(LibClassList) + len(LibClassListIa32) + len(LibClassListX64) + len(LibClassListIpf) + len(LibClassListEbc)) > 0):
-## LibraryClasses = "\n" + "#"*80 + "\n#\n"
-## LibraryClasses += "# Library Class Section - list of Library Classes that are required for\n"
-## LibraryClasses += "# this module.\n"
-## LibraryClasses += "#\n" + "#"*80 + "\n\n"
-
- LibraryClasses = "\n"
- if (len(LibClassList) > 0):
- LibraryClasses += "[LibraryClasses]\n"
- for lc in LibClassList[:]:
- LibraryClasses += " " + lc + "\n"
- LibraryClasses += "\n"
-
- if (len(LibClassListIa32) > 0):
- LibraryClasses += "[LibraryClasses.IA32]\n"
- for lc in LibClassListIa32[:]:
- LibraryClasses += " " + lc + "\n"
- LibraryClasses += "\n"
-
- if (len(LibClassListX64) > 0):
- LibraryClasses += "[LibraryClasses.X64]\n"
- for lc in LibClassListX64[:]:
- LibraryClasses += " " + lc + "\n"
- LibraryClasses += "\n"
-
- if (len(LibClassListIpf) > 0):
- LibraryClasses += "[LibraryClasses.IPF]\n"
- for lc in LibClassListIpf[:]:
- LibraryClasses += " " + lc + "\n"
- LibraryClasses += "\n"
-
- if (len(LibClassListEbc) > 0):
- LibraryClasses += "[LibraryClasses.EBC]\n"
- for lc in LibClassListEbc[:]:
- LibraryClasses += " " + lc + "\n"
- LibraryClasses += "\n"
-
- Output.append(LibraryClasses)
- if (options.debug):
- print LibraryClasses
-
- # Print the Guids sections
- if (len(GuidCName) + len(GuidCNameIa32) + len(GuidCNameIPF) + len(GuidCNameX64) + len(GuidCNameEBC)) > 0:
-## GuidSection = "\n" + "#"*80 + "\n#\n"
-## GuidSection += "# Guid C Name Section - list of Guids that this module uses or produces.\n"
-## GuidSection += "#\n" + "#"*80 + "\n\n"
- GuidSection = "\n"
- if (len(GuidCName) > 0):
- GuidSection += "[Guids]\n"
- for Guid in GuidCName[:]:
- GuidSection += Guid + "\n"
- GuidSection += "\n"
-
- if (len(GuidCNameIa32) > 0):
- GuidSection += "[Guids.IA32]\n"
- for Guid in GuidCNameIa32[:]:
- GuidSection += Guid + "\n"
- GuidSection += "\n"
-
- if (len(GuidCNameX64) > 0):
- GuidSection += "[Guids.X64]\n"
- for Guid in GuidCNameX64[:]:
- GuidSection += Guid + "\n"
- GuidSection += "\n"
-
- if (len(GuidCNameIPF) > 0):
- GuidSection += "[Guids.IPF]\n"
- for Guid in GuidCNameIPF[:]:
- GuidSection += Guid + "\n"
- GuidSection += "\n"
-
- if (len(GuidCNameEBC) > 0):
- GuidSection += "[Guids.EBC]\n"
- for Guid in GuidCNameEBC[:]:
- GuidSection += Guid + "\n"
- GuidSection += "\n"
-
- Output.append(GuidSection)
- if (options.debug and options.verbose > 1):
- print GuidSection
-
- # Print the Protocol sections
- if (len(ProtocolCName) + len(ProtocolCNameIa32) + len(ProtocolCNameIPF) + len(ProtocolCNameX64) + len(ProtocolCNameEBC)) > 0:
-## ProtocolsSection = "\n" + "#"*80 + "\n#\n"
-## ProtocolsSection += "# Protocol C Name Section - list of Protocol and Protocol Notify C Names\n"
-## ProtocolsSection += "# that this module uses or produces.\n"
-## ProtocolsSection += "#\n" + "#"*80 + "\n\n"
-
- ProtocolsSection = "\n"
- if (len(ProtocolCName) > 0):
- ProtocolsSection += "[Protocols]\n"
- for Guid in ProtocolCName[:]:
- ProtocolsSection += Guid + "\n"
- ProtocolsSection += "\n"
-
- if (len(ProtocolCNameIa32) > 0):
- ProtocolsSection += "[Protocols.IA32]\n"
- for Guid in ProtocolCNameIa32[:]:
- ProtocolsSection += Guid + "\n"
- ProtocolsSection += "\n"
-
- if (len(ProtocolCNameX64) > 0):
- ProtocolsSection += "[Protocols.X64]\n"
- for Guid in ProtocolCNameX64[:]:
- ProtocolsSection += Guid + "\n"
- ProtocolsSection += "\n"
-
- if (len(ProtocolCNameIPF) > 0):
- ProtocolsSection += "[Protocols.IPF]\n"
- for Guid in ProtocolCNameIPF[:]:
- ProtocolsSection += Guid + "\n"
- ProtocolsSection += "\n"
-
- if (len(ProtocolCNameEBC) > 0):
- ProtocolsSection += "[Protocols.EBC]\n"
- for Guid in ProtocolCNameEBC[:]:
- ProtocolsSection += Guid + "\n"
- ProtocolsSection += "\n"
-
- Output.append(ProtocolsSection)
- if (options.debug):
- print ProtocolsSection
-
- # Print the PPI sections
- if (len(PpiCName) + len(PpiCNameIa32) + len(PpiCNameIPF) + len(PpiCNameX64) + len(PpiCNameEBC)) > 0:
-## PpiSection = "\n" + "#"*80 + "\n#\n"
-## PpiSection += "# PPI C Name Section - list of PPI and PPI Notify C Names that this module\n"
-## PpiSection += "# uses or produces.\n"
-## PpiSection += "#\n" + "#"*80 + "\n\n"
-
- PpiSection = "\n"
- if (len(PpiCName) > 0):
- PpiSection += "[Ppis]\n"
- for Guid in PpiCName[:]:
- PpiSection += Guid + "\n"
- PpiSection += "\n"
-
- if (len(PpiCNameIa32) > 0):
- PpiSection += "[Ppis.IA32]\n"
- for Guid in PpiCNameIa32[:]:
- PpiSection += Guid + "\n"
- PpiSection += "\n"
-
- if (len(PpiCNameX64) > 0):
- PpiSection += "[Ppis.X64]\n"
- for Guid in PpiCNameX64[:]:
- PpiSection += Guid + "\n"
- PpiSection += "\n"
-
- if (len(PpiCNameIPF) > 0):
- PpiSection += "[Ppis.IPF]\n"
- for Guid in PpiCNameIPF[:]:
- PpiSection += Guid + "\n"
- PpiSection += "\n"
-
- if (len(PpiCNameEBC) > 0):
- PpiSection += "[Ppis.EBC]\n"
- for Guid in PpiCNameEBC[:]:
- PpiSection += Guid + "\n"
- PpiSection += "\n"
-
- Output.append(PpiSection)
- if (options.debug):
- print PpiSection
-
- # Print the PCD sections
- if ((len(PcdFF)+len(PcdFFIa32)+len(PcdFFX64)+len(PcdFFIpf)+len(PcdFFEbc)) > 0):
-## FeatureFlagSection = "\n" + "#"*80 + "\n#\n"
-## FeatureFlagSection += "# Pcd FEATURE_FLAG - list of PCDs that this module is coded for.\n"
-## FeatureFlagSection += "#\n" + "#"*80 + "\n\n"
-
- FeatureFlagSection = "\n"
- if (len(PcdFF) > 0):
- FeatureFlagSection += "[FeaturePcd.common]\n"
- for Entry in PcdFF[:]:
- FeatureFlagSection += " " + Entry + "\n"
- FeatureFlagSection += "\n"
- if (len(PcdFFIa32) > 0):
- FeatureFlagSection += "[FeaturePcd.IA32]\n"
- for Entry in PcdFFIa32[:]:
- FeatureFlagSection += " " + Entry + "\n"
- FeatureFlagSection += "\n"
- if (len(PcdFFX64) > 0):
- FeatureFlagSection += "[FeaturePcd.X64]\n"
- for Entry in PcdFFX64[:]:
- FeatureFlagSection += " " + Entry + "\n"
- FeatureFlagSection += "\n"
- if (len(PcdFFIpf) > 0):
- FeatureFlagSection += "[PcdsFeatureFlag.IPF]\n"
- for Entry in PcdFFIpf[:]:
- FeatureFlagSection += " " + Entry + "\n"
- FeatureFlagSection += "\n"
- if (len(PcdFFEbc) > 0):
- FeatureFlagSection += "[FeaturePcd.EBC]\n"
- for Entry in PcdFFEbc[:]:
- FeatureFlagSection += " " + Entry + "\n"
- FeatureFlagSection += "\n"
-
- Output.append(FeatureFlagSection)
- if (options.debug):
- print FeatureFlagSection
-
- if ((len(PcdFAB)+len(PcdFABIa32)+len(PcdFABX64)+len(PcdFABIpf)+len(PcdFABEbc)) > 0):
-## FixedAtBuildSection = "\n" + "#"*80 + "\n#\n"
-## FixedAtBuildSection += "# Pcd FIXED_AT_BUILD - list of PCDs that this module is coded for.\n"
-## FixedAtBuildSection += "#\n" + "#"*80 + "\n\n"
-
- FixedAtBuildSection = "\n"
- if (len(PcdFAB) > 0):
- FixedAtBuildSection += "[FixedPcd.common]\n"
- for Entry in PcdFAB[:]:
- FixedAtBuildSection += " " + Entry + "\n"
- FixedAtBuildSection += "\n"
- if (len(PcdFABIa32) > 0):
- FixedAtBuildSection += "[FixedPcd.IA32]\n"
- for Entry in PcdFABIa32[:]:
- FixedAtBuildSection += " " + Entry + "\n"
- FixedAtBuildSection += "\n"
- if (len(PcdFABX64) > 0):
- FixedAtBuildSection += "[FixedPcd.X64]\n"
- for Entry in PcdFABX64[:]:
- FixedAtBuildSection += " " + Entry + "\n"
- FixedAtBuildSection += "\n"
- if (len(PcdFABIpf) > 0):
- FixedAtBuildSection += "[FixedPcd.IPF]\n"
- for Entry in PcdFABIpf[:]:
- FixedAtBuildSection += " " + Entry + "\n"
- FixedAtBuildSection += "\n"
- if (len(PcdFABEbc) > 0):
- FixedAtBuildSection += "[FixedPcd.EBC]\n"
- for Entry in PcdFABEbc[:]:
- FixedAtBuildSection += " " + Entry + "\n"
- FixedAtBuildSection += "\n"
-
- Output.append(FixedAtBuildSection)
- if (options.debug):
- print FixedAtBuildSection
-
- if ((len(PcdPIM)+len(PcdPIMIa32)+len(PcdPIMX64)+len(PcdPIMIpf)+len(PcdPIMEbc)) > 0):
-## PatchableInModuleSection = "\n" + "#"*80 + "\n#\n"
-## PatchableInModuleSection += "# Pcd PATCHABLE_IN_MODULE - list of PCDs that this module is coded for.\n"
-## PatchableInModuleSection += "#\n" + "#"*80 + "\n\n"
-
- PatchableInModuleSection = "\n"
- if (len(PcdPIM) > 0):
- PatchableInModuleSection += "[PatchPcd.common]\n"
- for Entry in PcdPIM[:]:
- PatchableInModuleSection += " " + Entry + "\n"
- PatchableInModuleSection += "\n"
- if (len(PcdPIMIa32) > 0):
- PatchableInModuleSection += "[PatchPcd.IA32]\n"
- for Entry in PcdPIMIa32[:]:
- PatchableInModuleSection += " " + Entry + "\n"
- PatchableInModuleSection += "\n"
- if (len(PcdPIMX64) > 0):
- PatchableInModuleSection += "[PatchPcd.X64]\n"
- for Entry in PcdPIMX64[:]:
- PatchableInModuleSection += " " + Entry + "\n"
- PatchableInModuleSection += "\n"
- if (len(PcdPIMIpf) > 0):
- PatchableInModuleSection += "[PatchPcd.IPF]\n"
- for Entry in PcdPIMIpf[:]:
- PatchableInModuleSection += " " + Entry + "\n"
- PatchableInModuleSection += "\n"
- if (len(PcdPIMEbc) > 0):
- PatchableInModuleSection += "[PatchPcd.EBC]\n"
- for Entry in PcdPIMEbc[:]:
- PatchableInModuleSection += " " + Entry + "\n"
- PatchableInModuleSection += "\n"
-
- Output.append(PatchableInModuleSection)
- if (options.debug):
- print PatchableInModuleSection
-
- if ((len(PcdDYE)+len(PcdDYEIa32)+len(PcdDYEX64)+len(PcdDYEIpf)+len(PcdDYEEbc)) > 0):
-## DynamicExSection = "\n" + "#"*80 + "\n#\n"
-## DynamicExSection += "# Pcd DYNAMIC_EX - list of PCDs that this module is coded for.\n"
-## DynamicExSection += "#\n" + "#"*80 + "\n\n"
-
- DynamicExSection = "\n"
- if (len(PcdDYE) > 0):
- DynamicExSection += "[PcdEx.common]\n"
- for Entry in PcdDYE[:]:
- DynamicExSection += " " + Entry + "\n"
- DynamicExSection += "\n"
- if (len(PcdDYEIa32) > 0):
- DynamicExSection += "[PcdEx.IA32]\n"
- for Entry in PcdDYEIa32[:]:
- DynamicExSection += " " + Entry + "\n"
- DynamicExSection += "\n"
- if (len(PcdDYEX64) > 0):
- DynamicExSection += "[PcdEx.X64]\n"
- for Entry in PcdDYEX64[:]:
- DynamicExSection += " " + Entry + "\n"
- DynamicExSection += "\n"
- if (len(PcdDYEIpf) > 0):
- DynamicExSection += "[PcdEx.IPF]\n"
- for Entry in PcdDYEIpf[:]:
- DynamicExSection += " " + Entry + "\n"
- DynamicExSection += "\n"
- if (len(PcdDYEEbc) > 0):
- DynamicExSection += "[PcdEx.EBC]\n"
- for Entry in PcdDYEEbc[:]:
- DynamicExSection += " " + Entry + "\n"
- DynamicExSection += "\n"
-
- Output.append(DynamicExSection)
- if (options.debug):
- print DynamicExSection
-
- if ((len(PcdDY)+len(PcdDYIa32)+len(PcdDYX64)+len(PcdDYIpf)+len(PcdDYEbc)) > 0):
-## DynamicSection = "\n" + "#"*80 + "\n#\n"
-## DynamicSection += "# Pcd DYNAMIC - list of PCDs that this module is coded for.\n"
-## DynamicSection += "#\n" + "#"*80 + "\n\n"
-
- DynamicSection = "\n"
- if (len(PcdDY) > 0):
- DynamicSection += "[Pcd.common]\n"
- for Entry in PcdDY[:]:
- DynamicSection += " " + Entry + "\n"
- DynamicSection += "\n"
- if (len(PcdDYIa32) > 0):
- DynamicSection += "[Pcd.IA32]\n"
- for Entry in PcdDYIa32[:]:
- DynamicSection += " " + Entry + "\n"
- DynamicSection += "\n"
- if (len(PcdDYX64) > 0):
- DynamicSection += "[Pcd.X64]\n"
- for Entry in PcdDYX64[:]:
- DynamicSection += " " + Entry + "\n"
- DynamicSection += "\n"
- if (len(PcdDYIpf) > 0):
- DynamicSection += "[Pcd.IPF]\n"
- for Entry in PcdDYIpf[:]:
- DynamicSection += " " + Entry + "\n"
- DynamicSection += "\n"
- if (len(PcdDYEbc) > 0):
- DynamicSection += "[Pcd.EBC]\n"
- for Entry in PcdDYEbc[:]:
- DynamicSection += " " + Entry + "\n"
- DynamicSection += "\n"
-
- Output.append(DynamicSection)
- if (options.debug):
- print DynamicSection
-
- if ((len(Depex) + len(DepexIa32) + len(DepexX64) + len(DepexIpf) + len(DepexEbc)) > 0):
- """ We do this if and only if we have Package Dependencies """
-## Dpx = "\n" + "#"*80 + "\n#\n"
-## Dpx += "# Dependency Expression Section - list of Dependency expressions that are required for\n"
-## Dpx += "# this module.\n"
-## Dpx += "#\n" + "#"*80 + "\n\n"
- Dpx = "\n"
- if (len(Depex) > 0):
- Dpx += "[Depex]\n"
- for lc in Depex[:]:
- Dpx += " " + lc + "\n"
- Dpx += "\n"
-
- if (len(DepexIa32) > 0):
- Dpx += "[Depex.IA32]\n"
- for lc in DepexIa32[:]:
- Dpx += " " + lc + "\n"
- Dpx += "\n"
-
- if (len(DepexX64) > 0):
- Dpx += "[Depex.X64]\n"
- for lc in DepexX64[:]:
- Dpx += " " + lc + "\n"
- Dpx += "\n"
-
- if (len(DepexIpf) > 0):
- Dpx += "[Depex.IPF]\n"
- for lc in DepexIpf[:]:
- Dpx += " " + lc + "\n"
- Dpx += "\n"
-
- if (len(DepexEbc) > 0):
- Dpx += "[Depex.EBC]\n"
- for lc in DepexEbc[:]:
- Dpx += " " + lc + "\n"
- Dpx += "\n"
-
- Output.append(Dpx)
- if (options.debug):
- print Dpx
-
- if (len(MBOlines) > 0):
- BuildSection = ""
-## BuildSection = "\n" + "#"*80 + "\n#\n"
-## BuildSection += "# Build Options - list of custom build options for this module.\n"
-## BuildSection += "#\n" + "#"*80 + "\n\n"
- BuildSection += "\n[BuildOptions]\n"
- for mbo in MBOlines:
- tool, targs = mbo.split("=",2)
- BuildSection += " %-40s = %s\n" % (tool.strip(), targs.strip())
-
- Output.append(BuildSection)
- if (options.debug):
- print BuildSection
-
-
- if (len(UEList) > 0):
- UserExtensionSection = ""
- for UE in UEList[:]:
- UserExtensionSection += "[UserExtensions." + UE[0] + '."' + UE[1] + '"]\n'
- if (len(UE[2]) > 0):
- UserExtensionSection += '"' + UE[2] + '"\n'
- else:
- UserExtensionSection += "\n"
-
- Output.append(UserExtensionSection)
- if (options.debug):
- print UserExtensionSection
-
- print "write file", outputFile
- if (options.autowrite):
- fo = open(outputFile, "w")
- for Section in Output[:]:
- fo.writelines(Section)
- if (options.verbose > 1):
- print Section
- fo.close()
- elif (options.outfile):
- fo = open(outputFile, "w")
- for Section in Output[:]:
- fo.writelines(Section)
- fo.close()
- else:
- for Section in Output[:]:
- print Section
-
-
-if __name__ == '__main__':
-
- global options
- global args
- options,args = myOptionParser()
-
- main()
- sys.exit(0)
-