## @file
#  Cryptographic Library Instance for DXE_RUNTIME_DRIVER
#
#  Copyright (c) 2009 - 2010, 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                      = RuntimeCryptLib
  FILE_GUID                      = 78189cc0-727d-46a4-84ea-f7dd860de64a
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = BaseCryptLib
  CONSTRUCTOR                    = RuntimeCryptLibConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  Hash/CryptMd5.c
  Hash/CryptSha1.c
  Hash/CryptSha256.c
  Pk/CryptRsa.c
  
  SysCall/CrtWrapper.c
  SysCall/TimerWrapper.c
  SysCall/HelperWrapper.c
  SysCall/RuntimeMemAllocation.c

[Sources.Ia32]
  SysCall/Ia32/MathMultS64x64.c     | MSFT
  SysCall/Ia32/MathDivU64x64.c      | MSFT
  SysCall/Ia32/MathReminderU64x64.c | MSFT
  SysCall/Ia32/MathLShiftS64.c      | MSFT
  SysCall/Ia32/MathRShiftU64.c      | MSFT

  SysCall/Ia32/MathMultS64x64.c     | INTEL
  SysCall/Ia32/MathDivU64x64.c      | INTEL
  SysCall/Ia32/MathReminderU64x64.c | INTEL
  SysCall/Ia32/MathLShiftS64.c      | INTEL
  SysCall/Ia32/MathRShiftU64.c      | INTEL

  SysCall/Ia32/MathMultS64x64.S     | GCC
  SysCall/Ia32/MathDivU64x64.S      | GCC
  SysCall/Ia32/MathReminderU64x64.S | GCC
  SysCall/Ia32/MathLShiftS64.S      | GCC
  SysCall/Ia32/MathRShiftU64.S      | GCC

  SysCall/Ia32/Alloca.S             | GCC

[Packages]
  MdePkg/MdePkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  DebugLib
  OpensslLib
  IntrinsicLib

#
# Remove these [BuildOptions] after this library is cleaned up
#
[BuildOptions]
  GCC:*_GCC44_IA32_CC_FLAGS = "-D__cdecl=__attribute__((cdecl))" "-D__declspec(t)=__attribute__((t))"
  
