## @file
#  This is core module in DXE phase.
#
#  It provides an implementation of DXE Core that is compliant with DXE CIS.
#
#  Copyright (c) 2006 - 2018, 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                      = DxeCore
  MODULE_UNI_FILE                = DxeCore.uni
  FILE_GUID                      = D6A2CB7F-6A18-4e2f-B43B-9920A733700A
  MODULE_TYPE                    = DXE_CORE
  VERSION_STRING                 = 1.0


  ENTRY_POINT                    = DxeMain

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
#

[Sources]
  DxeMain.h
  SectionExtraction/CoreSectionExtraction.c
  Image/Image.c
  Image/Image.h
  Misc/DebugImageInfo.c
  Misc/Stall.c
  Misc/SetWatchdogTimer.c
  Misc/InstallConfigurationTable.c
  Misc/PropertiesTable.c
  Misc/MemoryAttributesTable.c
  Misc/MemoryProtection.c
  Library/Library.c
  Hand/DriverSupport.c
  Hand/Notify.c
  Hand/Locate.c
  Hand/Handle.c
  Hand/Handle.h
  Gcd/Gcd.c
  Gcd/Gcd.h
  Mem/Pool.c
  Mem/Page.c
  Mem/MemData.c
  Mem/Imem.h
  Mem/MemoryProfileRecord.c
  Mem/HeapGuard.c
  Mem/HeapGuard.h
  FwVolBlock/FwVolBlock.c
  FwVolBlock/FwVolBlock.h
  FwVol/FwVolWrite.c
  FwVol/FwVolRead.c
  FwVol/FwVolAttrib.c
  FwVol/Ffs.c
  FwVol/FwVol.c
  FwVol/FwVolDriver.h
  Event/Tpl.c
  Event/Timer.c
  Event/Event.c
  Event/Event.h
  Dispatcher/Dependency.c
  Dispatcher/Dispatcher.c
  DxeMain/DxeProtocolNotify.c
  DxeMain/DxeMain.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseMemoryLib
  CacheMaintenanceLib
  UefiDecompressLib
  PerformanceLib
  HobLib
  BaseLib
  UefiLib
  DebugLib
  DxeCoreEntryPoint
  PeCoffLib
  PeCoffGetEntryPointLib
  PeCoffExtraActionLib
  ExtractGuidedSectionLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  DevicePathLib
  ReportStatusCodeLib
  DxeServicesLib
  DebugAgentLib
  CpuExceptionHandlerLib
  PcdLib

[Guids]
  gEfiEventMemoryMapChangeGuid                  ## PRODUCES             ## Event
  gEfiEventVirtualAddressChangeGuid             ## CONSUMES             ## Event
  ## CONSUMES   ## Event
  ## PRODUCES   ## Event
  gEfiEventExitBootServicesGuid
  gEfiHobMemoryAllocModuleGuid                  ## SOMETIMES_CONSUMES   ## HOB
  gEfiFirmwareFileSystem2Guid                   ## CONSUMES             ## GUID # Used to compare with FV's file system guid and get the FV's file system format
  gEfiFirmwareFileSystem3Guid                   ## CONSUMES             ## GUID # Used to compare with FV's file system guid and get the FV's file system format
  gAprioriGuid                                  ## SOMETIMES_CONSUMES   ## File
  gEfiDebugImageInfoTableGuid                   ## PRODUCES             ## SystemTable
  gEfiHobListGuid                               ## PRODUCES             ## SystemTable
  gEfiDxeServicesTableGuid                      ## PRODUCES             ## SystemTable
  ## PRODUCES               ## SystemTable
  ## SOMETIMES_CONSUMES     ## HOB
  gEfiMemoryTypeInformationGuid
  gEfiEventDxeDispatchGuid                      ## PRODUCES             ## Event
  gLoadFixedAddressConfigurationTableGuid       ## SOMETIMES_PRODUCES   ## SystemTable
  ## PRODUCES   ## Event
  ## CONSUMES   ## Event
  gIdleLoopEventGuid
  gEventExitBootServicesFailedGuid              ## SOMETIMES_PRODUCES   ## Event
  gEfiVectorHandoffTableGuid                    ## SOMETIMES_PRODUCES   ## SystemTable
  gEdkiiMemoryProfileGuid                       ## SOMETIMES_PRODUCES   ## GUID # Install protocol
  gEfiPropertiesTableGuid                       ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiMemoryAttributesTableGuid                 ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiEndOfDxeEventGroupGuid                    ## SOMETIMES_CONSUMES   ## Event
  gEfiHobMemoryAllocStackGuid                   ## SOMETIMES_CONSUMES   ## SystemTable

[Ppis]
  gEfiVectorHandoffInfoPpiGuid                  ## UNDEFINED # HOB

[Protocols]
  ## PRODUCES
  ## SOMETIMES_CONSUMES
  gEfiDecompressProtocolGuid
  gEfiLoadPeImageProtocolGuid                   ## SOMETIMES_PRODUCES   # Produces when PcdFrameworkCompatibilitySupport is set
  gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiLoadFileProtocolGuid                      ## SOMETIMES_CONSUMES
  gEfiLoadFile2ProtocolGuid                     ## SOMETIMES_CONSUMES
  gEfiBusSpecificDriverOverrideProtocolGuid     ## SOMETIMES_CONSUMES
  gEfiDriverFamilyOverrideProtocolGuid          ## SOMETIMES_CONSUMES
  gEfiPlatformDriverOverrideProtocolGuid        ## SOMETIMES_CONSUMES
  gEfiDriverBindingProtocolGuid                 ## SOMETIMES_CONSUMES
  ## PRODUCES
  ## CONSUMES
  ## NOTIFY
  gEfiFirmwareVolumeBlockProtocolGuid
  ## PRODUCES
  ## CONSUMES
  ## NOTIFY
  gEfiFirmwareVolume2ProtocolGuid
  ## PRODUCES
  ## CONSUMES
  gEfiDevicePathProtocolGuid
  gEfiLoadedImageProtocolGuid                   ## PRODUCES
  gEfiLoadedImageDevicePathProtocolGuid         ## PRODUCES
  gEfiHiiPackageListProtocolGuid                ## SOMETIMES_PRODUCES
  gEfiEbcProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiSmmBase2ProtocolGuid                      ## SOMETIMES_CONSUMES

  # Arch Protocols
  gEfiBdsArchProtocolGuid                       ## CONSUMES
  gEfiCpuArchProtocolGuid                       ## CONSUMES
  gEfiMetronomeArchProtocolGuid                 ## CONSUMES
  gEfiMonotonicCounterArchProtocolGuid          ## CONSUMES
  gEfiRealTimeClockArchProtocolGuid             ## CONSUMES
  gEfiResetArchProtocolGuid                     ## CONSUMES
  gEfiRuntimeArchProtocolGuid                   ## CONSUMES
  gEfiSecurityArchProtocolGuid                  ## CONSUMES
  gEfiSecurity2ArchProtocolGuid                 ## SOMETIMES_CONSUMES
  gEfiTimerArchProtocolGuid                     ## CONSUMES
  gEfiVariableWriteArchProtocolGuid             ## CONSUMES
  gEfiVariableArchProtocolGuid                  ## CONSUMES
  gEfiCapsuleArchProtocolGuid                   ## CONSUMES
  gEfiWatchdogTimerArchProtocolGuid             ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport     ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePageNumber    ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageNumber     ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable            ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxEfiSystemTablePointerAddress         ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfileMemoryType                 ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfilePropertyMask               ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfileDriverPath                 ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPropertiesTableEnable                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy             ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPageType                       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPoolType                       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard                           ## CONSUMES

# [Hob]
# RESOURCE_DESCRIPTOR   ## CONSUMES
# MEMORY_ALLOCATION     ## CONSUMES
# FIRMWARE_VOLUME       ## CONSUMES
# UNDEFINED             ## CONSUMES # CPU
#
# [Event]
# EVENT_TYPE_RELATIVE_TIMER ## PRODUCES  # DxeCore signals timer event.
# EVENT_TYPE_PERIODIC_TIMER ## PRODUCES  # DxeCore signals timer event.
#

[UserExtensions.TianoCore."ExtraFiles"]
  DxeCoreExtra.uni
