## @file
#  This is core module in DXE phase.
#
#  It provides an implementation of DXE Core that is compliant with DXE CIS.
#
#  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[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/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/MemoryBin.c
  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
  ImagePropertiesRecordLib
  OrderedCollectionLib

[Guids]
  gEfiEventMemoryMapChangeGuid                  ## PRODUCES             ## Event
  gEfiEventVirtualAddressChangeGuid             ## CONSUMES             ## Event
  ## CONSUMES   ## Event
  ## PRODUCES   ## Event
  gEfiEventBeforeExitBootServicesGuid
  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
  gEfiMemoryAttributesTableGuid                 ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiEndOfDxeEventGroupGuid                    ## SOMETIMES_CONSUMES   ## Event
  gEfiHobMemoryAllocStackGuid                   ## SOMETIMES_CONSUMES   ## SystemTable

[Ppis]
  gEfiVectorHandoffInfoPpiGuid                  ## UNDEFINED # HOB

[Protocols]
  ## PRODUCES
  ## SOMETIMES_CONSUMES
  gEfiDecompressProtocolGuid
  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
  gEfiSmmBase2ProtocolGuid                      ## SOMETIMES_CONSUMES
  gEdkiiPeCoffImageEmulatorProtocolGuid         ## SOMETIMES_CONSUMES
  gEfiMemoryAttributeProtocolGuid               ## 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

[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.PcdImageProtectionPolicy                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy             ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPageType                       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPoolType                       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard                           ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFwVolDxeMaxEncapsulationDepth           ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdImageLargeAddressLoad                   ## 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
