]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
BaseTools: Support build options for specific module type in DSC.
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / WorkspaceDatabase.py
index 14cd22d064113e3eea5506f6dadf4b5a20401d11..1371bb02891eb994abe1f3a5c1b5c791aaded310 100644 (file)
@@ -147,6 +147,7 @@ class DscBuildData(PlatformBuildClassObject):
         self._Pcds              = None\r
         self._DecPcds           = None\r
         self._BuildOptions      = None\r
+        self._ModuleTypeOptions = None\r
         self._LoadFixAddress    = None\r
         self._RFCLanguages      = None\r
         self._ISOLanguages      = None\r
@@ -767,6 +768,19 @@ class DscBuildData(PlatformBuildClassObject):
                 self._BuildOptions[ToolChainFamily, ToolChain, EDK_NAME] = Option\r
         return self._BuildOptions\r
 \r
+    def GetBuildOptionsByModuleType(self, Edk, ModuleType):\r
+        if self._ModuleTypeOptions == None:\r
+            self._ModuleTypeOptions = sdict()\r
+        if (Edk, ModuleType) not in self._ModuleTypeOptions:\r
+            options = sdict()\r
+            self._ModuleTypeOptions[Edk, ModuleType] = options\r
+            DriverType = '%s.%s' % (Edk, ModuleType)\r
+            RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, DriverType]\r
+            for ToolChainFamily, ToolChain, Option, Arch, Type, Dummy3, Dummy4 in RecordList:\r
+                if Arch == self._Arch and Type == DriverType:\r
+                    options[ToolChainFamily, ToolChain, Edk] = Option\r
+        return self._ModuleTypeOptions[Edk, ModuleType]\r
+\r
     ## Retrieve non-dynamic PCD settings\r
     #\r
     #   @param  Type    PCD type\r