From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com []) by mx.groups.io with SMTP id smtpd.web10.919.1574903249771948017 for ; Wed, 27 Nov 2019 17:07:44 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: intel.com, ip: , mailfrom: michael.a.kubacki@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Nov 2019 17:07:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,251,1571727600"; d="scan'208";a="383667890" Received: from makuback-desk1.amr.corp.intel.com ([10.7.159.162]) by orsmga005.jf.intel.com with ESMTP; 27 Nov 2019 17:07:44 -0800 From: "Kubacki, Michael A" To: devel@edk2.groups.io Cc: Sai Chaganty , Liming Gao Subject: [edk2-platforms][PATCH V2 23/47] Features/Intel/AdvancedFeaturePkg: Add temporary build workaround Date: Wed, 27 Nov 2019 17:05:50 -0800 Message-Id: <20191128010614.43628-24-michael.a.kubacki@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: <20191128010614.43628-1-michael.a.kubacki@intel.com> References: <20191128010614.43628-1-michael.a.kubacki@intel.com> This change adds a temporary build workaround to allow the advanced feature PCDs to be used in conditional statements in DSC files even if they are not referenced in INF files. Support to allow a FeaturePCD to be used in a conditional statement without being referenced in an INF file has been requested in the following Bugzilla item: https://bugzilla.tianocore.org/show_bug.cgi?id=2270 This change can be reverted when that Bugzilla is completed and the change is submitted to edk2. Cc: Sai Chaganty Cc: Liming Gao Signed-off-by: Michael Kubacki Reviewed-by: Nate DeSimone --- Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | 2 + Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.dsc | 74 ++++++++++++++++++++ Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.inf | 57 +++++++++++++++ Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.c | 31 ++++++++ 4 files changed, 164 insertions(+) diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc index 50c0e81048..23e7c6474a 100644 --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc @@ -30,6 +30,8 @@ PEI_ARCH = IA32 DXE_ARCH = X64 +!include AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.dsc + ################################################################################ # # Advanced Feature Enable section - all advanced features are enabling for the diff --git a/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.dsc b/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.dsc new file mode 100644 index 0000000000..227ae00908 --- /dev/null +++ b/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.dsc @@ -0,0 +1,74 @@ +## @file +# Build description file for a temporary build workaround. +# +# The feature enable PCD for advanced features must be referenced in an INF +# to be referenced in DSC/FDF files. This DSC only exists in the build to +# allow the PCDs to be referenced. This workaround does not affect the final +# flash image or boot in any way. +# +# The request to update BaseTools to allow a PCD to be referenced in DSC/FDF +# files without requiring the PCD to be referenced in an INF file is tracked +# here: https://bugzilla.tianocore.org/show_bug.cgi?id=2270 +# +# When the BaseTools update is complete, this file can entirely be removed +# from this package. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +# +# BEGIN:Temporary Build Workaround (resolution: https://bugzilla.tianocore.org/show_bug.cgi?id=2270) +# + +# THIS FILE IS TEMPORARY. PLEASE TRY TO LOOK PAST THE "HACKS" ASSOCIATED WITH IT. +# +# With the BaseTools change requested, the changes needed to move to the end state are simply: +# 1. Remove the !include for this file in AdvancedFeatures.dsc +# 2. Remove this directory + +!if $(PLATFORM_NAME) != AdvancedFeaturePkg +# +# AdvancedFeaturePkg initializes all FeaturePCDs to TRUE so they can conveniently be built in one package. +# Board packages will normally only enable (and therefore reference) a small subset of advanced features +# relative to the board. If an INF does not reference a package DEC file (which will be the case if the +# feature is not enabled) then the DSC must set ("define") the PCD for the conditional statements based +# on the PCD to work. +# +# AdvancedFeaturePkg has no problem as it naturally has a need to set al PCDs to TRUE for build. +# The section below sets all PCDs to FALSE in the DSC file so if the feature is not enabled by a board, +# the build will still be successful. +# +[PcdsFeatureFlag] + gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable |FALSE + gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable |FALSE + gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable |FALSE + gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable |FALSE + gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable |FALSE + gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable |FALSE + gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable |FALSE +!endif + +# +# The LibraryClasses required to build TemporaryBuildWorkaround.inf +# (mostly libraries requiring other libraries) +# +[LibraryClasses] + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf + +# +# The driver that references all feature PCDs to satsify current build limitations +# +[Components] + AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.inf +# +# END:Temporary Build Workaround (resolution: https://bugzilla.tianocore.org/show_bug.cgi?id=2270) +# diff --git a/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.inf b/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.inf new file mode 100644 index 0000000000..74176d1989 --- /dev/null +++ b/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.inf @@ -0,0 +1,57 @@ +### @file +# Component information file for a temporary build workaround. +# +# The feature enable PCD for this package must be referenced in an INF to be +# referenced in DSC/FDF files. This driver is only included in the build to +# allow the PCD to be referenced. This driver is not included in the flash +# image and does not affect the boot in any way. +# +# The request to update BaseTools to allow a PCD to be referenced in DSC/FDF +# files without requiring the PCD to be referenced in an INF file is tracked +# here: https://bugzilla.tianocore.org/show_bug.cgi?id=2270 +# +# When the BaseTools update is complete, this file can entirely be removed +# from this package. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +### + +[Defines] + INF_VERSION = 0x00010017 + BASE_NAME = TemporaryBuildWorkaround + FILE_GUID = 8846A81E-F552-4917-81F5-80B62E4EFBAC + VERSION_STRING = 1.0 + MODULE_TYPE = PEIM + ENTRY_POINT = TemporaryBuildWorkaroundEntry + +[LibraryClasses] + BaseLib + PeimEntryPoint + +[Packages] + MdePkg/MdePkg.dec + Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec + Debugging/Usb3DebugFeaturePkg/Usb3DebugFeaturePkg.dec + Network/NetworkFeaturePkg/NetworkFeaturePkg.dec + OutOfBandManagement/IpmiFeaturePkg/IpmiFeaturePkg.dec + PowerManagement/S3FeaturePkg/S3FeaturePkg.dec + SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec + UserInterface/UserAuthFeaturePkg/UserAuthFeaturePkg.dec + +[FeaturePcd] + gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable + gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable + gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable + gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable + gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable + gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable + gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable + +[Sources] + TemporaryBuildWorkaround.c + +[Depex] + TRUE diff --git a/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.c b/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.c new file mode 100644 index 0000000000..2cd91b06f0 --- /dev/null +++ b/Features/Intel/AdvancedFeaturePkg/TemporaryBuildWorkaround/TemporaryBuildWorkaround.c @@ -0,0 +1,31 @@ +/** @file + Source code file for a temporary build workaround. + + The purpose of this workaround is described in the module INF file. + +Copyright (c) 2019, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + An empty entry point function. + + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. + + @retval EFI_SUCCESS This function always returns EFI_SUCCESS. + +**/ +EFI_STATUS +EFIAPI +TemporaryBuildWorkaroundEntry ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + return EFI_SUCCESS; +} -- 2.16.2.windows.1