## @file
#  Initializes MemoryOverwriteRequestControlLock variable
#
#  This module will add Variable Hook and allow MemoryOverwriteRequestControlLock variable set only once.
#
#  NOTE: This module only handles secure MOR V1 and is deprecated.
#  The secure MOR V2 is handled inside of variable driver.
#
# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = TcgMorLockSmm
  MODULE_UNI_FILE                = TcgMorLock.uni
  FILE_GUID                      = E2EA6F47-E678-47FA-8C1B-02A03E825C6E
  MODULE_TYPE                    = DXE_SMM_DRIVER
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x0001000A
  ENTRY_POINT                    = MorLockDriverEntryPointSmm

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  TcgMorLock.h
  TcgMorLock.c
  TcgMorLockSmm.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  SmmServicesTableLib
  DebugLib
  BaseLib
  BaseMemoryLib

[Guids]
  ## SOMETIMES_CONSUMES      ## Variable:L"MemoryOverwriteRequestControl"
  gEfiMemoryOverwriteControlDataGuid

  ## SOMETIMES_CONSUMES      ## Variable:L"MemoryOverwriteRequestControlLock"
  ## PRODUCES                ## Variable:L"MemoryOverwriteRequestControlLock"
  gEfiMemoryOverwriteRequestControlLockGuid

[Protocols]
  gEdkiiSmmVarCheckProtocolGuid           ## CONSUMES
  gEfiSmmVariableProtocolGuid             ## CONSUMES

[Depex]
  gEfiSmmVariableProtocolGuid AND
  gSmmVariableWriteGuid AND
  ( gEfiTcgProtocolGuid OR gEfiTcg2ProtocolGuid )

[UserExtensions.TianoCore."ExtraFiles"]
  TcgMorLockExtra.uni
