From 4afd3d042215afe68d00b9ab8c32f063a3a1c03f Mon Sep 17 00:00:00 2001 From: Liming Gao Date: Fri, 23 Aug 2013 02:18:16 +0000 Subject: Sync BaseTool trunk (version r2599) into EDKII BaseTools. Signed-off-by: Liming Gao Reviewed-by: Heshen Chen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14591 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/AutoGen/AutoGen.py | 19 +++++++++++++++++-- BaseTools/Source/Python/AutoGen/GenC.py | 4 +++- BaseTools/Source/Python/AutoGen/UniClassObject.py | 12 +++++++++--- 3 files changed, 29 insertions(+), 6 deletions(-) (limited to 'BaseTools/Source/Python/AutoGen') diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 3261892bc5..6711880f60 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -293,12 +293,13 @@ class WorkspaceAutoGen(AutoGen): Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain] DecPcds = {} + DecPcdsKey = set() PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch) Pkgs = PGen.PackageList for Pkg in Pkgs: for Pcd in Pkg.Pcds: DecPcds[Pcd[0], Pcd[1]] = Pkg.Pcds[Pcd] - Platform.IsPlatformPcdDeclared(DecPcds) + DecPcdsKey.add((Pcd[0], Pcd[1], Pcd[2])) Platform.SkuName = self.SkuId for Name, Guid in PcdSet: @@ -310,7 +311,21 @@ class WorkspaceAutoGen(AutoGen): File = self.FdfProfile.PcdFileLineDict[Name, Guid][0], Line = self.FdfProfile.PcdFileLineDict[Name, Guid][1] ) - Platform.AddPcd(Name, Guid, PcdSet[Name, Guid]) + else: + # Check whether Dynamic or DynamicEx PCD used in FDF file. If used, build break and give a error message. + if (Name, Guid, TAB_PCDS_FIXED_AT_BUILD) in DecPcdsKey \ + or (Name, Guid, TAB_PCDS_PATCHABLE_IN_MODULE) in DecPcdsKey \ + or (Name, Guid, TAB_PCDS_FEATURE_FLAG) in DecPcdsKey: + Platform.AddPcd(Name, Guid, PcdSet[Name, Guid]) + continue + elif (Name, Guid, TAB_PCDS_DYNAMIC) in DecPcdsKey or (Name, Guid, TAB_PCDS_DYNAMIC_EX) in DecPcdsKey: + EdkLogger.error( + 'build', + PARSER_ERROR, + "Using Dynamic or DynamicEx type of PCD [%s.%s] in FDF file is not allowed." % (Guid, Name), + File = self.FdfProfile.PcdFileLineDict[Name, Guid][0], + Line = self.FdfProfile.PcdFileLineDict[Name, Guid][1] + ) Pa = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch) # diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py index fafcd70b86..2eb920417e 100644 --- a/BaseTools/Source/Python/AutoGen/GenC.py +++ b/BaseTools/Source/Python/AutoGen/GenC.py @@ -2043,7 +2043,8 @@ def CreateHeaderCode(Info, AutoGenC, AutoGenH): if 'PcdLib' in Info.Module.LibraryClasses or Info.Module.Pcds: AutoGenH.Append("#include \n") - AutoGenH.Append('\nextern GUID gEfiCallerIdGuid;\n\n') + AutoGenH.Append('\nextern GUID gEfiCallerIdGuid;') + AutoGenH.Append('\nextern CHAR8 *gEfiCallerBaseName;\n\n') if Info.IsLibrary: return @@ -2066,6 +2067,7 @@ def CreateHeaderCode(Info, AutoGenC, AutoGenH): # Publish the CallerId Guid # AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED GUID gEfiCallerIdGuid = %s;\n' % GuidStringToGuidStructureString(Info.Guid)) + AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *gEfiCallerBaseName = "%s";\n' % Info.Name) ## Create common code for header file # diff --git a/BaseTools/Source/Python/AutoGen/UniClassObject.py b/BaseTools/Source/Python/AutoGen/UniClassObject.py index ea27607fce..7b1ce72ea7 100644 --- a/BaseTools/Source/Python/AutoGen/UniClassObject.py +++ b/BaseTools/Source/Python/AutoGen/UniClassObject.py @@ -1,4 +1,4 @@ -# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -38,6 +38,9 @@ LF = u'\u000A' NULL = u'\u0000' TAB = u'\t' BACK_SPLASH = u'\\' +DOBULE_QUOTED_SPLASH = u'\\"' +SIGLE_QUOTED_SPLASH = u"\\'" +TAB_BACK_SLASH = u"\\/" gIncludePattern = re.compile("^#include +[\"<]+([^\"< >]+)[>\"]+$", re.MULTILINE | re.UNICODE) @@ -334,11 +337,11 @@ class UniFileClassObject(object): Line = Line.replace(u'/language', u'#language') Line = Line.replace(u'/include', u'#include') + Line = Line.replace(u'\\\\', u'\u0006') Line = Line.replace(UNICODE_WIDE_CHAR, WIDE_CHAR) Line = Line.replace(UNICODE_NARROW_CHAR, NARROW_CHAR) Line = Line.replace(UNICODE_NON_BREAKING_CHAR, NON_BREAKING_CHAR) - Line = Line.replace(u'\\\\', u'\u0006') Line = Line.replace(u'\\r\\n', CR + LF) Line = Line.replace(u'\\n', CR + LF) Line = Line.replace(u'\\r', CR) @@ -346,7 +349,10 @@ class UniFileClassObject(object): Line = Line.replace(u'''\"''', u'''"''') Line = Line.replace(u'\t', u' ') Line = Line.replace(u'\u0006', u'\\') - + Line = Line.replace(DOBULE_QUOTED_SPLASH, u'"') + Line = Line.replace(SIGLE_QUOTED_SPLASH, u"'") + Line = Line.replace(TAB_BACK_SLASH, u"/") + # if Line.find(u'\\x'): # hex = Line[Line.find(u'\\x') + 2 : Line.find(u'\\x') + 6] # hex = "u'\\u" + hex + "'" -- cgit v1.2.3