]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Eot/c.py
BaseTools: Use absolute import in Eot
[mirror_edk2.git] / BaseTools / Source / Python / Eot / c.py
index 8b11ed378f0e74cd1e4fa8fed5877b04c1e1c9ae..4f0b58a52c79ebc1eb0f26d1de664caec414c60c 100644 (file)
@@ -1,9 +1,9 @@
 ## @file\r
 # preprocess source file\r
 #\r
-#  Copyright (c) 2007 - 2010, Intel Corporation\r
+#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  All rights reserved. This program and the accompanying materials\r
+#  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
 #  which accompanies this distribution.  The full text of the license may be found at\r
 #  http://opensource.org/licenses/bsd-license.php\r
 ##\r
 # Import Modules\r
 #\r
+from __future__ import print_function\r
+from __future__ import absolute_import\r
 import sys\r
-import os\r
+import Common.LongFilePathOs as os\r
 import re\r
-import CodeFragmentCollector\r
-import FileProfile\r
+from . import CodeFragmentCollector\r
+from . import FileProfile\r
 from CommonDataClass import DataClass\r
 from Common import EdkLogger\r
-from EotToolError import *\r
-import EotGlobalData\r
+from .EotToolError import *\r
+from . import EotGlobalData\r
 \r
 # Global Dicts\r
 IncludeFileListDict = {}\r
@@ -31,16 +33,6 @@ IncludePathListDict = {}
 ComplexTypeDict = {}\r
 SUDict = {}\r
 \r
-## GetIgnoredDirListPattern() method\r
-#\r
-#  Get the pattern of ignored direction list\r
-#\r
-#  @return p:    the pattern of ignored direction list\r
-#\r
-def GetIgnoredDirListPattern():\r
-    p = re.compile(r'.*[\\/](?:BUILD|INTELRESTRICTEDTOOLS|INTELRESTRICTEDPKG|PCCTS)[\\/].*')\r
-    return p\r
-\r
 ## GetFuncDeclPattern() method\r
 #\r
 #  Get the pattern of function declaration\r
@@ -137,11 +129,11 @@ def GetIdentifierList():
 \r
     for pp in FileProfile.PPDirectiveList:\r
         Type = GetIdType(pp.Content)\r
-        IdPP = DataClass.IdentifierClass(-1, '', '', '', pp.Content, Type, -1, -1, pp.StartPos[0],pp.StartPos[1],pp.EndPos[0],pp.EndPos[1])\r
+        IdPP = DataClass.IdentifierClass(-1, '', '', '', pp.Content, Type, -1, -1, pp.StartPos[0], pp.StartPos[1], pp.EndPos[0], pp.EndPos[1])\r
         IdList.append(IdPP)\r
 \r
     for ae in FileProfile.AssignmentExpressionList:\r
-        IdAE = DataClass.IdentifierClass(-1, ae.Operator, '', ae.Name, ae.Value, DataClass.MODEL_IDENTIFIER_ASSIGNMENT_EXPRESSION, -1, -1, ae.StartPos[0],ae.StartPos[1],ae.EndPos[0],ae.EndPos[1])\r
+        IdAE = DataClass.IdentifierClass(-1, ae.Operator, '', ae.Name, ae.Value, DataClass.MODEL_IDENTIFIER_ASSIGNMENT_EXPRESSION, -1, -1, ae.StartPos[0], ae.StartPos[1], ae.EndPos[0], ae.EndPos[1])\r
         IdList.append(IdAE)\r
 \r
     FuncDeclPattern = GetFuncDeclPattern()\r
@@ -163,7 +155,7 @@ def GetIdentifierList():
                     var.Modifier += ' ' + FuncNamePartList[Index]\r
                     var.Declarator = var.Declarator.lstrip().lstrip(FuncNamePartList[Index])\r
                     Index += 1\r
-            IdVar = DataClass.IdentifierClass(-1, var.Modifier, '', var.Declarator, '', DataClass.MODEL_IDENTIFIER_FUNCTION_DECLARATION, -1, -1, var.StartPos[0],var.StartPos[1],var.EndPos[0],var.EndPos[1])\r
+            IdVar = DataClass.IdentifierClass(-1, var.Modifier, '', var.Declarator, '', DataClass.MODEL_IDENTIFIER_FUNCTION_DECLARATION, -1, -1, var.StartPos[0], var.StartPos[1], var.EndPos[0], var.EndPos[1])\r
             IdList.append(IdVar)\r
             continue\r
 \r
@@ -176,7 +168,7 @@ def GetIdentifierList():
                     var.Modifier += ' ' + Name[LSBPos:]\r
                     Name = Name[0:LSBPos]\r
 \r
-                IdVar = DataClass.IdentifierClass(-1, var.Modifier, '', Name, (len(DeclList) > 1 and [DeclList[1]]or [''])[0], DataClass.MODEL_IDENTIFIER_VARIABLE, -1, -1, var.StartPos[0],var.StartPos[1],var.EndPos[0],var.EndPos[1])\r
+                IdVar = DataClass.IdentifierClass(-1, var.Modifier, '', Name, (len(DeclList) > 1 and [DeclList[1]]or [''])[0], DataClass.MODEL_IDENTIFIER_VARIABLE, -1, -1, var.StartPos[0], var.StartPos[1], var.EndPos[0], var.EndPos[1])\r
                 IdList.append(IdVar)\r
         else:\r
             DeclList = var.Declarator.split('=')\r
@@ -185,7 +177,7 @@ def GetIdentifierList():
                 LSBPos = var.Declarator.find('[')\r
                 var.Modifier += ' ' + Name[LSBPos:]\r
                 Name = Name[0:LSBPos]\r
-            IdVar = DataClass.IdentifierClass(-1, var.Modifier, '', Name, (len(DeclList) > 1 and [DeclList[1]]or [''])[0], DataClass.MODEL_IDENTIFIER_VARIABLE, -1, -1, var.StartPos[0],var.StartPos[1],var.EndPos[0],var.EndPos[1])\r
+            IdVar = DataClass.IdentifierClass(-1, var.Modifier, '', Name, (len(DeclList) > 1 and [DeclList[1]]or [''])[0], DataClass.MODEL_IDENTIFIER_VARIABLE, -1, -1, var.StartPos[0], var.StartPos[1], var.EndPos[0], var.EndPos[1])\r
             IdList.append(IdVar)\r
 \r
     for enum in FileProfile.EnumerationDefinitionList:\r
@@ -193,7 +185,7 @@ def GetIdentifierList():
         RBPos = enum.Content.find('}')\r
         Name = enum.Content[4:LBPos].strip()\r
         Value = enum.Content[LBPos+1:RBPos]\r
-        IdEnum = DataClass.IdentifierClass(-1, '', '', Name, Value, DataClass.MODEL_IDENTIFIER_ENUMERATE, -1, -1, enum.StartPos[0],enum.StartPos[1],enum.EndPos[0],enum.EndPos[1])\r
+        IdEnum = DataClass.IdentifierClass(-1, '', '', Name, Value, DataClass.MODEL_IDENTIFIER_ENUMERATE, -1, -1, enum.StartPos[0], enum.StartPos[1], enum.EndPos[0], enum.EndPos[1])\r
         IdList.append(IdEnum)\r
 \r
     for su in FileProfile.StructUnionDefinitionList:\r
@@ -210,7 +202,7 @@ def GetIdentifierList():
         else:\r
             Name = su.Content[SkipLen:LBPos].strip()\r
             Value = su.Content[LBPos+1:RBPos]\r
-        IdPE = DataClass.IdentifierClass(-1, '', '', Name, Value, Type, -1, -1, su.StartPos[0],su.StartPos[1],su.EndPos[0],su.EndPos[1])\r
+        IdPE = DataClass.IdentifierClass(-1, '', '', Name, Value, Type, -1, -1, su.StartPos[0], su.StartPos[1], su.EndPos[0], su.EndPos[1])\r
         IdList.append(IdPE)\r
 \r
     TdFuncPointerPattern = GetTypedefFuncPointerPattern()\r
@@ -233,11 +225,11 @@ def GetIdentifierList():
             Name = TmpStr[0:RBPos]\r
             Value = 'FP' + TmpStr[RBPos + 1:]\r
 \r
-        IdTd = DataClass.IdentifierClass(-1, Modifier, '', Name, Value, DataClass.MODEL_IDENTIFIER_TYPEDEF, -1, -1, td.StartPos[0],td.StartPos[1],td.EndPos[0],td.EndPos[1])\r
+        IdTd = DataClass.IdentifierClass(-1, Modifier, '', Name, Value, DataClass.MODEL_IDENTIFIER_TYPEDEF, -1, -1, td.StartPos[0], td.StartPos[1], td.EndPos[0], td.EndPos[1])\r
         IdList.append(IdTd)\r
 \r
     for funcCall in FileProfile.FunctionCallingList:\r
-        IdFC = DataClass.IdentifierClass(-1, '', '', funcCall.FuncName, funcCall.ParamList, DataClass.MODEL_IDENTIFIER_FUNCTION_CALLING, -1, -1, funcCall.StartPos[0],funcCall.StartPos[1],funcCall.EndPos[0],funcCall.EndPos[1])\r
+        IdFC = DataClass.IdentifierClass(-1, '', '', funcCall.FuncName, funcCall.ParamList, DataClass.MODEL_IDENTIFIER_FUNCTION_CALLING, -1, -1, funcCall.StartPos[0], funcCall.StartPos[1], funcCall.EndPos[0], funcCall.EndPos[1])\r
         IdList.append(IdFC)\r
     return IdList\r
 \r
@@ -339,7 +331,7 @@ def GetFunctionList():
                 FuncDef.Modifier += ' ' + FuncNamePartList[Index]\r
                 Index += 1\r
 \r
-        FuncObj = DataClass.FunctionClass(-1, FuncDef.Declarator, FuncDef.Modifier, FuncName.strip(), '', FuncDef.StartPos[0],FuncDef.StartPos[1],FuncDef.EndPos[0],FuncDef.EndPos[1], FuncDef.LeftBracePos[0], FuncDef.LeftBracePos[1], -1, ParamIdList, [])\r
+        FuncObj = DataClass.FunctionClass(-1, FuncDef.Declarator, FuncDef.Modifier, FuncName.strip(), '', FuncDef.StartPos[0], FuncDef.StartPos[1], FuncDef.EndPos[0], FuncDef.EndPos[1], FuncDef.LeftBracePos[0], FuncDef.LeftBracePos[1], -1, ParamIdList, [])\r
         FuncObjList.append(FuncObj)\r
 \r
     return FuncObjList\r
@@ -353,9 +345,12 @@ def GetFunctionList():
 def CreateCCodeDB(FileNameList):\r
     FileObjList = []\r
     ParseErrorFileList = []\r
-\r
+    ParsedFiles = {}\r
     for FullName in FileNameList:\r
         if os.path.splitext(FullName)[1] in ('.h', '.c'):\r
+            if FullName.lower() in ParsedFiles:\r
+                continue\r
+            ParsedFiles[FullName.lower()] = 1\r
             EdkLogger.info("Parsing " + FullName)\r
             model = FullName.endswith('c') and DataClass.MODEL_FILE_C or DataClass.MODEL_FILE_H\r
             collector = CodeFragmentCollector.CodeFragmentCollector(FullName)\r
@@ -391,4 +386,4 @@ if __name__ == '__main__':
     EdkLogger.SetLevel(EdkLogger.QUIET)\r
     CollectSourceCodeDataIntoDB(sys.argv[1])\r
 \r
-    print 'Done!'\r
+    print('Done!')\r