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