From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web08.7257.1648098062163829872 for ; Wed, 23 Mar 2022 22:01:02 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=SeZrZtgE; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: bob.c.feng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648098062; x=1679634062; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Ge7qt9oLDOx3fgdUyZP465n9Gmr8qgRu+xe+Cp4iKPU=; b=SeZrZtgETc+y9rkESZpiIOh9rouADUTl0REs50njp/YRLHx0g/vK4x7A XP9O1gsxCQJwGMbJBMbE559qJy+J/iBky1NoVD0XyOb6rrpDk6Ax5qK6I uh/n/1RQljgYnmwEgH61HJKmm8IsLsU6S9VrtnrTtbabdOjTihSSkskD4 GhQlrzJ/55pdgMpztJBdOBnucuUblORNT+0dP27RGhCCYEQvDtay9xStN 3znm1Lu4vriO1BYmx7lYeF4ZHw6e7eNJzdr9bjxLErfGsPBlDN2LZiyqP T4zED4lrNtMjSrKYjjivV1wNdEsbtakV6kuwfNG6TYUE1Hx1WQd+UQ5CG A==; X-IronPort-AV: E=McAfee;i="6200,9189,10295"; a="238229605" X-IronPort-AV: E=Sophos;i="5.90,206,1643702400"; d="scan'208";a="238229605" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2022 22:01:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,206,1643702400"; d="scan'208";a="647733696" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga002.fm.intel.com with ESMTP; 23 Mar 2022 22:01:01 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 23 Mar 2022 22:01:00 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 23 Mar 2022 22:01:00 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Wed, 23 Mar 2022 22:01:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cbtGFqam7zYE3KqM3Fy4ASV29wKSL6iYLAr5uf50WWEB+jgbbNuUnz9EyWTJrWlOOmDLl5YmkewY4lSYR93UbgGAtLbTU5B5q0fc4ROC2hgF6Nm40dCK1SEeGJtHsGiWTsyYLn1mqNA4pzzvJg3kK0ejy/7+vKL1wJpGh6JgObbqWICvkfMafPxy+IemoFNC14knPzEhnFkKgneIdY5MUTidIGJ747w6LGV5NneBsnKZEbRuO2Ut9H/c+/xoa2Yi5A1B2Uf6gYAoWO5y8Ycqm7164+vo/FbRJQlOposIsU/hGzGSvPVJZQ1gBAUhcCWyInQZr6f5yybNCRrPZ+Nvyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5y4CD80HyOdD6m0ZUV3t661MpatJVsH4VJhSOz2V2Y8=; b=Tt5kayDO7N4mLMExzi7XHzekOxqtwMxV13A+1qbhxJd4STOeWowFNTaidgqP3RT28+oqHdaA5QzlKz4P5U1bxfO/sdT5EdfFLqXgQI87EVfwqAxiBIhVAIyPQ52ii8yIm88uaIaz3EuvsYXJeG+wlvZwStCZTBZrHgPUh2NWY3NE5lgo6sWU40L+ng6kItat3r6EtvZopKZTsxc1IClUfwGNO5KnxBOUGzh1Jv93jqnza2w8f4hk3+gpWY4eFM4OiJEXjznHT+ayRtg+qKOtlVLOYWKKOEQb+/aj7QWJYc1T/uVwekVpnfB3x76y5pWKMPTTbDEoqhUoxn0QUwYCfA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH7PR11MB5863.namprd11.prod.outlook.com (2603:10b6:510:135::11) by PH0PR11MB5062.namprd11.prod.outlook.com (2603:10b6:510:3e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.18; Thu, 24 Mar 2022 05:00:57 +0000 Received: from PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::e5:8ef1:3d8:874]) by PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::e5:8ef1:3d8:874%9]) with mapi id 15.20.5081.022; Thu, 24 Mar 2022 05:00:57 +0000 From: "Bob Feng" To: "Li, Yi1" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Luo, Heng" Subject: Re: [PATCH V3 1/1] BaseTools: Add the FeatureFlagExpression usage to the Source Section Thread-Topic: [PATCH V3 1/1] BaseTools: Add the FeatureFlagExpression usage to the Source Section Thread-Index: AQHYPb4jNpBjQ139+EqzudL+nLPqb6zN/KUw Date: Thu, 24 Mar 2022 05:00:57 +0000 Message-ID: References: <3c83168f0201d81502a67024c7c7fc65aca1695e.1647933849.git.yi1.li@intel.com> In-Reply-To: <3c83168f0201d81502a67024c7c7fc65aca1695e.1647933849.git.yi1.li@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.401.20 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 578ecdca-ea95-4e98-3ce5-08da0d534859 x-ms-traffictypediagnostic: PH0PR11MB5062:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: X3Fto+O5edDkIThtl5JCod82UNbGpxF61689FxdTMvaKrQlyFBQRiySGygpDzweHTfxWYXdyZNe4o8HECuB/4v8K4kroNVTVEdnxAEw12dIX9d/S5VeQRs/hhN4ESSMbjIsvasBeihP6Po0k2vcPaLbwANgSq9H35PgR7MXW9+CNzKo5ugFuo1/8vWDwuPUns/jPArLTq2vMtwcnHEqozjb/kqtmlDKDdg5hXE78shvXWmqsZgCr+EndB12jkdKO1xrceusQI426oWwojSKPFhAcqhx8kEjZmcqYp5S92tFyMPYhlY0USXUCc+f2llXDNF1U50KcbmY6h5SxbHnmVWKJSm84MRlJcdApzD2ByerKOSx1yJxd+GdCIfLTvwtUu+CcgoEwdlNGVHoKNHUHH8oFZ3Gv5sm6HCIyIx3xf5SkbkLZsYx+v4xaUOXsUxxjBzqN6Yd7zytmD+sdsfH5w6tRFI+5R9bEo3Ki/36e4zdpPNuhTdHwfI7xR0TihKSSlXEFQ/bwjzDT8A6XIyLv012CtibBHcDSweHkspajzRHK3Pc8BXoHqrjrq6cpATEY7iQO0vgTalamCVLe5zTsZJ4WsgQdhvZUmFpkaqbVdmEw8aFcaw3opSCP9qfwmtq2Sl+I4I4zM9eyzdYC6F3fp3zQs8s06z2oVgftOCBRZDBaW59LkMyWoX/+v2d49ZeCcuXyrZin1vo+XA7CNwpF+ZKEEdRhuCQA1IqTL1JxS+rZCtEdU44b2OLw0K6yxySq9QxbdRZCs6sj3h2RSOr9qY+uWxL9xqyAP6ARGWJcB44= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(316002)(55016003)(53546011)(4326008)(66946007)(66556008)(66476007)(64756008)(38100700002)(76116006)(33656002)(7696005)(66446008)(8676002)(6506007)(107886003)(86362001)(71200400001)(38070700005)(186003)(110136005)(26005)(54906003)(9686003)(508600001)(83380400001)(82960400001)(5660300002)(52536014)(8936002)(2906002)(122000001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5VCuZeZAnlacXxnS//4i899mEjeHljGCPY5OVngsHIiyvpy7JEI5czXJLDjS?= =?us-ascii?Q?9u8Bv1ao3S7ubEBavRvzbVLwLmcbsKhOQO1Jp/TaIK+qnLq0xd4BuAbufvIx?= =?us-ascii?Q?411DcuDINnwGeZ888POtQNTJv4t2W8NV0jW0virUMQTDbVTTWgChjb/j/qqx?= =?us-ascii?Q?HK0+Z9ailBHeVq3YSn4lY2lmM/flMoIGXvphPgJV7fXhA9rK2+FOVeMP2OMr?= =?us-ascii?Q?tScqStilaj4xvYBuiKnhyW3av7F4RgVBcCbS/b9HIi5AE0LjjeiZdBxqYP7M?= =?us-ascii?Q?axqIWGp3XnldyQmcvUiagP6awPBo34KylYGw2sc7FPaCeoXEGujSDL1digJA?= =?us-ascii?Q?fIJ0DSsKgR/oZBHJcF+CESPvVjWzhH8TE3KJi1GrRUaWsAo1pWsvRvqg4CNy?= =?us-ascii?Q?31OyoAL6u74DEui1JLaVqHg0+6MBnO2UbEPdDjOTqtVPwz74RSXdtjILh0qn?= =?us-ascii?Q?78i3gQBie6ynVQsB86k0kj4KiXxhAVrm3gb0YimFXHPquMoyUiCIADXyBX0Q?= =?us-ascii?Q?89UQG7aRH+zzRHHY5xZmeYZwzXTSKZczz5Htxo/odqMQd+252f+Povs3k7ZH?= =?us-ascii?Q?QWIZDhx3IrwDcde+XluhqoqWAq1p2BrwH9ze4bxn9/K0TYcRk5PJJwHwWCud?= =?us-ascii?Q?V4hjEHleVbqbT6sSNKC9t1IlEW8PkaW+9yyq3kcFwoQPnfyERf0W1qWBug14?= =?us-ascii?Q?YcWebgmplE08DsSjbUcrMY4IWsVefrcRVryry7h6XQoCSCrPzmsRelwNJRfV?= =?us-ascii?Q?XPtVURVM44FiWisdsZ6qLCY19gYoFiCOJ+yjHqcqeiWa3WIxuWUll/Vg6vhg?= =?us-ascii?Q?MUE0X+AG6ju/OTPDbhqzkzKLB0HKWmYmzX3e5bVXQ8p0owvNs/uTbVKD066n?= =?us-ascii?Q?gJIzGiET2oX12bPka0SytYQdnJjpnJo/m2if5fMZSb86/La0OY9+0SEZ6kRc?= =?us-ascii?Q?dwHBfM02llLuji0ZZwRMagvu5ga5Ord1HcvtD0tJ5cMC9CXaxbjMzg6UG/X9?= =?us-ascii?Q?undy3/VipWQVczS0wRvcYzPFBbTXTKFLyiSZNciyhsNMBVmRs6jL3A6Wl0J/?= =?us-ascii?Q?rV29sU0c56JZPMimAFKJlhCyAN90q2dxi21N18ES52vtyroWGHOdnAHL4LH/?= =?us-ascii?Q?L0iLC9nvWNLBaVOR4zoDlrgyYaBnNIFLfIbh3B3PiD/kI+1+XXW88Mi7WHQD?= =?us-ascii?Q?YaizOo2M0QfBIjYTs1fHmP32GN8Gf3fOMSxCilnXLSeoqg10E/bSYg3cJHT6?= =?us-ascii?Q?w7EGept5rMa49guTAzvlYlt8JFR2KeMbSoX7c1TtFHpDCOGHyRxXcZRnDDbD?= =?us-ascii?Q?eekhvNGg6f3SF6BnuURF4Mqsy1cBBMQRhMu6SlG9YEzIR7sJ6Teu6tJFG6b0?= =?us-ascii?Q?6JFvfaeQUgQkrrsV7LKKHwTVS/BoExr8WCGMfQJqE1VLJgpzTWKTX/5utIh6?= =?us-ascii?Q?Smg/y1s76UFjhrA+XoEzHG8HePuoaFPBpt3Ysb+HFtmcArmUxq9u7wYHfHgz?= =?us-ascii?Q?az3/205kA24IsIsPuAdMJUEV+7kmiivg+1IgAxJK4k9yi7R5PlLef8UnzWux?= =?us-ascii?Q?35r8RwGFL8PDjdb0/1PKM3SnCHLLrkKkT8ZQSO/UheUN+BkAKl60NTNjau0b?= =?us-ascii?Q?iGxiqMRx1fZJ5QW8q8aTeyAAGmzLUffJvInhjRXYnl9vZy+IyFMbxiZapufj?= =?us-ascii?Q?B2eKEglpMWgbZ5XaGi80pgLxZusH4QNDKGsiuvLAWLPTWIbeNdJEnupTgUOf?= =?us-ascii?Q?V6vkAYOK6A=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 578ecdca-ea95-4e98-3ce5-08da0d534859 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2022 05:00:57.2651 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iyFrevL0O+NTjeyCVLwb6CD2+tFku79jT51iNwa1OWfZ9qRjz2Yd4n4gFR/kreupDk3V9Ia8UWOx1WnLTqzo2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5062 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable This patch looks good to me. Reviewed-by: Bob Feng Thanks, Bob -----Original Message----- From: Li, Yi1 =20 Sent: Tuesday, March 22, 2022 3:26 PM To: devel@edk2.groups.io Cc: Li, Yi1 ; Feng, Bob C ; Gao, Li= ming ; Luo, Heng Subject: [PATCH V3 1/1] BaseTools: Add the FeatureFlagExpression usage to t= he Source Section From: Yi Li REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3828 FeatureFlagExpression Support in Source section of INF file. The Pcd value = in the expression is from INF or DEC. When a FeatureFlagExpression is present,if the expression evaluates to TRUE= ,then the entry is valid. If the expression evaluates to FALSE, then the ED= K II build tools must ignore the entry. This patch is going to add this feature. Change-Id: I5821652330cdba1bfc5544e90f27b32ddf4147fc Cc: Bob Feng Cc: Liming Gao Cc: Heng Luo Signed-off-by: Yi Li --- BaseTools/Source/Python/Common/Expression.py | 2 +- BaseTools/Source/Py= thon/Common/GlobalData.py | 1 + .../Source/Python/Workspace/InfBuildData.py | 52 +++++++++++++++++-- .../Source/Python/Workspace/MetaFileParser.py | 4 ++ .../Python/Workspace/WorkspaceCommon.py | 5 ++ 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/BaseTools/Source/Python/Common/Expression.py b/BaseTools/Sourc= e/Python/Common/Expression.py index 07ca039a9cf3..31bf0e4b6cf7 100644 --- a/BaseTools/Source/Python/Common/Expression.py +++ b/BaseTools/Source/Python/Common/Expression.py @@ -43,7 +43,7 @@ ERR_IN_OPERAND =3D 'Macro after IN operator can = only be: $(FAMILY), $(ARC __ValidString =3D re.compile(r'[_a-zA-Z][_0-9a-zA-Z]*$') _ReLabel =3D re.compile('LABEL\((\w+)\)') _ReOffset =3D re.compile('OFFSE= T_OF\((\w+)\)') -PcdPattern =3D re.compile(r'[_a-zA-Z][0-9A-Za-z_]*\.[_a-zA= -Z][0-9A-Za-z_]*$') +PcdPattern =3D=20 +re.compile(r'^[_a-zA-Z][0-9A-Za-z_]*\.[_a-zA-Z][0-9A-Za-z_]*$') =20 ## SplitString # Split string to list according double quote diff --git a/BaseTools/Sour= ce/Python/Common/GlobalData.py b/BaseTools/Source/Python/Common/GlobalData.= py index 61ab3f7e24cd..197bd8366682 100755 --- a/BaseTools/Source/Python/Common/GlobalData.py +++ b/BaseTools/Source/Python/Common/GlobalData.py @@ -18,6 +18,7 @@ gGlobalDefines =3D {} gPlatformDefines =3D {} # PCD name and value pair for fixed at build and feature flag gPlatformPc= ds =3D {} +gPlatformFinalPcds =3D {} # PCDs with type that are not fixed at build and feature flag gPlatformOt= herPcds =3D {} gActivePlatform =3D None diff --git a/BaseTools/Source/Pyth= on/Workspace/InfBuildData.py b/BaseTools/Source/Python/Workspace/InfBuildDa= ta.py index 45b8ef4716dd..cd23065b0c8e 100644 --- a/BaseTools/Source/Python/Workspace/InfBuildData.py +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py @@ -14,6 +14,7 @@ from types import * from .MetaFileParser import * from collections import OrderedDict from Workspace.BuildClassObject import ModuleBuildClassObject, LibraryClas= sObject, PcdClassObject +from Common.Expression import ValueExpressionEx, PcdPattern =20 ## Get Protocol value from given packages # @@ -528,11 +529,17 @@ class I= nfBuildData(ModuleBuildClassObject): for Record in RecordList: LineNo =3D Record[-1] ToolChainFamily =3D Record[1] - TagName =3D Record[2] - ToolCode =3D Record[3] - + # OptionsList :=3D [TagName, ToolCode, FeatureFlag] + OptionsList =3D ['', '', ''] + TokenList =3D GetSplitValueList(Record[2], TAB_VALUE_SPLIT) + for Index in range(len(TokenList)): + OptionsList[Index] =3D TokenList[Index] + if OptionsList[2]: + FeaturePcdExpression =3D self.CheckFeatureFlagPcd(OptionsL= ist[2]) + if not FeaturePcdExpression: + continue File =3D PathClass(NormPath(Record[0], Macros), self._ModuleDi= r, '', - '', False, self._Arch, ToolChainFamily, '', T= agName, ToolCode) + '', False, self._Arch, ToolChainFamily,=20 + '', OptionsList[0], OptionsList[1]) # check the file validation ErrorCode, ErrorInfo =3D File.Validate() if ErrorCode !=3D 0: @@ -1046,6 +1053,43 @@ class InfBuildData(ModuleBuildClassObject): if (self.Binaries and not self.Sources) or GlobalData.gIgnoreSourc= e: return True return False + def CheckFeatureFlagPcd(self,Instance): + Pcds =3D {} + if GlobalData.gPlatformFinalPcds.get(self.Arch): + Pcds =3D GlobalData.gPlatformFinalPcds[self.Arch].copy() + if PcdPattern.search(Instance): + PcdTuple =3D tuple(Instance.split('.')[::-1]) + if PcdTuple in self.Pcds: + if not (self.Pcds[PcdTuple].Type =3D=3D 'FeatureFlag' or s= elf.Pcds[PcdTuple].Type =3D=3D 'FixedAtBuild') and Instance not in Pcds: + EdkLogger.error('build', FORMAT_INVALID, + "\nit must be defined in a [PcdsFeatur= eFlag] or [PcdsFixedAtBuild] section of Dsc or Dec file or [FeaturePcd] or = [FixedPcd] of Inf file", + File=3Dstr(self), ExtraData=3DInstance= ) + Pcds[Instance] =3D self.Pcds[PcdTuple].DefaultValue + if Instance in Pcds: + if Pcds[Instance] =3D=3D '0': + return False + elif Pcds[Instance] =3D=3D '1': + return True + try: + Value =3D ValueExpression(Instance, Pcds)() + if Value =3D=3D True: + return True + return False + except: + EdkLogger.warn('build', FORMAT_INVALID,"The FeatureFlagExp= ression cannot be evaluated", File=3Dstr(self), ExtraData=3DInstance) + return False + else: + for Name, Guid in self.Pcds: + if self.Pcds[(Name, Guid)].Type =3D=3D 'FeatureFlag' or se= lf.Pcds[(Name, Guid)].Type =3D=3D 'FixedAtBuild': + Pcds['%s.%s' % (Guid, Name)] =3D self.Pcds[(Name, Guid= )].DefaultValue + try: + Value =3D ValueExpression(Instance, Pcds)() + if Value =3D=3D True: + return True + return False + except: + EdkLogger.warn('build', FORMAT_INVALID, "The FeatureFlagEx= pression cannot be evaluated", File=3Dstr(self), ExtraData=3DInstance) + return False def ExtendCopyDictionaryLists(CopyToDict, CopyFromDict): for Key in CopyFromDict: CopyToDict[Key].extend(CopyFromDict[Key]) diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTool= s/Source/Python/Workspace/MetaFileParser.py index a3b6edbd15ee..3508591b281e 100644 --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py @@ -736,6 +736,10 @@ class InfParser(MetaFileParser): @ParseMacro def _SourceFileParser(self): TokenList =3D GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT= ) + # Let TokenList[2] be TagName|ToolCode|FeatureFlag + if len(TokenList) > 3: + for extraToken in range(3, len(TokenList)): + TokenList[2] =3D TokenList[2] + '|' +=20 + TokenList[extraToken] self._ValueList[0:len(TokenList)] =3D TokenList Macros =3D self._Macros # For Acpi tables, remove macro like ' TABLE_NAME=3DSata1' diff --git a/BaseTools/Source/Python/Workspace/WorkspaceCommon.py b/BaseToo= ls/Source/Python/Workspace/WorkspaceCommon.py index 53027a0e30f5..6564a34ba724 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceCommon.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceCommon.py @@ -75,6 +75,11 @@ def GetDeclaredPcd(Platform, BuildDatabase, Arch, Target= , Toolchain, additionalP break if (PcdCName, PcdTokenName) not in DecPcds: DecPcds[PcdCName, PcdTokenName] =3D Pkg.Pcds[Pcd] + if not GlobalData.gPlatformFinalPcds.get(Arch): + GlobalData.gPlatformFinalPcds[Arch] =3D OrderedDict() + for Name,Guid in DecPcds: + if DecPcds[Name,Guid].Type =3D=3D 'FeatureFlag' or DecPcds[Name, G= uid].Type =3D=3D 'FixedAtBuild': + GlobalData.gPlatformFinalPcds[Arch]['%s.%s'%(Guid,=20 + Name)]=3DDecPcds[Name, Guid].DefaultValue return DecPcds, GuidDict =20 ## Get all dependent libraries for a module -- 2.33.0.windows.2