## @file
#  Pei Crc32 Guided Section Extract library.
#
#  This library doesn't produce any library class. The constructor function uses
#  ExtractGuidedSectionLib service to register CRC32 guided section handler
#  that parses CRC32 encapsulation section and extracts raw data.
#
# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  This program and the accompanying materials
#  are licensed and made available under the terms and conditions of the BSD License
#  which accompanies this distribution. The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PeiCrc32GuidedSectionExtractLib
  FILE_GUID                      = 1EBE57F5-BE42-45f0-A1F9-FA3DC633910B
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = NULL|PEI_CORE PEIM
  CONSTRUCTOR                    = PeiCrc32GuidedSectionExtractLibConstructor
  MODULE_UNI_FILE                = PeiCrc32GuidedSectionExtractLib.uni

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
#

[Sources]
  PeiCrc32GuidedSectionExtractLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  ExtractGuidedSectionLib
  DebugLib
  BaseMemoryLib
  BaseLib

[Guids]
  gEfiCrc32GuidedSectionExtractionGuid             ## PRODUCES ## UNDEFINED
