## @file
# Instance of Post Code Library based on Report Status Code Libray.
#
# Post Code Library that layers on top of a Report Status Code Libray instance.
#
# Copyright (c) 2006 - 2014, 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                      = PeiDxePostCodeLibReportStatusCode
  MODULE_UNI_FILE                = PeiDxePostCodeLibReportStatusCode.uni
  FILE_GUID                      = e062c52d-78dc-4cc5-b246-b13497a8123c
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PostCodeLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER PEIM PEI_CORE UEFI_APPLICATION UEFI_DRIVER


#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  PostCode.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  BaseLib
  PcdLib
  ReportStatusCodeLib

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask     ## CONSUMES

