]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: Support multiple .h file
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 0f7454f55a7ab7624e264916b8742cc9880a7a9b..1cf50e872fcd0f695bcdce1b2596000d5a4c367e 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # Generate AutoGen.h, AutoGen.c and *.depex files\r
 #\r
-# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -318,8 +318,8 @@ class WorkspaceAutoGen(AutoGen):
 \r
         EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile)\r
 \r
-        if Progress:\r
-            Progress.Start("\nProcessing meta-data")\r
+        if Progress:\r
+            Progress.Start("\nProcessing meta-data")\r
 \r
         if self.FdfFile:\r
             #\r
@@ -1245,6 +1245,7 @@ class PlatformAutoGen(AutoGen):
         # get the original module/package/platform objects\r
         self.BuildDatabase = Workspace.BuildDatabase\r
         self.DscBuildDataObj = Workspace.Platform\r
+        self._GuidDict = Workspace._GuidDict\r
 \r
         # flag indicating if the makefile/C-code file has been created or not\r
         self.IsMakeFileCreated  = False\r
@@ -1406,7 +1407,7 @@ class PlatformAutoGen(AutoGen):
                     VariableGuidStructure = Sku.VariableGuidValue\r
                     VariableGuid = GuidStructureStringToGuidString(VariableGuidStructure)\r
                     for StorageName in Sku.DefaultStoreDict:\r
-                        VariableInfo.append_variable(var_info(Index,pcdname,StorageName,SkuName, StringToArray(Sku.VariableName),VariableGuid, Sku.VariableAttribute , Sku.HiiDefaultValue,Sku.DefaultStoreDict[StorageName],Pcd.DatumType))\r
+                        VariableInfo.append_variable(var_info(Index,pcdname,StorageName,SkuName, StringToArray(Sku.VariableName),VariableGuid, Sku.VariableOffset, Sku.VariableAttribute , Sku.HiiDefaultValue,Sku.DefaultStoreDict[StorageName],Pcd.DatumType))\r
             Index += 1\r
         return VariableInfo\r
 \r
@@ -1746,14 +1747,12 @@ class PlatformAutoGen(AutoGen):
                         if not FoundFlag :\r
                             # just pick the a value to determine whether is unicode string type\r
                             SkuValueMap = {}\r
+                            SkuObjList = DscPcdEntry.SkuInfoList.items()\r
                             DefaultSku = DscPcdEntry.SkuInfoList.get('DEFAULT')\r
                             if DefaultSku:\r
-                                PcdValue = DefaultSku.DefaultValue\r
-                                if PcdValue not in SkuValueMap:\r
-                                    SkuValueMap[PcdValue] = []\r
-                                    VpdFile.Add(DscPcdEntry, 'DEFAULT',Sku.VpdOffset)\r
-                                SkuValueMap[PcdValue].append(Sku)\r
-                            for (SkuName,Sku) in DscPcdEntry.SkuInfoList.items():\r
+                                defaultindex = SkuObjList.index(('DEFAULT',DefaultSku))\r
+                                SkuObjList[0],SkuObjList[defaultindex] = SkuObjList[defaultindex],SkuObjList[0]\r
+                            for (SkuName,Sku) in SkuObjList:\r
                                 Sku.VpdOffset = Sku.VpdOffset.strip() \r
                                 \r
                                 # Need to iterate DEC pcd information to get the value & datumtype\r
@@ -2465,22 +2464,9 @@ class PlatformAutoGen(AutoGen):
             if FromPcd.SkuInfoList not in [None, '', []]:\r
                 ToPcd.SkuInfoList = FromPcd.SkuInfoList\r
             # Add Flexible PCD format parse\r
-            PcdValue = ToPcd.DefaultValue\r
-            if PcdValue:\r
-                try:\r
-                    ToPcd.DefaultValue = ValueExpression(PcdValue)(True)\r
-                except WrnExpression, Value:\r
-                    ToPcd.DefaultValue = Value.result\r
-                except BadExpression, Value:\r
-                    EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %(ToPcd.TokenSpaceGuidCName, ToPcd.TokenCName, ToPcd.DefaultValue, Value),\r
-                                    File=self.MetaFile)\r
             if ToPcd.DefaultValue:\r
-                _GuidDict = {}\r
-                for Pkg in self.PackageList:\r
-                    Guids = Pkg.Guids\r
-                    _GuidDict.update(Guids)\r
                 try:\r
-                    ToPcd.DefaultValue = ValueExpressionEx(ToPcd.DefaultValue, ToPcd.DatumType, _GuidDict)(True)\r
+                    ToPcd.DefaultValue = ValueExpressionEx(ToPcd.DefaultValue, ToPcd.DatumType, self._GuidDict)(True)\r
                 except BadExpression, Value:\r
                     EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %(ToPcd.TokenSpaceGuidCName, ToPcd.TokenCName, ToPcd.DefaultValue, Value),\r
                                         File=self.MetaFile)\r
@@ -4153,6 +4139,8 @@ class ModuleAutoGen(AutoGen):
             File = Item.Target.Path.replace('\\', '/').strip('/').replace(DebugDir, '').strip('/')\r
             if File not in self.OutputFile:\r
                 self.OutputFile.append(File)\r
+            if os.path.isabs(File):\r
+                File = File.replace('\\', '/').strip('/').replace(OutputDir, '').strip('/')\r
             if Item.Target.Ext.lower() == '.aml':\r
                 AsBuiltInfDict['binary_item'] += ['ASL|' + File]\r
             elif Item.Target.Ext.lower() == '.acpi':\r