This change adds a new package called TemplateFeaturePkg that should be used as a starting point for the creation of new advanced feature packages.
TemplateFeaturePkg is not meant to be built or used directly for functionality. It simply serves as a template to be copied and modified. The advanced feature package creation process is described in detail in Features/Intel/Readme.md. Cc: Sai Chaganty <rangasai.v.chaga...@intel.com> Cc: Nate DeSimone <nathaniel.l.desim...@intel.com> Cc: Liming Gao <liming....@intel.com> Signed-off-by: Michael Kubacki <michael.a.kuba...@intel.com> Reviewed-by: Nate DeSimone <nathaniel.l.desim...@intel.com> --- Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dec | 30 ++++++ Features/Intel/TemplateFeaturePkg/Include/TemplateFeature.dsc | 113 ++++++++++++++++++++ Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dsc | 30 ++++++ Features/Intel/TemplateFeaturePkg/Include/PostMemory.fdf | 8 ++ Features/Intel/TemplateFeaturePkg/Include/PreMemory.fdf | 8 ++ Features/Intel/TemplateFeaturePkg/Readme.md | 71 ++++++++++++ 6 files changed, 260 insertions(+) diff --git a/Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dec b/Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dec new file mode 100644 index 0000000000..b37ce8f34a --- /dev/null +++ b/Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dec @@ -0,0 +1,30 @@ +## @file +# This package provides advanced feature functionality for <TEMPLATE> support. +# This package should only depend on EDK II Core packages, IntelSiliconPkg, and MinPlatformPkg. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010017 + PACKAGE_NAME = TemplateFeaturePkg + PACKAGE_GUID = 00000000-0000-0000-0000-000000000000 + PACKAGE_VERSION = 0.1 + +[Includes] + Include + +[LibraryClasses] + +[Guids] + gTemplateFeaturePkgTokenSpaceGuid = {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + +[PcdsFeatureFlag] + gTemplateFeaturePkgTokenSpaceGuid.PcdTemplateFeatureEnable|FALSE|BOOLEAN|0xA0000001 diff --git a/Features/Intel/TemplateFeaturePkg/Include/TemplateFeature.dsc b/Features/Intel/TemplateFeaturePkg/Include/TemplateFeature.dsc new file mode 100644 index 0000000000..6742eddcf9 --- /dev/null +++ b/Features/Intel/TemplateFeaturePkg/Include/TemplateFeature.dsc @@ -0,0 +1,113 @@ +## @file +# This is a build description file for the <TEMPLATE> advanced feature. +# This file should be included into another package DSC file to build this feature. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] +!ifndef $(PEI_ARCH) + !error "PEI_ARCH must be specified to build this feature!" +!endif +!ifndef $(DXE_ARCH) + !error "DXE_ARCH must be specified to build this feature!" +!endif + +################################################################################ +# +# Library Class section - list of all Library Classes needed by this feature. +# +################################################################################ +[LibraryClasses] + + ## Note: This comment block should be removed from the template when the + # template is used. + # + # Library classes should have a comment header that describes the type of + # package the library is used from for organization purposes. + # + # For an advanced feature, these are typically: + # * Edk2 Packages + # * Silicon Initialization Package + # * Platform Package + # * Feature Package + # + # The comment header should follow the format: + # + # ####################################### + # # Edk2 Packages + # ####################################### + +################################################################################ +# +# Component section - list of all components that need built for this feature. +# +# Note: The EDK II DSC file is not used to specify how compiled binary images get placed +# into firmware volume images. This section is just a list of modules to compile from +# source into UEFI-compliant binaries. +# It is the FDF file that contains information on combining binary files into firmware +# volume images, whose concept is beyond UEFI and is described in PI specification. +# There may also be modules listed in this section that are not required in the FDF file, +# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be +# generated for it, but the binary will not be put into any firmware volume. +# +################################################################################ + +# +# Feature PEI Components +# + +# @todo: Change below line to [Components.$(PEI_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308 +# is completed. +[Components.IA32] + ##################################### + # <TEMPALTE> Feature Package + ##################################### + + # Add library instances here that are not included in package components and should be tested + # in the package build. + + # Add components here that should be included in the package build. + +# +# Feature DXE Components +# + +# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308 +# is completed. +[Components.X64] + ##################################### + # <TEMPLATE> Feature Package + ##################################### + + # Add library instances here that are not included in package components and should be tested + # in the package build. + + # Add components here that should be included in the package build. + +################################################################################################### +# +# BuildOptions Section - Define the module specific tool chain flags that should be used as +# the default flags for a module. These flags are appended to any +# standard flags that are defined by the build process. They can be +# applied for any modules or only those modules with the specific +# module style (EDK or EDKII) specified in [Components] section. +# +# For advanced features, it is recommended to enable [BuildOptions] in +# the applicable INF file so it does not affect the whole board package +# build when this DSC file is active. +# +################################################################################################### +[BuildOptions] diff --git a/Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dsc b/Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dsc new file mode 100644 index 0000000000..0ce8debee0 --- /dev/null +++ b/Features/Intel/TemplateFeaturePkg/TemplateFeaturePkg.dsc @@ -0,0 +1,30 @@ +## @file +# This package provides advanced feature functionality for <TEMPLATE> support. +# This package should only depend on EDK II Core packages, IntelSiliconPkg, and MinPlatformPkg. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = TemplateFeaturePkg + PLATFORM_GUID = 00000000-0000-0000-0000-000000000000 + PLATFORM_VERSION = 0.1 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + PEI_ARCH = IA32 + DXE_ARCH = X64 + +# +# This package always builds the feature. +# +!include Include/TemplateFeature.dsc diff --git a/Features/Intel/TemplateFeaturePkg/Include/PostMemory.fdf b/Features/Intel/TemplateFeaturePkg/Include/PostMemory.fdf new file mode 100644 index 0000000000..86225cefbe --- /dev/null +++ b/Features/Intel/TemplateFeaturePkg/Include/PostMemory.fdf @@ -0,0 +1,8 @@ +## @file +# FDF file for post-memory <TEMPLATE> advanced feature modules. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## diff --git a/Features/Intel/TemplateFeaturePkg/Include/PreMemory.fdf b/Features/Intel/TemplateFeaturePkg/Include/PreMemory.fdf new file mode 100644 index 0000000000..5ce30af174 --- /dev/null +++ b/Features/Intel/TemplateFeaturePkg/Include/PreMemory.fdf @@ -0,0 +1,8 @@ +## @file +# FDF file for pre-memory <TEMPLATE> advanced feature modules. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## diff --git a/Features/Intel/TemplateFeaturePkg/Readme.md b/Features/Intel/TemplateFeaturePkg/Readme.md new file mode 100644 index 0000000000..90be279ae3 --- /dev/null +++ b/Features/Intel/TemplateFeaturePkg/Readme.md @@ -0,0 +1,71 @@ +# Overview +* **Feature Name:** <Feature Name> +* **PI Phase(s) Supported:** <PI Phases Supported> +* **SMM Required?** <Yes/No> + +## Purpose +Simple overview that describes the purpose of the feature. In general, this should be no longer than one paragraph. + +# High-Level Theory of Operation +A description of how the device works at a high-level. + +The description should not be constrained to implementation details but provide a simple mental model of how the +feature is supposed to work. + +## Firmware Volumes +A bulleted list of the firmware volumes that feature module(s) are placed in. + +## Modules +A bulleted list of the modules that make up the feature. + +## <Module Name> +Each module in the feature should have a section that describes the module in a level of detail that is useful +to better understand the module source code. + +## <Library Name> +Each library in the feature should have a section that describes the library in a level of detail that is useful +to better understand the library source code. + +## Key Functions +A bulleted list of key functions for interacting with the feature. + +Not all features need to be listed. Only functions exposed through external interfaces that are important for feature +users to be aware of. + +## Configuration +Information that is useful for configuring the feature. + +Not all configuration options need to be listed. This section is used to provide more background on configuration +options than possible elsewhere. + +## Data Flows +Architecturally defined data structures and flows for the feature. + +## Control Flows +Key control flows for the feature. + +## Build Flows +Any special build flows should be described in this section. + +This is particularly useful for features that use custom build tools or require non-standard tool configuration. If the +standard flow in the feature package template is used, this section may be empty. + +## Test Point Results +The test(s) that can verify porting is complete for the feature. + +Each feature must describe at least one test point to verify the feature is successful. If the test point is not +implemented, this should be stated. + +## Functional Exit Criteria +The testable functionality for the feature. + +This section should provide an ordered list of criteria that a board integrator can reference to ensure the feature is +functional on their board. + +## Feature Enabling Checklist +An ordered list of required activities to achieve desired functionality for the feature. + +## Common Optimizations +Common size or performance tuning options for this feature. + +This section is recommended but not required. If not used, the contents should be left empty. -- 2.16.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#51396): https://edk2.groups.io/g/devel/message/51396 Mute This Topic: https://groups.io/mt/63457438/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-