]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / Include / Common / EdkIIGlueDependencies.h
CommitLineData
3eb9473e 1/*++\r
2\r
2c7e5c2f
HT
3Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
4This program and the accompanying materials \r
3eb9473e 5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12\r
13Module Name:\r
14\r
15 EdkIIGlueDepedencies.h\r
16\r
17Abstract:\r
18\r
19 Header file that lists dependency relations among library instances\r
20\r
21--*/\r
22\r
23#ifndef __EDKII_GLUE_DEPENDENCIES_H__\r
24#define __EDKII_GLUE_DEPENDENCIES_H__\r
25\r
26#include "EdkIIGlueProcessorBind.h"\r
27\r
28//\r
29// Declarations of dependencies among EdkII Glue Library instances and R8 Libraries\r
30// Pay attention to the order of following #define structures\r
31//\r
32\r
33\r
34//\r
35// PeiDxeDebugLibReportStatusCode\r
36// Actually almost every module and GlueLib instance needs this library, but GlueLib\r
37// instances don't have to list this library in their own inf files. Module inf\r
38// does this.\r
39//\r
40#ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__\r
41 #ifndef __EDKII_GLUE_BASE_LIB__\r
42 #define __EDKII_GLUE_BASE_LIB__\r
43 #endif\r
44 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
45 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
46 #endif\r
47#endif\r
48\r
49//\r
50// BaseDebugLibNull\r
51//\r
52#ifdef __EDKII_GLUE_BASE_DEBUG_LIB_NULL__\r
53 #ifndef __EDKII_GLUE_BASE_LIB__\r
54 #define __EDKII_GLUE_BASE_LIB__\r
55 #endif\r
56 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
57 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
58 #endif\r
59 #ifndef __EDKII_GLUE_BASE_PRINT_LIB__\r
60 #define __EDKII_GLUE_BASE_PRINT_LIB__\r
61 #endif\r
62#endif\r
63\r
c7f33ca4 64//\r
65// DxePerformanceLib\r
66//\r
67#ifdef __EDKII_GLUE_DXE_PERFORMANCE_LIB__\r
68 #ifndef __EDKII_GLUE_BASE_LIB__\r
69 #define __EDKII_GLUE_BASE_LIB__\r
70 #endif\r
71 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
72 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
73 #endif\r
74 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
75 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
76 #endif\r
77 #ifndef __EDKII_GLUE_DXE_HOB_LIB__\r
78 #define __EDKII_GLUE_DXE_HOB_LIB__\r
79 #endif\r
80 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
81 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
82 #endif\r
83 #ifndef __EDKII_GLUE_UEFI_LIB__\r
84 #define __EDKII_GLUE_UEFI_LIB__\r
85 #endif\r
86#endif\r
87\r
88//\r
89// PeiPerformanceLib\r
90//\r
91#ifdef __EDKII_GLUE_PEI_PERFORMANCE_LIB__\r
92 #ifndef __EDKII_GLUE_BASE_LIB__\r
93 #define __EDKII_GLUE_BASE_LIB__\r
94 #endif\r
95 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
96 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
97 #endif\r
98 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
99 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
100 #endif\r
101#endif\r
102\r
3eb9473e 103//\r
104// EdkDxeRuntimeDriverLib\r
105//\r
106#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
107 #ifndef __EDKII_GLUE_UEFI_LIB__\r
108 #define __EDKII_GLUE_UEFI_LIB__\r
109 #endif\r
110 #ifndef __EDKII_GLUE_BASE_LIB__\r
111 #define __EDKII_GLUE_BASE_LIB__\r
112 #endif\r
113 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
114 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
115 #endif\r
116#ifdef MDE_CPU_IPF // IPF\r
117 #ifndef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
118 #define __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
119 #endif\r
120#endif // IPF\r
121#endif\r
122\r
123//\r
124// EdkDxeSalLib\r
125//\r
126#ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
127 #ifndef __EDKII_GLUE_BASE_LIB__\r
128 #define __EDKII_GLUE_BASE_LIB__\r
129 #endif\r
130 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
131 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
132 #endif\r
133#endif\r
134\r
135//\r
136// BasePciLibCf8\r
137//\r
138#ifdef __EDKII_GLUE_BASE_PCI_LIB_CF8__\r
139 #ifndef __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
140 #define __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
141 #endif\r
142#endif\r
143\r
144//\r
145// BasePciLibPciExpress\r
146//\r
147#ifdef __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__\r
148 #ifndef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
149 #define __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
150 #endif\r
151#endif\r
152\r
153//\r
154// BasePciCf8Lib\r
155//\r
156#ifdef __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
157#ifndef MDE_CPU_EBC\r
158 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
159 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
160 #endif\r
161#else\r
162 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
163 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
164 #endif\r
165#endif \r
166#endif\r
167\r
168//\r
169// BasePciExpressLib\r
170//\r
171#ifdef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
172#ifndef MDE_CPU_EBC\r
173 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
174 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
175 #endif\r
176#else\r
177 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
178 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
179 #endif\r
180#endif\r
181#endif\r
182\r
183//\r
184// BaseTimerLibLocalApic\r
185//\r
186#ifdef __EDKII_GLUE_BASE_TIMER_LIB_LOCAL_APIC__\r
187 #ifndef __EDKII_GLUE_BASE_LIB__\r
188 #define __EDKII_GLUE_BASE_LIB__\r
189 #endif\r
190#ifndef MDE_CPU_EBC \r
191 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
192 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
193 #endif\r
194#else\r
195 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
196 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
197 #endif\r
198#endif \r
199#endif\r
200\r
201//\r
202// DxeReportStatusCodeLib\r
203//\r
204#ifdef __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__\r
205 #ifndef __EDKII_GLUE_BASE_LIB__\r
206 #define __EDKII_GLUE_BASE_LIB__\r
207 #endif\r
208#ifndef MDE_CPU_EBC\r
209 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
210 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
211 #endif\r
212#else\r
213 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
214 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
215 #endif\r
216#endif \r
217 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
218 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
219 #endif\r
220 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
221 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
222 #endif\r
223 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
224 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
225 #endif\r
226#endif\r
227\r
b56111f4
LG
228//\r
229// SmmRuntimeDxeReportStatusCodeLib - typically used by SMM driver and Runtime driver\r
230//\r
231#ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__\r
232 #ifndef __EDKII_GLUE_BASE_LIB__\r
233 #define __EDKII_GLUE_BASE_LIB__\r
234 #endif\r
235 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
236 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
237 #endif\r
238 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
239 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
240 #endif\r
241 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
242 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
243 #endif\r
244#endif\r
245\r
3eb9473e 246//\r
247// PeiReportStatusCodeLib\r
248//\r
249#ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__\r
250 #ifndef __EDKII_GLUE_BASE_LIB__\r
251 #define __EDKII_GLUE_BASE_LIB__\r
252 #endif\r
253 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
254 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
255 #endif\r
256#ifndef MDE_CPU_EBC \r
257 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
258 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
259 #endif\r
260#else\r
261 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
262 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
263 #endif\r
264#endif \r
265#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
266 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
267 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
268 #endif\r
269#elif defined(MDE_CPU_IPF)\r
270 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
271 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
272 #endif\r
273#endif \r
274 //\r
275 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
276 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
277 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
278 //\r
279#endif\r
280\r
281//\r
282// BasePeCoffLib\r
283//\r
284#ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__\r
285 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
286 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
287 #endif\r
288#endif\r
289\r
290//\r
291// BaseUefiDecompressLib\r
292//\r
293#ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__\r
294 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
295 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
296 #endif\r
297#endif\r
298\r
299//\r
300// DxeHobLib\r
301//\r
302#ifdef __EDKII_GLUE_DXE_HOB_LIB__\r
303 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
304 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
305 #endif\r
306 #ifndef __EDKII_GLUE_UEFI_LIB__\r
307 #define __EDKII_GLUE_UEFI_LIB__\r
308 #endif\r
309#endif\r
310\r
311//\r
312// HiiLib\r
313//\r
314#ifdef __EDKII_GLUE_HII_LIB__\r
315 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
316 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
317 #endif\r
318#endif\r
319\r
320//\r
321// UefiDevicePathLib\r
322//\r
323#ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__\r
324 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
325 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
326 #endif\r
327 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
328 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
329 #endif\r
330 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
331 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
332 #endif\r
333#endif\r
334\r
335//\r
336// UefiLib\r
337//\r
338#ifdef __EDKII_GLUE_UEFI_LIB__\r
339 #ifndef __EDKII_GLUE_BASE_LIB__\r
340 #define __EDKII_GLUE_BASE_LIB__\r
341 #endif\r
342 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
343 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
344 #endif\r
345 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
346 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
347 #endif\r
348 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
349 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
350 #endif\r
351#endif\r
352\r
353//\r
354// DxeMemoryAllocationLib\r
355//\r
356#ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
357 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
358 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
359 #endif\r
360 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
361 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
362 #endif\r
363#endif\r
364\r
365//\r
366// DxeSmbusLib\r
367//\r
368#ifdef __EDKII_GLUE_DXE_SMBUS_LIB__\r
369 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
370 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
371 #endif\r
372 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
373 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
374 #endif\r
375#endif\r
376\r
377//\r
378// PeiHobLib\r
379//\r
380#ifdef __EDKII_GLUE_PEI_HOB_LIB__\r
381 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
382 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
383 #endif\r
384 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
385 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
386 #endif\r
387#endif\r
388\r
389//\r
390// PeiMemoryAllocationLib\r
391//\r
392#ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__\r
393 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
394 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
395 #endif\r
396#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
397 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
398 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
399 #endif\r
400#elif defined(MDE_CPU_IPF)\r
401 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
402 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
403 #endif\r
404#endif \r
405 //\r
406 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
407 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
408 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
409 //\r
410#endif\r
411\r
412//\r
413// PeiResourcePublicationLib\r
414//\r
415#ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__\r
416 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
417 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
418 #endif\r
419#endif\r
420\r
421//\r
422// PeiServicesLib\r
423//\r
424#ifdef __EDKII_GLUE_PEI_SERVICES_LIB__\r
425#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
426 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
427 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
428 #endif\r
429#elif defined(MDE_CPU_IPF)\r
430 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
431 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
432 #endif\r
433#endif \r
434 //\r
435 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
436 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
437 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
438 //\r
439#endif\r
440\r
441//\r
442// PeiSmbusLib\r
443//\r
444#ifdef __EDKII_GLUE_PEI_SMBUS_LIB__\r
445 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
446 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
447 #endif\r
448#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
449 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
450 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
451 #endif\r
452#elif defined(MDE_CPU_IPF)\r
453 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
454 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
455 #endif\r
456#endif \r
457 //\r
458 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
459 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
460 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
461 //\r
462#endif\r
463\r
464//\r
465// PeiServicesTablePointerLibMm7\r
466//\r
467#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
468 #ifndef __EDKII_GLUE_BASE_LIB__\r
469 #define __EDKII_GLUE_BASE_LIB__\r
470 #endif\r
471#endif\r
472\r
473//\r
474// PeiServicesTablePointerLibKr1\r
475//\r
476#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
477 #ifndef __EDKII_GLUE_BASE_LIB__\r
478 #define __EDKII_GLUE_BASE_LIB__\r
479 #endif\r
480#endif\r
481\r
482\r
483//\r
484// UefiDriverModelLib\r
485//\r
486#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
487 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
488 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
489 #endif\r
490#endif\r
491\r
492//\r
493// DxeServicesTableLib\r
494//\r
495#ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__\r
496 #ifndef __EDKII_GLUE_UEFI_LIB__\r
497 #define __EDKII_GLUE_UEFI_LIB__\r
498 #endif\r
499#endif\r
500\r
501//\r
502// BasePrintLib\r
503//\r
504#ifdef __EDKII_GLUE_BASE_PRINT_LIB__\r
505 #ifndef __EDKII_GLUE_BASE_LIB__\r
506 #define __EDKII_GLUE_BASE_LIB__\r
507 #endif\r
508#endif\r
509\r
510//\r
511// BaseMemoryLib\r
512//\r
513#ifdef __EDKII_GLUE_BASE_MEMORY_LIB__\r
514 #ifndef __EDKII_GLUE_BASE_LIB__\r
515 #define __EDKII_GLUE_BASE_LIB__\r
516 #endif\r
517#endif\r
518\r
519//\r
520// BasePostCodeLibPort80\r
521//\r
522#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__\r
523#ifndef MDE_CPU_EBC\r
524 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
525 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
526 #endif\r
527#else\r
528 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
529 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
530 #endif\r
531#endif \r
532#endif\r
533\r
534//\r
535// BaseIoLibIntrinsic\r
536//\r
537#ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
538 #ifndef __EDKII_GLUE_BASE_LIB__\r
539 #define __EDKII_GLUE_BASE_LIB__\r
540 #endif\r
541#endif\r
542\r
543//\r
544// DxeIoLibCpuIo\r
545//\r
546#ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
547 #ifndef __EDKII_GLUE_BASE_LIB__\r
548 #define __EDKII_GLUE_BASE_LIB__\r
549 #endif\r
550 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
551 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
552 #endif\r
553#endif\r
554\r
555//\r
556// UefiBootServicesTableLib\r
557//\r
558#ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
559#endif\r
560\r
561//\r
562// BaseCacheMaintenanceLib\r
563//\r
564#ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__\r
565 #ifndef __EDKII_GLUE_BASE_LIB__\r
566 #define __EDKII_GLUE_BASE_LIB__\r
567 #endif\r
568#endif\r
569\r
570//\r
571// BaseLib\r
572//\r
573#ifdef __EDKII_GLUE_BASE_LIB__\r
574#endif\r
575\r
576//\r
577// UefiRuntimeServicesTableLib\r
578//\r
579#ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
580#endif\r
581\r
582//\r
583// BasePeCoffGetEntryPointLib\r
584//\r
585#ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__\r
586#endif\r
587\r
588//\r
589// PeiServicesTablePointerLib\r
590//\r
591#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
592#endif\r
593\r
594//\r
595// BasePostCodeLibDebug\r
596//\r
597#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__\r
598 //\r
599 // A DebugLib instance\r
600 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf\r
601 //\r
602#endif\r
603\r
604//\r
605// PeiDxePostCodeLibReportStatusCode\r
606//\r
607#ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__\r
608 //\r
609 // PEI or DXE ReportStatusCodeLib instance\r
610 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf\r
611 //\r
612#endif\r
613\r
c7f33ca4 614//\r
615// Whether _gDriverExitBootServicesEvent[] contains effective handler\r
616//\r
617#if defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) || defined(__EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__)\r
618 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 1\r
619#else \r
620 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 0\r
621#endif\r
3eb9473e 622\r
623//\r
624// Check against multiple instances of same library class being used\r
625//\r
626#if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)\r
627 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.\r
628#endif\r
629\r
630#if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)\r
631 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.\r
632#endif\r
633\r
634#if defined (__EDKII_GLUE_DXE_HOB_LIB__) && (__EDKII_GLUE_PEI_HOB_LIB__)\r
635 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.\r
636#endif\r
637\r
638#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)\r
639 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.\r
640#endif\r
641\r
642#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)\r
643 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.\r
644#endif\r
645\r
646#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)\r
647 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.\r
648#endif\r
649\r
650#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)\r
651 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.\r
652#endif\r
653\r
654#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)\r
655 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.\r
656#endif\r
657\r
658#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)\r
659 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.\r
660#endif\r
661\r
662#if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)\r
663 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.\r
664#endif\r
665\r
b56111f4
LG
666#if defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)\r
667 #error EdkIIGlueSmmRuntimeDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.\r
668#endif\r
669\r
670#if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__)\r
671 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGlueSmmRuntimeDxeReportStatusCodeLib: can only be mutual exclusively used.\r
672#endif\r
673\r
3eb9473e 674#if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)\r
675 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.\r
676#endif\r
677\r
678#if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)\r
679 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.\r
680#endif\r
681\r
682#if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)\r
683 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.\r
684#endif\r
685\r
686//\r
687// Some instances must be supplied\r
688//\r
689#ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__\r
b56111f4
LG
690 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) \\r
691 && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__) \\r
692 && !defined(__EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__)\r
693 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, \\r
694 so either EdkIIGlueDxeReportStatusCodeLib, EdkIIGluePeiReportStatusCodeLib, \\r
695 or EdkIIGlueSmmRuntimeDxeReportStatusCodeLib must be supplied\r
3eb9473e 696 #endif\r
697#endif\r
698\r
699#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__\r
700 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)\r
701 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied\r
702 #endif\r
703#endif\r
704\r
705//\r
706// EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined\r
707//\r
708#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
709 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__\r
710 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."\r
711 #endif\r
712#endif\r
713\r
714//\r
715// EdkII Glue Library Constructors:\r
716// NOTE: the constructors must be called according to dependency order\r
717//\r
718// UefiBootServicesTableLib UefiBootServicesTableLibConstructor()\r
719// DxeIoLibCpuIo IoLibConstructor()\r
720// UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()\r
721// EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()\r
b56111f4 722// SmmRuntimeDxeReportStatusCodeLib ReportStatusCodeLibConstruct()\r
3eb9473e 723// DxeHobLib HobLibConstructor()\r
724// UefiDriverModelLib UefiDriverModelLibConstructor()\r
725// PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()\r
726// PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()\r
727// PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()\r
728// DxeSmbusLib SmbusLibConstructor()\r
729// DxeServicesTableLib DxeServicesTableLibConstructor()\r
730// DxeSalLib DxeSalLibConstructor()\r
731//\r
732\r
733#ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
734EFI_STATUS\r
c7f33ca4 735EFIAPI\r
3eb9473e 736UefiBootServicesTableLibConstructor (\r
737 IN EFI_HANDLE ImageHandle,\r
738 IN EFI_SYSTEM_TABLE *SystemTable\r
739 );\r
740#endif\r
741\r
742#ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
743EFI_STATUS\r
744EFIAPI\r
745IoLibConstructor (\r
746 IN EFI_HANDLE ImageHandle,\r
747 IN EFI_SYSTEM_TABLE *SystemTable\r
748 );\r
749#endif\r
750\r
751#ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
752EFI_STATUS\r
c7f33ca4 753EFIAPI\r
3eb9473e 754UefiRuntimeServicesTableLibConstructor (\r
755 IN EFI_HANDLE ImageHandle,\r
756 IN EFI_SYSTEM_TABLE *SystemTable\r
757 );\r
758#endif\r
759\r
760#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
761EFI_STATUS\r
c7f33ca4 762EFIAPI\r
3eb9473e 763RuntimeDriverLibConstruct (\r
764 IN EFI_HANDLE ImageHandle,\r
765 IN EFI_SYSTEM_TABLE *SystemTable\r
766 );\r
767#endif\r
768\r
b56111f4
LG
769#ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__\r
770EFI_STATUS\r
771EFIAPI\r
772ReportStatusCodeLibConstruct (\r
773 IN EFI_HANDLE ImageHandle,\r
774 IN EFI_SYSTEM_TABLE *SystemTable\r
775 );\r
776#endif\r
777\r
3eb9473e 778#ifdef __EDKII_GLUE_DXE_HOB_LIB__\r
779EFI_STATUS\r
c7f33ca4 780EFIAPI\r
3eb9473e 781HobLibConstructor (\r
782 IN EFI_HANDLE ImageHandle,\r
783 IN EFI_SYSTEM_TABLE *SystemTable\r
784 );\r
785#endif\r
786\r
787#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
788EFI_STATUS\r
c7f33ca4 789EFIAPI\r
3eb9473e 790UefiDriverModelLibConstructor (\r
791 IN EFI_HANDLE ImageHandle,\r
792 IN EFI_SYSTEM_TABLE *SystemTable\r
793 );\r
794#endif\r
795\r
796#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
797EFI_STATUS\r
c7f33ca4 798EFIAPI\r
3eb9473e 799PeiServicesTablePointerLibConstructor (\r
800 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
801 IN EFI_PEI_SERVICES **PeiServices\r
802 );\r
803#endif\r
804\r
805#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
806EFI_STATUS\r
c7f33ca4 807EFIAPI\r
3eb9473e 808PeiServicesTablePointerLibConstructor (\r
809 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
810 IN EFI_PEI_SERVICES **PeiServices\r
811 );\r
812#endif\r
813\r
814#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
815EFI_STATUS\r
c7f33ca4 816EFIAPI\r
3eb9473e 817PeiServicesTablePointerLibConstructor (\r
818 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
819 IN EFI_PEI_SERVICES **PeiServices\r
820 );\r
821#endif\r
822\r
823#ifdef __EDKII_GLUE_DXE_SMBUS_LIB__\r
824EFI_STATUS\r
825EFIAPI\r
826SmbusLibConstructor (\r
827 IN EFI_HANDLE ImageHandle,\r
828 IN EFI_SYSTEM_TABLE *SystemTable\r
829 );\r
830#endif\r
831\r
832#ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__\r
833EFI_STATUS\r
c7f33ca4 834EFIAPI\r
3eb9473e 835DxeServicesTableLibConstructor (\r
836 IN EFI_HANDLE ImageHandle,\r
837 IN EFI_SYSTEM_TABLE *SystemTable\r
838 );\r
839#endif\r
840\r
841#ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
842EFI_STATUS\r
843EFIAPI\r
844DxeSalLibConstructor (\r
845 IN EFI_HANDLE ImageHandle,\r
846 IN EFI_SYSTEM_TABLE *SystemTable\r
847 );\r
848#endif\r
849\r
850//\r
851// EdkII Glue Library Destructors:\r
852// NOTE: the destructors must be called according to dependency order\r
853//\r
854// UefiDriverModelLibDestructor UefiDriverModelLibDestructor()\r
b56111f4 855// SmmRuntimeDxeReportStatusCodeLib ReportStatusCodeLibDestruct()\r
3eb9473e 856// EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()\r
857//\r
858#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
859EFI_STATUS\r
c7f33ca4 860EFIAPI\r
3eb9473e 861UefiDriverModelLibDestructor (\r
862 IN EFI_HANDLE ImageHandle,\r
863 IN EFI_SYSTEM_TABLE *SystemTable\r
864 );\r
865#endif\r
866\r
b56111f4
LG
867#ifdef __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__\r
868EFI_STATUS\r
869EFIAPI\r
870ReportStatusCodeLibDestruct (\r
871 IN EFI_HANDLE ImageHandle,\r
872 IN EFI_SYSTEM_TABLE *SystemTable\r
873 );\r
874#endif\r
875\r
3eb9473e 876#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
877EFI_STATUS\r
c7f33ca4 878EFIAPI\r
3eb9473e 879RuntimeDriverLibDeconstruct (\r
880 IN EFI_HANDLE ImageHandle,\r
881 IN EFI_SYSTEM_TABLE *SystemTable\r
882 );\r
883#endif\r
884\r
885#endif\r