]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/build.py
BaseTools: Add support for $(FAMILY) macro
[mirror_edk2.git] / BaseTools / Source / Python / build / build.py
index 4f859bf5a774268c62c20ee9bfc89159ec19a8d8..d9afdcc6b2dab9118e84a17fac53ee096f285e3e 100644 (file)
@@ -786,6 +786,7 @@ class Build():
             self.Db = WorkspaceDatabase(GlobalData.gDatabasePath, self.Reparse)\r
         self.BuildDatabase = self.Db.BuildObject\r
         self.Platform = None\r
+        self.ToolChainFamily = None\r
         self.LoadFixAddress = 0\r
         self.UniFlag        = BuildOptions.Flag\r
         self.BuildModules = []\r
@@ -878,6 +879,17 @@ class Build():
         else:\r
             self.ToolChainList = NewToolChainList\r
 \r
+        ToolChainFamily = []\r
+        ToolDefinition = self.ToolDef.ToolsDefTxtDatabase\r
+        for Tool in self.ToolChainList:\r
+            if TAB_TOD_DEFINES_FAMILY not in ToolDefinition or Tool not in ToolDefinition[TAB_TOD_DEFINES_FAMILY] \\r
+               or not ToolDefinition[TAB_TOD_DEFINES_FAMILY][Tool]:\r
+                EdkLogger.warn("No tool chain family found in configuration for %s. Default to MSFT." % Tool)\r
+                ToolChainFamily.append("MSFT")\r
+            else:\r
+                ToolChainFamily.append(ToolDefinition[TAB_TOD_DEFINES_FAMILY][Tool])\r
+        self.ToolChainFamily = ToolChainFamily\r
+\r
         if self.ThreadNumber == None:\r
             self.ThreadNumber = self.TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER]\r
             if self.ThreadNumber == '':\r
@@ -936,6 +948,8 @@ class Build():
         if self.ToolChainList:\r
             GlobalData.gGlobalDefines['TOOLCHAIN'] = self.ToolChainList[0]\r
             GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = self.ToolChainList[0]\r
+        if self.ToolChainFamily:\r
+            GlobalData.gGlobalDefines['FAMILY'] = self.ToolChainFamily[0]\r
         if 'PREBUILD' in GlobalData.gCommandLineDefines.keys():\r
             self.Prebuild   = GlobalData.gCommandLineDefines.get('PREBUILD')\r
         else:\r
@@ -1599,9 +1613,12 @@ class Build():
         SaveFileOnChange(self.PlatformBuildPath, '# DO NOT EDIT \n# FILE auto-generated\n', False)\r
         for BuildTarget in self.BuildTargetList:\r
             GlobalData.gGlobalDefines['TARGET'] = BuildTarget\r
+            index = 0\r
             for ToolChain in self.ToolChainList:\r
                 GlobalData.gGlobalDefines['TOOLCHAIN'] = ToolChain\r
                 GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain\r
+                GlobalData.gGlobalDefines['FAMILY'] = self.ToolChainFamily[index]\r
+                index += 1\r
                 Wa = WorkspaceAutoGen(\r
                         self.WorkspaceDir,\r
                         self.PlatformFile,\r
@@ -1679,9 +1696,12 @@ class Build():
     def _BuildModule(self):\r
         for BuildTarget in self.BuildTargetList:\r
             GlobalData.gGlobalDefines['TARGET'] = BuildTarget\r
+            index = 0\r
             for ToolChain in self.ToolChainList:\r
                 GlobalData.gGlobalDefines['TOOLCHAIN'] = ToolChain\r
                 GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain\r
+                GlobalData.gGlobalDefines['FAMILY'] = self.ToolChainFamily[index]\r
+                index += 1\r
                 #\r
                 # module build needs platform build information, so get platform\r
                 # AutoGen first\r
@@ -1773,9 +1793,12 @@ class Build():
         SaveFileOnChange(self.PlatformBuildPath, '# DO NOT EDIT \n# FILE auto-generated\n', False)\r
         for BuildTarget in self.BuildTargetList:\r
             GlobalData.gGlobalDefines['TARGET'] = BuildTarget\r
+            index = 0\r
             for ToolChain in self.ToolChainList:\r
                 GlobalData.gGlobalDefines['TOOLCHAIN'] = ToolChain\r
                 GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = ToolChain\r
+                GlobalData.gGlobalDefines['FAMILY'] = self.ToolChainFamily[index]\r
+                index += 1\r
                 Wa = WorkspaceAutoGen(\r
                         self.WorkspaceDir,\r
                         self.PlatformFile,\r