## @file
# Component description file for UnixAutoScan module
#
# This module abstracts memory auto-scan in a Unix environment.
# Copyright (c) 2006 - 2010, Intel Corporation
#
#  All rights reserved. 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                      = UnixAutoScan
  FILE_GUID                      = f3f36cb0-8985-11db-b195-0040d02b1835
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = PeimInitializeUnixAutoScan

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  UnixAutoScan.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UnixPkg/UnixPkg.dec

[LibraryClasses]
  PeiServicesTablePointerLib
  PeiServicesLib
  HobLib
  BaseMemoryLib
  BaseLib
  PeimEntryPoint
  DebugLib


[Ppis]
  gEfiPeiMemoryDiscoveredPpiGuid                # PPI ALWAYS_PRODUCED
  gPeiUnixAutoScanPpiGuid                       # PPI ALWAYS_CONSUMED


[Depex]
  gPeiUnixAutoScanPpiGuid AND gEfiPeiMasterBootModePpiGuid

