# *_*_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
# *_*_EBC_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h\r
# *_*_EBC_CC_FLAGS = /nologo /FAcs /c /W3 /WX /FI$(DEST_DIR_DEBUG)/AutoGen.h\r
-# *_*_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+# *_*_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER\r
#\r
####################################################################################\r
#\r
*_VS2003_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2003_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2003_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2003_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2003_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_VS2003xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2003xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2003xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2003xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2003xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_VS2005_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2005_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2005_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2005_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2005_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_VS2005xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2005xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2005xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2005xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2005xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_VS2005x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2005x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2005x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2005x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2005x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_VS2005x86xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2005x86xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2005x86xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2005x86xASL_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2005x86xASL_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
\r
*_VS2008_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2008_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2008_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2008_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2008_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_VS2008xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_VS2008xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_VS2008xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_VS2008xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_VS2008xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
\r
*_DDK3790_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_DDK3790_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_DDK3790_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+*_DDK3790_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
\r
*_DDK3790xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_DDK3790xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_DDK3790xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+*_DDK3790xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
\r
*_CYGGCC_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_CYGGCC_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_CYGGCC_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+*_CYGGCC_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
\r
*_CYGGCCxASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_CYGGCCxASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_CYGGCCxASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+*_CYGGCCxASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_ICC_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICC_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICC_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICC_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICC_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_ICCxASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICCxASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICCxASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICCxASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICCxASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
*_ICCx86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICCx86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICCx86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICCx86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICCx86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
*_ICCx86xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICCx86xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICCx86xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICCx86xASL_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICCx86xASL_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
*_ICC11_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICC11_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICC11_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICC11_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICC11_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
####################################################################################\r
#\r
*_ICC11xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICC11xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICC11xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICC11xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICC11xASL_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
*_ICC11x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICC11x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICC11x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICC11x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICC11x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
*_ICC11x86xASL_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_ICC11x86xASL_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_ICC11x86xASL_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_ICC11x86xASL_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_ICC11x86xASL_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
*_MYTOOLS_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
*_MYTOOLS_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
*_MYTOOLS_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
-*_MYTOOLS_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP\r
+*_MYTOOLS_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
\r
\r
####################################################################################\r
//This file is for build version number auto generation\r
//\r
-#define __BUILD_VERSION "Build 2386"\r
+#define __BUILD_VERSION "Build 2396"\r
def _GetBuildOptionIncPathList(self):\r
if self._BuildOptionIncPathList == None:\r
#\r
- # Regular expression for finding Include Directories, the difference between MSFT and INTEL/GCC\r
+ # Regular expression for finding Include Directories, the difference between MSFT and INTEL/GCC/RVCT\r
# is the former use /I , the Latter used -I to specify include directories\r
#\r
if self.PlatformInfo.ToolChainFamily in ('MSFT'):\r
gBuildOptIncludePattern = re.compile(r"(?:.*?)/I[ \t]*([^ ]*)", re.MULTILINE|re.DOTALL)\r
- elif self.PlatformInfo.ToolChainFamily in ('INTEL', 'GCC'):\r
+ elif self.PlatformInfo.ToolChainFamily in ('INTEL', 'GCC', 'RVCT'):\r
gBuildOptIncludePattern = re.compile(r"(?:.*?)-I[ \t]*([^ ]*)", re.MULTILINE|re.DOTALL)\r
+ else:\r
+ #\r
+ # New ToolChainFamily, don't known whether there is option to specify include directories\r
+ #\r
+ self._BuildOptionIncPathList = []\r
+ return self._BuildOptionIncPathList\r
\r
BuildOptionIncPathList = []\r
for Tool in ('CC', 'PP', 'VFRPP', 'ASLPP', 'ASLCC', 'APP', 'ASM'):\r
except KeyError:\r
FlagOption = ''\r
\r
- IncPathList = [NormPath(Path, self.Macros) for Path in gBuildOptIncludePattern.findall(FlagOption)]\r
+ if self.PlatformInfo.ToolChainFamily != 'RVCT':\r
+ IncPathList = [NormPath(Path, self.Macros) for Path in gBuildOptIncludePattern.findall(FlagOption)]\r
+ else:\r
+ #\r
+ # RVCT may specify a list of directory seperated by commas\r
+ #\r
+ IncPathList = []\r
+ for Path in gBuildOptIncludePattern.findall(FlagOption):\r
+ PathList = GetSplitList(Path, TAB_COMMA_SPLIT)\r
+ IncPathList += [NormPath(PathEntry, self.Macros) for PathEntry in PathList]\r
+\r
#\r
# EDK II modules must not reference header files outside of the packages they depend on or \r
# within the module's directory tree. Report error if violation.\r
#ifndef _${File}_${Guid}
#define _${File}_${Guid}
+#ifdef __cplusplus
+extern "C" {
+#endif
+
""")
gAutoGenHEpilogueString = """
+
+#ifdef __cplusplus
+}
+#endif
+
#endif
"""
"No generated token number for %s.%s\n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName),
ExtraData="[%s]" % str(Info))
TokenNumber = PcdTokenNumber[Pcd.TokenCName, Pcd.TokenSpaceGuidCName]
- AutoGenH.Append('\n#define %s %d\n' % (PcdTokenName, TokenNumber))
+ AutoGenH.Append('\n#define %s %dU\n' % (PcdTokenName, TokenNumber))
EdkLogger.debug(EdkLogger.DEBUG_3, "Creating code for " + Pcd.TokenCName + "." + Pcd.TokenSpaceGuidCName)
if Pcd.Type not in gItemTypeStringDatabase:
if Pcd.DatumType == 'BOOLEAN':
BoolValue = Value.upper()
if BoolValue == 'TRUE':
- Value = 1
+ Value = '1U'
elif BoolValue == 'FALSE':
- Value = 0
+ Value = '0U'
if Pcd.DatumType in ['UINT64', 'UINT32', 'UINT16', 'UINT8']:
try:
EdkLogger.error("build", AUTOGEN_ERROR,
"Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, Pcd.TokenCName),
ExtraData="[%s]" % str(Info))
+ if not Value.endswith('U'):
+ Value += 'U'
elif Pcd.DatumType == 'UINT16':
if ValueNumber < 0:
EdkLogger.error("build", AUTOGEN_ERROR,
EdkLogger.error("build", AUTOGEN_ERROR,
"Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, Pcd.TokenCName),
ExtraData="[%s]" % str(Info))
+ if not Value.endswith('U'):
+ Value += 'U'
elif Pcd.DatumType == 'UINT8':
if ValueNumber < 0:
EdkLogger.error("build", AUTOGEN_ERROR,
EdkLogger.error("build", AUTOGEN_ERROR,
"Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, Pcd.TokenCName),
ExtraData="[%s]" % str(Info))
+ if not Value.endswith('U'):
+ Value += 'U'
if Pcd.DatumType == 'VOID*':
if Pcd.MaxDatumSize == None or Pcd.MaxDatumSize == '':
EdkLogger.error("build", AUTOGEN_ERROR,
Type = '(VOID *)'
Array = '[]'
- AutoGenH.Append('#define _PCD_TOKEN_%s %d\n' % (TokenCName, TokenNumber))
+ AutoGenH.Append('#define _PCD_TOKEN_%s %dU\n' % (TokenCName, TokenNumber))
PcdItemType = Pcd.Type
#if PcdItemType in gDynamicPcd:
#
if Pcd.DatumType == "UINT64":
ValueList.append(Sku.DefaultValue + "ULL")
+ elif Pcd.DatumType in ("UINT32", "UINT16", "UINT8"):
+ ValueList.append(Sku.DefaultValue + "U")
else:
ValueList.append(Sku.DefaultValue)
if PlatformInfo.FdfFile != None and PlatformInfo.FdfFile != "":
FdfFileList = [PlatformInfo.FdfFile]
# macros passed to GenFds
- # MacroList.append('"%s=%s"' % ("WORKSPACE", GlobalData.gWorkspace))
- MacroList.append('"%s=%s"' % ("EFI_SOURCE", GlobalData.gEfiSource))
- MacroList.append('"%s=%s"' % ("EDK_SOURCE", GlobalData.gEdkSource))
+ MacroList.append('"%s=%s"' % ("EFI_SOURCE", GlobalData.gEfiSource.replace('\\', '\\\\')))
+ MacroList.append('"%s=%s"' % ("EDK_SOURCE", GlobalData.gEdkSource.replace('\\', '\\\\')))
for MacroName in GlobalData.gGlobalDefines:
if GlobalData.gGlobalDefines[MacroName] != "":
- MacroList.append('"%s=%s"' % (MacroName, GlobalData.gGlobalDefines[MacroName]))
+ MacroList.append('"%s=%s"' % (MacroName, GlobalData.gGlobalDefines[MacroName].replace('\\', '\\\\')))
else:
MacroList.append('"%s"' % MacroName)
for MacroName in GlobalData.gCommandLineDefines:
if GlobalData.gCommandLineDefines[MacroName] != "":
- MacroList.append('"%s=%s"' % (MacroName, GlobalData.gCommandLineDefines[MacroName]))
+ MacroList.append('"%s=%s"' % (MacroName, GlobalData.gCommandLineDefines[MacroName].replace('\\', '\\\\')))
else:
MacroList.append('"%s"' % MacroName)
else:
#This file is for build version number auto generation\r
#\r
-gBUILD_VERSION = "Build 2386"\r
+gBUILD_VERSION = "Build 2396"\r
# @var KeyList: To store value for KeyList, a list for all Keys used in Dec\r
#\r
class Dec(DecObject):\r
- def __init__(self, Filename = None, IsToDatabase = False, IsToPackage = False, WorkspaceDir = None, Database = None, SupArchList = DataType.ARCH_LIST):\r
+ def __init__(self, Filename=None, IsToDatabase=False, IsToPackage=False, WorkspaceDir=None, Database=None, SupArchList=DataType.ARCH_LIST):\r
self.Identification = Identification()\r
self.Package = PackageClass()\r
self.UserExtensions = ''\r
self.WorkspaceDir = WorkspaceDir\r
self.SupArchList = SupArchList\r
self.IsToDatabase = IsToDatabase\r
- \r
+\r
self.Cur = Database.Cur\r
self.TblFile = Database.TblFile\r
self.TblDec = Database.TblDec\r
# Upper all KEYs to ignore case sensitive when parsing\r
#\r
self.KeyList = map(lambda c: c.upper(), self.KeyList)\r
- \r
+\r
#\r
# Init RecordSet\r
#\r
- self.RecordSet = {} \r
+ self.RecordSet = {}\r
for Key in self.KeyList:\r
self.RecordSet[Section[Key]] = []\r
- \r
+\r
#\r
# Load Dec file if filename is not None\r
#\r
if Filename != None:\r
self.LoadDecFile(Filename)\r
- \r
+\r
#\r
# Transfer to Package Object if IsToPackage is True\r
#\r
if IsToPackage:\r
self.DecToPackage()\r
- \r
+\r
## Load Dec file\r
#\r
# Load the file if it exists\r
self.Identification.FileFullPath = Filename\r
(self.Identification.FileRelativePath, self.Identification.FileName) = os.path.split(Filename)\r
self.FileID = self.TblFile.InsertFile(Filename, MODEL_FILE_DEC)\r
- \r
+\r
#\r
# Init DecTable\r
#\r
#self.TblDec.Table = "Dec%s" % self.FileID\r
#self.TblDec.Create()\r
- \r
+\r
#\r
# Init common datas\r
#\r
IfDefList, SectionItemList, CurrentSection, ArchList, ThirdList, IncludeFiles = \\r
[], [], TAB_UNKNOWN, [], [], []\r
LineNo = 0\r
- \r
+\r
#\r
# Parse file content\r
#\r
# Remove comment block\r
#\r
if Line.find(TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
IsFindBlockComment = True\r
if Line.find(TAB_COMMENT_EDK_END) > -1:\r
- Line = ReservedLine + GetSplitValueList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
Line = CleanString(Line)\r
if Line == '':\r
continue\r
- \r
+\r
#\r
# Find a new section tab\r
# First insert previous section items\r
SectionItemList = []\r
ArchList = []\r
ThirdList = []\r
- \r
+\r
CurrentSection = ''\r
LineList = GetSplitValueList(Line[len(TAB_SECTION_START):len(Line) - len(TAB_SECTION_END)], TAB_COMMA_SPLIT)\r
for Item in LineList:\r
CurrentSection = ItemList[0]\r
else:\r
if CurrentSection != ItemList[0]:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
if CurrentSection.upper() not in self.KeyList:\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
ItemList.append('')\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
else:\r
if ItemList[1] != '' and ItemList[1].upper() not in ARCH_LIST_FULL:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
ArchList.append(ItemList[1].upper())\r
ThirdList.append(ItemList[2])\r
\r
continue\r
- \r
+\r
#\r
# Not in any defined section\r
#\r
if CurrentSection == TAB_UNKNOWN:\r
ErrorMsg = "%s is not in any defined section" % Line\r
- EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
\r
#\r
# Add a section item\r
SectionItemList.append([Line, LineNo])\r
# End of parse\r
#End of For\r
- \r
+\r
#\r
# Insert items data of last section\r
#\r
Model = Section[CurrentSection.upper()]\r
InsertSectionItemsIntoDatabase(self.TblDec, self.FileID, Filename, Model, CurrentSection, SectionItemList, ArchList, ThirdList, IfDefList, self.RecordSet)\r
- \r
+\r
#\r
# Replace all DEFINE macros with its actual values\r
#\r
# Init global information for the file\r
#\r
ContainerFile = self.Identification.FileFullPath\r
- \r
+\r
#\r
# Generate Package Header\r
#\r
self.GenPackageHeader(ContainerFile)\r
- \r
+\r
#\r
# Generate Includes\r
#\r
# Generate Ppis\r
#\r
self.GenGuidProtocolPpis(DataType.TAB_PPIS, ContainerFile)\r
- \r
+\r
#\r
# Generate LibraryClasses\r
#\r
self.GenLibraryClasses(ContainerFile)\r
- \r
+\r
#\r
# Generate Pcds\r
#\r
self.GenPcds(ContainerFile)\r
- \r
+\r
## Get Package Header\r
#\r
# Gen Package Header of Dec as <Key> = <Value>\r
SqlCommand = """update %s set Value1 = '%s', Value2 = '%s'\r
where ID = %s""" % (self.TblDec.Table, ConvertToSqlString2(Value1), ConvertToSqlString2(Value2), ID)\r
self.TblDec.Exec(SqlCommand)\r
- \r
+\r
#\r
# Get detailed information\r
#\r
for Arch in self.SupArchList:\r
PackageHeader = PackageHeaderClass()\r
- \r
+\r
PackageHeader.Name = QueryDefinesItem(self.TblDec, TAB_DEC_DEFINES_PACKAGE_NAME, Arch, self.FileID)[0]\r
PackageHeader.Guid = QueryDefinesItem(self.TblDec, TAB_DEC_DEFINES_PACKAGE_GUID, Arch, self.FileID)[0]\r
PackageHeader.Version = QueryDefinesItem(self.TblDec, TAB_DEC_DEFINES_PACKAGE_VERSION, Arch, self.FileID)[0]\r
PackageHeader.FileName = self.Identification.FileName\r
PackageHeader.FullPath = self.Identification.FileFullPath\r
PackageHeader.DecSpecification = QueryDefinesItem(self.TblDec, TAB_DEC_DEFINES_DEC_SPECIFICATION, Arch, self.FileID)[0]\r
- \r
+\r
self.Package.Header[Arch] = PackageHeader\r
- \r
+\r
## GenIncludes\r
#\r
# Gen Includes of Dec\r
# Get all Includes\r
#\r
RecordSet = self.RecordSet[MODEL_EFI_INCLUDE]\r
- \r
+\r
#\r
# Go through each arch\r
#\r
Include.FilePath = NormPath(Key)\r
Include.SupArchList = Includes[Key]\r
self.Package.Includes.append(Include)\r
- \r
+\r
## GenPpis\r
#\r
# Gen Ppis of Dec\r
# Get all Items\r
#\r
RecordSet = self.RecordSet[Section[Type.upper()]]\r
- \r
+\r
#\r
# Go through each arch\r
#\r
SqlCommand = """update %s set Value1 = '%s', Value2 = '%s'\r
where ID = %s""" % (self.TblDec.Table, ConvertToSqlString2(Name), ConvertToSqlString2(Value), Record[3])\r
self.TblDec.Exec(SqlCommand)\r
- \r
+\r
ListMember = None\r
if Type == TAB_GUIDS:\r
ListMember = self.Package.GuidDeclarations\r
ListMember = self.Package.ProtocolDeclarations\r
elif Type == TAB_PPIS:\r
ListMember = self.Package.PpiDeclarations\r
- \r
+\r
for Key in Lists.keys():\r
ListClass = GuidProtocolPpiCommonClass()\r
ListClass.CName = Key[0]\r
ListClass.Guid = Key[1]\r
ListClass.SupArchList = Lists[Key]\r
ListMember.append(ListClass)\r
- \r
- \r
+\r
+\r
## GenLibraryClasses\r
#\r
# Gen LibraryClasses of Dec\r
# Get all Guids\r
#\r
RecordSet = self.RecordSet[MODEL_EFI_LIBRARY_CLASS]\r
- \r
+\r
#\r
# Go through each arch\r
#\r
where ID = %s""" % (self.TblDec.Table, ConvertToSqlString2(List[0]), ConvertToSqlString2(List[1]), SUP_MODULE_LIST_STRING, Record[3])\r
self.TblDec.Exec(SqlCommand)\r
\r
- \r
+\r
for Key in LibraryClasses.keys():\r
LibraryClass = LibraryClassClass()\r
LibraryClass.LibraryClass = Key[0]\r
LibraryClass.SupModuleList = SUP_MODULE_LIST\r
LibraryClass.SupArchList = LibraryClasses[Key]\r
self.Package.LibraryClassDeclarations.append(LibraryClass)\r
- \r
+\r
## GenPcds\r
#\r
# Gen Pcds of Dec\r
RecordSet3 = self.RecordSet[MODEL_PCD_FEATURE_FLAG]\r
RecordSet4 = self.RecordSet[MODEL_PCD_DYNAMIC_EX]\r
RecordSet5 = self.RecordSet[MODEL_PCD_DYNAMIC]\r
- \r
+\r
#\r
# Go through each arch\r
#\r
Pcd.ItemType = Key[5]\r
Pcd.SupArchList = Pcds[Key]\r
self.Package.PcdDeclarations.append(Pcd)\r
- \r
+\r
## Show detailed information of Package\r
#\r
# Print all members and their values of Package class\r
if __name__ == '__main__':\r
EdkLogger.Initialize()\r
EdkLogger.SetLevel(EdkLogger.DEBUG_0)\r
- \r
+\r
W = os.getenv('WORKSPACE')\r
F = os.path.join(W, 'Nt32Pkg/Nt32Pkg.dec')\r
\r
Db = Database.Database('Dec.db')\r
Db.InitDatabase()\r
- \r
+\r
P = Dec(os.path.normpath(F), True, True, W, Db)\r
P.ShowPackage()\r
- \r
+\r
Db.Close()\r
# @var KeyList: To store value for KeyList, a list for all Keys used in Dec\r
#\r
class Dec(DecObject):\r
- def __init__(self, Filename = None, IsToPackage = False, WorkspaceDir = None, AllGuidVersionDict = None, SupArchList = DataType.ARCH_LIST):\r
+ def __init__(self, Filename=None, IsToPackage=False, WorkspaceDir=None, AllGuidVersionDict=None, SupArchList=DataType.ARCH_LIST):\r
self.Identification = IdentificationClass()\r
self.Package = PackageClass()\r
self.UserExtensions = ''\r
]\r
# Upper all KEYs to ignore case sensitive when parsing\r
self.KeyList = map(lambda c: c.upper(), self.KeyList)\r
- \r
+\r
# Init RecordSet\r
- self.RecordSet = {} \r
+ self.RecordSet = {}\r
for Key in self.KeyList:\r
self.RecordSet[Section[Key]] = []\r
- \r
+\r
# Init Comment\r
self.SectionHeaderCommentDict = {}\r
- \r
+\r
# Load Dec file if filename is not None\r
if Filename != None:\r
self.LoadDecFile(Filename)\r
- \r
+\r
# Transfer to Package Object if IsToPackage is True\r
if IsToPackage:\r
self.DecToPackage()\r
- \r
+\r
## Load Dec file\r
#\r
# Load the file if it exists\r
self.Identification.FullPath = Filename\r
(self.Identification.RelaPath, self.Identification.FileName) = os.path.split(Filename)\r
if self.Identification.FullPath.find(self.WorkspaceDir) > -1:\r
- self.Identification.PackagePath = os.path.dirname(self.Identification.FullPath[len(self.WorkspaceDir) + 1:]) \r
- \r
+ self.Identification.PackagePath = os.path.dirname(self.Identification.FullPath[len(self.WorkspaceDir) + 1:])\r
+\r
# Init common datas\r
IfDefList, SectionItemList, CurrentSection, ArchList, ThirdList, IncludeFiles = \\r
[], [], TAB_UNKNOWN, [], [], []\r
LineNo = 0\r
- \r
+\r
# Parse file content\r
IsFindBlockComment = False\r
ReservedLine = ''\r
LineNo = LineNo + 1\r
# Remove comment block\r
if Line.find(TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
if ReservedLine.strip().startswith(TAB_COMMENT_SPLIT):\r
Comment = Comment + Line.strip() + '\n'\r
ReservedLine = ''\r
continue\r
if Line.find(TAB_COMMENT_EDK_END) > -1:\r
Comment = Comment + Line[:Line.find(TAB_COMMENT_EDK_END) + len(TAB_COMMENT_EDK_END)] + '\n'\r
- Line = ReservedLine + GetSplitValueList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
Line = CleanString(Line)\r
if Line == '':\r
continue\r
- \r
+\r
## Find a new section tab\r
# First insert previous section items\r
# And then parse the content of the new section\r
SectionItemList = []\r
ArchList = []\r
ThirdList = []\r
- \r
+\r
CurrentSection = ''\r
LineList = GetSplitValueList(Line[len(TAB_SECTION_START):len(Line) - len(TAB_SECTION_END)], TAB_COMMA_SPLIT)\r
for Item in LineList:\r
CurrentSection = ItemList[0]\r
else:\r
if CurrentSection != ItemList[0]:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
if CurrentSection.upper() not in self.KeyList:\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
ItemList.append('')\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
else:\r
if ItemList[1] != '' and ItemList[1].upper() not in ARCH_LIST_FULL:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
ArchList.append(ItemList[1].upper())\r
ThirdList.append(ItemList[2])\r
- \r
+\r
if Comment:\r
if Comment.endswith('\n'):\r
Comment = Comment[:len(Comment) - len('\n')]\r
self.SectionHeaderCommentDict[Section[CurrentSection.upper()]] = Comment\r
Comment = ''\r
continue\r
- \r
+\r
# Not in any defined section\r
if CurrentSection == TAB_UNKNOWN:\r
ErrorMsg = "%s is not in any defined section" % Line\r
- EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
\r
# Add a section item\r
SectionItemList.append([Line, LineNo, Comment])\r
Comment = ''\r
# End of parse\r
#End of For\r
- \r
+\r
#\r
# Insert items data of last section\r
#\r
SectionHeaderCommentDict = {}\r
if Package == None:\r
return Dec\r
- \r
+\r
PackageHeader = Package.PackageHeader\r
TmpList = []\r
if PackageHeader.Name:\r
if Package.UserExtensions != None:\r
for Item in Package.UserExtensions.Defines:\r
TmpList.append(Item)\r
- DecList['Defines'] =TmpList\r
+ DecList['Defines'] = TmpList\r
if PackageHeader.Description != '':\r
SectionHeaderCommentDict['Defines'] = PackageHeader.Description\r
- \r
+\r
for Item in Package.Includes:\r
Key = 'Includes.' + Item.SupArchList\r
Value = Item.FilePath\r
GenMetaDatSectionItem(Key, Value, DecList)\r
- \r
+\r
for Item in Package.GuidDeclarations:\r
Key = 'Guids.' + Item.SupArchList\r
Value = Item.CName + '=' + Item.Guid\r
GenMetaDatSectionItem(Key, Value, DecList)\r
- \r
+\r
for Item in Package.ProtocolDeclarations:\r
Key = 'Protocols.' + Item.SupArchList\r
Value = Item.CName + '=' + Item.Guid\r
GenMetaDatSectionItem(Key, Value, DecList)\r
- \r
+\r
for Item in Package.PpiDeclarations:\r
Key = 'Ppis.' + Item.SupArchList\r
Value = Item.CName + '=' + Item.Guid\r
GenMetaDatSectionItem(Key, Value, DecList)\r
- \r
+\r
for Item in Package.LibraryClassDeclarations:\r
Key = 'LibraryClasses.' + Item.SupArchList\r
Value = Item.LibraryClass + '|' + Item.RecommendedInstance\r
else:\r
Dec = Dec + ' ' + Value + '\n'\r
Dec = Dec + '\n'\r
- \r
+\r
return Dec\r
\r
## Transfer to Package Object\r
def DecToPackage(self):\r
# Init global information for the file\r
ContainerFile = self.Identification.FullPath\r
- \r
+\r
# Generate Package Header\r
self.GenPackageHeader(ContainerFile)\r
- \r
+\r
# Generate Includes\r
# Only for Edk\r
self.GenIncludes(ContainerFile)\r
\r
# Generate Ppis\r
self.GenGuidProtocolPpis(DataType.TAB_PPIS, ContainerFile)\r
- \r
+\r
# Generate LibraryClasses\r
self.GenLibraryClasses(ContainerFile)\r
- \r
+\r
# Generate Pcds\r
self.GenPcds(ContainerFile)\r
- \r
+\r
# Init MiscFiles\r
self.GenMiscFiles(ContainerFile)\r
- \r
+\r
## GenMiscFiles\r
#\r
def GenMiscFiles(self, ContainerFile):\r
File.Filename = Item\r
MiscFiles.Files.append(File)\r
self.Package.MiscFiles = MiscFiles\r
- \r
+\r
## Get Package Header\r
#\r
# Gen Package Header of Dec as <Key> = <Value>\r
PackageHeader.DecSpecification = Value\r
else:\r
OtherDefines.append(Record[0])\r
- \r
+\r
PackageHeader.FileName = self.Identification.FileName\r
PackageHeader.FullPath = self.Identification.FullPath\r
PackageHeader.RelaPath = self.Identification.RelaPath\r
PackageHeader.PackagePath = self.Identification.PackagePath\r
PackageHeader.ModulePath = self.Identification.ModulePath\r
PackageHeader.CombinePath = os.path.normpath(os.path.join(PackageHeader.PackagePath, PackageHeader.ModulePath, PackageHeader.FileName))\r
- \r
+\r
if MODEL_META_DATA_HEADER in self.SectionHeaderCommentDict:\r
PackageHeader.Description = self.SectionHeaderCommentDict[MODEL_META_DATA_HEADER]\r
- \r
+\r
self.Package.PackageHeader = PackageHeader\r
UE = UserExtensionsClass()\r
UE.Defines = OtherDefines\r
self.Package.UserExtensions = UE\r
- \r
- \r
+\r
+\r
## GenIncludes\r
#\r
# Gen Includes of Dec\r
Includes = {}\r
# Get all Includes\r
RecordSet = self.RecordSet[MODEL_EFI_INCLUDE]\r
- \r
+\r
# Go through each arch\r
for Record in RecordSet:\r
Arch = Record[1]\r
Include.FilePath = NormPath(Key)\r
Include.SupArchList = Arch\r
self.Package.Includes.append(Include)\r
- \r
+\r
## GenPpis\r
#\r
# Gen Ppis of Dec\r
Lists = {}\r
# Get all Items\r
RecordSet = self.RecordSet[Section[Type.upper()]]\r
- \r
+\r
# Go through each arch\r
for Record in RecordSet:\r
Arch = Record[1]\r
(Name, Value) = GetGuidsProtocolsPpisOfDec(Record[0], Type, ContainerFile, Record[2])\r
- \r
+\r
ListMember = None\r
if Type == TAB_GUIDS:\r
ListMember = self.Package.GuidDeclarations\r
ListMember = self.Package.ProtocolDeclarations\r
elif Type == TAB_PPIS:\r
ListMember = self.Package.PpiDeclarations\r
- \r
+\r
ListClass = GuidProtocolPpiCommonClass()\r
ListClass.CName = Name\r
ListClass.Guid = Value\r
ListClass.SupArchList = Arch\r
ListMember.append(ListClass)\r
- \r
+\r
## GenLibraryClasses\r
#\r
# Gen LibraryClasses of Dec\r
LibraryClasses = {}\r
# Get all Guids\r
RecordSet = self.RecordSet[MODEL_EFI_LIBRARY_CLASS]\r
- \r
+\r
# Go through each arch\r
for Record in RecordSet:\r
Arch = Record[1]\r
LibraryClass.RecommendedInstance = NormPath(List[1])\r
LibraryClass.SupArchList = Arch\r
self.Package.LibraryClassDeclarations.append(LibraryClass)\r
- \r
+\r
def AddPcd(self, CName, Token, TokenSpaceGuidCName, DatumType, DefaultValue, ItemType, Arch):\r
Pcd = CommonClass.PcdClass()\r
Pcd.CName = CName\r
Pcd.ItemType = ItemType\r
Pcd.SupArchList = Arch\r
self.Package.PcdDeclarations.append(Pcd)\r
- \r
+\r
## GenPcds\r
#\r
# Gen Pcds of Dec\r
RecordSet3 = self.RecordSet[MODEL_PCD_FEATURE_FLAG]\r
RecordSet4 = self.RecordSet[MODEL_PCD_DYNAMIC_EX]\r
RecordSet5 = self.RecordSet[MODEL_PCD_DYNAMIC]\r
- \r
+\r
# Go through each pcd\r
for Record in RecordSet1:\r
Arch = Record[1]\r
Arch = Record[1]\r
(TokenGuidCName, TokenName, DefaultValue, DatumType, Token, ItemType) = GetPcdOfDec(Record[0], TAB_PCDS_DYNAMIC, ContainerFile, Record[2])\r
self.AddPcd(TokenName, Token, TokenGuidCName, DatumType, DefaultValue, ItemType, Arch)\r
- \r
+\r
## Show detailed information of Package\r
#\r
# Print all members and their values of Package class\r
print 'PackagePath =', M.PackageHeader.PackagePath\r
print 'ModulePath =', M.PackageHeader.ModulePath\r
print 'CombinePath =', M.PackageHeader.CombinePath\r
- \r
+\r
print 'BaseName =', M.PackageHeader.Name\r
print 'Guid =', M.PackageHeader.Guid\r
print 'Version =', M.PackageHeader.Version\r
if __name__ == '__main__':\r
EdkLogger.Initialize()\r
EdkLogger.SetLevel(EdkLogger.QUIET)\r
- \r
+\r
W = os.getenv('WORKSPACE')\r
F = os.path.join(W, 'MdeModulePkg/MdeModulePkg.dec')\r
\r
class Dsc(DscObject):\r
_NullClassIndex = 0\r
\r
- def __init__(self, Filename = None, IsToDatabase = False, IsToPlatform = False, WorkspaceDir = None, Database = None):\r
+ def __init__(self, Filename=None, IsToDatabase=False, IsToPlatform=False, WorkspaceDir=None, Database=None):\r
self.Identification = Identification()\r
self.Platform = PlatformClass()\r
self.UserExtensions = ''\r
# @param Type: The type of Pcd\r
# @param ContainerFile: The file which describes the pcd, used for error report\r
#\r
- def GenPcds(self, Type = '', ContainerFile = ''):\r
+ def GenPcds(self, Type='', ContainerFile=''):\r
Pcds = {}\r
if Type == DataType.TAB_PCDS_PATCHABLE_IN_MODULE:\r
Model = MODEL_PCD_PATCHABLE_IN_MODULE\r
# @param Type: The type of Pcd\r
# @param ContainerFile: The file which describes the pcd, used for error report\r
#\r
- def GenFeatureFlagPcds(self, Type = '', ContainerFile = ''):\r
+ def GenFeatureFlagPcds(self, Type='', ContainerFile=''):\r
Pcds = {}\r
if Type == DataType.TAB_PCDS_FEATURE_FLAG:\r
Model = MODEL_PCD_FEATURE_FLAG\r
# @param Type: The type of Pcd\r
# @param ContainerFile: The file which describes the pcd, used for error report\r
#\r
- def GenDynamicDefaultPcds(self, Type = '', ContainerFile = ''):\r
+ def GenDynamicDefaultPcds(self, Type='', ContainerFile=''):\r
Pcds = {}\r
SkuInfoList = {}\r
if Type == DataType.TAB_PCDS_DYNAMIC_DEFAULT:\r
if CleanString(NewItem) == '':\r
continue\r
(K1, K2, K3, K4, K5, K6) = GetDynamicDefaultPcd(NewItem, Type, Filename, -1)\r
- MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, IncludeFile[4]), Arch)\r
+ MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, IncludeFile[4]), Arch)\r
self.PcdToken[Record[3]] = (K2, K1)\r
\r
for Record in RecordSet:\r
if Record[1] == Arch or Record[1] == TAB_ARCH_COMMON.upper():\r
(K1, K2, K3, K4, K5, K6) = GetDynamicDefaultPcd(Record[0], Type, ContainerFile, Record[2])\r
- MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, Record[4]), Arch)\r
+ MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, Record[4]), Arch)\r
self.PcdToken[Record[3]] = (K2, K1)\r
\r
for Key in Pcds:\r
(Status, SkuInfoList) = self.GenSkuInfoList(Key[6], self.Platform.SkuInfos.SkuInfoList, '', '', '', '', '', Key[2])\r
if Status == False:\r
ErrorMsg = "The SKUID '%s' used in section '%s' is not defined in section [SkuIds]" % (SkuInfoList, Type)\r
- EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, ContainerFile, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, ContainerFile, RaiseError=EdkLogger.IsRaiseError)\r
Pcd = PcdClass(Key[0], '', Key[1], Key[3], Key[4], Key[2], Key[5], [], SkuInfoList, [])\r
Pcd.SupArchList = Pcds[Key]\r
self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
# @param Type: The type of Pcd\r
# @param ContainerFile: The file which describes the pcd, used for error report\r
#\r
- def GenDynamicHiiPcds(self, Type = '', ContainerFile = ''):\r
+ def GenDynamicHiiPcds(self, Type='', ContainerFile=''):\r
Pcds = {}\r
SkuInfoList = {}\r
if Type == DataType.TAB_PCDS_DYNAMIC_HII:\r
if CleanString(NewItem) == '':\r
continue\r
(K1, K2, K3, K4, K5, K6, K7, K8) = GetDynamicHiiPcd(NewItem, Type, Filename, -1)\r
- MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, K7, K8, IncludeFile[4]), Arch)\r
+ MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, K7, K8, IncludeFile[4]), Arch)\r
self.PcdToken[Record[3]] = (K2, K1)\r
\r
for Record in RecordSet:\r
if Record[1] == Arch or Record[1] == TAB_ARCH_COMMON.upper():\r
(K1, K2, K3, K4, K5, K6, K7, K8) = GetDynamicHiiPcd(Record[0], Type, ContainerFile, Record[2])\r
- MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, K7, K8, Record[4]), Arch)\r
+ MergeArches(Pcds, (K1, K2, K3, K4, K5, K6, K7, K8, Record[4]), Arch)\r
self.PcdToken[Record[3]] = (K2, K1)\r
\r
for Key in Pcds:\r
(Status, SkuInfoList) = self.GenSkuInfoList(Key[8], self.Platform.SkuInfos.SkuInfoList, Key[2], Key[3], Key[4], Key[5], '', '')\r
if Status == False:\r
ErrorMsg = "The SKUID '%s' used in section '%s' is not defined in section [SkuIds]" % (SkuInfoList, Type)\r
- EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, ContainerFile, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, ContainerFile, RaiseError=EdkLogger.IsRaiseError)\r
Pcd = PcdClass(Key[0], '', Key[1], '', Key[6], Key[5], Key[7], [], SkuInfoList, [])\r
Pcd.SupArchList = Pcds[Key]\r
self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
# @param Type: The type of Pcd\r
# @param ContainerFile: The file which describes the pcd, used for error report\r
#\r
- def GenDynamicVpdPcds(self, Type = '', ContainerFile = ''):\r
+ def GenDynamicVpdPcds(self, Type='', ContainerFile=''):\r
Pcds = {}\r
SkuInfoList = {}\r
if Type == DataType.TAB_PCDS_DYNAMIC_VPD:\r
if CleanString(NewItem) == '':\r
continue\r
(K1, K2, K3, K4, K5) = GetDynamicVpdPcd(NewItem, Type, Filename, -1)\r
- MergeArches(Pcds, (K1, K2, K3, K4, K5, IncludeFile[4]), Arch)\r
+ MergeArches(Pcds, (K1, K2, K3, K4, K5, IncludeFile[4]), Arch)\r
self.PcdToken[Record[3]] = (K2, K1)\r
\r
for Record in RecordSet:\r
if Record[1] == Arch or Record[1] == TAB_ARCH_COMMON.upper():\r
(K1, K2, K3, K4, K5) = GetDynamicVpdPcd(Record[0], Type, ContainerFile, Record[2])\r
- MergeArches(Pcds, (K1, K2, K3, K4, K5, Record[4]), Arch)\r
+ MergeArches(Pcds, (K1, K2, K3, K4, K5, Record[4]), Arch)\r
self.PcdToken[Record[3]] = (K2, K1)\r
\r
for Key in Pcds:\r
(Status, SkuInfoList) = self.GenSkuInfoList(Key[5], self.Platform.SkuInfos.SkuInfoList, '', '', '', '', Key[2], '')\r
if Status == False:\r
ErrorMsg = "The SKUID '%s' used in section '%s' is not defined in section [SkuIds]" % (SkuInfoList, Type)\r
- EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, ContainerFile, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, ContainerFile, RaiseError=EdkLogger.IsRaiseError)\r
Pcd = PcdClass(Key[0], '', Key[1], '', Key[3], '', Key[4], [], SkuInfoList, [])\r
Pcd.SupArchList = Pcds[Key]\r
self.Platform.DynamicPcdBuildDefinitions.append(Pcd)\r
\r
SubLibSet = QueryDscItem(self.TblDsc, MODEL_EFI_LIBRARY_CLASS, Record[3], self.FileID)\r
for SubLib in SubLibSet:\r
- Lib.append(TAB_VALUE_SPLIT.join([SubLib[0],SubLib[4]]))\r
+ Lib.append(TAB_VALUE_SPLIT.join([SubLib[0], SubLib[4]]))\r
\r
SubBoSet = QueryDscItem(self.TblDsc, MODEL_META_DATA_BUILD_OPTION, Record[3], self.FileID)\r
for SubBo in SubBoSet:\r
#\r
# @retval PlatformModuleClass() A instance for PlatformModuleClass\r
#\r
- def GenComponent(self, Item, ContainerFile, LineNo = -1):\r
+ def GenComponent(self, Item, ContainerFile, LineNo= -1):\r
(InfFilename, ExecFilename) = GetExec(Item[0])\r
LibraryClasses = Item[1]\r
BuildOptions = Item[2]\r
# @retval (False, SkuName) Not found in section SkuId Dsc file\r
# @retval (True, SkuInfoList) Found in section SkuId of Dsc file\r
#\r
- def GenSkuInfoList(self, SkuNameList, SkuInfo, VariableName = '', VariableGuid = '', VariableOffset = '', HiiDefaultValue = '', VpdOffset = '', DefaultValue = ''):\r
+ def GenSkuInfoList(self, SkuNameList, SkuInfo, VariableName='', VariableGuid='', VariableOffset='', HiiDefaultValue='', VpdOffset='', DefaultValue=''):\r
SkuNameList = GetSplitValueList(SkuNameList)\r
if SkuNameList == None or SkuNameList == [] or SkuNameList == ['']:\r
SkuNameList = ['DEFAULT']\r
(Value1, Value2, Value3, Model, StartColumn, EndColumn, Enabled) = ('', '', '', -1, -1, -1, 0)\r
if IfDefList == []:\r
ErrorMsg = 'Not suited conditional statement in file %s' % Filename\r
- EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, Filename, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("DSC File Parser", PARSER_ERROR, ErrorMsg, Filename, RaiseError=EdkLogger.IsRaiseError)\r
else:\r
#\r
# Get New Dsc item ID\r
# Remove comment block\r
#\r
if Line.find(TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
IsFindBlockComment = True\r
if Line.find(TAB_COMMENT_EDK_END) > -1:\r
- Line = ReservedLine + GetSplitValueList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
CurrentSection = ItemList[0]\r
else:\r
if CurrentSection != ItemList[0]:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
if CurrentSection.upper() not in self.KeyList:\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
CurrentSection = TAB_UNKNOWN\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
else:\r
if ItemList[1] != '' and ItemList[1].upper() not in ARCH_LIST_FULL:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
ArchList.append(ItemList[1].upper())\r
ThirdList.append(ItemList[2])\r
\r
#\r
if CurrentSection == TAB_UNKNOWN:\r
ErrorMsg = "%s is not in any defined section" % Line\r
- EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
\r
#\r
# Add a section item\r
MODEL_META_DATA_DEFINE)\r
RecordSet = self.TblDsc.Exec(SqlCommand)\r
for Record in RecordSet:\r
- SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" %(self.TblDsc.Table, Record[0], Record[1])\r
+ SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" % (self.TblDsc.Table, Record[0], Record[1])\r
self.TblDsc.Exec(SqlCommand)\r
\r
#\r
MODEL_META_DATA_DEFINE)\r
RecordSet = self.TblDsc.Exec(SqlCommand)\r
for Record in RecordSet:\r
- SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" %(self.TblDsc.Table, Record[0], Record[1])\r
- EdkLogger.debug(4, "SqlCommand: %s" %SqlCommand)\r
+ SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" % (self.TblDsc.Table, Record[0], Record[1])\r
+ EdkLogger.debug(4, "SqlCommand: %s" % SqlCommand)\r
self.Cur.execute(SqlCommand)\r
\r
#\r
for Record in RecordSet:\r
if Record[0] == MODEL_META_DATA_CONDITIONAL_STATEMENT_IF:\r
if not self.Compare(Record[6], Record[2], Record[3]):\r
- SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" %(self.TblDsc.Table, Record[4], Record[5])\r
+ SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" % (self.TblDsc.Table, Record[4], Record[5])\r
self.TblDsc.Exec(SqlCommand)\r
else:\r
DisabledList.append(Record[1])\r
continue\r
if Record[0] == MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE and Record[1] in DisabledList:\r
- SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" %(self.TblDsc.Table, Record[4], Record[5])\r
+ SqlCommand = """Update %s set Enabled = -1 where StartLine >= %s and EndLine <= %s""" % (self.TblDsc.Table, Record[4], Record[5])\r
self.TblDsc.Exec(SqlCommand)\r
\r
## Compare\r
# @param Value2:\r
#\r
def Compare(self, Value1, CompareType, Value2):\r
- Command = """Value1 %s Value2""" %CompareType\r
+ Command = """Value1 %s Value2""" % CompareType\r
return eval(Command)\r
\r
## First time to insert records to database\r
LineValue, StartLine, EndLine = SectionItem[0], SectionItem[1], SectionItem[1]\r
\r
\r
- EdkLogger.debug(4, "Parsing %s ..." %LineValue)\r
+ EdkLogger.debug(4, "Parsing %s ..." % LineValue)\r
#\r
# Parse '!ifdef'\r
#\r
Components = []\r
GetComponent(SectionItemList, Components)\r
for Component in Components:\r
- EdkLogger.debug(4, "Parsing component %s ..." %Component)\r
+ EdkLogger.debug(4, "Parsing component %s ..." % Component)\r
DscItmeID = self.TblDsc.Insert(MODEL_META_DATA_COMPONENT, Component[0], '', '', Arch, -1, FileID, StartLine, -1, StartLine, -1, 0)\r
for Item in Component[1]:\r
- List = GetSplitValueList(Item, MaxSplit = 2)\r
+ List = GetSplitValueList(Item, MaxSplit=2)\r
LibName, LibIns = '', ''\r
if len(List) == 2:\r
LibName = List[0]\r
# @var KeyList: To store value for KeyList, a list for all Keys used in Inf\r
#\r
class Inf(InfObject):\r
- def __init__(self, Filename = None, IsToDatabase = False, IsToModule = False, WorkspaceDir = None, Database = None, SupArchList = DataType.ARCH_LIST):\r
+ def __init__(self, Filename=None, IsToDatabase=False, IsToModule=False, WorkspaceDir=None, Database=None, SupArchList=DataType.ARCH_LIST):\r
self.Identification = Identification()\r
self.Module = ModuleClass()\r
self.UserExtensions = ''\r
# Remove comment block\r
#\r
if Line.find(TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
IsFindBlockComment = True\r
if Line.find(TAB_COMMENT_EDK_END) > -1:\r
- Line = ReservedLine + GetSplitValueList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
CurrentSection = ItemList[0]\r
else:\r
if CurrentSection != ItemList[0]:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
if CurrentSection.upper() not in self.KeyList:\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
CurrentSection = TAB_UNKNOWN\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
else:\r
if ItemList[1] != '' and ItemList[1].upper() not in ARCH_LIST_FULL:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
ArchList.append(ItemList[1].upper())\r
ThirdList.append(ItemList[2])\r
\r
#\r
if CurrentSection == TAB_UNKNOWN:\r
ErrorMsg = "%s is not in any defined section" % Line\r
- EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
\r
#\r
# Add a section item\r
print Item.Name, Item.Value, Item.SupArchList\r
print '\nPcds =', M.PcdCodes\r
for Item in M.PcdCodes:\r
- print '\tCName=',Item.CName, 'TokenSpaceGuidCName=', Item.TokenSpaceGuidCName, 'DefaultValue=', Item.DefaultValue, 'ItemType=', Item.ItemType, Item.SupArchList\r
+ print '\tCName=', Item.CName, 'TokenSpaceGuidCName=', Item.TokenSpaceGuidCName, 'DefaultValue=', Item.DefaultValue, 'ItemType=', Item.ItemType, Item.SupArchList\r
print '\nSources =', M.Sources\r
for Source in M.Sources:\r
print Source.SourceFile, 'Fam=', Source.ToolChainFamily, 'Pcd=', Source.FeatureFlag, 'Tag=', Source.TagName, 'ToolCode=', Source.ToolCode, Source.SupArchList\r
print '\nUserExtensions =', M.UserExtensions\r
for UserExtension in M.UserExtensions:\r
- print UserExtension.UserID, UserExtension.Identifier,UserExtension.Content\r
+ print UserExtension.UserID, UserExtension.Identifier, UserExtension.Content\r
print '\nGuids =', M.Guids\r
for Item in M.Guids:\r
print Item.CName, Item.SupArchList, Item.FeatureFlag\r
if ModuleHeader.ComponentType in gComponentType2ModuleType:\r
ModuleHeader.ModuleType = gComponentType2ModuleType[ModuleHeader.ComponentType]\r
elif ModuleHeader.ComponentType != '':\r
- EdkLogger.error("Parser", PARSER_ERROR, "Unsupported Edk component type [%s]" % ModuleHeader.ComponentType, ExtraData=File, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Unsupported Edk component type [%s]" % ModuleHeader.ComponentType, ExtraData=File, RaiseError=EdkLogger.IsRaiseError)\r
\r
self.Module.Header[Arch] = ModuleHeader\r
\r
TAB_INF_DEFINES_MODULE_TYPE : "ModuleType",\r
TAB_INF_DEFINES_EFI_SPECIFICATION_VERSION : "UefiSpecificationVersion",\r
TAB_INF_DEFINES_UEFI_SPECIFICATION_VERSION : "UefiSpecificationVersion",\r
- TAB_INF_DEFINES_EDK_RELEASE_VERSION : "EdkReleaseVersion", \r
+ TAB_INF_DEFINES_EDK_RELEASE_VERSION : "EdkReleaseVersion",\r
\r
# Optional Fields\r
TAB_INF_DEFINES_INF_VERSION : "InfVersion",\r
# @var KeyList: To store value for KeyList, a list for all Keys used in Inf\r
#\r
class Inf(InfObject):\r
- def __init__(self, Filename = None, IsToModule = False, WorkspaceDir = None, PackageDir = None, SupArchList = DataType.ARCH_LIST):\r
+ def __init__(self, Filename=None, IsToModule=False, WorkspaceDir=None, PackageDir=None, SupArchList=DataType.ARCH_LIST):\r
self.Identification = IdentificationClass()\r
self.Module = ModuleClass()\r
self.WorkspaceDir = WorkspaceDir\r
self.PackageDir = PackageDir\r
self.SupArchList = SupArchList\r
- \r
+\r
self.KeyList = [\r
- TAB_SOURCES, TAB_BUILD_OPTIONS, TAB_BINARIES, TAB_INCLUDES, TAB_GUIDS, \r
- TAB_PROTOCOLS, TAB_PPIS, TAB_LIBRARY_CLASSES, TAB_PACKAGES, TAB_INF_FIXED_PCD, \r
- TAB_INF_PATCH_PCD, TAB_INF_FEATURE_PCD, TAB_INF_PCD, TAB_INF_PCD_EX, \r
+ TAB_SOURCES, TAB_BUILD_OPTIONS, TAB_BINARIES, TAB_INCLUDES, TAB_GUIDS,\r
+ TAB_PROTOCOLS, TAB_PPIS, TAB_LIBRARY_CLASSES, TAB_PACKAGES, TAB_INF_FIXED_PCD,\r
+ TAB_INF_PATCH_PCD, TAB_INF_FEATURE_PCD, TAB_INF_PCD, TAB_INF_PCD_EX,\r
TAB_DEPEX, TAB_INF_DEFINES\r
]\r
# Upper all KEYs to ignore case sensitive when parsing\r
self.KeyList = map(lambda c: c.upper(), self.KeyList)\r
- \r
+\r
# Init RecordSet\r
- self.RecordSet = {} \r
+ self.RecordSet = {}\r
for Key in self.KeyList:\r
self.RecordSet[Section[Key]] = []\r
- \r
+\r
# Init Comment\r
self.SectionHeaderCommentDict = {}\r
- \r
+\r
# Load Inf file if filename is not None\r
if Filename != None:\r
self.LoadInfFile(Filename)\r
- \r
+\r
# Transfer to Module Object if IsToModule is True\r
if IsToModule:\r
self.InfToModule()\r
InfList['Defines'] = TmpList\r
if ModuleHeader.Description != '':\r
SectionHeaderCommentDict['Defines'] = ModuleHeader.Description\r
- \r
+\r
if Module.UserExtensions != None:\r
InfList['BuildOptions'] = Module.UserExtensions.BuildOptions\r
- \r
+\r
for Item in Module.Includes:\r
Key = 'Includes.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
Value.append(Item.FilePath)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.LibraryClasses:\r
Key = 'LibraryClasses.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
NewValue = NewValue + '|' + Item.RecommendedInstance\r
if Item.FeatureFlag:\r
NewValue = NewValue + '|' + Item.FeatureFlag\r
- Value.append(NewValue) \r
+ Value.append(NewValue)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.PackageDependencies:\r
Key = 'Packages.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
Value.append(Item.FilePath)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.PcdCodes:\r
Key = 'Pcds' + Item.ItemType + '.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
NewValue = NewValue + '|' + Item.DefaultValue\r
Value.append(NewValue)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.Sources:\r
Key = 'Sources.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
if Item.HelpText != '':\r
SectionHeaderCommentDict[Key] = Item.HelpText\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.Guids:\r
Key = 'Guids.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
Value.append(Item.CName)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.Protocols:\r
Key = 'Protocols.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
Value.append(Item.CName)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.Ppis:\r
Key = 'Ppis.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
Value.append(Item.CName)\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
if Module.PeiDepex:\r
Key = 'Depex'\r
Value = Module.PeiDepex.Depex\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
if Module.DxeDepex:\r
Key = 'Depex'\r
Value = Module.DxeDepex.Depex\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
if Module.SmmDepex:\r
Key = 'Depex'\r
Value = Module.SmmDepex.Depex\r
GenMetaDatSectionItem(Key, Value, InfList)\r
- \r
+\r
for Item in Module.Binaries:\r
Key = 'Binaries.' + GetStringOfList(Item.SupArchList)\r
Value = GetHelpTextList(Item.HelpTextList)\r
else:\r
Inf = Inf + ' ' + Value + '\n'\r
Inf = Inf + '\n'\r
- \r
+\r
return Inf\r
- \r
- \r
+\r
+\r
## Transfer to Module Object\r
# \r
# Transfer all contents of an Inf file to a standard Module Object\r
def InfToModule(self):\r
# Init global information for the file\r
ContainerFile = self.Identification.FullPath\r
- \r
+\r
# Generate Module Header\r
self.GenModuleHeader(ContainerFile)\r
- \r
+\r
# Generate BuildOptions\r
self.GenBuildOptions(ContainerFile)\r
- \r
+\r
# Generate Includes\r
self.GenIncludes(ContainerFile)\r
- \r
+\r
# Generate LibraryClasses\r
self.GenLibraryClasses(ContainerFile)\r
- \r
+\r
# Generate Packages\r
self.GenPackages(ContainerFile)\r
- \r
+\r
# Generate Pcds\r
self.GenPcds(ContainerFile)\r
- \r
+\r
# Generate Sources\r
self.GenSources(ContainerFile)\r
- \r
+\r
# Generate Guids\r
self.GenGuidProtocolPpis(DataType.TAB_GUIDS, ContainerFile)\r
\r
\r
# Generate Ppis\r
self.GenGuidProtocolPpis(DataType.TAB_PPIS, ContainerFile)\r
- \r
+\r
# Generate Depexes\r
self.GenDepexes(ContainerFile)\r
- \r
+\r
# Generate Binaries\r
self.GenBinaries(ContainerFile)\r
- \r
+\r
# Init MiscFiles\r
self.GenMiscFiles(ContainerFile)\r
\r
#\r
# @param Filename: Input value for filename of Inf file\r
#\r
- def LoadInfFile(self, Filename): \r
+ def LoadInfFile(self, Filename):\r
# Insert a record for file\r
Filename = NormPath(Filename)\r
- \r
+\r
self.Identification.FullPath = Filename\r
(self.Identification.RelaPath, self.Identification.FileName) = os.path.split(Filename)\r
if self.Identification.FullPath.find(self.WorkspaceDir) > -1:\r
- self.Identification.ModulePath = os.path.dirname(self.Identification.FullPath[len(self.WorkspaceDir) + 1:]) \r
+ self.Identification.ModulePath = os.path.dirname(self.Identification.FullPath[len(self.WorkspaceDir) + 1:])\r
if self.PackageDir:\r
self.Identification.PackagePath = self.PackageDir\r
if self.Identification.ModulePath.find(self.PackageDir) == 0:\r
self.Identification.ModulePath = self.Identification.ModulePath[len(self.PackageDir) + 1:]\r
- \r
+\r
# Init common datas\r
IfDefList, SectionItemList, CurrentSection, ArchList, ThirdList, IncludeFiles = \\r
[], [], TAB_UNKNOWN, [], [], []\r
LineNo = 0\r
- \r
+\r
# Parse file content\r
IsFindBlockComment = False\r
ReservedLine = ''\r
LineNo = LineNo + 1\r
# Remove comment block\r
if Line.find(TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
if ReservedLine.strip().startswith(TAB_COMMENT_SPLIT):\r
Comment = Comment + Line.strip() + '\n'\r
ReservedLine = ''\r
continue\r
if Line.find(TAB_COMMENT_EDK_END) > -1:\r
Comment = Comment + Line[:Line.find(TAB_COMMENT_EDK_END) + len(TAB_COMMENT_EDK_END)] + '\n'\r
- Line = ReservedLine + GetSplitValueList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
Comment = Comment + Line.strip() + '\n'\r
continue\r
- \r
+\r
# Remove comments at tail and remove spaces again\r
if Line.strip().startswith(TAB_COMMENT_SPLIT) or Line.strip().startswith('--/'):\r
Comment = Comment + Line.strip() + '\n'\r
Line = CleanString(Line)\r
if Line == '':\r
continue\r
- \r
+\r
## Find a new section tab\r
# First insert previous section items\r
# And then parse the content of the new section\r
Model = Section[CurrentSection.upper()]\r
# Insert items data of previous section\r
InsertSectionItems(Model, CurrentSection, SectionItemList, ArchList, ThirdList, self.RecordSet)\r
- \r
+\r
# Parse the new section\r
SectionItemList = []\r
ArchList = []\r
ThirdList = []\r
- \r
+\r
CurrentSection = ''\r
LineList = GetSplitValueList(Line[len(TAB_SECTION_START):len(Line) - len(TAB_SECTION_END)], TAB_COMMA_SPLIT)\r
for Item in LineList:\r
CurrentSection = ItemList[0]\r
else:\r
if CurrentSection != ItemList[0]:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Different section names '%s' and '%s' are found in one section definition, this is not allowed." % (CurrentSection, ItemList[0]), File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
if CurrentSection.upper() not in self.KeyList:\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
ItemList.append('')\r
RaiseParserError(Line, CurrentSection, Filename, '', LineNo)\r
else:\r
if ItemList[1] != '' and ItemList[1].upper() not in ARCH_LIST_FULL:\r
- EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, "Invalid Arch definition '%s' found" % ItemList[1], File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
ArchList.append(ItemList[1].upper())\r
ThirdList.append(ItemList[2])\r
\r
self.SectionHeaderCommentDict[Section[CurrentSection.upper()]] = Comment\r
Comment = ''\r
continue\r
- \r
+\r
# Not in any defined section\r
if CurrentSection == TAB_UNKNOWN:\r
ErrorMsg = "%s is not in any defined section" % Line\r
- EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=Filename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
\r
# Add a section item\r
SectionItemList.append([Line, LineNo, Comment])\r
Comment = ''\r
# End of parse\r
#End of For\r
- \r
+\r
# Insert items data of last section\r
Model = Section[CurrentSection.upper()]\r
InsertSectionItems(Model, CurrentSection, SectionItemList, ArchList, ThirdList, self.RecordSet)\r
print 'PackagePath =', M.ModuleHeader.PackagePath\r
print 'ModulePath =', M.ModuleHeader.ModulePath\r
print 'CombinePath =', M.ModuleHeader.CombinePath\r
- \r
+\r
print 'BaseName =', M.ModuleHeader.Name\r
print 'Guid =', M.ModuleHeader.Guid\r
print 'Version =', M.ModuleHeader.Version\r
print Item.FilePath, Item.SupArchList, Item.FeatureFlag\r
print '\nPcds ='\r
for Item in M.PcdCodes:\r
- print '\tCName=',Item.CName, 'TokenSpaceGuidCName=', Item.TokenSpaceGuidCName, 'DefaultValue=', Item.DefaultValue, 'ItemType=', Item.ItemType, Item.SupArchList\r
+ print '\tCName=', Item.CName, 'TokenSpaceGuidCName=', Item.TokenSpaceGuidCName, 'DefaultValue=', Item.DefaultValue, 'ItemType=', Item.ItemType, Item.SupArchList\r
print '\nSources ='\r
for Source in M.Sources:\r
print Source.SourceFile, 'Fam=', Source.ToolChainFamily, 'Pcd=', Source.FeatureFlag, 'Tag=', Source.TagName, 'ToolCode=', Source.ToolCode, Source.SupArchList\r
EdkLogger.debug(2, "Generate ModuleHeader ...")\r
# Update all defines item in database\r
RecordSet = self.RecordSet[MODEL_META_DATA_HEADER]\r
- \r
+\r
ModuleHeader = ModuleHeaderClass()\r
ModuleExtern = ModuleExternClass()\r
OtherDefines = []\r
UE = UserExtensionsClass()\r
UE.Defines = OtherDefines\r
self.Module.UserExtensions = UE\r
- \r
+\r
## GenBuildOptions\r
#\r
# Gen BuildOptions of Inf\r
for Record in RecordSet:\r
UE.BuildOptions.append(Record[0])\r
self.Module.UserExtensions = UE\r
- \r
+\r
## GenIncludes\r
#\r
# Gen Includes of Inf\r
Include.HelpTextList.append(GenerateHelpText(Record[5], ''))\r
self.Module.Includes.append(Include)\r
#self.Module.FileList.extend(GetFiles(os.path.normpath(os.path.join(self.Identification.FileRelativePath, Include.FilePath)), ['CVS', '.svn']))\r
- \r
+\r
## GenLibraryClasses\r
#\r
# Get LibraryClass of Inf\r
# Get all LibraryClasses\r
RecordSet = self.RecordSet[MODEL_EFI_LIBRARY_CLASS]\r
for Record in RecordSet:\r
- (LibClassName, LibClassIns, Pcd, SupModelList) = GetLibraryClassOfInf([Record[0], Record[4]], ContainerFile, self.WorkspaceDir, Record[2]) \r
+ (LibClassName, LibClassIns, Pcd, SupModelList) = GetLibraryClassOfInf([Record[0], Record[4]], ContainerFile, self.WorkspaceDir, Record[2])\r
LibraryClass = CommonClass.LibraryClassClass()\r
LibraryClass.LibraryClass = LibClassName\r
LibraryClass.RecommendedInstance = LibClassIns\r
if GenerateHelpText(Record[5], ''):\r
Package.HelpTextList.append(GenerateHelpText(Record[5], ''))\r
self.Module.PackageDependencies.append(Package)\r
- \r
+\r
def AddPcd(self, CName, TokenSpaceGuidCName, DefaultValue, ItemType, Arch, HelpTextList):\r
Pcd = PcdClass()\r
Pcd.CName = CName\r
if GenerateHelpText(HelpTextList, ''):\r
Pcd.HelpTextList.append(GenerateHelpText(HelpTextList, ''))\r
self.Module.PcdCodes.append(Pcd)\r
- \r
+\r
## GenPcds\r
#\r
# Gen Pcds of Inf\r
EdkLogger.debug(2, "Generate %s ..." % TAB_PCDS)\r
Pcds = {}\r
PcdToken = {}\r
- \r
+\r
# Get all Pcds\r
RecordSet1 = self.RecordSet[MODEL_PCD_FIXED_AT_BUILD]\r
RecordSet2 = self.RecordSet[MODEL_PCD_PATCHABLE_IN_MODULE]\r
RecordSet3 = self.RecordSet[MODEL_PCD_FEATURE_FLAG]\r
RecordSet4 = self.RecordSet[MODEL_PCD_DYNAMIC_EX]\r
RecordSet5 = self.RecordSet[MODEL_PCD_DYNAMIC]\r
- \r
+\r
# Go through each arch\r
for Record in RecordSet1:\r
(TokenSpaceGuidCName, TokenName, Value, Type) = GetPcdOfInf(Record[0], TAB_PCDS_FIXED_AT_BUILD, ContainerFile, Record[2])\r
for Record in RecordSet5:\r
(TokenSpaceGuidCName, TokenName, Value, Type) = GetPcdOfInf(Record[0], '', ContainerFile, Record[2])\r
self.AddPcd(TokenName, TokenSpaceGuidCName, Value, Type, Record[1], Record[5])\r
- \r
+\r
## GenSources\r
#\r
# Gen Sources of Inf\r
def GenSources(self, ContainerFile):\r
EdkLogger.debug(2, "Generate %s ..." % TAB_SOURCES)\r
Sources = {}\r
- \r
+\r
# Get all Sources\r
RecordSet = self.RecordSet[MODEL_EFI_SOURCE_FILE]\r
for Record in RecordSet:\r
def GenBinaries(self, ContainerFile):\r
EdkLogger.debug(2, "Generate %s ..." % TAB_BINARIES)\r
Binaries = {}\r
- \r
+\r
# Get all Guids\r
RecordSet = self.RecordSet[MODEL_EFI_BINARY_FILE]\r
for Record in RecordSet:\r
Binary.HelpTextList.append(GenerateHelpText(Record[5], ''))\r
self.Module.Binaries.append(Binary)\r
#self.Module.FileList.append(os.path.normpath(os.path.join(self.Identification.RelaPath, Filename)))\r
- \r
+\r
## GenGuids\r
#\r
# Gen Guids of Inf\r
if GenerateHelpText(Record[5], ''):\r
ListClass.HelpTextList.append(GenerateHelpText(Record[5], ''))\r
ListMember.append(ListClass)\r
- \r
+\r
##\r
#\r
# This acts like the main() function for the script, unless it is 'import'ed into another\r
if __name__ == '__main__':\r
EdkLogger.Initialize()\r
EdkLogger.SetLevel(EdkLogger.QUIET)\r
- \r
+\r
W = os.getenv('WORKSPACE')\r
F = os.path.join(W, 'MdeModulePkg/Application/HelloWorld/HelloWorld.inf')\r
- \r
+\r
P = Inf(os.path.normpath(F), True, W, 'MdeModulePkg')\r
P.ShowModule()\r
print P.ModuleToInf(P.Module)\r
from BuildToolError import *\r
from CommonDataClass.Exceptions import *\r
\r
-gHexVerPatt = re.compile('0x[a-f0-9]{4}[a-f0-9]{4}$',re.IGNORECASE)\r
+gHexVerPatt = re.compile('0x[a-f0-9]{4}[a-f0-9]{4}$', re.IGNORECASE)\r
gHumanReadableVerPatt = re.compile(r'([1-9][0-9]*|0)\.[0-9]{1,2}$')\r
\r
## GetSplitValueList\r
#\r
# @retval list() A list for splitted string\r
#\r
-def GetSplitValueList(String, SplitTag = DataType.TAB_VALUE_SPLIT, MaxSplit = -1):\r
+def GetSplitValueList(String, SplitTag=DataType.TAB_VALUE_SPLIT, MaxSplit= -1):\r
ValueList = []\r
Last = 0\r
Escaped = False\r
# Found a splitter not in a string, split it\r
if not InString and Char == SplitTag:\r
ValueList.append(String[Last:Index].strip())\r
- Last = Index+1\r
+ Last = Index + 1\r
if MaxSplit > 0 and len(ValueList) >= MaxSplit:\r
break\r
\r
#\r
# @retval list() A list for splitted string\r
#\r
-def GetSplitList(String, SplitStr = DataType.TAB_VALUE_SPLIT, MaxSplit = -1):\r
+def GetSplitList(String, SplitStr=DataType.TAB_VALUE_SPLIT, MaxSplit= -1):\r
return map(lambda l: l.strip(), String.split(SplitStr, MaxSplit))\r
\r
## MergeArches\r
#\r
# @retval NewList A new string list whose macros are replaced\r
#\r
-def ReplaceMacros(StringList, MacroDefinitions={}, SelfReplacement = False):\r
+def ReplaceMacros(StringList, MacroDefinitions={}, SelfReplacement=False):\r
NewList = []\r
for String in StringList:\r
if type(String) == type(''):\r
#\r
# @retval Path Formatted path\r
#\r
-def NormPath(Path, Defines = {}):\r
+def NormPath(Path, Defines={}):\r
IsRelativePath = False\r
if Path:\r
if Path[0] == '.':\r
#\r
# @retval Path Formatted path\r
#\r
-def CleanString(Line, CommentCharacter = DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False):\r
+def CleanString(Line, CommentCharacter=DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False):\r
#\r
# remove whitespace\r
#\r
elif Line[Index] == CommentCharacter and not InString :\r
Line = Line[0: Index]\r
break\r
- \r
+\r
if CommentInString:\r
Line = Line.replace('"', '')\r
ChIndex = Line.find('#')\r
while ChIndex >= 0:\r
if GlobalData.gIsWindows:\r
- if ChIndex == 0 or Line[ChIndex-1] != '^':\r
+ if ChIndex == 0 or Line[ChIndex - 1] != '^':\r
Line = Line[0:ChIndex] + '^' + Line[ChIndex:]\r
ChIndex = Line.find('#', ChIndex + 2)\r
else:\r
ChIndex = Line.find('#', ChIndex + 1)\r
else:\r
- if ChIndex == 0 or Line[ChIndex-1] != '\\':\r
+ if ChIndex == 0 or Line[ChIndex - 1] != '\\':\r
Line = Line[0:ChIndex] + '\\' + Line[ChIndex:]\r
ChIndex = Line.find('#', ChIndex + 2)\r
else:\r
#\r
# @retval Path Formatted path\r
#\r
-def CleanString2(Line, CommentCharacter = DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False):\r
+def CleanString2(Line, CommentCharacter=DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False):\r
#\r
# remove whitespace\r
#\r
if len(Minor) == 1:\r
Minor += '0'\r
DeciValue = (int(Major) << 16) + int(Minor);\r
- return "0x%08x"%DeciValue\r
+ return "0x%08x" % DeciValue\r
elif gHexVerPatt.match(VerString):\r
return VerString\r
else:\r
#\r
if Line.find('$') > -1:\r
if Line.find('$(') < 0 or Line.find(')') < 0:\r
- EdkLogger.error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError=EdkLogger.IsRaiseError)\r
\r
#\r
# Check []\r
# Only get one '[' or one ']'\r
#\r
if not (Line.find('[') > -1 and Line.find(']') > -1):\r
- EdkLogger.error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError=EdkLogger.IsRaiseError)\r
\r
#\r
# Regenerate FileContent\r
NewFileContent = NewFileContent + Line + '\r\n'\r
\r
if IsFailed:\r
- EdkLogger.error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError=EdkLogger.IsRaiseError)\r
\r
return NewFileContent\r
\r
#\r
# @retval True The file type is correct\r
#\r
-def CheckFileType(CheckFilename, ExtName, ContainerFilename, SectionName, Line, LineNo = -1):\r
+def CheckFileType(CheckFilename, ExtName, ContainerFilename, SectionName, Line, LineNo= -1):\r
if CheckFilename != '' and CheckFilename != None:\r
(Root, Ext) = os.path.splitext(CheckFilename)\r
if Ext.upper() != ExtName.upper():\r
LineNo = GetLineNo(ContainerFile, Line)\r
ErrorMsg = "Invalid %s. '%s' is found, but '%s' file is needed" % (SectionName, CheckFilename, ExtName)\r
EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, Line=LineNo,\r
- File=ContainerFilename, RaiseError = EdkLogger.IsRaiseError)\r
+ File=ContainerFilename, RaiseError=EdkLogger.IsRaiseError)\r
\r
return True\r
\r
#\r
# @retval The file full path if the file exists\r
#\r
-def CheckFileExist(WorkspaceDir, CheckFilename, ContainerFilename, SectionName, Line, LineNo = -1):\r
+def CheckFileExist(WorkspaceDir, CheckFilename, ContainerFilename, SectionName, Line, LineNo= -1):\r
CheckFile = ''\r
if CheckFilename != '' and CheckFilename != None:\r
CheckFile = WorkspaceFile(WorkspaceDir, CheckFilename)\r
LineNo = GetLineNo(ContainerFile, Line)\r
ErrorMsg = "Can't find file '%s' defined in section '%s'" % (CheckFile, SectionName)\r
EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg,\r
- File=ContainerFilename, Line = LineNo, RaiseError = EdkLogger.IsRaiseError)\r
+ File=ContainerFilename, Line=LineNo, RaiseError=EdkLogger.IsRaiseError)\r
\r
return CheckFile\r
\r
# @retval int Index of the line\r
# @retval -1 The line is not found\r
#\r
-def GetLineNo(FileContent, Line, IsIgnoreComment = True):\r
+def GetLineNo(FileContent, Line, IsIgnoreComment=True):\r
LineList = FileContent.splitlines()\r
for Index in range(len(LineList)):\r
if LineList[Index].find(Line) > -1:\r
# @param File: File which has the string\r
# @param Format: Correct format\r
#\r
-def RaiseParserError(Line, Section, File, Format = '', LineNo = -1):\r
+def RaiseParserError(Line, Section, File, Format='', LineNo= -1):\r
if LineNo == -1:\r
LineNo = GetLineNo(open(os.path.normpath(File), 'r').read(), Line)\r
ErrorMsg = "Invalid statement '%s' is found in section '%s'" % (Line, Section)\r
if Format != '':\r
Format = "Correct format is " + Format\r
- EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=File, Line=LineNo, ExtraData=Format, RaiseError = EdkLogger.IsRaiseError)\r
+ EdkLogger.error("Parser", PARSER_ERROR, ErrorMsg, File=File, Line=LineNo, ExtraData=Format, RaiseError=EdkLogger.IsRaiseError)\r
\r
## WorkspaceFile\r
#\r
# Remove comment block\r
#\r
if Line.find(DataType.TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, DataType.TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, DataType.TAB_COMMENT_EDK_START, 1)[0]\r
IsFindBlockComment = True\r
if Line.find(DataType.TAB_COMMENT_EDK_END) > -1:\r
- Line = ReservedLine + GetSplitValueList(Line, DataType.TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, DataType.TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
#\r
# Get String of a List\r
#\r
-def GetStringOfList(List, Split = ' '):\r
+def GetStringOfList(List, Split=' '):\r
if type(List) != type([]):\r
return List\r
Str = ''\r
\r
def StringToArray(String):\r
if isinstance(String, unicode):\r
- if len(unicode) ==0:\r
+ if len(unicode) == 0:\r
return "{0x00, 0x00}"\r
return "{%s, 0x00, 0x00}" % ", ".join(["0x%02x, 0x00" % ord(C) for C in String])\r
elif String.startswith('L"'):\r
return (len(String) - 2 + 1)\r
else:\r
return len(String.split()) + 1\r
- \r
+\r
def RemoveDupOption(OptionString, Which="/I", Against=None):\r
OptionList = OptionString.split()\r
ValueList = []\r
for Char in Line:\r
IndexOfChar += 1\r
if ord(Char) > 126:\r
- OtherMsg = "File %s has Non-ASCII char at line %s column %s" %(Record[1], IndexOfLine, IndexOfChar)\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_GENERAL_CHECK_NON_ACSII, OtherMsg = OtherMsg, BelongsToTable = 'File', BelongsToItem = Record[0])\r
+ OtherMsg = "File %s has Non-ASCII char at line %s column %s" % (Record[1], IndexOfLine, IndexOfChar)\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_GENERAL_CHECK_NON_ACSII, OtherMsg=OtherMsg, BelongsToTable='File', BelongsToItem=Record[0])\r
\r
# C Function Layout Checking\r
def FunctionLayoutCheck(self):\r
EdkLogger.quiet("Checking same struct ...")\r
AllStructure = {}\r
for IdentifierTable in EccGlobalData.gIdentifierTableList:\r
- SqlCommand = """select ID, Name, BelongsToFile from %s where Model = %s""" %(IdentifierTable, MODEL_IDENTIFIER_STRUCTURE)\r
+ SqlCommand = """select ID, Name, BelongsToFile from %s where Model = %s""" % (IdentifierTable, MODEL_IDENTIFIER_STRUCTURE)\r
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Record in RecordSet:\r
if Record[1] != '':\r
if NewRecordSet != []:\r
OtherMsg = "The structure name [%s] is duplicate with the one defined in %s, maybe struct NOT typedefed or the typedef new type NOT used to qualify variables" % (Record[1], NewRecordSet[0][0])\r
if not EccGlobalData.gException.IsException(ERROR_DECLARATION_DATA_TYPE_CHECK_SAME_STRUCTURE, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_DECLARATION_DATA_TYPE_CHECK_SAME_STRUCTURE, OtherMsg = OtherMsg, BelongsToTable = IdentifierTable, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_DECLARATION_DATA_TYPE_CHECK_SAME_STRUCTURE, OtherMsg=OtherMsg, BelongsToTable=IdentifierTable, BelongsToItem=Record[0])\r
\r
# Check whether Union Type has a 'typedef' and the name is capital\r
def DeclCheckUnionType(self):\r
if Path.startswith('\\') or Path.startswith('/'):\r
Path = Path[1:]\r
if not EccGlobalData.gException.IsException(ERROR_INCLUDE_FILE_CHECK_NAME, Path):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_INCLUDE_FILE_CHECK_NAME, OtherMsg = "The file name for [%s] is duplicate" % Path, BelongsToTable = 'File', BelongsToItem = Item[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_INCLUDE_FILE_CHECK_NAME, OtherMsg="The file name for [%s] is duplicate" % Path, BelongsToTable='File', BelongsToItem=Item[0])\r
\r
# Check whether all include file contents is guarded by a #ifndef statement.\r
def IncludeFileCheckIfndef(self):\r
LibraryClasses[List[0]].append(Item)\r
\r
if Record[2] != 'BASE' and Record[2] not in SupModType:\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_2, OtherMsg = "The Library Class '%s' does not specify its supported module types" % (List[0]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_2, OtherMsg="The Library Class '%s' does not specify its supported module types" % (List[0]), BelongsToTable='Inf', BelongsToItem=Record[0])\r
\r
SqlCommand = """select A.ID, A.Value1, B.Value2 from Inf as A left join Inf as B\r
where A.Model = %s and B.Value1 = '%s' and B.Model = %s\r
if Record[1] in LibraryClasses:\r
if Record[2] not in LibraryClasses[Record[1]] and 'BASE' not in RecordDict[Record[1]]:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, OtherMsg = "The type of Library Class [%s] defined in Inf file does not match the type of the module" % (Record[1]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, OtherMsg="The type of Library Class [%s] defined in Inf file does not match the type of the module" % (Record[1]), BelongsToTable='Inf', BelongsToItem=Record[0])\r
else:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, OtherMsg = "The type of Library Class [%s] defined in Inf file does not match the type of the module" % (Record[1]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, OtherMsg="The type of Library Class [%s] defined in Inf file does not match the type of the module" % (Record[1]), BelongsToTable='Inf', BelongsToItem=Record[0])\r
\r
# Check whether a Library Instance has been defined for all dependent library classes\r
def MetaDataFileCheckLibraryInstanceDependent(self):\r
IsFound = True\r
if not IsFound:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_DEPENDENT, LibraryClass[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_DEPENDENT, OtherMsg = "The Library Class [%s] is not specified in '%s'" % (LibraryClass[1], LibraryClass[2]), BelongsToTable = 'Dsc', BelongsToItem = LibraryClass[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_DEPENDENT, OtherMsg="The Library Class [%s] is not specified in '%s'" % (LibraryClass[1], LibraryClass[2]), BelongsToTable='Dsc', BelongsToItem=LibraryClass[0])\r
\r
# Check whether the Library Instances specified by the LibraryClasses sections are listed in order of dependencies\r
def MetaDataFileCheckLibraryInstanceOrder(self):\r
RecordSet = EccGlobalData.gDb.TblInf.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_LIBRARY_NO_USE, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_NO_USE, OtherMsg = "The Library Class [%s] is not used in any platform" % (Record[1]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_NO_USE, OtherMsg="The Library Class [%s] is not used in any platform" % (Record[1]), BelongsToTable='Inf', BelongsToItem=Record[0])\r
\r
# Check whether an Inf file is specified in the FDF file, but not in the Dsc file, then the Inf file must be for a Binary module only\r
def MetaDataFileCheckBinaryInfInFdf(self):\r
SqlCommand = """select ID from Inf where Model = %s and BelongsToFile = (select ID from File where FullPath like '%s')\r
""" % (MODEL_EFI_SOURCE_FILE, FilePath)\r
NewRecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
- if NewRecordSet!= []:\r
+ if NewRecordSet != []:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_BINARY_INF_IN_FDF, FilePath):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_BINARY_INF_IN_FDF, OtherMsg = "File [%s] defined in FDF file and not in DSC file must be a binary module" % (FilePath), BelongsToTable = 'Fdf', BelongsToItem = FdfID)\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_BINARY_INF_IN_FDF, OtherMsg="File [%s] defined in FDF file and not in DSC file must be a binary module" % (FilePath), BelongsToTable='Fdf', BelongsToItem=FdfID)\r
\r
# Check whether a PCD is set in a Dsc file or the FDF file, but not in both.\r
def MetaDataFileCheckPcdDuplicate(self):\r
and A.Enabled > -1\r
and B.Enabled > -1\r
group by A.ID\r
- """% (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
+ """ % (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
RecordSet = EccGlobalData.gDb.TblDsc.Exec(SqlCommand)\r
for Record in RecordSet:\r
- SqlCommand1 = """select Name from File where ID = %s""" %Record[2]\r
- SqlCommand2 = """select Name from File where ID = %s""" %Record[5]\r
+ SqlCommand1 = """select Name from File where ID = %s""" % Record[2]\r
+ SqlCommand2 = """select Name from File where ID = %s""" % Record[5]\r
DscFileName = os.path.splitext(EccGlobalData.gDb.TblDsc.Exec(SqlCommand1)[0][0])[0]\r
FdfFileName = os.path.splitext(EccGlobalData.gDb.TblDsc.Exec(SqlCommand2)[0][0])[0]\r
if DscFileName != FdfFileName:\r
continue\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg = "The PCD [%s] is defined in both FDF file and DSC file" % (Record[1]), BelongsToTable = 'Dsc', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg="The PCD [%s] is defined in both FDF file and DSC file" % (Record[1]), BelongsToTable='Dsc', BelongsToItem=Record[0])\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, Record[3]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg = "The PCD [%s] is defined in both FDF file and DSC file" % (Record[4]), BelongsToTable = 'Fdf', BelongsToItem = Record[3])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg="The PCD [%s] is defined in both FDF file and DSC file" % (Record[4]), BelongsToTable='Fdf', BelongsToItem=Record[3])\r
\r
EdkLogger.quiet("Checking for duplicate PCDs defined in DEC files ...")\r
SqlCommand = """\r
and B.Enabled > -1\r
and A.BelongsToFile = B.BelongsToFile\r
group by A.ID\r
- """% (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
+ """ % (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
RecordSet = EccGlobalData.gDb.TblDsc.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg = "The PCD [%s] is defined duplicated in DEC file" % (Record[1]), BelongsToTable = 'Dec', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, OtherMsg="The PCD [%s] is defined duplicated in DEC file" % (Record[1]), BelongsToTable='Dec', BelongsToItem=Record[0])\r
\r
# Check whether PCD settings in the FDF file can only be related to flash.\r
def MetaDataFileCheckPcdFlash(self):\r
where A.Model >= %s and Model < %s\r
and A.Enabled > -1\r
and A.Value2 not like '%%Flash%%'\r
- """% (MODEL_PCD, MODEL_META_DATA_HEADER)\r
+ """ % (MODEL_PCD, MODEL_META_DATA_HEADER)\r
RecordSet = EccGlobalData.gDb.TblFdf.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_FLASH, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_FLASH, OtherMsg = "The PCD [%s] defined in FDF file is not related to Flash" % (Record[1]), BelongsToTable = 'Fdf', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_FLASH, OtherMsg="The PCD [%s] defined in FDF file is not related to Flash" % (Record[1]), BelongsToTable='Fdf', BelongsToItem=Record[0])\r
\r
# Check whether PCDs used in Inf files but not specified in Dsc or FDF files\r
def MetaDataFileCheckPcdNoUse(self):\r
(select Value2 from Fdf as C\r
where C.Model >= %s and C.Model < %s\r
and C.Enabled > -1)\r
- """% (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
+ """ % (MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER, MODEL_PCD, MODEL_META_DATA_HEADER)\r
RecordSet = EccGlobalData.gDb.TblInf.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_NO_USE, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_NO_USE, OtherMsg = "The PCD [%s] defined in INF file is not specified in either DSC or FDF files" % (Record[1]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_NO_USE, OtherMsg="The PCD [%s] defined in INF file is not specified in either DSC or FDF files" % (Record[1]), BelongsToTable='Inf', BelongsToItem=Record[0])\r
\r
# Check whether having duplicate guids defined for Guid/Protocol/Ppi\r
def MetaDataFileCheckGuidDuplicate(self):\r
Path = Path.upper().replace('\X64', '').replace('\IA32', '').replace('\EBC', '').replace('\IPF', '').replace('\ARM', '')\r
if Path in InfPathList:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_NO_USE, Record[2]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_NO_USE, OtherMsg = "The source file [%s] is existing in module directory but it is not described in INF file." % (Record[2]), BelongsToTable = 'File', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_NO_USE, OtherMsg="The source file [%s] is existing in module directory but it is not described in INF file." % (Record[2]), BelongsToTable='File', BelongsToItem=Record[0])\r
\r
# Check whether the PCD is correctly used in C function via its type\r
def MetaDataFileCheckPcdType(self):\r
select ID from File where FullPath in\r
(select B.Path || '\\' || A.Value1 from INF as A, File as B where A.Model = %s and A.BelongsToFile = %s\r
and B.ID = %s and (B.Model = %s or B.Model = %s))\r
- """ %(MODEL_EFI_SOURCE_FILE, BelongsToFile, BelongsToFile, MODEL_FILE_C, MODEL_FILE_H)\r
+ """ % (MODEL_EFI_SOURCE_FILE, BelongsToFile, BelongsToFile, MODEL_FILE_C, MODEL_FILE_H)\r
TableSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Tbl in TableSet:\r
TblName = 'Identifier' + str(Tbl[0])\r
FunName = Record[0]\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, FunName):\r
if Model in [MODEL_PCD_FIXED_AT_BUILD] and not FunName.startswith('FixedPcdGet'):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, OtherMsg = "The pcd '%s' is defined as a FixPcd but now it is called by c function [%s]" % (PcdName, FunName), BelongsToTable = TblName, BelongsToItem = Record[1])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, OtherMsg="The pcd '%s' is defined as a FixPcd but now it is called by c function [%s]" % (PcdName, FunName), BelongsToTable=TblName, BelongsToItem=Record[1])\r
if Model in [MODEL_PCD_FEATURE_FLAG] and (not FunName.startswith('FeaturePcdGet') and not FunName.startswith('FeaturePcdSet')):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, OtherMsg = "The pcd '%s' is defined as a FeaturePcd but now it is called by c function [%s]" % (PcdName, FunName), BelongsToTable = TblName, BelongsToItem = Record[1])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, OtherMsg="The pcd '%s' is defined as a FeaturePcd but now it is called by c function [%s]" % (PcdName, FunName), BelongsToTable=TblName, BelongsToItem=Record[1])\r
if Model in [MODEL_PCD_PATCHABLE_IN_MODULE] and (not FunName.startswith('PatchablePcdGet') and not FunName.startswith('PatchablePcdSet')):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, OtherMsg = "The pcd '%s' is defined as a PatchablePcd but now it is called by c function [%s]" % (PcdName, FunName), BelongsToTable = TblName, BelongsToItem = Record[1])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_PCD_TYPE, OtherMsg="The pcd '%s' is defined as a PatchablePcd but now it is called by c function [%s]" % (PcdName, FunName), BelongsToTable=TblName, BelongsToItem=Record[1])\r
\r
#ERROR_META_DATA_FILE_CHECK_PCD_TYPE\r
pass\r
if InfPath1 and InfPath2:\r
if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_GUID_DUPLICATION, InfPath1):\r
Msg = "The FILE_GUID of INF file [%s] is duplicated with that of %s" % (InfPath1, InfPath2)\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_GUID_DUPLICATION, OtherMsg = Msg, BelongsToTable = Table.Table, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_GUID_DUPLICATION, OtherMsg=Msg, BelongsToTable=Table.Table, BelongsToItem=Record[0])\r
\r
\r
# Check whether these is duplicate Guid/Ppi/Protocol name\r
select A.ID, A.Value1 from %s as A, %s as B\r
where A.Model = %s and B.Model = %s\r
and A.Value1 = B.Value1 and A.ID <> B.ID\r
+ and A.Arch = B.Arch\r
and A.Enabled > -1\r
and B.Enabled > -1\r
group by A.ID\r
RecordSet = Table.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not EccGlobalData.gException.IsException(ErrorID, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ErrorID, OtherMsg = "The %s name [%s] is defined more than one time" % (Name.upper(), Record[1]), BelongsToTable = Table.Table, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ErrorID, OtherMsg="The %s name [%s] is defined more than one time" % (Name.upper(), Record[1]), BelongsToTable=Table.Table, BelongsToItem=Record[0])\r
\r
# Check whether these is duplicate Guid/Ppi/Protocol value\r
def CheckGuidProtocolPpiValue(self, ErrorID, Model):\r
select A.ID, A.Value2 from %s as A, %s as B\r
where A.Model = %s and B.Model = %s\r
and A.Value2 = B.Value2 and A.ID <> B.ID\r
+ and A.Arch = B.Arch\r
group by A.ID\r
""" % (Table.Table, Table.Table, Model, Model)\r
RecordSet = Table.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not EccGlobalData.gException.IsException(ErrorID, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ErrorID, OtherMsg = "The %s value [%s] is used more than one time" % (Name.upper(), Record[1]), BelongsToTable = Table.Table, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ErrorID, OtherMsg="The %s value [%s] is used more than one time" % (Name.upper(), Record[1]), BelongsToTable=Table.Table, BelongsToItem=Record[0])\r
\r
# Naming Convention Check\r
def NamingConventionCheck(self):\r
if EccGlobalData.gConfig.NamingConventionCheckDefineStatement == '1' or EccGlobalData.gConfig.NamingConventionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':\r
EdkLogger.quiet("Checking naming covention of #define statement ...")\r
\r
- SqlCommand = """select ID, Value from %s where Model = %s""" %(FileTable, MODEL_IDENTIFIER_MACRO_DEFINE)\r
+ SqlCommand = """select ID, Value from %s where Model = %s""" % (FileTable, MODEL_IDENTIFIER_MACRO_DEFINE)\r
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Record in RecordSet:\r
Name = Record[1].strip().split()[1]\r
Name = Name[0:Name.find('(')]\r
if Name.upper() != Name:\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_DEFINE_STATEMENT, Name):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_DEFINE_STATEMENT, OtherMsg = "The #define name [%s] does not follow the rules" % (Name), BelongsToTable = FileTable, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_DEFINE_STATEMENT, OtherMsg="The #define name [%s] does not follow the rules" % (Name), BelongsToTable=FileTable, BelongsToItem=Record[0])\r
\r
# Check whether only capital letters are used for typedef declarations\r
def NamingConventionCheckTypedefStatement(self, FileTable):\r
if EccGlobalData.gConfig.NamingConventionCheckTypedefStatement == '1' or EccGlobalData.gConfig.NamingConventionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':\r
EdkLogger.quiet("Checking naming covention of #typedef statement ...")\r
\r
- SqlCommand = """select ID, Name from %s where Model = %s""" %(FileTable, MODEL_IDENTIFIER_TYPEDEF)\r
+ SqlCommand = """select ID, Name from %s where Model = %s""" % (FileTable, MODEL_IDENTIFIER_TYPEDEF)\r
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Record in RecordSet:\r
Name = Record[1].strip()\r
Name = Name.replace('*', '').strip()\r
if Name.upper() != Name:\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_TYPEDEF_STATEMENT, Name):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_TYPEDEF_STATEMENT, OtherMsg = "The #typedef name [%s] does not follow the rules" % (Name), BelongsToTable = FileTable, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_TYPEDEF_STATEMENT, OtherMsg="The #typedef name [%s] does not follow the rules" % (Name), BelongsToTable=FileTable, BelongsToItem=Record[0])\r
\r
# Check whether the #ifndef at the start of an include file uses both prefix and postfix underscore characters, '_'.\r
def NamingConventionCheckIfndefStatement(self, FileTable):\r
if EccGlobalData.gConfig.NamingConventionCheckTypedefStatement == '1' or EccGlobalData.gConfig.NamingConventionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':\r
EdkLogger.quiet("Checking naming covention of #ifndef statement ...")\r
\r
- SqlCommand = """select ID, Value from %s where Model = %s""" %(FileTable, MODEL_IDENTIFIER_MACRO_IFNDEF)\r
+ SqlCommand = """select ID, Value from %s where Model = %s""" % (FileTable, MODEL_IDENTIFIER_MACRO_IFNDEF)\r
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Record in RecordSet:\r
Name = Record[1].replace('#ifndef', '').strip()\r
if Name[0] != '_' or Name[-1] != '_':\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_IFNDEF_STATEMENT, Name):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_IFNDEF_STATEMENT, OtherMsg = "The #ifndef name [%s] does not follow the rules" % (Name), BelongsToTable = FileTable, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_IFNDEF_STATEMENT, OtherMsg="The #ifndef name [%s] does not follow the rules" % (Name), BelongsToTable=FileTable, BelongsToItem=Record[0])\r
\r
# Rule for path name, variable name and function name\r
# 1. First character should be upper case\r
for Record in RecordSet:\r
if not Pattern.match(Record[1]):\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_PATH_NAME, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_PATH_NAME, OtherMsg = "The file path [%s] does not follow the rules" % (Record[1]), BelongsToTable = 'File', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_PATH_NAME, OtherMsg="The file path [%s] does not follow the rules" % (Record[1]), BelongsToTable='File', BelongsToItem=Record[0])\r
\r
# Rule for path name, variable name and function name\r
# 1. First character should be upper case\r
EdkLogger.quiet("Checking naming covention of variable name ...")\r
Pattern = re.compile(r'^[A-Zgm]+\S*[a-z]\S*$')\r
\r
- SqlCommand = """select ID, Name from %s where Model = %s""" %(FileTable, MODEL_IDENTIFIER_VARIABLE)\r
+ SqlCommand = """select ID, Name from %s where Model = %s""" % (FileTable, MODEL_IDENTIFIER_VARIABLE)\r
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Record in RecordSet:\r
if not Pattern.match(Record[1]):\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_VARIABLE_NAME, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_VARIABLE_NAME, OtherMsg = "The variable name [%s] does not follow the rules" % (Record[1]), BelongsToTable = FileTable, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_VARIABLE_NAME, OtherMsg="The variable name [%s] does not follow the rules" % (Record[1]), BelongsToTable=FileTable, BelongsToItem=Record[0])\r
\r
# Rule for path name, variable name and function name\r
# 1. First character should be upper case\r
for Record in RecordSet:\r
if not Pattern.match(Record[1]):\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_FUNCTION_NAME, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_FUNCTION_NAME, OtherMsg = "The function name [%s] does not follow the rules" % (Record[1]), BelongsToTable = 'Function', BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_FUNCTION_NAME, OtherMsg="The function name [%s] does not follow the rules" % (Record[1]), BelongsToTable='Function', BelongsToItem=Record[0])\r
\r
# Check whether NO use short variable name with single character\r
def NamingConventionCheckSingleCharacterVariable(self, FileTable):\r
if EccGlobalData.gConfig.NamingConventionCheckSingleCharacterVariable == '1' or EccGlobalData.gConfig.NamingConventionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':\r
EdkLogger.quiet("Checking naming covention of single character variable name ...")\r
\r
- SqlCommand = """select ID, Name from %s where Model = %s""" %(FileTable, MODEL_IDENTIFIER_VARIABLE)\r
+ SqlCommand = """select ID, Name from %s where Model = %s""" % (FileTable, MODEL_IDENTIFIER_VARIABLE)\r
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
for Record in RecordSet:\r
Variable = Record[1].replace('*', '')\r
if len(Variable) == 1:\r
if not EccGlobalData.gException.IsException(ERROR_NAMING_CONVENTION_CHECK_SINGLE_CHARACTER_VARIABLE, Record[1]):\r
- EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_SINGLE_CHARACTER_VARIABLE, OtherMsg = "The variable name [%s] does not follow the rules" % (Record[1]), BelongsToTable = FileTable, BelongsToItem = Record[0])\r
+ EccGlobalData.gDb.TblReport.Insert(ERROR_NAMING_CONVENTION_CHECK_SINGLE_CHARACTER_VARIABLE, OtherMsg="The variable name [%s] does not follow the rules" % (Record[1]), BelongsToTable=FileTable, BelongsToItem=Record[0])\r
\r
##\r
#\r
Line = Line.strip()\r
# Remove comment block\r
if Line.find(TAB_COMMENT_EDK_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
+ ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0]\r
IsFindBlockComment = True\r
if Line.find(TAB_COMMENT_EDK_END) > -1:\r
- Line = ReservedLine + GetSplitValueList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
def SetFileBufferPos(self, Pos):\r
(self.CurrentLineNumber, self.CurrentOffsetWithinLine) = Pos\r
\r
+ ## Preprocess() method\r
+ #\r
+ # Preprocess comment, conditional directive, include directive, replace macro.\r
+ # Exception will be raised if syntax error found\r
+ #\r
+ # @param self The object pointer\r
+ #\r
+ def Preprocess(self):\r
+ self.__StringToList()\r
+ self.PreprocessFile()\r
+ self.PreprocessIncludeFile()\r
+ self.__StringToList()\r
+ self.PreprocessFile()\r
+ self.PreprocessConditionalStatement()\r
+ self.__StringToList()\r
+ for Pos in self.__WipeOffArea:\r
+ self.__ReplaceFragment(Pos[0], Pos[1])\r
+ self.Profile.FileLinesList = ["".join(list) for list in self.Profile.FileLinesList]\r
+\r
+ while self.__GetDefines():\r
+ pass\r
+ \r
+ Index = 0\r
+ while Index < len(self.Profile.FileLinesList):\r
+ FileLineTuple = GetRealFileLine(self.FileName, Index + 1)\r
+ self.Profile.FileLinesList[Index] = self.__ReplaceMacros(self.Profile.FileLinesList[Index], FileLineTuple[0], FileLineTuple[1])\r
+ Index += 1\r
+\r
## ParseFile() method\r
#\r
# Parse the file profile buffer to extract fd, fv ... information\r
def ParseFile(self):\r
\r
try:\r
- self.__StringToList()\r
- self.PreprocessFile()\r
- self.PreprocessIncludeFile()\r
- self.__StringToList()\r
- self.PreprocessFile()\r
- self.PreprocessConditionalStatement()\r
- self.__StringToList()\r
- for Pos in self.__WipeOffArea:\r
- self.__ReplaceFragment(Pos[0], Pos[1])\r
- self.Profile.FileLinesList = ["".join(list) for list in self.Profile.FileLinesList]\r
-\r
- while self.__GetDefines():\r
- pass\r
- \r
- Index = 0\r
- while Index < len(self.Profile.FileLinesList):\r
- FileLineTuple = GetRealFileLine(self.FileName, Index + 1)\r
- self.Profile.FileLinesList[Index] = self.__ReplaceMacros(self.Profile.FileLinesList[Index], FileLineTuple[0], FileLineTuple[1])\r
- Index += 1\r
-\r
+ self.Preprocess()\r
while self.__GetFd():\r
pass\r
\r
# Remove comment block\r
#\r
if Line.find(DataType.TAB_COMMENT_EDK1_START) > -1:\r
- ReservedLine = GetSplitValueList(Line, DataType.TAB_COMMENT_EDK1_START, 1)[0]\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 + GetSplitValueList(Line, DataType.TAB_COMMENT_EDK1_END, 1)[1]\r
+ Line = ReservedLine + GetSplitList(Line, DataType.TAB_COMMENT_EDK1_END, 1)[1]\r
ReservedLine = ''\r
IsFindBlockComment = False\r
if IsFindBlockComment:\r
if len(ValueList) == 2:\r
Type = ValueList[1]\r
TypeList = GetSplitValueList(Type, ' ')\r
+ TypeList = [Type for Type in TypeList if Type != '']\r
for Item in TypeList:\r
if Item not in DT.MODULE_LIST:\r
ErrorInInf(ST.ERR_INF_PARSER_DEFINE_FROMAT_INVALID%(Item),\r