## @file
# Module produce UC2 on top of UC.
#
# UEFI 2.1 specification supersedes Inte's EFI Specification 1.10.
# UNICODE_COLLATION_PROTOCOL defined in Inte's EFI Specification 1.10 is replaced by
# EFI_UNICODE_COLLATION_PROTOCOL in UEFI 2.1.
# This module produces UC2 on top of UC. This module is used on platform when both of
# these two conditions are true:
# 1) EFI 1.10 module producing UC present
# 2) And the rest of modules on the platform consume UC2
#
# Copyright (c) 2006 - 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                      = Uc2OnUcThunk
  FILE_GUID                      = 69282DF3-778F-4269-91AA-D7DF6E193317
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeUC2

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  Uc2OnUcThunk.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  EdkCompatibilityPkg/EdkCompatibilityPkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  BaseLib
  DebugLib
  UefiLib
  MemoryAllocationLib
  HiiLib
  BaseMemoryLib
  LanguageLib

[Protocols]
  gEfiUnicodeCollation2ProtocolGuid
  gEfiUnicodeCollationProtocolGuid

[Depex]
  TRUE
