Reviewed-by: Nate DeSimone <nathaniel.l.desim...@intel.com>

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Oram,
> Isaac W
> Sent: Tuesday, January 11, 2022 6:20 PM
> To: devel@edk2.groups.io
> Cc: Oram, Isaac W <isaac.w.o...@intel.com>; Chaganty, Rangasai V
> <rangasai.v.chaga...@intel.com>; Gao, Liming <gaolim...@byosoft.com.cn>
> Subject: [edk2-devel][edk2-platforms][PATCH V1 23/27]
> AdvancedFeaturePkg: Add missing features
> 
> The AdvancedFeaturePkg is supposed to include all features.
> Add Beep Debug feature to include DSC and FDF.
> 
> Order features based on their domains.
> 
> Cc: Sai Chaganty <rangasai.v.chaga...@intel.com>
> Cc: Liming Gao <gaolim...@byosoft.com.cn>
> 
> Signed-off-by: Isaac Oram <isaac.w.o...@intel.com>
> ---
>  Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc          | 66
> ++++++++++++++++----
>  Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc    | 36
> ++++++++---
>  Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc |
> 64 +++++++++++++++----
>  Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf          | 36
> ++++++++---
>  Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf           | 36
> ++++++++---
>  Features/Intel/Readme.md                                          | 49 
> ++++++++++-----
>  6 files changed, 219 insertions(+), 68 deletions(-)
> 
> diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc
> b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc
> index 0c7a29cc75..02636da916 100644
> --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc
> +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc
> @@ -36,7 +36,6 @@
> 
>  !include AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
> 
> -
> 
> ##########################################################
> ######################
>  #
>  # Advanced Feature Enable section - all advanced features are enabling for
> the @@ -44,26 +43,71 @@  #
> ##########################################################
> ######################
>  [PcdsFeatureFlag]
> -  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable
> |TRUE
> -  gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable                      
> |TRUE
> -  gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable
> |TRUE
> -  gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable                          
> |TRUE
> -  gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable
> |TRUE
> -  gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> |TRUE
> -
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e    |TRUE
> -  gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable                      
> |TRUE
> -  gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable                              
> |FALSE
> +  #
> +  # Debugging features
> +  #
> +  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable
> |TRUE
> +  gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable
> |TRUE
> +
> gPostCodeDebugFeaturePkgTokenSpaceGuid.PcdPostCodeDebugFeatureEn
> able      |TRUE
> +  gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> |TRUE
> +
> +  #
> +  # Network features
> +  #
> +  gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable
> |TRUE
> +
> +  #
> +  # OutOfBandManagement features
> +  #
> +  gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable
> |TRUE
> +  gSpcrFeaturePkgTokenSpaceGuid.PcdSpcrFeatureEnable
> |TRUE
> +
> +  #
> +  # PowerManagement features
> +  #
> +  gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable                            
> |TRUE
> +
> +  #
> +  # SystemInformation features
> +  #
> +  gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable
> |TRUE
> +
> +  #
> +  # UserInterface features
> +  #
> +  gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable
> |TRUE
> +
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e      |TRUE
> +
> +
> gVirtualKeyboardFeaturePkgTokenSpaceGuid.PcdVirtualKeyboardFeatureEn
> ab
> + le  |TRUE
> +
> +#
> +# PCD that are required to be set by the build target should be
> +configured here for test purposes # These settings are only for the
> purposes of buildings, boards should follow instructions in Readme files.
> +#
> +
> +[PcdsFixedAtBuild]
> +
> gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugPortLibInstance|1
> +
> +[PcdsFeatureFlag]
> +  #
> +  # MinPlatform common include currently required PCD
> +  #
>    gMinPlatformPkgTokenSpaceGuid.PcdSmiHandlerProfileEnable
> |FALSE
>    gMinPlatformPkgTokenSpaceGuid.PcdUefiSecureBootEnable
> |FALSE
>    gMinPlatformPkgTokenSpaceGuid.PcdPerformanceEnable
> |FALSE
> 
>  #
> -# Include common library
> +# Include common libraries
>  #
>  !include MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc
>  !include MinPlatformPkg/Include/Dsc/CorePeiLib.dsc
>  !include MinPlatformPkg/Include/Dsc/CoreDxeLib.dsc
> 
> +#
> +# Libraries required to be specified by the build target #
> +[LibraryClasses.Common]
> +
> +PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePl
> atfo
> +rmHookLibNull.inf # Required by BeepDebugFeature
> +
>  #
>  # This package builds all advanced features.
>  #
> diff --git
> a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc
> b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc
> index 874b8ce7db..2b36938df6 100644
> --- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc
> +++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc
> @@ -11,51 +11,67 @@
>  ##
> 
>  #
> -# Debug Advanced Features
> +# Debugging features
>  #
>  !if gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable ==
> TRUE
>    !include AcpiDebugFeaturePkg/Include/AcpiDebugFeature.dsc
>  !endif
> 
> +!if gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable
> ==
> +TRUE
> +  !include BeepDebugFeaturePkg/Include/BeepDebugFeature.dsc
> +!endif
> +
> +!if
> +gPostCodeDebugFeaturePkgTokenSpaceGuid.PcdPostCodeDebugFeatureE
> nable ==
> +TRUE
> +  !include PostCodeDebugFeaturePkg/Include/PostCodeDebugFeature.dsc
> +!endif
> +
>  !if gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> == TRUE
>    !include Usb3DebugFeaturePkg/Include/Usb3DebugFeature.dsc
>  !endif
> 
>  #
> -# Network Advanced Features
> +# Network features
>  #
>  !if gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable ==
> TRUE
>    !include NetworkFeaturePkg/Include/NetworkFeature.dsc
>  !endif
> 
>  #
> -# Out-of-Band Management Advanced Features
> +# OutOfBandManagement features
>  #
>  !if gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable == TRUE
>    !include IpmiFeaturePkg/Include/IpmiFeature.dsc
>  !endif
> 
> +!if gSpcrFeaturePkgTokenSpaceGuid.PcdSpcrFeatureEnable == TRUE
> +  !include SpcrFeaturePkg/Include/SpcrFeature.dsc
> +!endif
> +
>  #
> -# Power Management Advanced Features
> +# PowerManagement features
>  #
>  !if gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable == TRUE
>    !include S3FeaturePkg/Include/S3Feature.dsc
>  !endif
> 
>  #
> -# System Information Advanced Features
> +# SystemInformation features
>  #
>  !if gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable == TRUE
>    !include SmbiosFeaturePkg/Include/SmbiosFeature.dsc
>  !endif
> 
>  #
> -# User Interface Advanced Features
> +# UserInterface features
>  #
> -!if
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e == TRUE
> -  !include UserAuthFeaturePkg/Include/UserAuthFeature.dsc
> -!endif
> -
>  !if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE
>    !include LogoFeaturePkg/Include/LogoFeature.dsc
>  !endif
> +
> +!if
> +gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEna
> ble ==
> +TRUE
> +  !include UserAuthFeaturePkg/Include/UserAuthFeature.dsc
> +!endif
> +
> +!if
> +gVirtualKeyboardFeaturePkgTokenSpaceGuid.PcdVirtualKeyboardFeatureE
> nabl
> +e == TRUE
> +  !include VirtualKeyboardFeaturePkg/Include/VirtualKeyboardFeature.dsc
> +!endif
> diff --git
> a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
> b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
> index ad248de800..e214175eda 100644
> ---
> a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
> +++
> b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
> @@ -16,28 +16,70 @@
>  #
>  [Packages]
>    MdePkg/MdePkg.dec
> +
> +  #
> +  # Debugging features
> +  #
>    AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec
> +  BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec
> +  PostCodeDebugFeaturePkg/PostCodeDebugFeaturePkg.dec
>    Usb3DebugFeaturePkg/Usb3DebugFeaturePkg.dec
> +
> +  #
> +  # Networking features
> +  #
>    NetworkFeaturePkg/NetworkFeaturePkg.dec
> +
> +  #
> +  # OutOfBandManagement features
> +  #
>    IpmiFeaturePkg/IpmiFeaturePkg.dec
> +  SpcrFeaturePkg/SpcrFeaturePkg.dec
> +
> +  #
> +  # PowerManagement features
> +  #
>    S3FeaturePkg/S3FeaturePkg.dec
> +
> +  #
> +  # SystemInformation features
> +  #
>    SmbiosFeaturePkg/SmbiosFeaturePkg.dec
> -  UserAuthFeaturePkg/UserAuthFeaturePkg.dec
> +
> +  #
> +  # UserInterface features
> +  #
>    LogoFeaturePkg/LogoFeaturePkg.dec
> -  BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec
> -  PostCodeDebugFeaturePkg/PostCodeDebugFeaturePkg.dec
> +  UserAuthFeaturePkg/UserAuthFeaturePkg.dec
> +  VirtualKeyboardFeaturePkg/VirtualKeyboardFeaturePkg.dec
> 
>  #
>  # The section below sets all PCDs to FALSE in this DSC file so the feature is
> not enabled by default.
>  # Board can set PCDs to TRUE in its DSC file to enable a subset of advanced
> features  #  [PcdsFeatureFlag]
> -  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable
> |FALSE
> -  gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable                      
> |FALSE
> -  gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable
> |FALSE
> -  gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable                          
> |FALSE
> -  gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable
> |FALSE
> -  gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> |FALSE
> -
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e    |FALSE
> -  gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable
> |FALSE
> +  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable
> |FALSE
> +  gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable
> |FALSE
> +
> gPostCodeDebugFeaturePkgTokenSpaceGuid.PcdPostCodeDebugFeatureEn
> able      |FALSE
> +  gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> |FALSE
> +
> +  gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable
> |FALSE
> +
> +  gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable
> |FALSE
> +  gSpcrFeaturePkgTokenSpaceGuid.PcdSpcrFeatureEnable
> |FALSE
> +
> +  gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable                            
> |FALSE
> +
> +  gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable
> |FALSE
> +
> +  gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable
> |FALSE
> +
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e      |FALSE
> +
> +
> gVirtualKeyboardFeaturePkgTokenSpaceGuid.PcdVirtualKeyboardFeatureEn
> ab
> + le  |FALSE
> +
> +#
> +# There seems to be some build parsing odd behavior that requires this
> +PCD to be specified even though # the *.fdf that consumes it is dependent
> on the feature flag.
> +# This section is to ensure that boards have these PCD instantiated.
> +#
> +[PcdsFeatureFlag]
>    gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable                              
> |FALSE
> diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf
> b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf
> index e710fe7f01..99089f9a7b 100644
> --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf
> +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf
> @@ -12,51 +12,67 @@
>  ##
> 
>  #
> -# Debug Advanced Features
> +# Debugging features
>  #
>  !if gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable ==
> TRUE
>    !include AcpiDebugFeaturePkg/Include/PostMemory.fdf
>  !endif
> 
> +!if gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable
> ==
> +TRUE
> +  !include BeepDebugFeaturePkg/Include/PostMemory.fdf
> +!endif
> +
> +!if
> +gPostCodeDebugFeaturePkgTokenSpaceGuid.PcdPostCodeDebugFeatureE
> nable ==
> +TRUE
> +  !include PostCodeDebugFeaturePkg/Include/PostMemory.fdf
> +!endif
> +
>  !if gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> == TRUE
>    !include Usb3DebugFeaturePkg/Include/PostMemory.fdf
>  !endif
> 
>  #
> -# Network Advanced Features
> +# Network features
>  #
>  !if gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable ==
> TRUE
>    !include NetworkFeaturePkg/Include/PostMemory.fdf
>  !endif
> 
>  #
> -# Out-of-Band Management Advanced Features
> +# OutOfBandManagement features
>  #
>  !if gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable == TRUE
>    !include IpmiFeaturePkg/Include/PostMemory.fdf
>  !endif
> 
> +!if gSpcrFeaturePkgTokenSpaceGuid.PcdSpcrFeatureEnable == TRUE
> +  !include SpcrFeaturePkg/Include/PostMemory.fdf
> +!endif
> +
>  #
> -# Power Management Advanced Features
> +# PowerManagement features
>  #
>  !if gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable == TRUE
>    !include S3FeaturePkg/Include/PostMemory.fdf
>  !endif
> 
>  #
> -# System Information Advanced Features
> +# SystemInformation features
>  #
>  !if gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable == TRUE
>    !include SmbiosFeaturePkg/Include/PostMemory.fdf
>  !endif
> 
>  #
> -# User Interface Advanced Features
> +# UserInterface features
>  #
> -!if
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e == TRUE
> -  !include UserAuthFeaturePkg/Include/PostMemory.fdf
> -!endif
> -
>  !if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE
>    !include LogoFeaturePkg/Include/PostMemory.fdf
>  !endif
> +
> +!if
> +gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEna
> ble ==
> +TRUE
> +  !include UserAuthFeaturePkg/Include/PostMemory.fdf
> +!endif
> +
> +!if
> +gVirtualKeyboardFeaturePkgTokenSpaceGuid.PcdVirtualKeyboardFeatureE
> nabl
> +e == TRUE
> +  !include VirtualKeyboardFeaturePkg/Include/PostMemory.fdf
> +!endif
> diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf
> b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf
> index 177aafc1ec..1db258446a 100644
> --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf
> +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf
> @@ -12,51 +12,67 @@
>  ##
> 
>  #
> -# Debug Advanced Features
> +# Debugging features
>  #
>  !if gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureEnable ==
> TRUE
>    !include AcpiDebugFeaturePkg/Include/PreMemory.fdf
>  !endif
> 
> +!if gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable
> ==
> +TRUE
> +  !include BeepDebugFeaturePkg/Include/PreMemory.fdf
> +!endif
> +
> +!if
> +gPostCodeDebugFeaturePkgTokenSpaceGuid.PcdPostCodeDebugFeatureE
> nable ==
> +TRUE
> +  !include PostCodeDebugFeaturePkg/Include/PreMemory.fdf
> +!endif
> +
>  !if gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable
> == TRUE
>    !include Usb3DebugFeaturePkg/Include/PreMemory.fdf
>  !endif
> 
>  #
> -# Network Advanced Features
> +# Network features
>  #
>  !if gNetworkFeaturePkgTokenSpaceGuid.PcdNetworkFeatureEnable ==
> TRUE
>    !include NetworkFeaturePkg/Include/PreMemory.fdf
>  !endif
> 
>  #
> -# Out-of-Band Management Advanced Features
> +# OutOfBandManagement features
>  #
>  !if gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiFeatureEnable == TRUE
>    !include IpmiFeaturePkg/Include/PreMemory.fdf
>  !endif
> 
> +!if gSpcrFeaturePkgTokenSpaceGuid.PcdSpcrFeatureEnable == TRUE
> +  !include SpcrFeaturePkg/Include/PreMemory.fdf
> +!endif
> +
>  #
> -# Power Management Advanced Features
> +# PowerManagement features
>  #
>  !if gS3FeaturePkgTokenSpaceGuid.PcdS3FeatureEnable == TRUE
>    !include S3FeaturePkg/Include/PreMemory.fdf
>  !endif
> 
>  #
> -# System Information Advanced Features
> +# SystemInformation features
>  #
>  !if gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable == TRUE
>    !include SmbiosFeaturePkg/Include/PreMemory.fdf
>  !endif
> 
>  #
> -# User Interface Advanced Features
> +# UserInterface features
>  #
> -!if
> gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnabl
> e == TRUE
> -  !include UserAuthFeaturePkg/Include/PreMemory.fdf
> -!endif
> -
>  !if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE
>    !include LogoFeaturePkg/Include/PreMemory.fdf
>  !endif
> +
> +!if
> +gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEna
> ble ==
> +TRUE
> +  !include UserAuthFeaturePkg/Include/PreMemory.fdf
> +!endif
> +
> +!if
> +gVirtualKeyboardFeaturePkgTokenSpaceGuid.PcdVirtualKeyboardFeatureE
> nabl
> +e == TRUE
> +  !include VirtualKeyboardFeaturePkg/Include/PreMemory.fdf
> +!endif
> diff --git a/Features/Intel/Readme.md b/Features/Intel/Readme.md index
> 1a03a4c0d2..cf5ef7b260 100644
> --- a/Features/Intel/Readme.md
> +++ b/Features/Intel/Readme.md
> @@ -195,32 +195,47 @@ At a minimum, an advanced feature must consist of
> the following elements:
>  6. Add the source code for the advanced feature.
>      * If the feature is large it is recommended to add libraries in one 
> patch and
> then modules in a following patch.
> 
> -7. Update the feature DSC file. This file is in
> `XxxFeaturePkg/Include/XxxFeature.dsc`.
> +7. Update the feature DSC include file. This file is in
> `XxxFeaturePkg/Include/XxxFeature.dsc`.
>      * In most cases, `XxxFeaturePkg/XxxFeaturePkg.dsc` should just `!include
> XxxFeaturePkg/Include/XxxFeature.dsc`.
> +    * This file should not duplicate core content from
> `MinPlatformPkg/Include/Dsc` except where a change is required by
> +    the feature.
> 
> -8. Update the feature FDF files. These files are
> `XxxFeaturePkg/Include/PreMemory.fdf` and
> +8. Update the feature FDF include files. These files are
> +`XxxFeaturePkg/Include/PreMemory.fdf` and
>     `XxxFeaturePkg/Include/PostMemory.fdf`.
>      * Each file should contain the feature pre-memory modules and post-
> memory modules respectively.
> 
>  9. Build the advanced feature package to ensure the build is successful:
> -
>      From the workspace root:
> -    1. cd edk2-platforms/edk2
> -    2. Execute edksetup.bat (Windows) or edksetup.sh (Linux).
> -    3. Verify the "WORKSPACE" environment variable is set to the edk2
> directory in your workspace.
> -    4. Set the "PACKAGES_PATH" environment variable to include the edk2-
> platforms/Platform/Intel, edk2-platforms/Silicon/Intel,
> -       and edk2-platforms/Features/Intel directories.
> +    1. Verify the "WORKSPACE" environment variable is set to the parent of
> edk2 and edk2-platforms directory in your
> +       workspace.
> +    2. Set the "PACKAGES_PATH" environment variable to include the edk2,
> edk2-platforms/Platform/Intel,
> +       edk2-platforms/Silicon/Intel, and edk2-platforms/Features/Intel
> directories.
>         * Windows example:
> -         * set PACKAGES_PATH=c:\Edk2Workspace\edk2-
> platforms\Platform\Intel;
> -                             c:\Edk2Workspace\edk2-platforms\Silicon\Intel;
> -                             c:\Edk2Workspace\edk2-platforms\Features\Intel
> +         * set PACKAGES_PATH=%WORKSPACE%\edk2;
> +                             %WORKSPACE%\edk2-platforms\Platform\Intel;
> +                             %WORKSPACE%\edk2-platforms\Silicon\Intel;
> +                             %WORKSPACE%\edk2-platforms\Features\Intel;
> +                             
> %WORKSPACE%\edk2-platforms\Features\Intel\Debugging;
> +                             
> %WORKSPACE%\edk2-platforms\Features\Intel\Network;
> +                             %WORKSPACE%\edk2-
> platforms\Features\Intel\OutOfBandManagement;
> +                             %WORKSPACE%\edk2-
> platforms\Features\Intel\PowerManagement;
> +                             %WORKSPACE%\edk2-
> platforms\Features\Intel\SystemInformation;
> +
> + %WORKSPACE%\edk2-platforms\Features\Intel\UserInterface
>         * Linux example:
> -         * export PACKAGES_PATH=~/Edk2Workspace/edk2-
> platforms/Platform/Intel:
> +         * export PACKAGES_PATH=~Edk2Workspace/edk2:
> +                                
> ~/Edk2Workspace/edk2-platforms/Platform/Intel:
>                                  ~/Edk2Workspace/edk2-platforms/Silicon/Intel:
> -                                ~/Edk2Workspace/edk2-platforms/Features/Intel
> +                                
> ~/Edk2Workspace/edk2-platforms/Features/Intel:
> +                                ~/Edk2Workspace/edk2-
> platforms/Features/Intel/Debugging:
> +                                ~/Edk2Workspace/edk2-
> platforms/Features/Intel/Network:
> +                                ~/Edk2Workspace/edk2-
> platforms/Features/Intel/OutOfBandManagement:
> +                                ~/Edk2Workspace/edk2-
> platforms/Features/Intel/PowerManagement:
> +                                ~/Edk2Workspace/edk2-
> platforms/Features/Intel/SystemInformation:
> +                                ~/Edk2Workspace/edk2-
> platforms/Features/Intel/UserInterface
> +    3. cd edk2
> +    4. Execute edksetup.bat (Windows) or edksetup.sh (Linux).
>      5. cd edk2-platforms/Features/Intel
> -    6. <pre>build -p
> FeatureDomainDirectory/XxxFeaturePkg/XxxFeaturePkg.dsc -a IA32 -a
> X64</pre>
> -
> +    6. <pre>build -a IA32 -a X64 -p
> + FeatureDomainDirectory/XxxFeaturePkg/XxxFeaturePkg.dsc</pre>
>         *Note:* -a specifies the architecture. Typically IA32 and X64 modules 
> are
> built for 32-bit PEI and 64-bit
>         DXE though build for your specific requirements.
> 
> @@ -228,11 +243,13 @@ At a minimum, an advanced feature must consist of
> the following elements:
>      1. Add `XxxFeaturePkg/Include/XxxFeature.dsc` to
> `AdvancedFeatures.dsc`
>      2. Add `XxxFeaturePkg/Include/PreMemory.fdf` to
> `AdvancedFeaturePkg/Include/PreMemory.fdf`
>      3. Add `XxxFeaturePkg/Include/PostMemory.fdf` to
> `AdvancedFeaturePkg/Include/PostMemory.fdf`
> +    4. Add the `PcdFeatureEnable` to `AdvancedFeaturesPcd.dsc` set to FALSE
> +    5. Add the `PcdFeatureEnable` to `AdvancedFeaturePkg.dsc` set to
> + TRUE
> 
>  11. Build `AdvancedFeaturePkg` to ensure the build is successful.
>      1. Follow the steps in step #9 but change the build command to:
> 
> -    <pre>build -p AdvancedFeaturePkg/AdvancedFeaturePkg.dsc -a IA32 -a
> X64</pre>
> +    <pre>build  -a IA32 -a X64 -p
> + AdvancedFeaturePkg/AdvancedFeaturePkg.dsc</pre>
> 
>  12. Before sending your patch series, ensure the `Readme.md` file in
> `XxxFeaturePkg` is completed so others can use it
>      during the feature review.
> --
> 2.27.0.windows.1
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#85646): https://edk2.groups.io/g/devel/message/85646
Mute This Topic: https://groups.io/mt/88365344/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to