1## @file
2#  Open Virtual Machine Firmware: FDF
3#
4#  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
5#
6#  This program and the accompanying materials
7#  are licensed and made available under the terms and conditions of the BSD License
8#  which accompanies this distribution. The full text of the license may be found at
9#  http://opensource.org/licenses/bsd-license.php
10#
11#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13#
14##
15
16################################################################################
17
18#
19# Default flash size for DEBUG build is 2MB. For RELEASE it is 1MB.
20#
21# Defining FD_SIZE_1MB or FD_SIZE_2MB on the build command line can
22# override this.
23#
24[Defines]
25!if $(TARGET) == RELEASE
26!ifndef $(FD_SIZE_2MB)
27DEFINE FD_SIZE_1MB=
28!endif
29!endif
30
31!include OvmfPkg.fdf.inc
32
33#
34# Build the variable store and the firmware code as one unified flash device
35# image.
36#
37[FD.OVMF]
38BaseAddress   = $(FW_BASE_ADDRESS)
39Size          = $(FW_SIZE)
40ErasePolarity = 1
41BlockSize     = $(BLOCK_SIZE)
42NumBlocks     = $(FW_BLOCKS)
43
44!include VarStore.fdf.inc
45
46$(VARS_SIZE)|$(FVMAIN_SIZE)
47FV = FVMAIN_COMPACT
48
49$(SECFV_OFFSET)|$(SECFV_SIZE)
50FV = SECFV
51
52#
53# Build the variable store and the firmware code as separate flash device
54# images.
55#
56[FD.OVMF_VARS]
57BaseAddress   = $(FW_BASE_ADDRESS)
58Size          = $(VARS_SIZE)
59ErasePolarity = 1
60BlockSize     = $(BLOCK_SIZE)
61NumBlocks     = $(VARS_BLOCKS)
62
63!include VarStore.fdf.inc
64
65[FD.OVMF_CODE]
66BaseAddress   = $(CODE_BASE_ADDRESS)
67Size          = $(CODE_SIZE)
68ErasePolarity = 1
69BlockSize     = $(BLOCK_SIZE)
70NumBlocks     = $(CODE_BLOCKS)
71
720x00000000|$(FVMAIN_SIZE)
73FV = FVMAIN_COMPACT
74
75$(FVMAIN_SIZE)|$(SECFV_SIZE)
76FV = SECFV
77
78################################################################################
79
80[FD.MEMFD]
81BaseAddress   = $(MEMFD_BASE_ADDRESS)
82Size          = 0xA00000
83ErasePolarity = 1
84BlockSize     = 0x10000
85NumBlocks     = 0xA0
86
870x000000|0x006000
88gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
89
900x006000|0x001000
91gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageSize
92
930x007000|0x001000
94gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize
95
960x010000|0x008000
97gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
98
990x018000|0x008000
100gUefiOvmfPkgTokenSpaceGuid.PcdS3AcpiReservedMemoryBase|gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize
101
1020x020000|0x0E0000
103gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize
104FV = PEIFV
105
1060x100000|0x900000
107gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize
108FV = DXEFV
109
110################################################################################
111
112[FV.SECFV]
113BlockSize          = 0x1000
114FvAlignment        = 16
115ERASE_POLARITY     = 1
116MEMORY_MAPPED      = TRUE
117STICKY_WRITE       = TRUE
118LOCK_CAP           = TRUE
119LOCK_STATUS        = TRUE
120WRITE_DISABLED_CAP = TRUE
121WRITE_ENABLED_CAP  = TRUE
122WRITE_STATUS       = TRUE
123WRITE_LOCK_CAP     = TRUE
124WRITE_LOCK_STATUS  = TRUE
125READ_DISABLED_CAP  = TRUE
126READ_ENABLED_CAP   = TRUE
127READ_STATUS        = TRUE
128READ_LOCK_CAP      = TRUE
129READ_LOCK_STATUS   = TRUE
130
131#
132# SEC Phase modules
133#
134# The code in this FV handles the initial firmware startup, and
135# decompresses the PEI and DXE FVs which handles the rest of the boot sequence.
136#
137INF  OvmfPkg/Sec/SecMain.inf
138
139INF  RuleOverride=RESET_VECTOR OvmfPkg/ResetVector/ResetVector.inf
140
141################################################################################
142[FV.PEIFV]
143BlockSize          = 0x10000
144FvAlignment        = 16
145ERASE_POLARITY     = 1
146MEMORY_MAPPED      = TRUE
147STICKY_WRITE       = TRUE
148LOCK_CAP           = TRUE
149LOCK_STATUS        = TRUE
150WRITE_DISABLED_CAP = TRUE
151WRITE_ENABLED_CAP  = TRUE
152WRITE_STATUS       = TRUE
153WRITE_LOCK_CAP     = TRUE
154WRITE_LOCK_STATUS  = TRUE
155READ_DISABLED_CAP  = TRUE
156READ_ENABLED_CAP   = TRUE
157READ_STATUS        = TRUE
158READ_LOCK_CAP      = TRUE
159READ_LOCK_STATUS   = TRUE
160
161APRIORI PEI {
162  INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf
163}
164
165#
166#  PEI Phase modules
167#
168INF  MdeModulePkg/Core/Pei/PeiMain.inf
169INF  MdeModulePkg/Universal/PCD/Pei/Pcd.inf
170INF  IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
171INF  OvmfPkg/PlatformPei/PlatformPei.inf
172INF  MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
173INF  UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
174!if $(SMM_REQUIRE) == TRUE
175INF  OvmfPkg/SmmAccess/SmmAccessPei.inf
176!endif
177
178################################################################################
179
180[FV.DXEFV]
181BlockSize          = 0x10000
182FvAlignment        = 16
183ERASE_POLARITY     = 1
184MEMORY_MAPPED      = TRUE
185STICKY_WRITE       = TRUE
186LOCK_CAP           = TRUE
187LOCK_STATUS        = TRUE
188WRITE_DISABLED_CAP = TRUE
189WRITE_ENABLED_CAP  = TRUE
190WRITE_STATUS       = TRUE
191WRITE_LOCK_CAP     = TRUE
192WRITE_LOCK_STATUS  = TRUE
193READ_DISABLED_CAP  = TRUE
194READ_ENABLED_CAP   = TRUE
195READ_STATUS        = TRUE
196READ_LOCK_CAP      = TRUE
197READ_LOCK_STATUS   = TRUE
198
199APRIORI DXE {
200  INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
201  INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
202!if $(SMM_REQUIRE) == FALSE
203  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
204!endif
205}
206
207#
208# DXE Phase modules
209#
210INF  MdeModulePkg/Core/Dxe/DxeMain.inf
211
212INF  IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf
213INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
214
215INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
216INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
217INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
218INF  PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf
219INF  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
220INF  UefiCpuPkg/CpuDxe/CpuDxe.inf
221INF  PcAtChipsetPkg/8254TimerDxe/8254Timer.inf
222INF  OvmfPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf
223INF  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
224INF  PcAtChipsetPkg/KbcResetDxe/Reset.inf
225INF  MdeModulePkg/Universal/Metronome/Metronome.inf
226INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
227
228INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
229INF  OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
230INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
231INF  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
232INF  OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf
233INF  OvmfPkg/XenBusDxe/XenBusDxe.inf
234INF  OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf
235
236!if $(SECURE_BOOT_ENABLE) == TRUE
237  INF  SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
238!endif
239
240INF  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
241INF  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
242INF  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
243INF  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
244INF  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
245INF  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
246INF  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
247INF  IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
248INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
249INF  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
250INF  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
251INF  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
252INF  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
253INF  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
254INF  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
255INF  OvmfPkg/SataControllerDxe/SataControllerDxe.inf
256INF  MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
257INF  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
258INF  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
259INF  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
260INF  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
261INF  MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
262
263INF  PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
264INF  IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
265
266!ifndef $(SOURCE_DEBUG_ENABLE)
267INF  IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf
268!endif
269
270INF  IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
271INF  IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf
272
273INF  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
274INF  OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
275
276INF  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
277INF  OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
278INF  RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf
279INF  OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf
280INF  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
281INF  MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
282
283INF  RuleOverride = BINARY FatBinPkg/EnhancedFatDxe/Fat.inf
284
285!ifndef $(USE_OLD_SHELL)
286INF  ShellPkg/Application/Shell/Shell.inf
287!else
288INF  RuleOverride = BINARY EdkShellBinPkg/FullShell/FullShell.inf
289!endif
290
291FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
292  SECTION RAW = MdeModulePkg/Logo/Logo.bmp
293}
294
295#
296# Network modules
297#
298!if $(E1000_ENABLE)
299  FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {
300    SECTION PE32 = Intel3.5/EFI32/E3507E2.EFI
301  }
302!endif
303  INF  MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
304  INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
305  INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
306  INF  MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
307  INF  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
308  INF  MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
309  INF  MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
310  INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
311  INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
312!if $(NETWORK_IP6_ENABLE) == TRUE
313  INF  NetworkPkg/Ip6Dxe/Ip6Dxe.inf
314  INF  NetworkPkg/TcpDxe/TcpDxe.inf
315  INF  NetworkPkg/Udp6Dxe/Udp6Dxe.inf
316  INF  NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
317  INF  NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
318  INF  NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
319!if $(SECURE_BOOT_ENABLE) == TRUE
320  INF  NetworkPkg/IScsiDxe/IScsiDxe.inf
321!else
322  INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
323!endif
324!else
325  INF  MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
326  INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
327  INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
328!endif
329!if $(HTTP_BOOT_ENABLE) == TRUE
330  INF  NetworkPkg/DnsDxe/DnsDxe.inf
331  INF  NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf
332  INF  NetworkPkg/HttpDxe/HttpDxe.inf
333  INF  NetworkPkg/HttpBootDxe/HttpBootDxe.inf
334!endif
335  INF  OvmfPkg/VirtioNetDxe/VirtioNet.inf
336
337#
338# Usb Support
339#
340INF  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
341INF  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
342INF  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
343INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
344INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
345INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
346
347!ifdef $(CSM_ENABLE)
348INF  IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
349INF  IntelFrameworkModulePkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
350INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
351!endif
352
353INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
354INF  OvmfPkg/PlatformDxe/Platform.inf
355
356!if $(SMM_REQUIRE) == TRUE
357INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
358INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
359INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
360INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
361INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
362INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
363INF  MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
364INF  UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
365
366#
367# Variable driver stack (SMM)
368#
369INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
370INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
371INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
372INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
373
374!else
375
376#
377# Variable driver stack (non-SMM)
378#
379INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
380INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
381INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
382INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
383!endif
384
385################################################################################
386
387[FV.FVMAIN_COMPACT]
388FvAlignment        = 16
389ERASE_POLARITY     = 1
390MEMORY_MAPPED      = TRUE
391STICKY_WRITE       = TRUE
392LOCK_CAP           = TRUE
393LOCK_STATUS        = TRUE
394WRITE_DISABLED_CAP = TRUE
395WRITE_ENABLED_CAP  = TRUE
396WRITE_STATUS       = TRUE
397WRITE_LOCK_CAP     = TRUE
398WRITE_LOCK_STATUS  = TRUE
399READ_DISABLED_CAP  = TRUE
400READ_ENABLED_CAP   = TRUE
401READ_STATUS        = TRUE
402READ_LOCK_CAP      = TRUE
403READ_LOCK_STATUS   = TRUE
404
405FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
406   SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
407     #
408     # These firmware volumes will have files placed in them uncompressed,
409     # and then both firmware volumes will be compressed in a single
410     # compression operation in order to achieve better overall compression.
411     #
412     SECTION FV_IMAGE = PEIFV
413     SECTION FV_IMAGE = DXEFV
414   }
415 }
416
417!include DecomprScratchEnd.fdf.inc
418
419################################################################################
420
421[Rule.Common.SEC]
422  FILE SEC = $(NAMED_GUID) {
423    PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi
424    UI       STRING ="$(MODULE_NAME)" Optional
425    VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
426  }
427
428[Rule.Common.PEI_CORE]
429  FILE PEI_CORE = $(NAMED_GUID) {
430    PE32     PE32   Align=Auto    $(INF_OUTPUT)/$(MODULE_NAME).efi
431    UI       STRING ="$(MODULE_NAME)" Optional
432    VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
433  }
434
435[Rule.Common.PEIM]
436  FILE PEIM = $(NAMED_GUID) {
437     PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex
438     PE32      PE32   Align=Auto         $(INF_OUTPUT)/$(MODULE_NAME).efi
439     UI       STRING="$(MODULE_NAME)" Optional
440     VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
441  }
442
443[Rule.Common.DXE_CORE]
444  FILE DXE_CORE = $(NAMED_GUID) {
445    PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi
446    UI       STRING="$(MODULE_NAME)" Optional
447    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
448  }
449
450[Rule.Common.DXE_DRIVER]
451  FILE DRIVER = $(NAMED_GUID) {
452    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
453    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
454    UI       STRING="$(MODULE_NAME)" Optional
455    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
456  }
457
458[Rule.Common.DXE_RUNTIME_DRIVER]
459  FILE DRIVER = $(NAMED_GUID) {
460    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
461    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
462    UI       STRING="$(MODULE_NAME)" Optional
463    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
464  }
465
466[Rule.Common.UEFI_DRIVER]
467  FILE DRIVER = $(NAMED_GUID) {
468    DXE_DEPEX    DXE_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
469    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
470    UI       STRING="$(MODULE_NAME)" Optional
471    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
472  }
473
474[Rule.Common.UEFI_DRIVER.BINARY]
475  FILE DRIVER = $(NAMED_GUID) {
476    DXE_DEPEX DXE_DEPEX Optional      |.depex
477    PE32      PE32                    |.efi
478    UI        STRING="$(MODULE_NAME)" Optional
479    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
480  }
481
482[Rule.Common.UEFI_APPLICATION]
483  FILE APPLICATION = $(NAMED_GUID) {
484    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
485    UI       STRING="$(MODULE_NAME)" Optional
486    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
487  }
488
489[Rule.Common.UEFI_APPLICATION.BINARY]
490  FILE APPLICATION = $(NAMED_GUID) {
491    PE32      PE32                    |.efi
492    UI        STRING="$(MODULE_NAME)" Optional
493    VERSION   STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
494  }
495
496[Rule.Common.USER_DEFINED.ACPITABLE]
497  FILE FREEFORM = $(NAMED_GUID) {
498    RAW ACPI               |.acpi
499    RAW ASL                |.aml
500  }
501
502[Rule.Common.USER_DEFINED.CSM]
503  FILE FREEFORM = $(NAMED_GUID) {
504    RAW BIN                |.bin
505  }
506
507[Rule.Common.SEC.RESET_VECTOR]
508  FILE RAW = $(NAMED_GUID) {
509    RAW BIN   Align = 16   |.bin
510  }
511
512[Rule.Common.SMM_CORE]
513  FILE SMM_CORE = $(NAMED_GUID) {
514    PE32     PE32           $(INF_OUTPUT)/$(MODULE_NAME).efi
515    UI       STRING="$(MODULE_NAME)" Optional
516    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
517  }
518
519[Rule.Common.DXE_SMM_DRIVER]
520  FILE SMM = $(NAMED_GUID) {
521    SMM_DEPEX    SMM_DEPEX Optional      $(INF_OUTPUT)/$(MODULE_NAME).depex
522    PE32     PE32                    $(INF_OUTPUT)/$(MODULE_NAME).efi
523    UI       STRING="$(MODULE_NAME)" Optional
524    VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
525  }
526