## @file
# DXE S3 boot script Library.
#
# 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                      = DxeS3BootScriptLib
  MODULE_UNI_FILE                = DxeS3BootScriptLib.uni
  FILE_GUID                      = 57F9967B-26CD-4262-837A-55B8AA158254
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = S3BootScriptLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_DRIVER UEFI_APPLICATION


  CONSTRUCTOR                    = S3BootScriptLibInitialize
  DESTRUCTOR                     = S3BootScriptLibDeinitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  BootScriptSave.c
  BootScriptExecute.c
  InternalBootScriptLib.h
  BootScriptInternalFormat.h


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  BaseLib
  BaseMemoryLib
  TimerLib
  DebugLib
  PcdLib
  UefiLib
  SmbusLib
  PciSegmentLib
  IoLib
  LockBoxLib

[Protocols]
  gEfiSmmBase2ProtocolGuid                      ## SOMETIMES_CONSUMES
  gEfiDxeSmmReadyToLockProtocolGuid             ## NOTIFY
  gEfiSmmReadyToLockProtocolGuid                ## NOTIFY
  gEdkiiSmmExitBootServicesProtocolGuid         ## NOTIFY
  gEdkiiSmmLegacyBootProtocolGuid               ## NOTIFY

[Pcd]
  ## CONSUMES
  ## SOMETIMES_PRODUCES
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr
  ## CONSUMES
  ## SOMETIMES_PRODUCES
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr
  gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptRuntimeTableReservePageNumber   ## CONSUMES

