## @file
# Instance of Memory Allocation Library using SMM Services Table,
# with memory profile support.
#
# Memory Allocation Library that uses services from the SMM Services Table to
# allocate and free memory, with memory profile support.
#
# The implementation of this instance is copied from UefiMemoryAllocationLib
# in MdePkg and updated to support both MemoryAllocationLib and MemoryProfileLib.
#
# 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                      = SmmMemoryAllocationProfileLib
  MODULE_UNI_FILE                = SmmMemoryAllocationProfileLib.uni
  FILE_GUID                      = DC50729F-8633-47ab-8FD3-6939688CEE4C
  MODULE_TYPE                    = DXE_SMM_DRIVER
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x0001000A
  LIBRARY_CLASS                  = MemoryAllocationLib|DXE_SMM_DRIVER
  CONSTRUCTOR                    = SmmMemoryAllocationLibConstructor
  DESTRUCTOR                     = SmmMemoryAllocationLibDestructor
  LIBRARY_CLASS                  = MemoryProfileLib|DXE_SMM_DRIVER
  CONSTRUCTOR                    = SmmMemoryProfileLibConstructor

#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  MemoryAllocationLib.c
  SmmMemoryProfileLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  DebugLib
  BaseMemoryLib
  SmmServicesTableLib
  UefiBootServicesTableLib

[Protocols]
  gEfiSmmAccess2ProtocolGuid    ## CONSUMES

[Guids]
  gEdkiiMemoryProfileGuid       ## SOMETIMES_CONSUMES   ## GUID # Locate protocol
  gEdkiiSmmMemoryProfileGuid    ## SOMETIMES_CONSUMES   ## GUID # Locate protocol

[Depex]
  gEfiSmmAccess2ProtocolGuid

