From nobody Sun Feb 8 18:30:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+44126+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44126+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563785747; cv=none; d=zoho.com; s=zohoarc; b=XLcX3LAuk/3YDR+bRqrBv+sZWyC1elucZT/3Bh7g/NvUUjPSuI8siAd95C/CDOD58slawrrtYn0DkIVoedKgyVPRCcDnSN2aZKMIdeY3/nnDAZQI1fDx2m5nWEl7twMYidgYxHAJ9LCyc6Bj+khwAb2FRnFHVK9v1GzzI2dTrk4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563785747; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=KH3ykZNmnEos/JZ4USIGbqsCpXgeBklePwDfLT1KgQc=; b=f8I69zfnXnpKbx1EiHnAswLFkrf/zCjFVH7ONWW0xE7m6wtCVDsS+rHWSgjdjBiQDXCVGOtrleyITvrTWyrU5+Cfw57IGCSy+Z+Mg7Zzw8XAz3wb9O54zAm5Uvne/fQs9EC4BeVzaozGoQ7bmvdTWBxA3bZQd+zhVzUPp9lW8JI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44126+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1563785747481620.6563381484458; Mon, 22 Jul 2019 01:55:47 -0700 (PDT) Return-Path: X-Received: from mga03.intel.com (mga03.intel.com []) by groups.io with SMTP; Mon, 22 Jul 2019 01:55:46 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jul 2019 01:51:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,294,1559545200"; d="scan'208";a="320624174" X-Received: from shwdepsi1121.ccr.corp.intel.com ([10.239.158.47]) by orsmga004.jf.intel.com with ESMTP; 22 Jul 2019 01:51:43 -0700 From: "Bob Feng" To: devel@edk2.groups.io Cc: Liming Gao , Bob Feng Subject: [edk2-devel] [Patch 3/9 V2] BaseTools: Add functions to get platform scope build options Date: Mon, 22 Jul 2019 16:50:54 +0800 Message-Id: <20190722085100.20552-4-bob.c.feng@intel.com> In-Reply-To: <20190722085100.20552-1-bob.c.feng@intel.com> References: <20190722085100.20552-1-bob.c.feng@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,bob.c.feng@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563785747; bh=2CbMog45ykV4hXUOZHekckS94WIpnb+7L/h+qIPqDRU=; h=Cc:Date:From:Reply-To:Subject:To; b=CL53Q+4SMyG3sasj31jLWbL3WZOdpNlAMHmQHw3NIVMO6xql8z8yv8L2/TLiAbLLcuE TX+7MtUlVg6XSNWPq9f2RrtVPdG3kV/YGea8fxUIOaW+neYseq4OrR+XDllmqmq1aeXrP 2y2SUXkI99p5JhdqtteZs9Z+phreGIbasfw= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1875 These functions are used for get platform scope build options. They will be used in later patches. Cc: Liming Gao Signed-off-by: Bob Feng --- BaseTools/Source/Python/AutoGen/AutoGen.py | 10 +++++++++- .../Source/Python/Workspace/DscBuildData.py | 20 +++++++++++++++++++ .../Source/Python/Workspace/InfBuildData.py | 10 ++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/= Python/AutoGen/AutoGen.py index 9e06bb942126..792beed65e6b 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -2485,11 +2485,19 @@ class PlatformAutoGen(AutoGen): if Attr !=3D 'PATH': BuildOptions[Tool][Attr] +=3D " " + Option= s[Key] else: BuildOptions[Tool][Attr] =3D Options[Key] return BuildOptions - + def GetGlobalBuildOptions(self,Module): + ModuleTypeOptions =3D self.Platform.GetBuildOptionsByPkg(Module, M= odule.ModuleType) + ModuleTypeOptions =3D self._ExpandBuildOption(ModuleTypeOptions) + if Module in self.Platform.Modules: + PlatformModule =3D self.Platform.Modules[str(Module)] + PlatformModuleOptions =3D self._ExpandBuildOption(PlatformModu= le.BuildOptions) + else: + PlatformModuleOptions =3D {} + return ModuleTypeOptions, PlatformModuleOptions ## Append build options in platform to a module # # @param Module The module to which the build options will be appe= nded # # @retval options The options appended with build options in pla= tform diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/= Source/Python/Workspace/DscBuildData.py index e7ec2aba57d2..dd5c3c2bd1f2 100644 --- a/BaseTools/Source/Python/Workspace/DscBuildData.py +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py @@ -1222,11 +1222,31 @@ class DscBuildData(PlatformBuildClassObject): self._BuildOptions[CurKey] =3D Option else: if ' ' + Option not in self._BuildOptions[CurKey]: self._BuildOptions[CurKey] +=3D ' ' + Option return self._BuildOptions + def GetBuildOptionsByPkg(self, Module, ModuleType): =20 + local_pkg =3D os.path.split(Module.LocalPkg())[0] + if self._ModuleTypeOptions is None: + self._ModuleTypeOptions =3D OrderedDict() + if ModuleType not in self._ModuleTypeOptions: + options =3D OrderedDict() + self._ModuleTypeOptions[ ModuleType] =3D options + RecordList =3D self._RawData[MODEL_META_DATA_BUILD_OPTION, sel= f._Arch] + for ToolChainFamily, ToolChain, Option, Dummy1, Dummy2, Dummy3= , Dummy4, Dummy5 in RecordList: + if Dummy2 not in (TAB_COMMON,local_pkg.upper(),"EDKII"): + continue + Type =3D Dummy3 + if Type.upper() =3D=3D ModuleType.upper(): + Key =3D (ToolChainFamily, ToolChain) + if Key not in options or not ToolChain.endswith('_FLAG= S') or Option.startswith('=3D'): + options[Key] =3D Option + else: + if ' ' + Option not in options[Key]: + options[Key] +=3D ' ' + Option + return self._ModuleTypeOptions[ModuleType] def GetBuildOptionsByModuleType(self, Edk, ModuleType): if self._ModuleTypeOptions is None: self._ModuleTypeOptions =3D OrderedDict() if (Edk, ModuleType) not in self._ModuleTypeOptions: options =3D OrderedDict() diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py b/BaseTools/= Source/Python/Workspace/InfBuildData.py index 60970cd92836..da35391d3aff 100644 --- a/BaseTools/Source/Python/Workspace/InfBuildData.py +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py @@ -817,11 +817,21 @@ class InfBuildData(ModuleBuildClassObject): for Token in TokenList: TemporaryDictionary[Arch, ModuleType] =3D TemporaryDiction= ary[Arch, ModuleType] + Token.strip() + ' ' for Arch, ModuleType in TemporaryDictionary: RetVal[Arch, ModuleType] =3D TemporaryDictionary[Arch, ModuleT= ype] return RetVal + def LocalPkg(self): + module_path =3D self.MetaFile.File + subdir =3D os.path.split(module_path)[0] + TopDir =3D "" + while subdir: + subdir,TopDir =3D os.path.split(subdir) =20 + for file_name in os.listdir(os.path.join(self.MetaFile.Root,TopDir= )): + if file_name.upper().endswith("DEC"): + pkg =3D os.path.join(TopDir,file_name) + return pkg @cached_class_function def GetGuidsUsedByPcd(self): self.Pcds return self._GuidsUsedByPcd =20 --=20 2.20.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#44126): https://edk2.groups.io/g/devel/message/44126 Mute This Topic: https://groups.io/mt/32556737/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-