3 Copyright (c) 2004 - 2010, 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 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 // SmmRuntimeDxeReportStatusCodeLib - typically used by SMM driver and Runtime driver
231 #ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_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__
238 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
239 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
241 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
242 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
247 // PeiReportStatusCodeLib
249 #ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__
250 #ifndef __EDKII_GLUE_BASE_LIB__
251 #define __EDKII_GLUE_BASE_LIB__
253 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
254 #define __EDKII_GLUE_BASE_MEMORY_LIB__
257 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
258 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
261 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
262 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
265 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
266 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
267 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
269 #elif defined(MDE_CPU_IPF)
270 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
271 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
275 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
276 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
277 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
284 #ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__
285 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
286 #define __EDKII_GLUE_BASE_MEMORY_LIB__
291 // BaseUefiDecompressLib
293 #ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__
294 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
295 #define __EDKII_GLUE_BASE_MEMORY_LIB__
302 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
303 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
304 #define __EDKII_GLUE_BASE_MEMORY_LIB__
306 #ifndef __EDKII_GLUE_UEFI_LIB__
307 #define __EDKII_GLUE_UEFI_LIB__
314 #ifdef __EDKII_GLUE_HII_LIB__
315 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
316 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
323 #ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_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__
338 #ifdef __EDKII_GLUE_UEFI_LIB__
339 #ifndef __EDKII_GLUE_BASE_LIB__
340 #define __EDKII_GLUE_BASE_LIB__
342 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
343 #define __EDKII_GLUE_BASE_MEMORY_LIB__
345 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
346 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
348 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
349 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
354 // DxeMemoryAllocationLib
356 #ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__
357 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
358 #define __EDKII_GLUE_BASE_MEMORY_LIB__
360 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
361 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
368 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
369 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
370 #define __EDKII_GLUE_BASE_MEMORY_LIB__
372 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
373 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
380 #ifdef __EDKII_GLUE_PEI_HOB_LIB__
381 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
382 #define __EDKII_GLUE_BASE_MEMORY_LIB__
384 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
385 #define __EDKII_GLUE_PEI_SERVICES_LIB__
390 // PeiMemoryAllocationLib
392 #ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__
393 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
394 #define __EDKII_GLUE_BASE_MEMORY_LIB__
396 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
397 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
398 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
400 #elif defined(MDE_CPU_IPF)
401 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
402 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
406 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
407 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
408 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
413 // PeiResourcePublicationLib
415 #ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__
416 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__
417 #define __EDKII_GLUE_PEI_SERVICES_LIB__
424 #ifdef __EDKII_GLUE_PEI_SERVICES_LIB__
425 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
426 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
427 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
429 #elif defined(MDE_CPU_IPF)
430 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
431 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
435 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
436 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
437 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
444 #ifdef __EDKII_GLUE_PEI_SMBUS_LIB__
445 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__
446 #define __EDKII_GLUE_BASE_MEMORY_LIB__
448 #if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
449 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
450 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
452 #elif defined(MDE_CPU_IPF)
453 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
454 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
458 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
459 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
460 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
465 // PeiServicesTablePointerLibMm7
467 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
468 #ifndef __EDKII_GLUE_BASE_LIB__
469 #define __EDKII_GLUE_BASE_LIB__
474 // PeiServicesTablePointerLibKr1
476 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
477 #ifndef __EDKII_GLUE_BASE_LIB__
478 #define __EDKII_GLUE_BASE_LIB__
484 // UefiDriverModelLib
486 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
487 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
488 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
493 // DxeServicesTableLib
495 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
496 #ifndef __EDKII_GLUE_UEFI_LIB__
497 #define __EDKII_GLUE_UEFI_LIB__
504 #ifdef __EDKII_GLUE_BASE_PRINT_LIB__
505 #ifndef __EDKII_GLUE_BASE_LIB__
506 #define __EDKII_GLUE_BASE_LIB__
513 #ifdef __EDKII_GLUE_BASE_MEMORY_LIB__
514 #ifndef __EDKII_GLUE_BASE_LIB__
515 #define __EDKII_GLUE_BASE_LIB__
520 // BasePostCodeLibPort80
522 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__
524 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
525 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
528 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
529 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
535 // BaseIoLibIntrinsic
537 #ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__
538 #ifndef __EDKII_GLUE_BASE_LIB__
539 #define __EDKII_GLUE_BASE_LIB__
546 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
547 #ifndef __EDKII_GLUE_BASE_LIB__
548 #define __EDKII_GLUE_BASE_LIB__
550 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
551 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
556 // UefiBootServicesTableLib
558 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
562 // BaseCacheMaintenanceLib
564 #ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__
565 #ifndef __EDKII_GLUE_BASE_LIB__
566 #define __EDKII_GLUE_BASE_LIB__
573 #ifdef __EDKII_GLUE_BASE_LIB__
577 // UefiRuntimeServicesTableLib
579 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
583 // BasePeCoffGetEntryPointLib
585 #ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__
589 // PeiServicesTablePointerLib
591 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
595 // BasePostCodeLibDebug
597 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
599 // A DebugLib instance
600 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf
605 // PeiDxePostCodeLibReportStatusCode
607 #ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__
609 // PEI or DXE ReportStatusCodeLib instance
610 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf
615 // Whether _gDriverExitBootServicesEvent[] contains effective handler
617 #if defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) || defined(__EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__)
618 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 1
620 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 0
624 // Check against multiple instances of same library class being used
626 #if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
627 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.
630 #if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)
631 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.
634 #if defined (__EDKII_GLUE_DXE_HOB_LIB__) && (__EDKII_GLUE_PEI_HOB_LIB__)
635 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.
638 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)
639 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.
642 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
643 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
646 #if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)
647 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.
650 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)
651 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.
654 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
655 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
658 #if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)
659 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.
662 #if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
663 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.
666 #if defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)
667 #error EdkIIGlueSmmRuntimeDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.
670 #if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__)
671 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGlueSmmRuntimeDxeReportStatusCodeLib: can only be mutual exclusively used.
674 #if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)
675 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.
678 #if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)
679 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.
682 #if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)
683 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.
687 // Some instances must be supplied
689 #ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__
690 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) \
691 && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__) \
692 && !defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__)
693 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, \
694 so either EdkIIGlueDxeReportStatusCodeLib, EdkIIGluePeiReportStatusCodeLib, \
695 or EdkIIGlueSmmRuntimeDxeReportStatusCodeLib must be supplied
699 #ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__
700 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)
701 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied
706 // EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined
708 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
709 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__
710 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."
715 // EdkII Glue Library Constructors:
716 // NOTE: the constructors must be called according to dependency order
718 // UefiBootServicesTableLib UefiBootServicesTableLibConstructor()
719 // DxeIoLibCpuIo IoLibConstructor()
720 // UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()
721 // EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()
722 // SmmRuntimeDxeReportStatusCodeLib ReportStatusCodeLibConstruct()
723 // DxeHobLib HobLibConstructor()
724 // UefiDriverModelLib UefiDriverModelLibConstructor()
725 // PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()
726 // PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()
727 // PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()
728 // DxeSmbusLib SmbusLibConstructor()
729 // DxeServicesTableLib DxeServicesTableLibConstructor()
730 // DxeSalLib DxeSalLibConstructor()
733 #ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
736 UefiBootServicesTableLibConstructor (
737 IN EFI_HANDLE ImageHandle
,
738 IN EFI_SYSTEM_TABLE
*SystemTable
742 #ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__
746 IN EFI_HANDLE ImageHandle
,
747 IN EFI_SYSTEM_TABLE
*SystemTable
751 #ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
754 UefiRuntimeServicesTableLibConstructor (
755 IN EFI_HANDLE ImageHandle
,
756 IN EFI_SYSTEM_TABLE
*SystemTable
760 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
763 RuntimeDriverLibConstruct (
764 IN EFI_HANDLE ImageHandle
,
765 IN EFI_SYSTEM_TABLE
*SystemTable
769 #ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__
772 ReportStatusCodeLibConstruct (
773 IN EFI_HANDLE ImageHandle
,
774 IN EFI_SYSTEM_TABLE
*SystemTable
778 #ifdef __EDKII_GLUE_DXE_HOB_LIB__
782 IN EFI_HANDLE ImageHandle
,
783 IN EFI_SYSTEM_TABLE
*SystemTable
787 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
790 UefiDriverModelLibConstructor (
791 IN EFI_HANDLE ImageHandle
,
792 IN EFI_SYSTEM_TABLE
*SystemTable
796 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
799 PeiServicesTablePointerLibConstructor (
800 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
801 IN EFI_PEI_SERVICES
**PeiServices
805 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
808 PeiServicesTablePointerLibConstructor (
809 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
810 IN EFI_PEI_SERVICES
**PeiServices
814 #ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
817 PeiServicesTablePointerLibConstructor (
818 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
819 IN EFI_PEI_SERVICES
**PeiServices
823 #ifdef __EDKII_GLUE_DXE_SMBUS_LIB__
826 SmbusLibConstructor (
827 IN EFI_HANDLE ImageHandle
,
828 IN EFI_SYSTEM_TABLE
*SystemTable
832 #ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__
835 DxeServicesTableLibConstructor (
836 IN EFI_HANDLE ImageHandle
,
837 IN EFI_SYSTEM_TABLE
*SystemTable
841 #ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__
844 DxeSalLibConstructor (
845 IN EFI_HANDLE ImageHandle
,
846 IN EFI_SYSTEM_TABLE
*SystemTable
851 // EdkII Glue Library Destructors:
852 // NOTE: the destructors must be called according to dependency order
854 // UefiDriverModelLibDestructor UefiDriverModelLibDestructor()
855 // SmmRuntimeDxeReportStatusCodeLib ReportStatusCodeLibDestruct()
856 // EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()
858 #ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__
861 UefiDriverModelLibDestructor (
862 IN EFI_HANDLE ImageHandle
,
863 IN EFI_SYSTEM_TABLE
*SystemTable
867 #ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__
870 ReportStatusCodeLibDestruct (
871 IN EFI_HANDLE ImageHandle
,
872 IN EFI_SYSTEM_TABLE
*SystemTable
876 #ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__
879 RuntimeDriverLibDeconstruct (
880 IN EFI_HANDLE ImageHandle
,
881 IN EFI_SYSTEM_TABLE
*SystemTable