]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / Include / Common / EdkIIGlueDependencies.h
CommitLineData
3eb9473e 1/*++\r
2\r
3Copyright (c) 2004 - 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
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
64//\r
65// EdkDxeRuntimeDriverLib\r
66//\r
67#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
68 #ifndef __EDKII_GLUE_UEFI_LIB__\r
69 #define __EDKII_GLUE_UEFI_LIB__\r
70 #endif\r
71 #ifndef __EDKII_GLUE_BASE_LIB__\r
72 #define __EDKII_GLUE_BASE_LIB__\r
73 #endif\r
74 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
75 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
76 #endif\r
77#ifdef MDE_CPU_IPF // IPF\r
78 #ifndef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
79 #define __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
80 #endif\r
81#endif // IPF\r
82#endif\r
83\r
84//\r
85// EdkDxeSalLib\r
86//\r
87#ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
88 #ifndef __EDKII_GLUE_BASE_LIB__\r
89 #define __EDKII_GLUE_BASE_LIB__\r
90 #endif\r
91 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
92 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
93 #endif\r
94#endif\r
95\r
96//\r
97// BasePciLibCf8\r
98//\r
99#ifdef __EDKII_GLUE_BASE_PCI_LIB_CF8__\r
100 #ifndef __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
101 #define __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
102 #endif\r
103#endif\r
104\r
105//\r
106// BasePciLibPciExpress\r
107//\r
108#ifdef __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__\r
109 #ifndef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
110 #define __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
111 #endif\r
112#endif\r
113\r
114//\r
115// BasePciCf8Lib\r
116//\r
117#ifdef __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
118#ifndef MDE_CPU_EBC\r
119 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
120 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
121 #endif\r
122#else\r
123 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
124 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
125 #endif\r
126#endif \r
127#endif\r
128\r
129//\r
130// BasePciExpressLib\r
131//\r
132#ifdef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
133#ifndef MDE_CPU_EBC\r
134 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
135 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
136 #endif\r
137#else\r
138 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
139 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
140 #endif\r
141#endif\r
142#endif\r
143\r
144//\r
145// BaseTimerLibLocalApic\r
146//\r
147#ifdef __EDKII_GLUE_BASE_TIMER_LIB_LOCAL_APIC__\r
148 #ifndef __EDKII_GLUE_BASE_LIB__\r
149 #define __EDKII_GLUE_BASE_LIB__\r
150 #endif\r
151#ifndef MDE_CPU_EBC \r
152 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
153 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
154 #endif\r
155#else\r
156 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
157 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
158 #endif\r
159#endif \r
160#endif\r
161\r
162//\r
163// DxeReportStatusCodeLib\r
164//\r
165#ifdef __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__\r
166 #ifndef __EDKII_GLUE_BASE_LIB__\r
167 #define __EDKII_GLUE_BASE_LIB__\r
168 #endif\r
169#ifndef MDE_CPU_EBC\r
170 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
171 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
172 #endif\r
173#else\r
174 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
175 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
176 #endif\r
177#endif \r
178 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
179 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
180 #endif\r
181 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
182 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
183 #endif\r
184 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
185 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
186 #endif\r
187#endif\r
188\r
189//\r
190// PeiReportStatusCodeLib\r
191//\r
192#ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__\r
193 #ifndef __EDKII_GLUE_BASE_LIB__\r
194 #define __EDKII_GLUE_BASE_LIB__\r
195 #endif\r
196 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
197 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
198 #endif\r
199#ifndef MDE_CPU_EBC \r
200 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
201 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
202 #endif\r
203#else\r
204 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
205 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
206 #endif\r
207#endif \r
208#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
209 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
210 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
211 #endif\r
212#elif defined(MDE_CPU_IPF)\r
213 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
214 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
215 #endif\r
216#endif \r
217 //\r
218 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
219 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
220 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
221 //\r
222#endif\r
223\r
224//\r
225// BasePeCoffLib\r
226//\r
227#ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__\r
228 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
229 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
230 #endif\r
231#endif\r
232\r
233//\r
234// BaseUefiDecompressLib\r
235//\r
236#ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__\r
237 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
238 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
239 #endif\r
240#endif\r
241\r
242//\r
243// DxeHobLib\r
244//\r
245#ifdef __EDKII_GLUE_DXE_HOB_LIB__\r
246 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
247 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
248 #endif\r
249 #ifndef __EDKII_GLUE_UEFI_LIB__\r
250 #define __EDKII_GLUE_UEFI_LIB__\r
251 #endif\r
252#endif\r
253\r
254//\r
255// HiiLib\r
256//\r
257#ifdef __EDKII_GLUE_HII_LIB__\r
258 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
259 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
260 #endif\r
261#endif\r
262\r
263//\r
264// UefiDevicePathLib\r
265//\r
266#ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__\r
267 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
268 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
269 #endif\r
270 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
271 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
272 #endif\r
273 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
274 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
275 #endif\r
276#endif\r
277\r
278//\r
279// UefiLib\r
280//\r
281#ifdef __EDKII_GLUE_UEFI_LIB__\r
282 #ifndef __EDKII_GLUE_BASE_LIB__\r
283 #define __EDKII_GLUE_BASE_LIB__\r
284 #endif\r
285 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
286 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
287 #endif\r
288 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
289 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
290 #endif\r
291 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
292 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
293 #endif\r
294#endif\r
295\r
296//\r
297// DxeMemoryAllocationLib\r
298//\r
299#ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
300 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
301 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
302 #endif\r
303 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
304 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
305 #endif\r
306#endif\r
307\r
308//\r
309// DxeSmbusLib\r
310//\r
311#ifdef __EDKII_GLUE_DXE_SMBUS_LIB__\r
312 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
313 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
314 #endif\r
315 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
316 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
317 #endif\r
318#endif\r
319\r
320//\r
321// PeiHobLib\r
322//\r
323#ifdef __EDKII_GLUE_PEI_HOB_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_PEI_SERVICES_LIB__\r
328 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
329 #endif\r
330#endif\r
331\r
332//\r
333// PeiMemoryAllocationLib\r
334//\r
335#ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__\r
336 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
337 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
338 #endif\r
339#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
340 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
341 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
342 #endif\r
343#elif defined(MDE_CPU_IPF)\r
344 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
345 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
346 #endif\r
347#endif \r
348 //\r
349 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
350 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
351 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
352 //\r
353#endif\r
354\r
355//\r
356// PeiResourcePublicationLib\r
357//\r
358#ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__\r
359 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
360 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
361 #endif\r
362#endif\r
363\r
364//\r
365// PeiServicesLib\r
366//\r
367#ifdef __EDKII_GLUE_PEI_SERVICES_LIB__\r
368#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
369 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
370 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
371 #endif\r
372#elif defined(MDE_CPU_IPF)\r
373 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
374 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
375 #endif\r
376#endif \r
377 //\r
378 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
379 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
380 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
381 //\r
382#endif\r
383\r
384//\r
385// PeiSmbusLib\r
386//\r
387#ifdef __EDKII_GLUE_PEI_SMBUS_LIB__\r
388 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
389 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
390 #endif\r
391#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
392 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
393 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
394 #endif\r
395#elif defined(MDE_CPU_IPF)\r
396 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
397 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
398 #endif\r
399#endif \r
400 //\r
401 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
402 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
403 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
404 //\r
405#endif\r
406\r
407//\r
408// PeiServicesTablePointerLibMm7\r
409//\r
410#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
411 #ifndef __EDKII_GLUE_BASE_LIB__\r
412 #define __EDKII_GLUE_BASE_LIB__\r
413 #endif\r
414#endif\r
415\r
416//\r
417// PeiServicesTablePointerLibKr1\r
418//\r
419#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
420 #ifndef __EDKII_GLUE_BASE_LIB__\r
421 #define __EDKII_GLUE_BASE_LIB__\r
422 #endif\r
423#endif\r
424\r
425\r
426//\r
427// UefiDriverModelLib\r
428//\r
429#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
430 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
431 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
432 #endif\r
433#endif\r
434\r
435//\r
436// DxeServicesTableLib\r
437//\r
438#ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__\r
439 #ifndef __EDKII_GLUE_UEFI_LIB__\r
440 #define __EDKII_GLUE_UEFI_LIB__\r
441 #endif\r
442#endif\r
443\r
444//\r
445// BasePrintLib\r
446//\r
447#ifdef __EDKII_GLUE_BASE_PRINT_LIB__\r
448 #ifndef __EDKII_GLUE_BASE_LIB__\r
449 #define __EDKII_GLUE_BASE_LIB__\r
450 #endif\r
451#endif\r
452\r
453//\r
454// BaseMemoryLib\r
455//\r
456#ifdef __EDKII_GLUE_BASE_MEMORY_LIB__\r
457 #ifndef __EDKII_GLUE_BASE_LIB__\r
458 #define __EDKII_GLUE_BASE_LIB__\r
459 #endif\r
460#endif\r
461\r
462//\r
463// BasePostCodeLibPort80\r
464//\r
465#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__\r
466#ifndef MDE_CPU_EBC\r
467 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
468 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
469 #endif\r
470#else\r
471 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
472 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
473 #endif\r
474#endif \r
475#endif\r
476\r
477//\r
478// BaseIoLibIntrinsic\r
479//\r
480#ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
481 #ifndef __EDKII_GLUE_BASE_LIB__\r
482 #define __EDKII_GLUE_BASE_LIB__\r
483 #endif\r
484#endif\r
485\r
486//\r
487// DxeIoLibCpuIo\r
488//\r
489#ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
490 #ifndef __EDKII_GLUE_BASE_LIB__\r
491 #define __EDKII_GLUE_BASE_LIB__\r
492 #endif\r
493 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
494 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
495 #endif\r
496#endif\r
497\r
498//\r
499// UefiBootServicesTableLib\r
500//\r
501#ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
502#endif\r
503\r
504//\r
505// BaseCacheMaintenanceLib\r
506//\r
507#ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__\r
508 #ifndef __EDKII_GLUE_BASE_LIB__\r
509 #define __EDKII_GLUE_BASE_LIB__\r
510 #endif\r
511#endif\r
512\r
513//\r
514// BaseLib\r
515//\r
516#ifdef __EDKII_GLUE_BASE_LIB__\r
517#endif\r
518\r
519//\r
520// UefiRuntimeServicesTableLib\r
521//\r
522#ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
523#endif\r
524\r
525//\r
526// BasePeCoffGetEntryPointLib\r
527//\r
528#ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__\r
529#endif\r
530\r
531//\r
532// PeiServicesTablePointerLib\r
533//\r
534#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
535#endif\r
536\r
537//\r
538// BasePostCodeLibDebug\r
539//\r
540#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__\r
541 //\r
542 // A DebugLib instance\r
543 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf\r
544 //\r
545#endif\r
546\r
547//\r
548// PeiDxePostCodeLibReportStatusCode\r
549//\r
550#ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__\r
551 //\r
552 // PEI or DXE ReportStatusCodeLib instance\r
553 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf\r
554 //\r
555#endif\r
556\r
557\r
558//\r
559// Check against multiple instances of same library class being used\r
560//\r
561#if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)\r
562 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.\r
563#endif\r
564\r
565#if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)\r
566 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.\r
567#endif\r
568\r
569#if defined (__EDKII_GLUE_DXE_HOB_LIB__) && (__EDKII_GLUE_PEI_HOB_LIB__)\r
570 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.\r
571#endif\r
572\r
573#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)\r
574 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.\r
575#endif\r
576\r
577#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)\r
578 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.\r
579#endif\r
580\r
581#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)\r
582 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.\r
583#endif\r
584\r
585#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)\r
586 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.\r
587#endif\r
588\r
589#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)\r
590 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.\r
591#endif\r
592\r
593#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)\r
594 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.\r
595#endif\r
596\r
597#if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)\r
598 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.\r
599#endif\r
600\r
601#if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)\r
602 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.\r
603#endif\r
604\r
605#if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)\r
606 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.\r
607#endif\r
608\r
609#if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)\r
610 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.\r
611#endif\r
612\r
613//\r
614// Some instances must be supplied\r
615//\r
616#ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__\r
617 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)\r
618 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, so either EdkIIGlueDxeReportStatusCodeLib or EdkIIGluePeiReportStatusCodeLib must be supplied\r
619 #endif\r
620#endif\r
621\r
622#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__\r
623 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)\r
624 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied\r
625 #endif\r
626#endif\r
627\r
628//\r
629// EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined\r
630//\r
631#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
632 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__\r
633 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."\r
634 #endif\r
635#endif\r
636\r
637//\r
638// EdkII Glue Library Constructors:\r
639// NOTE: the constructors must be called according to dependency order\r
640//\r
641// UefiBootServicesTableLib UefiBootServicesTableLibConstructor()\r
642// DxeIoLibCpuIo IoLibConstructor()\r
643// UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()\r
644// EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()\r
645// DxeHobLib HobLibConstructor()\r
646// UefiDriverModelLib UefiDriverModelLibConstructor()\r
647// PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()\r
648// PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()\r
649// PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()\r
650// DxeSmbusLib SmbusLibConstructor()\r
651// DxeServicesTableLib DxeServicesTableLibConstructor()\r
652// DxeSalLib DxeSalLibConstructor()\r
653//\r
654\r
655#ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
656EFI_STATUS\r
657UefiBootServicesTableLibConstructor (\r
658 IN EFI_HANDLE ImageHandle,\r
659 IN EFI_SYSTEM_TABLE *SystemTable\r
660 );\r
661#endif\r
662\r
663#ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
664EFI_STATUS\r
665EFIAPI\r
666IoLibConstructor (\r
667 IN EFI_HANDLE ImageHandle,\r
668 IN EFI_SYSTEM_TABLE *SystemTable\r
669 );\r
670#endif\r
671\r
672#ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
673EFI_STATUS\r
674UefiRuntimeServicesTableLibConstructor (\r
675 IN EFI_HANDLE ImageHandle,\r
676 IN EFI_SYSTEM_TABLE *SystemTable\r
677 );\r
678#endif\r
679\r
680#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
681EFI_STATUS\r
682RuntimeDriverLibConstruct (\r
683 IN EFI_HANDLE ImageHandle,\r
684 IN EFI_SYSTEM_TABLE *SystemTable\r
685 );\r
686#endif\r
687\r
688#ifdef __EDKII_GLUE_DXE_HOB_LIB__\r
689EFI_STATUS\r
690HobLibConstructor (\r
691 IN EFI_HANDLE ImageHandle,\r
692 IN EFI_SYSTEM_TABLE *SystemTable\r
693 );\r
694#endif\r
695\r
696#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
697EFI_STATUS\r
698UefiDriverModelLibConstructor (\r
699 IN EFI_HANDLE ImageHandle,\r
700 IN EFI_SYSTEM_TABLE *SystemTable\r
701 );\r
702#endif\r
703\r
704#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
705EFI_STATUS\r
706PeiServicesTablePointerLibConstructor (\r
707 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
708 IN EFI_PEI_SERVICES **PeiServices\r
709 );\r
710#endif\r
711\r
712#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
713EFI_STATUS\r
714PeiServicesTablePointerLibConstructor (\r
715 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
716 IN EFI_PEI_SERVICES **PeiServices\r
717 );\r
718#endif\r
719\r
720#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
721EFI_STATUS\r
722PeiServicesTablePointerLibConstructor (\r
723 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
724 IN EFI_PEI_SERVICES **PeiServices\r
725 );\r
726#endif\r
727\r
728#ifdef __EDKII_GLUE_DXE_SMBUS_LIB__\r
729EFI_STATUS\r
730EFIAPI\r
731SmbusLibConstructor (\r
732 IN EFI_HANDLE ImageHandle,\r
733 IN EFI_SYSTEM_TABLE *SystemTable\r
734 );\r
735#endif\r
736\r
737#ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__\r
738EFI_STATUS\r
739DxeServicesTableLibConstructor (\r
740 IN EFI_HANDLE ImageHandle,\r
741 IN EFI_SYSTEM_TABLE *SystemTable\r
742 );\r
743#endif\r
744\r
745#ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
746EFI_STATUS\r
747EFIAPI\r
748DxeSalLibConstructor (\r
749 IN EFI_HANDLE ImageHandle,\r
750 IN EFI_SYSTEM_TABLE *SystemTable\r
751 );\r
752#endif\r
753\r
754//\r
755// EdkII Glue Library Destructors:\r
756// NOTE: the destructors must be called according to dependency order\r
757//\r
758// UefiDriverModelLibDestructor UefiDriverModelLibDestructor()\r
759// EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()\r
760//\r
761#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
762EFI_STATUS\r
763UefiDriverModelLibDestructor (\r
764 IN EFI_HANDLE ImageHandle,\r
765 IN EFI_SYSTEM_TABLE *SystemTable\r
766 );\r
767#endif\r
768\r
769#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
770EFI_STATUS\r
771RuntimeDriverLibDeconstruct (\r
772 IN EFI_HANDLE ImageHandle,\r
773 IN EFI_SYSTEM_TABLE *SystemTable\r
774 );\r
775#endif\r
776\r
777#endif\r