OvmfPkgX64.dsc revision 67d8659474a051f58a5f30d4c8fba970a5d3be2c
1## @file 2# EFI/Framework Open Virtual Machine Firmware (OVMF) platform 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# Defines Section - statements that will be processed to create a Makefile. 19# 20################################################################################ 21[Defines] 22 PLATFORM_NAME = Ovmf 23 PLATFORM_GUID = 5a9e7754-d81b-49ea-85ad-69eaa7b1539b 24 PLATFORM_VERSION = 0.1 25 DSC_SPECIFICATION = 0x00010005 26 OUTPUT_DIRECTORY = Build/OvmfX64 27 SUPPORTED_ARCHITECTURES = X64 28 BUILD_TARGETS = DEBUG|RELEASE 29 SKUID_IDENTIFIER = DEFAULT 30 FLASH_DEFINITION = OvmfPkg/OvmfPkgX64.fdf 31 32 # 33 # Defines for default states. These can be changed on the command line. 34 # -D FLAG=VALUE 35 # 36 DEFINE SECURE_BOOT_ENABLE = FALSE 37 DEFINE NETWORK_IP6_ENABLE = FALSE 38 DEFINE HTTP_BOOT_ENABLE = FALSE 39 DEFINE SMM_REQUIRE = FALSE 40 41[BuildOptions] 42 GCC:*_UNIXGCC_*_CC_FLAGS = -DMDEPKG_NDEBUG 43 GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG 44 INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG 45 MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG 46 GCC:*_*_*_CC_FLAGS = -mno-mmx -mno-sse 47!ifdef $(SOURCE_DEBUG_ENABLE) 48 MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable 49 GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable 50 INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable 51!endif 52 53[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] 54 GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 55 56################################################################################ 57# 58# SKU Identification section - list of all SKU IDs supported by this Platform. 59# 60################################################################################ 61[SkuIds] 62 0|DEFAULT 63 64################################################################################ 65# 66# Library Class section - list of all Library Classes needed by this Platform. 67# 68################################################################################ 69[LibraryClasses] 70 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf 71 TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf 72 PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf 73 BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf 74 BaseLib|MdePkg/Library/BaseLib/BaseLib.inf 75 SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf 76 CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf 77 PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf 78 PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf 79 CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf 80 UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf 81 UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf 82 HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf 83 GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf 84 CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf 85 DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf 86 DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf 87 PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf 88 PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf 89 PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf 90 IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf 91 OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf 92 SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf 93 MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf 94 UefiLib|MdePkg/Library/UefiLib/UefiLib.inf 95 UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf 96 UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf 97 UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf 98 UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf 99 DevicePathLib|MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf 100 NvVarsFileLib|OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.inf 101 FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf 102 UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf 103 SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf 104 NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf 105 IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf 106 UdpIoLib|MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf 107 DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf 108 UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf 109 SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf 110 QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf 111 VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf 112 LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf 113!if $(SMM_REQUIRE) == FALSE 114 LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf 115!endif 116 CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf 117 118!ifdef $(SOURCE_DEBUG_ENABLE) 119 PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf 120 DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf 121!else 122 PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf 123 DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf 124!endif 125 126 ResetSystemLib|OvmfPkg/Library/ResetSystemLib/ResetSystemLib.inf 127 LocalApicLib|UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf 128 DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf 129 130!if $(SECURE_BOOT_ENABLE) == TRUE 131 PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf 132 IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf 133 OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf 134 TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf 135 AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf 136!if $(NETWORK_IP6_ENABLE) == TRUE 137 TcpIoLib|MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf 138!endif 139!else 140 TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf 141 AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf 142!endif 143 VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf 144 145!if $(HTTP_BOOT_ENABLE) == TRUE 146 HttpLib|MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf 147!endif 148 149 S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf 150 SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf 151 OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf 152 XenHypercallLib|OvmfPkg/Library/XenHypercallLib/XenHypercallLib.inf 153 154[LibraryClasses.common] 155!if $(SECURE_BOOT_ENABLE) == TRUE 156 BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf 157!endif 158 159[LibraryClasses.common.SEC] 160 TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf 161 QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf 162!ifdef $(DEBUG_ON_SERIAL_PORT) 163 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 164!else 165 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 166!endif 167 ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf 168 ExtractGuidedSectionLib|MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.inf 169!ifdef $(SOURCE_DEBUG_ENABLE) 170 DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf 171!endif 172 HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf 173 PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf 174 PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf 175 MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf 176 CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf 177 178[LibraryClasses.common.PEI_CORE] 179 HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf 180 PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf 181 PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf 182 MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf 183 PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf 184 ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf 185 OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf 186 PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf 187!ifdef $(DEBUG_ON_SERIAL_PORT) 188 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 189!else 190 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 191!endif 192 PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf 193 194[LibraryClasses.common.PEIM] 195 HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf 196 PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf 197 PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf 198 MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf 199 PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf 200 ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf 201 OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf 202 PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf 203!ifdef $(DEBUG_ON_SERIAL_PORT) 204 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 205!else 206 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 207!endif 208 PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf 209 PeiResourcePublicationLib|MdePkg/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf 210 ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf 211!ifdef $(SOURCE_DEBUG_ENABLE) 212 DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf 213!endif 214 215[LibraryClasses.common.DXE_CORE] 216 HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf 217 DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf 218 MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf 219 ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf 220!ifdef $(DEBUG_ON_SERIAL_PORT) 221 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 222!else 223 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 224!endif 225 ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf 226!ifdef $(SOURCE_DEBUG_ENABLE) 227 DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf 228!endif 229 CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf 230 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 231 232[LibraryClasses.common.DXE_RUNTIME_DRIVER] 233 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 234 TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf 235 HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf 236 DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf 237 MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf 238 ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf 239!ifdef $(DEBUG_ON_SERIAL_PORT) 240 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 241!else 242 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 243!endif 244 UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf 245!if $(SECURE_BOOT_ENABLE) == TRUE 246 BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf 247!endif 248 249[LibraryClasses.common.UEFI_DRIVER] 250 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 251 TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf 252 HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf 253 DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf 254 MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf 255 ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf 256!ifdef $(DEBUG_ON_SERIAL_PORT) 257 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 258!else 259 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 260!endif 261 UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf 262 263[LibraryClasses.common.DXE_DRIVER] 264 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 265 TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf 266 HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf 267 MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf 268 ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf 269 UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf 270!ifdef $(DEBUG_ON_SERIAL_PORT) 271 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 272!else 273 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 274!endif 275 NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf 276 IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf 277 UdpIoLib|MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf 278 DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf 279 PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf 280 CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf 281!if $(SMM_REQUIRE) == TRUE 282 LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf 283!else 284 LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf 285!endif 286!ifdef $(SOURCE_DEBUG_ENABLE) 287 DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf 288!endif 289 QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf 290 291[LibraryClasses.common.UEFI_APPLICATION] 292 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 293 TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf 294 HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf 295 MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf 296!ifdef $(DEBUG_ON_SERIAL_PORT) 297 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 298!else 299 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 300!endif 301 302[LibraryClasses.common.DXE_SMM_DRIVER] 303 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 304 TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf 305 MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf 306 HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf 307 SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf 308 SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf 309!ifdef $(DEBUG_ON_SERIAL_PORT) 310 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 311!else 312 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 313!endif 314 315[LibraryClasses.common.SMM_CORE] 316 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 317 TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf 318 SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf 319 MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf 320 ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf 321 HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf 322 SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf 323 SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf 324!ifdef $(DEBUG_ON_SERIAL_PORT) 325 DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf 326!else 327 DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf 328!endif 329 330################################################################################ 331# 332# Pcd Section - list of all EDK II PCD Entries defined by this Platform. 333# 334################################################################################ 335[PcdsFeatureFlag] 336 gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE 337 gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|TRUE 338 gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress|FALSE 339 gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE 340 gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE 341 gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE 342!if $(SECURE_BOOT_ENABLE) == TRUE 343 gUefiOvmfPkgTokenSpaceGuid.PcdSecureBootEnable|TRUE 344!endif 345!if $(SMM_REQUIRE) == TRUE 346 gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|TRUE 347!endif 348 349[PcdsFixedAtBuild] 350 gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1 351 gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE 352 gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler|0x10 353 gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreMaxFvSupported|6 354 gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreMaxPeimPerFv|32 355 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000 356 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000 357 gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xe000 358 359 gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0 360 361 gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 362 gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F 363!ifdef $(SOURCE_DEBUG_ENABLE) 364 gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17 365!else 366 gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F 367!endif 368 369!ifdef $(SOURCE_DEBUG_ENABLE) 370 gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|0x2 371!endif 372 373!ifndef $(USE_OLD_SHELL) 374 gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 } 375!endif 376 377!if $(SECURE_BOOT_ENABLE) == TRUE 378 # override the default values from SecurityPkg to ensure images from all sources are verified in secure boot 379 gEfiSecurityPkgTokenSpaceGuid.PcdOptionRomImageVerificationPolicy|0x04 380 gEfiSecurityPkgTokenSpaceGuid.PcdFixedMediaImageVerificationPolicy|0x04 381 gEfiSecurityPkgTokenSpaceGuid.PcdRemovableMediaImageVerificationPolicy|0x04 382!endif 383 384 # IRQs 5, 9, 10, 11 are level-triggered 385 gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0E20 386 387################################################################################ 388# 389# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform 390# 391################################################################################ 392 393[PcdsDynamicDefault] 394 gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0 395 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 396 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0 397 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0 398 gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE 399 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 400 gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 401 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 402 403 gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0 404 405 # Set video resolution for text setup. 406 gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640 407 gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480 408 409 gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0208 410 gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0 411 gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE 412 413 # Noexec settings for DXE. 414 gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|FALSE 415 gEfiMdeModulePkgTokenSpaceGuid.PcdPropertiesTableEnable|FALSE 416 417################################################################################ 418# 419# Components Section - list of all EDK II Modules needed by this Platform. 420# 421################################################################################ 422[Components] 423 OvmfPkg/ResetVector/ResetVector.inf 424 425 # 426 # SEC Phase modules 427 # 428 OvmfPkg/Sec/SecMain.inf { 429 <LibraryClasses> 430 NULL|IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf 431 } 432 433 # 434 # PEI Phase modules 435 # 436 MdeModulePkg/Core/Pei/PeiMain.inf 437 MdeModulePkg/Universal/PCD/Pei/Pcd.inf { 438 <LibraryClasses> 439 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf 440 } 441 IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf 442 MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { 443 <LibraryClasses> 444 PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf 445 } 446 447 OvmfPkg/PlatformPei/PlatformPei.inf { 448 <LibraryClasses> 449 PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf 450 } 451 UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf { 452 <LibraryClasses> 453 PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf 454!if $(SMM_REQUIRE) == TRUE 455 LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf 456!endif 457 } 458!if $(SMM_REQUIRE) == TRUE 459 OvmfPkg/SmmAccess/SmmAccessPei.inf { 460 <LibraryClasses> 461 PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf 462 } 463!endif 464 465 # 466 # DXE Phase modules 467 # 468 MdeModulePkg/Core/Dxe/DxeMain.inf { 469 <LibraryClasses> 470 NULL|IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf 471 DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf 472 } 473 474 IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf 475 MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { 476 <LibraryClasses> 477 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf 478 } 479 480 MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf 481 482!if $(SECURE_BOOT_ENABLE) == TRUE 483 MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { 484 <LibraryClasses> 485 NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf 486 } 487!else 488 MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf 489!endif 490 491 MdeModulePkg/Universal/EbcDxe/EbcDxe.inf 492 PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf 493 UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf 494 UefiCpuPkg/CpuDxe/CpuDxe.inf 495 PcAtChipsetPkg/8254TimerDxe/8254Timer.inf 496 OvmfPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf 497 MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf { 498 <LibraryClasses> 499 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 500 } 501 PcAtChipsetPkg/KbcResetDxe/Reset.inf 502 MdeModulePkg/Universal/Metronome/Metronome.inf 503 PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf 504 IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf { 505 <LibraryClasses> 506!ifdef $(CSM_ENABLE) 507 NULL|OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf 508!endif 509 } 510 511 OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf 512 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf 513 OvmfPkg/VirtioBlkDxe/VirtioBlk.inf 514 OvmfPkg/VirtioScsiDxe/VirtioScsi.inf 515 OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf 516 OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf 517 OvmfPkg/XenBusDxe/XenBusDxe.inf 518 OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf 519 OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { 520 <LibraryClasses> 521 PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf 522 } 523 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf 524 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { 525 <LibraryClasses> 526 NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf 527 } 528 MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf 529 MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf 530 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf 531 MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf 532 MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf 533 MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf { 534 <LibraryClasses> 535 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 536 } 537 MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf 538 MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf { 539 <LibraryClasses> 540 DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf 541 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf 542 } 543 MdeModulePkg/Universal/PrintDxe/PrintDxe.inf 544 MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf 545 MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf 546 MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf 547 MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf 548 MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf 549 OvmfPkg/SataControllerDxe/SataControllerDxe.inf 550 MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf 551 MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf 552 MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf 553 MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf 554 MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf 555 MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf 556 557 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf { 558 <LibraryClasses> 559 BltLib|OptionRomPkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf 560 } 561 562 # 563 # ISA Support 564 # 565 PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf 566 IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf 567 IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf 568 IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf 569 IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf 570 571 # 572 # SMBIOS Support 573 # 574 MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf { 575 <LibraryClasses> 576 NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf 577 } 578 OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf 579 580 # 581 # ACPI Support 582 # 583 MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf 584 OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf 585 OvmfPkg/AcpiTables/AcpiTables.inf 586 OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf 587 MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf 588 MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf 589 590 # 591 # Network Support 592 # 593 MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf 594 MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf 595 MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf 596 MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf 597 MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf 598 MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf 599 MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf 600 MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf 601 MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf 602!if $(NETWORK_IP6_ENABLE) == TRUE 603 NetworkPkg/Ip6Dxe/Ip6Dxe.inf 604 NetworkPkg/TcpDxe/TcpDxe.inf 605 NetworkPkg/Udp6Dxe/Udp6Dxe.inf 606 NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf 607 NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf 608 NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf 609!if $(SECURE_BOOT_ENABLE) == TRUE 610 NetworkPkg/IScsiDxe/IScsiDxe.inf 611!else 612 MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf 613!endif 614!else 615 MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf 616 MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf 617 MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf 618!endif 619!if $(HTTP_BOOT_ENABLE) == TRUE 620 NetworkPkg/DnsDxe/DnsDxe.inf 621 NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf 622 NetworkPkg/HttpDxe/HttpDxe.inf 623 NetworkPkg/HttpBootDxe/HttpBootDxe.inf 624!endif 625 OvmfPkg/VirtioNetDxe/VirtioNet.inf 626 627 # 628 # Usb Support 629 # 630 MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf 631 MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf 632 MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf 633 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf 634 MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf 635 MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf 636 637!ifdef $(CSM_ENABLE) 638 IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf { 639 <LibraryClasses> 640 PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf 641 } 642 IntelFrameworkModulePkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf 643 OvmfPkg/Csm/Csm16/Csm16.inf 644!endif 645 646!ifndef $(USE_OLD_SHELL) 647 ShellPkg/Application/Shell/Shell.inf { 648 <LibraryClasses> 649 ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf 650 NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf 651 NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf 652 NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf 653 NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf 654 NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf 655 NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf 656 NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf 657 NULL|ShellPkg/Library/UefiShellTftpCommandLib/UefiShellTftpCommandLib.inf 658 HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf 659 ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf 660 FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf 661 SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf 662 PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf 663# SafeBlockIoLib|ShellPkg/Library/SafeBlockIoLib/SafeBlockIoLib.inf 664# SafeOpenProtocolLib|ShellPkg/Library/SafeOpenProtocolLib/SafeOpenProtocolLib.inf 665 BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf 666 667 <PcdsFixedAtBuild> 668 gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF 669 gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE 670 gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 671 } 672!endif 673 674!if $(SECURE_BOOT_ENABLE) == TRUE 675 SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf 676!endif 677 678 OvmfPkg/PlatformDxe/Platform.inf 679 680!if $(SMM_REQUIRE) == TRUE 681 OvmfPkg/SmmAccess/SmmAccess2Dxe.inf 682 OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf 683 684 # 685 # SMM Initial Program Load (a DXE_RUNTIME_DRIVER) 686 # 687 MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf 688 689 # 690 # SMM_CORE 691 # 692 MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf 693 694 # 695 # Privileged drivers (DXE_SMM_DRIVER modules) 696 # 697 UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf 698 MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf { 699 <LibraryClasses> 700 LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf 701 } 702!endif 703