]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
BaseTools: Update Build tool to support multiple workspaces
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / GenFdsGlobalVariable.py
index f97b41b834eb6da24077319ca2a15ecb7aa4e050..5bdc1b8288a8445a7691d046ea083b66173df44e 100644 (file)
@@ -31,6 +31,7 @@ from AutoGen.BuildEngine import BuildRule
 import Common.DataType as DataType\r
 from Common.Misc import PathClass\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
+from Common.MultipleWorkspace import MultipleWorkspace as mws\r
 \r
 ## Global variables\r
 #\r
@@ -45,6 +46,7 @@ class GenFdsGlobalVariable:
     LibDir = ''\r
     WorkSpace = None\r
     WorkSpaceDir = ''\r
+    ConfDir = ''\r
     EdkSourceDir = ''\r
     OutputDirFromDscDict = {}\r
     TargetName = ''\r
@@ -88,7 +90,7 @@ class GenFdsGlobalVariable:
     def __LoadBuildRule():\r
         if GenFdsGlobalVariable.__BuildRuleDatabase:\r
             return GenFdsGlobalVariable.__BuildRuleDatabase\r
-        BuildConfigurationFile = os.path.normpath(os.path.join(GenFdsGlobalVariable.WorkSpaceDir, "Conf/target.txt"))\r
+        BuildConfigurationFile = os.path.normpath(os.path.join(GenFdsGlobalVariable.ConfDir, "target.txt"))\r
         TargetTxt = TargetTxtClassObject()\r
         if os.path.isfile(BuildConfigurationFile) == True:\r
             TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)\r
@@ -201,11 +203,13 @@ class GenFdsGlobalVariable:
 \r
         TargetList = set()\r
         FileList = []\r
-        for File in Inf.Sources:\r
-            if File.TagName in ("", "*", GenFdsGlobalVariable.ToolChainTag) and \\r
-                File.ToolChainFamily in ("", "*", GenFdsGlobalVariable.ToolChainFamily):\r
-                FileList.append((File, DataType.TAB_UNKNOWN_FILE))\r
-        \r
+\r
+        if not Inf.IsBinaryModule:\r
+            for File in Inf.Sources:\r
+                if File.TagName in ("", "*", GenFdsGlobalVariable.ToolChainTag) and \\r
+                    File.ToolChainFamily in ("", "*", GenFdsGlobalVariable.ToolChainFamily):\r
+                    FileList.append((File, DataType.TAB_UNKNOWN_FILE))\r
+\r
         for File in Inf.Binaries:\r
             if File.Target in ['COMMON', '*', GenFdsGlobalVariable.TargetName]:\r
                 FileList.append((File, File.Type))\r
@@ -319,12 +323,13 @@ class GenFdsGlobalVariable:
     #   @param  String           String that may contain macro\r
     #\r
     def ReplaceWorkspaceMacro(String):\r
+        String = mws.handleWsMacro(String)\r
         Str = String.replace('$(WORKSPACE)', GenFdsGlobalVariable.WorkSpaceDir)\r
         if os.path.exists(Str):\r
             if not os.path.isabs(Str):\r
                 Str = os.path.abspath(Str)\r
         else:\r
-            Str = os.path.join(GenFdsGlobalVariable.WorkSpaceDir, String)\r
+            Str = mws.join(GenFdsGlobalVariable.WorkSpaceDir, String)\r
         return os.path.normpath(Str)\r
 \r
     ## Check if the input files are newer than output files\r
@@ -645,7 +650,8 @@ class GenFdsGlobalVariable:
                 '$(EDK_SOURCE)'  : GenFdsGlobalVariable.EdkSourceDir,\r
 #                '$(OUTPUT_DIRECTORY)': GenFdsGlobalVariable.OutputDirFromDsc,\r
                 '$(TARGET)' : GenFdsGlobalVariable.TargetName,\r
-                '$(TOOL_CHAIN_TAG)' : GenFdsGlobalVariable.ToolChainTag\r
+                '$(TOOL_CHAIN_TAG)' : GenFdsGlobalVariable.ToolChainTag,\r
+                '$(SPACE)' : ' '\r
                }\r
         OutputDir = GenFdsGlobalVariable.OutputDirFromDscDict[GenFdsGlobalVariable.ArchList[0]]\r
         if Arch != 'COMMON' and Arch in GenFdsGlobalVariable.ArchList:\r