## @file
#  Console support on graphic devices.
#
#  This driver will install Simple Text Output protocol by consuming Graphices Output
#  protocol or UGA Draw protocol on graphic devices.
#  
#  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                      = GraphicsConsoleDxe
  MODULE_UNI_FILE                = GraphicsConsoleDxe.uni
  FILE_GUID                      = CCCB0C28-4B24-11d5-9A5A-0090273FC14D
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeGraphicsConsole

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#
#  DRIVER_BINDING                =  gGraphicsConsoleDriverBinding
#  COMPONENT_NAME                =  gGraphicsConsoleComponentName
#  COMPONENT_NAME2               =  gGraphicsConsoleComponentName2
#

[Sources]
  ComponentName.c
  LaffStd.c
  GraphicsConsole.c
  GraphicsConsole.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiLib
  UefiDriverEntryPoint
  DebugLib
  HiiLib
  PcdLib

[Protocols]
  gEfiDevicePathProtocolGuid                    ## TO_START
  gEfiSimpleTextOutProtocolGuid                 ## BY_START
  gEfiGraphicsOutputProtocolGuid                ## TO_START
  gEfiUgaDrawProtocolGuid                       ## TO_START
  gEfiHiiFontProtocolGuid                       ## TO_START
  ## TO_START
  ## NOTIFY
  gEfiHiiDatabaseProtocolGuid

[FeaturePcd]
  gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution   ## SOMETIMES_CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  GraphicsConsoleDxeExtra.uni
