## @file
#  Base ExtractGuidedSection Library.
#  This instance can also be used in SEC phase only when the memory is ready in SEC phase.
#  PCD PcdGuidedExtractHandlerTableAddress points to the available physical memory space
#  that is used to store Guided Extract Handlers.
#  Note: A driver of type DXE_RUNTIME_DRIVER can use this ExtractGuidedSectionLib
#  in their initialization without any issues. They only have to be careful in
#  the implementation of runtime services, because this BASE library instance doesn't
#  convert the address pointed by PcdGuidedExtractHandlerTableAddress to the virtual address.
#  And a driver should use this ExtractGuidedSectionLib to do implementation internally, also
#  this ExtractGuidedSectionLib couldn't be used for guided section extraction that is required
#  by PEI and DXE core for recovery or capsule image processing, etc.
#
#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = BaseExtractGuidedSectionLib
  MODULE_UNI_FILE                = BaseExtractGuidedSectionLib.uni
  FILE_GUID                      = 4e3236e9-d1c8-4c04-a89f-26f1c44b2592
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = ExtractGuidedSectionLib

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
#

[Sources]
  BaseExtractGuidedSectionLib.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  BaseMemoryLib
  DebugLib
  PcdLib

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler         ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress    ## CONSUMES

