3 Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
4 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 EDK 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__
121 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
122 #ifndef __EDKII_GLUE_BASE_LIB__
123 #define __EDKII_GLUE_BASE_LIB__
125 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
126 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
133 #ifdef __EDKII_GLUE_BASE_PCI_LIB_CF8__
134 #ifndef __EDKII_GLUE_BASE_PCI_CF8_LIB__
135 #define __EDKII_GLUE_BASE_PCI_CF8_LIB__
140 // BasePciLibPciExpress
142 #ifdef __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__
143 #ifndef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
144 #define __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
151 #ifdef __EDKII_GLUE_BASE_PCI_CF8_LIB__
153 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
154 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
157 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
158 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
166 #ifdef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__
168 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
169 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
172 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
173 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
179 // BaseTimerLibLocalApic
181 #ifdef __EDKII_GLUE_BASE_TIMER_LIB_LOCAL_APIC__
182 #ifndef __EDKII_GLUE_BASE_LIB__
183 #define __EDKII_GLUE_BASE_LIB__
186 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
187 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
190 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
191 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
197 // DxeReportStatusCodeLib
199 #ifdef __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__
200 #ifndef __EDKII_GLUE_BASE_LIB__
201 #define __EDKII_GLUE_BASE_LIB__
204 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
205 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
208 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
209 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
212 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
213 #define __EDKII_GLUE_BASE_MEMORY_LIB__
215 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
216 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
218 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
219 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
224 // SmmRuntimeDxeReportStatusCodeLib - typically used by SMM driver and Runtime driver
226 #ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__
227 #ifndef __EDKII_GLUE_BASE_LIB__
228 #define __EDKII_GLUE_BASE_LIB__
230 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
231 #define __EDKII_GLUE_BASE_MEMORY_LIB__
233 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
234 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
236 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
237 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
242 // PeiReportStatusCodeLib
244 #ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__
245 #ifndef __EDKII_GLUE_BASE_LIB__
246 #define __EDKII_GLUE_BASE_LIB__
248 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
249 #define __EDKII_GLUE_BASE_MEMORY_LIB__
252 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
253 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
256 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
257 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
260 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
261 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
262 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
266 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
267 // can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
274 #ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__
275 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
276 #define __EDKII_GLUE_BASE_MEMORY_LIB__
281 // BaseUefiDecompressLib
283 #ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__
284 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
285 #define __EDKII_GLUE_BASE_MEMORY_LIB__
292 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
293 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
294 #define __EDKII_GLUE_BASE_MEMORY_LIB__
296 #ifndef __EDKII_GLUE_UEFI_LIB__
297 #define __EDKII_GLUE_UEFI_LIB__
304 #ifdef __EDKII_GLUE_HII_LIB__
305 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
306 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
313 #ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__
314 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
315 #define __EDKII_GLUE_BASE_MEMORY_LIB__
317 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
318 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
320 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
321 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
326 // DxeServicesTableLib
328 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
329 #ifndef __EDKII_GLUE_UEFI_LIB__
330 #define __EDKII_GLUE_UEFI_LIB__
337 #ifdef __EDKII_GLUE_UEFI_LIB__
338 #ifndef __EDKII_GLUE_BASE_LIB__
339 #define __EDKII_GLUE_BASE_LIB__
341 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
342 #define __EDKII_GLUE_BASE_MEMORY_LIB__
344 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
345 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
347 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
348 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
353 // DxeMemoryAllocationLib
355 #ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
356 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
357 #define __EDKII_GLUE_BASE_MEMORY_LIB__
359 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
360 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
367 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
368 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
369 #define __EDKII_GLUE_BASE_MEMORY_LIB__
371 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
372 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
379 #ifdef __EDKII_GLUE_PEI_HOB_LIB__
380 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
381 #define __EDKII_GLUE_BASE_MEMORY_LIB__
383 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
384 #define __EDKII_GLUE_PEI_SERVICES_LIB__
389 // PeiMemoryAllocationLib
391 #ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__
392 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
393 #define __EDKII_GLUE_BASE_MEMORY_LIB__
395 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
396 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
397 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
401 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
402 // can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
407 // PeiResourcePublicationLib
409 #ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__
410 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
411 #define __EDKII_GLUE_PEI_SERVICES_LIB__
418 #ifdef __EDKII_GLUE_PEI_SERVICES_LIB__
419 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
420 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
421 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
425 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
426 // can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
433 #ifdef __EDKII_GLUE_PEI_SMBUS_LIB__
434 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
435 #define __EDKII_GLUE_BASE_MEMORY_LIB__
437 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
438 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
439 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
443 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
444 // can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
449 // PeiServicesTablePointerLibMm7
451 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
452 #ifndef __EDKII_GLUE_BASE_LIB__
453 #define __EDKII_GLUE_BASE_LIB__
458 // PeiServicesTablePointerLibKr1
460 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
461 #ifndef __EDKII_GLUE_BASE_LIB__
462 #define __EDKII_GLUE_BASE_LIB__
468 // UefiDriverModelLib
470 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
471 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
472 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
479 #ifdef __EDKII_GLUE_BASE_PRINT_LIB__
480 #ifndef __EDKII_GLUE_BASE_LIB__
481 #define __EDKII_GLUE_BASE_LIB__
488 #ifdef __EDKII_GLUE_BASE_MEMORY_LIB__
489 #ifndef __EDKII_GLUE_BASE_LIB__
490 #define __EDKII_GLUE_BASE_LIB__
495 // BasePostCodeLibPort80
497 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__
499 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
500 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
503 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
504 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
510 // BaseIoLibIntrinsic
512 #ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
513 #ifndef __EDKII_GLUE_BASE_LIB__
514 #define __EDKII_GLUE_BASE_LIB__
521 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
522 #ifndef __EDKII_GLUE_BASE_LIB__
523 #define __EDKII_GLUE_BASE_LIB__
525 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
526 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
531 // UefiBootServicesTableLib
533 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
537 // BaseCacheMaintenanceLib
539 #ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__
540 #ifndef __EDKII_GLUE_BASE_LIB__
541 #define __EDKII_GLUE_BASE_LIB__
548 #ifdef __EDKII_GLUE_BASE_LIB__
552 // UefiRuntimeServicesTableLib
554 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
558 // BasePeCoffGetEntryPointLib
560 #ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__
564 // PeiServicesTablePointerLib
566 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
570 // BasePostCodeLibDebug
572 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
574 // A DebugLib instance
575 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf
580 // PeiDxePostCodeLibReportStatusCode
582 #ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__
584 // PEI or DXE ReportStatusCodeLib instance
585 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf
590 // Whether _gDriverExitBootServicesEvent[] contains effective handler
592 #if defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) || defined(__EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__)
593 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 1
595 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 0
599 // Check against multiple instances of same library class being used
601 #if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
602 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.
605 #if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)
606 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.
609 #if defined(__EDKII_GLUE_DXE_HOB_LIB__) && defined(__EDKII_GLUE_PEI_HOB_LIB__)
610 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.
613 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)
614 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.
617 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
618 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
621 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
622 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
625 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)
626 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.
629 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
630 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
633 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
634 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
637 #if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
638 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.
641 #if defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
642 #error EdkIIGlueSmmRuntimeDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.
645 #if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__)
646 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGlueSmmRuntimeDxeReportStatusCodeLib: can only be mutual exclusively used.
649 #if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)
650 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.
653 #if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)
654 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.
657 #if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)
658 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.
662 // Some instances must be supplied
664 #ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__
665 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) \
666 && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__) \
667 && !defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__)
668 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, \
669 so either EdkIIGlueDxeReportStatusCodeLib, EdkIIGluePeiReportStatusCodeLib, \
670 or EdkIIGlueSmmRuntimeDxeReportStatusCodeLib must be supplied
674 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
675 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
676 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied
681 // EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined
683 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
684 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__
685 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."
690 // EdkII Glue Library Constructors:
691 // NOTE: the constructors must be called according to dependency order
693 // UefiBootServicesTableLib UefiBootServicesTableLibConstructor()
694 // DxeIoLibCpuIo IoLibConstructor()
695 // UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()
696 // EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()
697 // SmmRuntimeDxeReportStatusCodeLib ReportStatusCodeLibConstruct()
698 // DxeHobLib HobLibConstructor()
699 // UefiDriverModelLib UefiDriverModelLibConstructor()
700 // PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()
701 // PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()
702 // PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()
703 // DxeSmbusLib SmbusLibConstructor()
704 // DxeServicesTableLib DxeServicesTableLibConstructor()
705 // DxeSalLib DxeSalLibConstructor()
708 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
711 UefiBootServicesTableLibConstructor (
712 IN EFI_HANDLE ImageHandle
,
713 IN EFI_SYSTEM_TABLE
*SystemTable
717 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
721 IN EFI_HANDLE ImageHandle
,
722 IN EFI_SYSTEM_TABLE
*SystemTable
726 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
729 UefiRuntimeServicesTableLibConstructor (
730 IN EFI_HANDLE ImageHandle
,
731 IN EFI_SYSTEM_TABLE
*SystemTable
735 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
738 RuntimeDriverLibConstruct (
739 IN EFI_HANDLE ImageHandle
,
740 IN EFI_SYSTEM_TABLE
*SystemTable
744 #ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__
747 ReportStatusCodeLibConstruct (
748 IN EFI_HANDLE ImageHandle
,
749 IN EFI_SYSTEM_TABLE
*SystemTable
753 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
757 IN EFI_HANDLE ImageHandle
,
758 IN EFI_SYSTEM_TABLE
*SystemTable
762 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
765 UefiDriverModelLibConstructor (
766 IN EFI_HANDLE ImageHandle
,
767 IN EFI_SYSTEM_TABLE
*SystemTable
771 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
774 PeiServicesTablePointerLibConstructor (
775 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
776 IN EFI_PEI_SERVICES
**PeiServices
780 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
783 PeiServicesTablePointerLibConstructor (
784 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
785 IN EFI_PEI_SERVICES
**PeiServices
789 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
792 PeiServicesTablePointerLibConstructor (
793 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
794 IN EFI_PEI_SERVICES
**PeiServices
798 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
801 SmbusLibConstructor (
802 IN EFI_HANDLE ImageHandle
,
803 IN EFI_SYSTEM_TABLE
*SystemTable
807 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
810 DxeServicesTableLibConstructor (
811 IN EFI_HANDLE ImageHandle
,
812 IN EFI_SYSTEM_TABLE
*SystemTable
816 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
819 DxeSalLibConstructor (
820 IN EFI_HANDLE ImageHandle
,
821 IN EFI_SYSTEM_TABLE
*SystemTable
826 // EdkII Glue Library Destructors:
827 // NOTE: the destructors must be called according to dependency order
829 // UefiDriverModelLibDestructor UefiDriverModelLibDestructor()
830 // SmmRuntimeDxeReportStatusCodeLib ReportStatusCodeLibDestruct()
831 // EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()
833 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
836 UefiDriverModelLibDestructor (
837 IN EFI_HANDLE ImageHandle
,
838 IN EFI_SYSTEM_TABLE
*SystemTable
842 #ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__
845 ReportStatusCodeLibDestruct (
846 IN EFI_HANDLE ImageHandle
,
847 IN EFI_SYSTEM_TABLE
*SystemTable
851 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
854 RuntimeDriverLibDeconstruct (
855 IN EFI_HANDLE ImageHandle
,
856 IN EFI_SYSTEM_TABLE
*SystemTable