]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Ecc/Ecc.py
Sync BaseTool trunk (version r2474) into EDKII BaseTools.
[mirror_edk2.git] / BaseTools / Source / Python / Ecc / Ecc.py
index ab438c7e86d561fd7857e47feb395bcfc3368d38..e2e92ef6723ceeb3f2fe680c40da98dbfcf0a811 100644 (file)
@@ -22,12 +22,12 @@ from MetaDataParser import *
 from optparse import OptionParser\r
 from Configuration import Configuration\r
 from Check import Check\r
-\r
+import Common.GlobalData as GlobalData\r
 \r
 from Common.String import NormPath\r
 from Common.BuildVersion import gBUILD_VERSION\r
 from Common import BuildToolError\r
-\r
+from Common.Misc import PathClass\r
 from MetaFileWorkspace.MetaFileParser import DscParser\r
 from MetaFileWorkspace.MetaFileParser import DecParser\r
 from MetaFileWorkspace.MetaFileParser import InfParser\r
@@ -61,7 +61,41 @@ class Ecc(object):
 \r
         # Parse the options and args\r
         self.ParseOption()\r
-\r
+        \r
+        #\r
+        # Check EFI_SOURCE (Edk build convention). EDK_SOURCE will always point to ECP\r
+        #\r
+        WorkspaceDir = os.path.normcase(os.path.normpath(os.environ["WORKSPACE"]))\r
+        os.environ["WORKSPACE"] = WorkspaceDir\r
+        if "ECP_SOURCE" not in os.environ:\r
+            os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)\r
+        if "EFI_SOURCE" not in os.environ:\r
+            os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]\r
+        if "EDK_SOURCE" not in os.environ:\r
+            os.environ["EDK_SOURCE"] = os.environ["ECP_SOURCE"]\r
+\r
+        #\r
+        # Unify case of characters on case-insensitive systems\r
+        #\r
+        EfiSourceDir = os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"]))\r
+        EdkSourceDir = os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"]))\r
+        EcpSourceDir = os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"]))\r
+        \r
+        os.environ["EFI_SOURCE"] = EfiSourceDir\r
+        os.environ["EDK_SOURCE"] = EdkSourceDir\r
+        os.environ["ECP_SOURCE"] = EcpSourceDir\r
+        \r
+        GlobalData.gWorkspace = WorkspaceDir\r
+        GlobalData.gEfiSource = EfiSourceDir\r
+        GlobalData.gEdkSource = EdkSourceDir\r
+        GlobalData.gEcpSource = EcpSourceDir\r
+\r
+        GlobalData.gGlobalDefines["WORKSPACE"]  = WorkspaceDir\r
+        GlobalData.gGlobalDefines["EFI_SOURCE"] = EfiSourceDir\r
+        GlobalData.gGlobalDefines["EDK_SOURCE"] = EdkSourceDir\r
+        GlobalData.gGlobalDefines["ECP_SOURCE"] = EcpSourceDir\r
+        \r
+        \r
         # Generate checkpoints list\r
         EccGlobalData.gConfig = Configuration(self.ConfigFile)\r
 \r
@@ -152,7 +186,7 @@ class Ecc(object):
                     EdkLogger.quiet("Parsing %s" % Filename)\r
                     Op.write("%s\r" % Filename)\r
                     #Dsc(Filename, True, True, EccGlobalData.gWorkspace, EccGlobalData.gDb)\r
-                    self.MetaFile = DscParser(Filename, MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True))\r
+                    self.MetaFile = DscParser(PathClass(Filename, Root), MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True))\r
                     # alwasy do post-process, in case of macros change\r
                     self.MetaFile.DoPostProcess()\r
                     self.MetaFile.Start()\r