## @file
# This is the first module taking control from the coreboot.
#
#  Copyright (c) 2013 - 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                      = SecCore
  FILE_GUID                      = BA7BE337-6CFB-4dbb-B26C-21EC2FC16073
  MODULE_TYPE                    = SEC
  VERSION_STRING                 = 1.0


#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  SecMain.c
  SecMain.h
  FindPeiCore.c

[Sources.IA32]
  Ia32/Stack.nasm
  Ia32/SecEntry.nasm

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec
  CorebootModulePkg/CorebootModulePkg.dec

[LibraryClasses]
  BaseMemoryLib
  DebugLib
  BaseLib
  PcdLib
  DebugAgentLib
  UefiCpuLib
  PeCoffGetEntryPointLib
  PeCoffExtraActionLib

[Ppis]
  gEfiSecPlatformInformationPpiGuid             # PPI ALWAYS_PRODUCED
  gEfiTemporaryRamSupportPpiGuid                # PPI ALWAYS_PRODUCED

[Pcd]
  gUefiCorebootModulePkgTokenSpaceGuid.PcdPayloadFdMemBase
  gUefiCorebootModulePkgTokenSpaceGuid.PcdPayloadFdMemSize

