## @file
# Module produces EDK gEfiPrintProtocolGuid for backward compatibility support.
#
# EDK II retires old EDK Print Protocol and this module produces
# gEfiPrintProtocolGuid based on PrintLib:
# 1) If it links against BasePrintLib in MdePkg, it produces gEfiPrintProtocolGuid
#    without any prerequisites.
# 2) If it links against DxePrintLibPrint2Protocol in MdeModulePkg, it produces
#    gEfiPrintProtocolGuid on top of gEfiPrint2ProtocolGuid.
#
# 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                      = PrintThunk
  FILE_GUID                      = 3792FF94-8614-45ed-902B-1207BF1490A8
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitPrintThunk

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  PrintThunk.c

[Packages]
  MdePkg/MdePkg.dec
  EdkCompatibilityPkg/EdkCompatibilityPkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  DebugLib
  UefiBootServicesTableLib
  PrintLib

[Protocols]
  gEfiPrintProtocolGuid      ## PRODUCES

[Depex]
  TRUE
