]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
BaseTools: Fixed a bug that Build Report always uses DEC default value for VPD PCD.
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / WorkspaceDatabase.py
index 1371bb02891eb994abe1f3a5c1b5c791aaded310..9da6ac7a4164023a5b782ed03341a1fb54790978 100644 (file)
@@ -753,19 +753,24 @@ class DscBuildData(PlatformBuildClassObject):
     ## Retrieve [BuildOptions]\r
     def _GetBuildOptions(self):\r
         if self._BuildOptions == None:\r
+            OverrideTool = set()\r
             self._BuildOptions = sdict()\r
             #\r
-            # Retrieve build option for EDKII style module\r
+            # Retrieve build option for EDKII and EDK style module\r
             #\r
-            RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, EDKII_NAME]\r
-            for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3, Dummy4 in RecordList:\r
-                self._BuildOptions[ToolChainFamily, ToolChain, EDKII_NAME] = Option\r
-            #\r
-            # Retrieve build option for EDK style module\r
-            #\r
-            RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, EDK_NAME]     \r
-            for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3, Dummy4 in RecordList:\r
-                self._BuildOptions[ToolChainFamily, ToolChain, EDK_NAME] = Option\r
+            for CodeBase in (EDKII_NAME, EDK_NAME):\r
+                RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, CodeBase]\r
+                for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3, Dummy4 in RecordList:\r
+                    CurKey = (ToolChainFamily, ToolChain, CodeBase)\r
+                    if Option.startswith('='):\r
+                        OverrideTool.add(CurKey)\r
+                    #\r
+                    # Only flags can be appended\r
+                    #\r
+                    if CurKey not in self._BuildOptions or not ToolChain.endswith('_FLAGS') or CurKey in OverrideTool:\r
+                        self._BuildOptions[CurKey] = Option\r
+                    else:\r
+                        self._BuildOptions[CurKey] += ' ' + Option\r
         return self._BuildOptions\r
 \r
     def GetBuildOptionsByModuleType(self, Edk, ModuleType):\r
@@ -773,12 +778,19 @@ class DscBuildData(PlatformBuildClassObject):
             self._ModuleTypeOptions = sdict()\r
         if (Edk, ModuleType) not in self._ModuleTypeOptions:\r
             options = sdict()\r
+            OverrideTool = set()\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
+                    Key = (ToolChainFamily, ToolChain, Edk)\r
+                    if Option.startswith('='):\r
+                        OverrideTool.add(Key)\r
+                    if Key not in options or not ToolChain.endswith('_FLAGS') or Key in OverrideTool:\r
+                        options[Key] = Option\r
+                    else:\r
+                        options[Key] += ' ' + Option\r
         return self._ModuleTypeOptions[Edk, ModuleType]\r
 \r
     ## Retrieve non-dynamic PCD settings\r
@@ -1130,7 +1142,7 @@ class DscBuildData(PlatformBuildClassObject):
                                                 TokenSpaceGuid,\r
                                                 self._PCD_TYPE_STRING_[Type],\r
                                                 '',\r
-                                                '',\r
+                                                InitialValue,\r
                                                 '',\r
                                                 MaxDatumSize,\r
                                                 {SkuName : SkuInfo},\r
@@ -2007,7 +2019,7 @@ class InfBuildData(ModuleBuildClassObject):
             if self._Header_ == None:\r
                 self._GetHeaderInfo()\r
             if self._Guid == None:\r
-                self._Guid = '00000000-0000-0000-000000000000'\r
+                self._Guid = '00000000-0000-0000-0000-000000000000'\r
         return self._Guid\r
 \r
     ## Retrieve module version\r