## @file
#  ACPI Table Protocol Driver
#
#  This driver initializes ACPI tables (Rsdp, Rsdt and Xsdt) and produces UEFI/PI
#  services to install/uninstall/manage ACPI tables.
#
#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
#  Copyright (c) 2016, Linaro Ltd. 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                      = AcpiTableDxe
  MODULE_UNI_FILE                = AcpiTableDxe.uni
  FILE_GUID                      = 9622E42C-8E38-4a08-9E8F-54F784652F6B
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeAcpiTableDxe

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  AcpiTableProtocol.c
  AcpiTable.h
  AcpiTable.c
  AcpiSdt.h
  AcpiSdt.c
  Aml.c
  AmlString.c
  AmlOption.c
  AmlChild.c
  AmlNamespace.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  UefiDriverEntryPoint
  BaseMemoryLib
  UefiLib
  DebugLib
  BaseLib
  PcdLib

[Guids]
  gEfiAcpi10TableGuid                           ## PRODUCES ## SystemTable
  gEfiAcpiTableGuid                             ## PRODUCES ## SystemTable

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol  ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId            ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision      ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions    ## CONSUMES

[Protocols]
  gEfiAcpiTableProtocolGuid                     ## PRODUCES
  gEfiAcpiSdtProtocolGuid                       ## PRODUCES

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  AcpiTableDxeExtra.uni
