## @file
#  English module that provides Unicode Collation supports.
#  
#  This driver installs Unicode ISO 639-2 Collation and
#  RFC 4646 Unicode Collation 2 protocols based on feature flags
#  PcdUnicodeCollationSupport & PcdUnicodeCollation2Support respectively.
#  It allows code running in the boot services environment to perform lexical
#  comparison functions on Unicode strings for English languages.
#  
#  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                      = EnglishDxe
  MODULE_UNI_FILE                = EnglishDxe.uni
  FILE_GUID                      = CD3BAFB6-50FB-4fe8-8E4E-AB74D2C1A600
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeUnicodeCollationEng

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  UnicodeCollationEng.c
  UnicodeCollationEng.h


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  DebugLib
  PcdLib

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollationSupport     ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollation2Support    ## CONSUMES

[Protocols]
  gEfiUnicodeCollationProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollationSupport      ## SOMETIMES_PRODUCES
  gEfiUnicodeCollation2ProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollation2Support    ## PRODUCES

[UserExtensions.TianoCore."ExtraFiles"]
  EnglishDxeExtra.uni
