]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: Update Build tool to support multiple workspaces
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 259abc519b00258600b28db1a38f8eb4a2478ab6..fe565743576bd6bd7688e4e454a60dde1583a3d1 100644 (file)
@@ -40,7 +40,7 @@ from GenPatchPcdTable.GenPatchPcdTable import parsePcdInfoFromMapFile
 import Common.VpdInfoFile as VpdInfoFile\r
 from GenPcdDb import CreatePcdDatabaseCode\r
 from Workspace.MetaFileCommentParser import UsageList\r
-\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
 import InfSectionParser\r
 \r
 ## Regular expression for splitting Dependency Expression string into tokens\r
@@ -953,7 +953,7 @@ class PlatformAutoGen(AutoGen):
         self._GuidValue = {}\r
         FdfModuleList = []\r
         for InfName in self._AsBuildInfList:\r
-            InfName = os.path.join(self.WorkspaceDir, InfName)\r
+            InfName = mws.join(self.WorkspaceDir, InfName)\r
             FdfModuleList.append(os.path.normpath(InfName))\r
         for F in self.Platform.Modules.keys():\r
             M = ModuleAutoGen(self.Workspace, F, self.BuildTarget, self.ToolChain, self.Arch, self.MetaFile)\r
@@ -1288,7 +1288,7 @@ class PlatformAutoGen(AutoGen):
     def _GetFdfFile(self):\r
         if self._FdfFile == None:\r
             if self.Workspace.FdfFile != "":\r
-                self._FdfFile= path.join(self.WorkspaceDir, self.Workspace.FdfFile)\r
+                self._FdfFile= mws.join(self.WorkspaceDir, self.Workspace.FdfFile)\r
             else:\r
                 self._FdfFile = ''\r
         return self._FdfFile\r
@@ -2115,8 +2115,11 @@ class PlatformAutoGen(AutoGen):
                         BuildOptions[Tool][Attr] = ""\r
                     # check if override is indicated\r
                     if Value.startswith('='):\r
-                        BuildOptions[Tool][Attr] = Value[1:]\r
+                        ToolPath = Value[1:]\r
+                        ToolPath = mws.handleWsMacro(ToolPath)\r
+                        BuildOptions[Tool][Attr] = ToolPath\r
                     else:\r
+                        Value = mws.handleWsMacro(Value)\r
                         BuildOptions[Tool][Attr] += " " + Value\r
         if Module.AutoGenVersion < 0x00010005 and self.Workspace.UniFlag != None:\r
             #\r
@@ -2193,8 +2196,7 @@ class ModuleAutoGen(AutoGen):
             return False\r
 \r
         self.SourceDir = self.MetaFile.SubDir\r
-        if self.SourceDir.upper().find(self.WorkspaceDir.upper()) == 0:\r
-            self.SourceDir = self.SourceDir[len(self.WorkspaceDir) + 1:]\r
+        self.SourceDir = mws.relpath(self.SourceDir, self.WorkspaceDir)\r
 \r
         self.SourceOverrideDir = None\r
         # use overrided path defined in DSC file\r
@@ -3042,7 +3044,7 @@ class ModuleAutoGen(AutoGen):
                 self._IncludePathList.append(self.DebugDir)\r
 \r
             for Package in self.Module.Packages:\r
-                PackageDir = path.join(self.WorkspaceDir, Package.MetaFile.Dir)\r
+                PackageDir = mws.join(self.WorkspaceDir, Package.MetaFile.Dir)\r
                 if PackageDir not in self._IncludePathList:\r
                     self._IncludePathList.append(PackageDir)\r
                 for Inc in Package.Includes:\r