3 Copyright (c) 2004 - 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 EdkIIGlueDepedencies.h
19 Header file that lists dependency relations among library instances
23 #ifndef __EDKII_GLUE_DEPENDENCIES_H__
24 #define __EDKII_GLUE_DEPENDENCIES_H__
26 #include "EdkIIGlueProcessorBind.h"
29 // Declarations of dependencies among EdkII Glue Library instances and R8 Libraries
30 // Pay attention to the order of following #define structures
35 // PeiDxeDebugLibReportStatusCode
36 // Actually almost every module and GlueLib instance needs this library, but GlueLib
37 // instances don't have to list this library in their own inf files. Module inf
40 #ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__
41 #ifndef __EDKII_GLUE_BASE_LIB__
42 #define __EDKII_GLUE_BASE_LIB__
44 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
45 #define __EDKII_GLUE_BASE_MEMORY_LIB__
52 #ifdef __EDKII_GLUE_BASE_DEBUG_LIB_NULL__
53 #ifndef __EDKII_GLUE_BASE_LIB__
54 #define __EDKII_GLUE_BASE_LIB__
56 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
57 #define __EDKII_GLUE_BASE_MEMORY_LIB__
59 #ifndef __EDKII_GLUE_BASE_PRINT_LIB__
60 #define __EDKII_GLUE_BASE_PRINT_LIB__
65 // EdkDxeRuntimeDriverLib
67 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
68 #ifndef __EDKII_GLUE_UEFI_LIB__
69 #define __EDKII_GLUE_UEFI_LIB__
71 #ifndef __EDKII_GLUE_BASE_LIB__
72 #define __EDKII_GLUE_BASE_LIB__
74 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
75 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
77 #ifdef MDE_CPU_IPF // IPF
78 #ifndef __EDKII_GLUE_EDK_DXE_SAL_LIB__
79 #define __EDKII_GLUE_EDK_DXE_SAL_LIB__
87 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
88 #ifndef __EDKII_GLUE_BASE_LIB__
89 #define __EDKII_GLUE_BASE_LIB__
91 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
92 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
99 #ifdef __EDKII_GLUE_BASE_PCI_LIB_CF8__
100 #ifndef __EDKII_GLUE_BASE_PCI_CF8_LIB__
101 #define __EDKII_GLUE_BASE_PCI_CF8_LIB__
106 // BasePciLibPciExpress
108 #ifdef __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__
109 #ifndef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
110 #define __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
117 #ifdef __EDKII_GLUE_BASE_PCI_CF8_LIB__
119 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
120 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
123 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
124 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
132 #ifdef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
134 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
135 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
138 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
139 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
145 // BaseTimerLibLocalApic
147 #ifdef __EDKII_GLUE_BASE_TIMER_LIB_LOCAL_APIC__
148 #ifndef __EDKII_GLUE_BASE_LIB__
149 #define __EDKII_GLUE_BASE_LIB__
152 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
153 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
156 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
157 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
163 // DxeReportStatusCodeLib
165 #ifdef __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__
166 #ifndef __EDKII_GLUE_BASE_LIB__
167 #define __EDKII_GLUE_BASE_LIB__
170 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
171 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
174 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
175 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
178 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
179 #define __EDKII_GLUE_BASE_MEMORY_LIB__
181 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
182 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
184 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
185 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
190 // PeiReportStatusCodeLib
192 #ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__
193 #ifndef __EDKII_GLUE_BASE_LIB__
194 #define __EDKII_GLUE_BASE_LIB__
196 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
197 #define __EDKII_GLUE_BASE_MEMORY_LIB__
200 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
201 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
204 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
205 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
208 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
209 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
210 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
212 #elif defined(MDE_CPU_IPF)
213 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
214 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
218 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
219 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
220 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
227 #ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__
228 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
229 #define __EDKII_GLUE_BASE_MEMORY_LIB__
234 // BaseUefiDecompressLib
236 #ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__
237 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
238 #define __EDKII_GLUE_BASE_MEMORY_LIB__
245 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
246 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
247 #define __EDKII_GLUE_BASE_MEMORY_LIB__
249 #ifndef __EDKII_GLUE_UEFI_LIB__
250 #define __EDKII_GLUE_UEFI_LIB__
257 #ifdef __EDKII_GLUE_HII_LIB__
258 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
259 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
266 #ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__
267 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
268 #define __EDKII_GLUE_BASE_MEMORY_LIB__
270 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
271 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
273 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
274 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
281 #ifdef __EDKII_GLUE_UEFI_LIB__
282 #ifndef __EDKII_GLUE_BASE_LIB__
283 #define __EDKII_GLUE_BASE_LIB__
285 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
286 #define __EDKII_GLUE_BASE_MEMORY_LIB__
288 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
289 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
291 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
292 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
297 // DxeMemoryAllocationLib
299 #ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
300 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
301 #define __EDKII_GLUE_BASE_MEMORY_LIB__
303 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
304 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
311 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
312 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
313 #define __EDKII_GLUE_BASE_MEMORY_LIB__
315 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
316 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
323 #ifdef __EDKII_GLUE_PEI_HOB_LIB__
324 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
325 #define __EDKII_GLUE_BASE_MEMORY_LIB__
327 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
328 #define __EDKII_GLUE_PEI_SERVICES_LIB__
333 // PeiMemoryAllocationLib
335 #ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__
336 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
337 #define __EDKII_GLUE_BASE_MEMORY_LIB__
339 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
340 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
341 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
343 #elif defined(MDE_CPU_IPF)
344 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
345 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
349 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
350 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
351 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
356 // PeiResourcePublicationLib
358 #ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__
359 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
360 #define __EDKII_GLUE_PEI_SERVICES_LIB__
367 #ifdef __EDKII_GLUE_PEI_SERVICES_LIB__
368 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
369 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
370 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
372 #elif defined(MDE_CPU_IPF)
373 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
374 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
378 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
379 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
380 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
387 #ifdef __EDKII_GLUE_PEI_SMBUS_LIB__
388 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
389 #define __EDKII_GLUE_BASE_MEMORY_LIB__
391 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
392 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
393 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
395 #elif defined(MDE_CPU_IPF)
396 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
397 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
401 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
402 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
403 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
408 // PeiServicesTablePointerLibMm7
410 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
411 #ifndef __EDKII_GLUE_BASE_LIB__
412 #define __EDKII_GLUE_BASE_LIB__
417 // PeiServicesTablePointerLibKr1
419 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
420 #ifndef __EDKII_GLUE_BASE_LIB__
421 #define __EDKII_GLUE_BASE_LIB__
427 // UefiDriverModelLib
429 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
430 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
431 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
436 // DxeServicesTableLib
438 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
439 #ifndef __EDKII_GLUE_UEFI_LIB__
440 #define __EDKII_GLUE_UEFI_LIB__
447 #ifdef __EDKII_GLUE_BASE_PRINT_LIB__
448 #ifndef __EDKII_GLUE_BASE_LIB__
449 #define __EDKII_GLUE_BASE_LIB__
456 #ifdef __EDKII_GLUE_BASE_MEMORY_LIB__
457 #ifndef __EDKII_GLUE_BASE_LIB__
458 #define __EDKII_GLUE_BASE_LIB__
463 // BasePostCodeLibPort80
465 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__
467 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
468 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
471 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
472 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
478 // BaseIoLibIntrinsic
480 #ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
481 #ifndef __EDKII_GLUE_BASE_LIB__
482 #define __EDKII_GLUE_BASE_LIB__
489 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
490 #ifndef __EDKII_GLUE_BASE_LIB__
491 #define __EDKII_GLUE_BASE_LIB__
493 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
494 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
499 // UefiBootServicesTableLib
501 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
505 // BaseCacheMaintenanceLib
507 #ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__
508 #ifndef __EDKII_GLUE_BASE_LIB__
509 #define __EDKII_GLUE_BASE_LIB__
516 #ifdef __EDKII_GLUE_BASE_LIB__
520 // UefiRuntimeServicesTableLib
522 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
526 // BasePeCoffGetEntryPointLib
528 #ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__
532 // PeiServicesTablePointerLib
534 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
538 // BasePostCodeLibDebug
540 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
542 // A DebugLib instance
543 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf
548 // PeiDxePostCodeLibReportStatusCode
550 #ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__
552 // PEI or DXE ReportStatusCodeLib instance
553 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf
559 // Check against multiple instances of same library class being used
561 #if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
562 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.
565 #if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)
566 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.
569 #if defined (__EDKII_GLUE_DXE_HOB_LIB__) && (__EDKII_GLUE_PEI_HOB_LIB__)
570 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.
573 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)
574 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.
577 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
578 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
581 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
582 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
585 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)
586 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.
589 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
590 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
593 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
594 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
597 #if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
598 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.
601 #if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)
602 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.
605 #if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)
606 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.
609 #if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)
610 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.
614 // Some instances must be supplied
616 #ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__
617 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
618 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, so either EdkIIGlueDxeReportStatusCodeLib or EdkIIGluePeiReportStatusCodeLib must be supplied
622 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
623 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
624 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied
629 // EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined
631 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
632 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__
633 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."
638 // EdkII Glue Library Constructors:
639 // NOTE: the constructors must be called according to dependency order
641 // UefiBootServicesTableLib UefiBootServicesTableLibConstructor()
642 // DxeIoLibCpuIo IoLibConstructor()
643 // UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()
644 // EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()
645 // DxeHobLib HobLibConstructor()
646 // UefiDriverModelLib UefiDriverModelLibConstructor()
647 // PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()
648 // PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()
649 // PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()
650 // DxeSmbusLib SmbusLibConstructor()
651 // DxeServicesTableLib DxeServicesTableLibConstructor()
652 // DxeSalLib DxeSalLibConstructor()
655 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
657 UefiBootServicesTableLibConstructor (
658 IN EFI_HANDLE ImageHandle
,
659 IN EFI_SYSTEM_TABLE
*SystemTable
663 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
667 IN EFI_HANDLE ImageHandle
,
668 IN EFI_SYSTEM_TABLE
*SystemTable
672 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
674 UefiRuntimeServicesTableLibConstructor (
675 IN EFI_HANDLE ImageHandle
,
676 IN EFI_SYSTEM_TABLE
*SystemTable
680 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
682 RuntimeDriverLibConstruct (
683 IN EFI_HANDLE ImageHandle
,
684 IN EFI_SYSTEM_TABLE
*SystemTable
688 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
691 IN EFI_HANDLE ImageHandle
,
692 IN EFI_SYSTEM_TABLE
*SystemTable
696 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
698 UefiDriverModelLibConstructor (
699 IN EFI_HANDLE ImageHandle
,
700 IN EFI_SYSTEM_TABLE
*SystemTable
704 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
706 PeiServicesTablePointerLibConstructor (
707 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
708 IN EFI_PEI_SERVICES
**PeiServices
712 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
714 PeiServicesTablePointerLibConstructor (
715 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
716 IN EFI_PEI_SERVICES
**PeiServices
720 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
722 PeiServicesTablePointerLibConstructor (
723 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
724 IN EFI_PEI_SERVICES
**PeiServices
728 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
731 SmbusLibConstructor (
732 IN EFI_HANDLE ImageHandle
,
733 IN EFI_SYSTEM_TABLE
*SystemTable
737 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
739 DxeServicesTableLibConstructor (
740 IN EFI_HANDLE ImageHandle
,
741 IN EFI_SYSTEM_TABLE
*SystemTable
745 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
748 DxeSalLibConstructor (
749 IN EFI_HANDLE ImageHandle
,
750 IN EFI_SYSTEM_TABLE
*SystemTable
755 // EdkII Glue Library Destructors:
756 // NOTE: the destructors must be called according to dependency order
758 // UefiDriverModelLibDestructor UefiDriverModelLibDestructor()
759 // EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()
761 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
763 UefiDriverModelLibDestructor (
764 IN EFI_HANDLE ImageHandle
,
765 IN EFI_SYSTEM_TABLE
*SystemTable
769 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
771 RuntimeDriverLibDeconstruct (
772 IN EFI_HANDLE ImageHandle
,
773 IN EFI_SYSTEM_TABLE
*SystemTable