## @file
# DXE S3 boot script Library.
#
# Copyright (c) 2006 - 2016, 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 DXE_SAL_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 IPF 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

