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__
67 #ifdef __EDKII_GLUE_DXE_PERFORMANCE_LIB__
68 #ifndef __EDKII_GLUE_BASE_LIB__
69 #define __EDKII_GLUE_BASE_LIB__
71 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
72 #define __EDKII_GLUE_BASE_MEMORY_LIB__
74 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
75 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
77 #ifndef __EDKII_GLUE_DXE_HOB_LIB__
78 #define __EDKII_GLUE_DXE_HOB_LIB__
80 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
81 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
83 #ifndef __EDKII_GLUE_UEFI_LIB__
84 #define __EDKII_GLUE_UEFI_LIB__
91 #ifdef __EDKII_GLUE_PEI_PERFORMANCE_LIB__
92 #ifndef __EDKII_GLUE_BASE_LIB__
93 #define __EDKII_GLUE_BASE_LIB__
95 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
96 #define __EDKII_GLUE_BASE_MEMORY_LIB__
98 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
99 #define __EDKII_GLUE_PEI_SERVICES_LIB__
104 // EdkDxeRuntimeDriverLib
106 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
107 #ifndef __EDKII_GLUE_UEFI_LIB__
108 #define __EDKII_GLUE_UEFI_LIB__
110 #ifndef __EDKII_GLUE_BASE_LIB__
111 #define __EDKII_GLUE_BASE_LIB__
113 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
114 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
116 #ifdef MDE_CPU_IPF // IPF
117 #ifndef __EDKII_GLUE_EDK_DXE_SAL_LIB__
118 #define __EDKII_GLUE_EDK_DXE_SAL_LIB__
126 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
127 #ifndef __EDKII_GLUE_BASE_LIB__
128 #define __EDKII_GLUE_BASE_LIB__
130 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
131 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
138 #ifdef __EDKII_GLUE_BASE_PCI_LIB_CF8__
139 #ifndef __EDKII_GLUE_BASE_PCI_CF8_LIB__
140 #define __EDKII_GLUE_BASE_PCI_CF8_LIB__
145 // BasePciLibPciExpress
147 #ifdef __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__
148 #ifndef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
149 #define __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
156 #ifdef __EDKII_GLUE_BASE_PCI_CF8_LIB__
158 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
159 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
162 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
163 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
171 #ifdef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
173 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
174 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
177 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
178 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
184 // BaseTimerLibLocalApic
186 #ifdef __EDKII_GLUE_BASE_TIMER_LIB_LOCAL_APIC__
187 #ifndef __EDKII_GLUE_BASE_LIB__
188 #define __EDKII_GLUE_BASE_LIB__
191 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
192 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
195 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
196 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
202 // DxeReportStatusCodeLib
204 #ifdef __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__
205 #ifndef __EDKII_GLUE_BASE_LIB__
206 #define __EDKII_GLUE_BASE_LIB__
209 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
210 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
213 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
214 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
217 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
218 #define __EDKII_GLUE_BASE_MEMORY_LIB__
220 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
221 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
223 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
224 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
229 // PeiReportStatusCodeLib
231 #ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__
232 #ifndef __EDKII_GLUE_BASE_LIB__
233 #define __EDKII_GLUE_BASE_LIB__
235 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
236 #define __EDKII_GLUE_BASE_MEMORY_LIB__
239 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
240 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
243 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
244 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
247 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
248 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
249 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
251 #elif defined(MDE_CPU_IPF)
252 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
253 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
257 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
258 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
259 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
266 #ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__
267 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
268 #define __EDKII_GLUE_BASE_MEMORY_LIB__
273 // BaseUefiDecompressLib
275 #ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__
276 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
277 #define __EDKII_GLUE_BASE_MEMORY_LIB__
284 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
285 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
286 #define __EDKII_GLUE_BASE_MEMORY_LIB__
288 #ifndef __EDKII_GLUE_UEFI_LIB__
289 #define __EDKII_GLUE_UEFI_LIB__
296 #ifdef __EDKII_GLUE_HII_LIB__
297 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
298 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
305 #ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__
306 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
307 #define __EDKII_GLUE_BASE_MEMORY_LIB__
309 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
310 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
312 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
313 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
320 #ifdef __EDKII_GLUE_UEFI_LIB__
321 #ifndef __EDKII_GLUE_BASE_LIB__
322 #define __EDKII_GLUE_BASE_LIB__
324 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
325 #define __EDKII_GLUE_BASE_MEMORY_LIB__
327 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
328 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
330 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
331 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
336 // DxeMemoryAllocationLib
338 #ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
339 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
340 #define __EDKII_GLUE_BASE_MEMORY_LIB__
342 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
343 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
350 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
351 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
352 #define __EDKII_GLUE_BASE_MEMORY_LIB__
354 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
355 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
362 #ifdef __EDKII_GLUE_PEI_HOB_LIB__
363 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
364 #define __EDKII_GLUE_BASE_MEMORY_LIB__
366 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
367 #define __EDKII_GLUE_PEI_SERVICES_LIB__
372 // PeiMemoryAllocationLib
374 #ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__
375 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
376 #define __EDKII_GLUE_BASE_MEMORY_LIB__
378 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
379 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
380 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
382 #elif defined(MDE_CPU_IPF)
383 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
384 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
388 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
389 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
390 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
395 // PeiResourcePublicationLib
397 #ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__
398 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
399 #define __EDKII_GLUE_PEI_SERVICES_LIB__
406 #ifdef __EDKII_GLUE_PEI_SERVICES_LIB__
407 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
408 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
409 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
411 #elif defined(MDE_CPU_IPF)
412 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
413 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
417 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
418 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
419 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
426 #ifdef __EDKII_GLUE_PEI_SMBUS_LIB__
427 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
428 #define __EDKII_GLUE_BASE_MEMORY_LIB__
430 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
431 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
432 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
434 #elif defined(MDE_CPU_IPF)
435 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
436 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
440 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
441 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
442 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
447 // PeiServicesTablePointerLibMm7
449 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
450 #ifndef __EDKII_GLUE_BASE_LIB__
451 #define __EDKII_GLUE_BASE_LIB__
456 // PeiServicesTablePointerLibKr1
458 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
459 #ifndef __EDKII_GLUE_BASE_LIB__
460 #define __EDKII_GLUE_BASE_LIB__
466 // UefiDriverModelLib
468 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
469 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
470 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
475 // DxeServicesTableLib
477 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
478 #ifndef __EDKII_GLUE_UEFI_LIB__
479 #define __EDKII_GLUE_UEFI_LIB__
486 #ifdef __EDKII_GLUE_BASE_PRINT_LIB__
487 #ifndef __EDKII_GLUE_BASE_LIB__
488 #define __EDKII_GLUE_BASE_LIB__
495 #ifdef __EDKII_GLUE_BASE_MEMORY_LIB__
496 #ifndef __EDKII_GLUE_BASE_LIB__
497 #define __EDKII_GLUE_BASE_LIB__
502 // BasePostCodeLibPort80
504 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__
506 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
507 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
510 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
511 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
517 // BaseIoLibIntrinsic
519 #ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
520 #ifndef __EDKII_GLUE_BASE_LIB__
521 #define __EDKII_GLUE_BASE_LIB__
528 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
529 #ifndef __EDKII_GLUE_BASE_LIB__
530 #define __EDKII_GLUE_BASE_LIB__
532 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
533 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
538 // UefiBootServicesTableLib
540 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
544 // BaseCacheMaintenanceLib
546 #ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__
547 #ifndef __EDKII_GLUE_BASE_LIB__
548 #define __EDKII_GLUE_BASE_LIB__
555 #ifdef __EDKII_GLUE_BASE_LIB__
559 // UefiRuntimeServicesTableLib
561 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
565 // BasePeCoffGetEntryPointLib
567 #ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__
571 // PeiServicesTablePointerLib
573 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
577 // BasePostCodeLibDebug
579 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
581 // A DebugLib instance
582 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf
587 // PeiDxePostCodeLibReportStatusCode
589 #ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__
591 // PEI or DXE ReportStatusCodeLib instance
592 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf
597 // Whether _gDriverExitBootServicesEvent[] contains effective handler
599 #if defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) || defined(__EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__)
600 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 1
602 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 0
606 // Check against multiple instances of same library class being used
608 #if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
609 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.
612 #if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)
613 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.
616 #if defined (__EDKII_GLUE_DXE_HOB_LIB__) && (__EDKII_GLUE_PEI_HOB_LIB__)
617 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.
620 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)
621 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.
624 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
625 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
628 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
629 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
632 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)
633 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.
636 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
637 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
640 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
641 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
644 #if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
645 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.
648 #if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)
649 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.
652 #if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)
653 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.
656 #if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)
657 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.
661 // Some instances must be supplied
663 #ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__
664 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
665 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, so either EdkIIGlueDxeReportStatusCodeLib or EdkIIGluePeiReportStatusCodeLib must be supplied
669 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
670 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
671 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied
676 // EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined
678 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
679 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__
680 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."
685 // EdkII Glue Library Constructors:
686 // NOTE: the constructors must be called according to dependency order
688 // UefiBootServicesTableLib UefiBootServicesTableLibConstructor()
689 // DxeIoLibCpuIo IoLibConstructor()
690 // UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()
691 // EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()
692 // DxeHobLib HobLibConstructor()
693 // UefiDriverModelLib UefiDriverModelLibConstructor()
694 // PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()
695 // PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()
696 // PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()
697 // DxeSmbusLib SmbusLibConstructor()
698 // DxeServicesTableLib DxeServicesTableLibConstructor()
699 // DxeSalLib DxeSalLibConstructor()
702 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
705 UefiBootServicesTableLibConstructor (
706 IN EFI_HANDLE ImageHandle
,
707 IN EFI_SYSTEM_TABLE
*SystemTable
711 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
715 IN EFI_HANDLE ImageHandle
,
716 IN EFI_SYSTEM_TABLE
*SystemTable
720 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
723 UefiRuntimeServicesTableLibConstructor (
724 IN EFI_HANDLE ImageHandle
,
725 IN EFI_SYSTEM_TABLE
*SystemTable
729 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
732 RuntimeDriverLibConstruct (
733 IN EFI_HANDLE ImageHandle
,
734 IN EFI_SYSTEM_TABLE
*SystemTable
738 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
742 IN EFI_HANDLE ImageHandle
,
743 IN EFI_SYSTEM_TABLE
*SystemTable
747 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
750 UefiDriverModelLibConstructor (
751 IN EFI_HANDLE ImageHandle
,
752 IN EFI_SYSTEM_TABLE
*SystemTable
756 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
759 PeiServicesTablePointerLibConstructor (
760 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
761 IN EFI_PEI_SERVICES
**PeiServices
765 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
768 PeiServicesTablePointerLibConstructor (
769 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
770 IN EFI_PEI_SERVICES
**PeiServices
774 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
777 PeiServicesTablePointerLibConstructor (
778 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
779 IN EFI_PEI_SERVICES
**PeiServices
783 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
786 SmbusLibConstructor (
787 IN EFI_HANDLE ImageHandle
,
788 IN EFI_SYSTEM_TABLE
*SystemTable
792 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
795 DxeServicesTableLibConstructor (
796 IN EFI_HANDLE ImageHandle
,
797 IN EFI_SYSTEM_TABLE
*SystemTable
801 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
804 DxeSalLibConstructor (
805 IN EFI_HANDLE ImageHandle
,
806 IN EFI_SYSTEM_TABLE
*SystemTable
811 // EdkII Glue Library Destructors:
812 // NOTE: the destructors must be called according to dependency order
814 // UefiDriverModelLibDestructor UefiDriverModelLibDestructor()
815 // EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()
817 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
820 UefiDriverModelLibDestructor (
821 IN EFI_HANDLE ImageHandle
,
822 IN EFI_SYSTEM_TABLE
*SystemTable
826 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
829 RuntimeDriverLibDeconstruct (
830 IN EFI_HANDLE ImageHandle
,
831 IN EFI_SYSTEM_TABLE
*SystemTable