## @file
# Instance of Memory Allocation Library using SMM Services Table.
#
# Memory Allocation Library that uses services from the SMM Services Table to
# allocate and free memory.
#
# Copyright (c) 2010 - 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                      = SmmMemoryAllocationLib
  MODULE_UNI_FILE                = SmmMemoryAllocationLib.uni
  FILE_GUID                      = 4DF30A5D-D5B0-4f85-80ED-6B16CD343C8E
  MODULE_TYPE                    = DXE_SMM_DRIVER
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x0001000A
  LIBRARY_CLASS                  = MemoryAllocationLib|DXE_SMM_DRIVER
  CONSTRUCTOR                    = SmmMemoryAllocationLibConstructor
  DESTRUCTOR                     = SmmMemoryAllocationLibDestructor

#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  MemoryAllocationLib.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  DebugLib
  BaseMemoryLib
  SmmServicesTableLib
  UefiBootServicesTableLib

[Protocols]
  gEfiSmmAccess2ProtocolGuid    ## CONSUMES

[Depex]
  gEfiSmmAccess2ProtocolGuid

