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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to