From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=bob.c.feng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5684A2238B591 for ; Sun, 28 Jan 2018 22:04:07 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jan 2018 22:09:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,429,1511856000"; d="scan'208";a="13703002" Received: from shwdeopenpsi105.ccr.corp.intel.com ([10.239.9.129]) by fmsmga007.fm.intel.com with ESMTP; 28 Jan 2018 22:09:39 -0800 From: BobCF To: edk2-devel@lists.01.org Cc: Bob Feng , Liming Gao Date: Mon, 29 Jan 2018 14:09:36 +0800 Message-Id: <20180129060936.19884-1-bob.c.feng@intel.com> X-Mailer: git-send-email 2.14.3.windows.1 Subject: [Patch] BaseTools: Support multiple .h file X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jan 2018 06:04:07 -0000 for structure Pcd declaration in DEC file. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob Feng Cc: Liming Gao --- BaseTools/Source/Python/Workspace/BuildClassObject.py | 2 +- BaseTools/Source/Python/Workspace/DecBuildData.py | 2 +- BaseTools/Source/Python/Workspace/DscBuildData.py | 8 ++++---- BaseTools/Source/Python/Workspace/MetaFileParser.py | 4 +++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py index 3afb27a9c0..0e1161c96f 100644 --- a/BaseTools/Source/Python/Workspace/BuildClassObject.py +++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py @@ -113,11 +113,11 @@ class StructurePcd(PcdClassObject): if SkuInfoList is None: SkuInfoList={} if validateranges is None: validateranges=[] if validlists is None: validlists=[] if expressions is None : expressions=[] super(StructurePcd, self).__init__(Name, Guid, Type, DatumType, Value, Token, MaxDatumSize, SkuInfoList, IsOverrided, GuidValue, validateranges, validlists, expressions) - self.StructuredPcdIncludeFile = StructuredPcdIncludeFile + self.StructuredPcdIncludeFile = [] if StructuredPcdIncludeFile is None else StructuredPcdIncludeFile self.PackageDecs = Packages self.DefaultStoreName = [default_store] self.DefaultValues = collections.OrderedDict({}) self.PcdMode = None self.SkuOverrideValues = collections.OrderedDict({}) diff --git a/BaseTools/Source/Python/Workspace/DecBuildData.py b/BaseTools/Source/Python/Workspace/DecBuildData.py index f6b908dee6..2fd3820dcc 100644 --- a/BaseTools/Source/Python/Workspace/DecBuildData.py +++ b/BaseTools/Source/Python/Workspace/DecBuildData.py @@ -374,11 +374,11 @@ class DecBuildData(PackageBuildClassObject): for pcdname in s_pcd_set: dep_pkgs = [] struct_pcd = StructurePcd() for item,LineNo in s_pcd_set[pcdname]: if "" in item.TokenCName: - struct_pcd.StructuredPcdIncludeFile = item.DefaultValue + struct_pcd.StructuredPcdIncludeFile.append(item.DefaultValue) elif "" in item.TokenCName: dep_pkgs.append(item.DefaultValue) elif item.DatumType == item.TokenCName: struct_pcd.copy(item) struct_pcd.TokenValue = struct_pcd.TokenValue.strip("{").strip() diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py index 256fdd6875..0384b96997 100644 --- a/BaseTools/Source/Python/Workspace/DscBuildData.py +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py @@ -1669,14 +1669,14 @@ class DscBuildData(PlatformBuildClassObject): CApp = PcdMainCHeader Includes = {} for PcdName in StructuredPcds: Pcd = StructuredPcds[PcdName] - IncludeFile = Pcd.StructuredPcdIncludeFile - if IncludeFile not in Includes: - Includes[IncludeFile] = True - CApp = CApp + '#include <%s>\n' % (IncludeFile) + for IncludeFile in Pcd.StructuredPcdIncludeFile: + if IncludeFile not in Includes: + Includes[IncludeFile] = True + CApp = CApp + '#include <%s>\n' % (IncludeFile) CApp = CApp + '\n' for PcdName in StructuredPcds: Pcd = StructuredPcds[PcdName] if not Pcd.SkuOverrideValues: diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py index 8f4b5e5cc1..4359ba4b33 100644 --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py @@ -1889,26 +1889,28 @@ class DecParser(MetaFileParser): self._ValueList[0] = self._CurrentStructurePcdName if "|" not in self._CurrentLine: if "" == self._CurrentLine: self._include_flag = True + self._package_flag = False self._ValueList = None return if "" == self._CurrentLine: self._package_flag = True self._ValueList = None + self._include_flag = False return if self._include_flag: self._ValueList[1] = "_" + md5.new(self._CurrentLine).hexdigest() self._ValueList[2] = self._CurrentLine - self._include_flag = False if self._package_flag and "}" != self._CurrentLine: self._ValueList[1] = "_" + md5.new(self._CurrentLine).hexdigest() self._ValueList[2] = self._CurrentLine if self._CurrentLine == "}": self._package_flag = False + self._include_flag = False self._ValueList = None return else: PcdTockens = self._CurrentLine.split(TAB_VALUE_SPLIT) PcdNames = PcdTockens[0].split(TAB_SPLIT) -- 2.14.3.windows.1