## @file
# CI configuration for MdePkg
#
# Copyright (c) Microsoft Corporation
# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
# Copyright (c) 2023, Loongson Technology Corporation Limited. All rights reserved.<BR>
# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
    ## options defined .pytool/Plugin/LicenseCheck
    "LicenseCheck": {
        "IgnoreFiles": [
            # This file is copied from mipi sys-T submodule and generated by python script with customization.
            "Library/MipiSysTLib/mipi_syst.h"
        ]
    },
    "EccCheck": {
        ## Exception sample looks like below:
        ## "ExceptionList": [
        ##     "<ErrorID>", "<KeyWord>"
        ## ]
        "ExceptionList": [
            "9005", "@VDD",
            "8005", "gST",
            "8005", "gBS",
            "8005", "gDS",
            "8005", "gDS",
            "8002", "va_list",
            "8005", "EFI_BLUETOOTH_LE_SCAN_CALLBACK_INFORMATION.RSSI",
            "8005", "void",
            "8005", "va_list.__ap",
            "8005", "__stack_chk_guard",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S0",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S1",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S2",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S3",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S4",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S5",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S6",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S7",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.S8",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.SP",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.FP",
            "8005", "BASE_LIBRARY_JUMP_BUFFER.RA",
            "8001", "MSG_IPv6_DP",
            "8001", "MSG_IPv4_DP",
            "8001", "DEFAULT_ToS",
            "8001", "EFI_SERIAL_IO_PROTOCOL_REVISION1p1",
            "8001", "EFI_ABS_AltActive",
            "8001", "EFI_ABSP_SupportsAltActive",
            "8001", "_ReadWriteBarrier",
            "8001", "__va_copy",
            "8003", "__va_copy",
            "7007", "_EFI_LEGACY_SPI_CONTROLLER_PROTOCOL",
            "7007", "_EFI_LEGACY_SPI_FLASH_PROTOCOL",
            "7007", "_EFI_SPI_NOR_FLASH_PROTOCOL",
            "7007", "_EFI_SPI_HC_PROTOCOL",
            "8002", "aligned (",
            "4002", "_ReturnAddress"
        ],
        ## Both file path and directory path are accepted.
        "IgnoreFiles": [
            "Include/IndustryStandard/Acpi64.h",
            "Include/IndustryStandard/Acpi65.h",
            "Include/IndustryStandard/Tpm12.h",
            "Include/IndustryStandard/Tpm20.h",
            "Include/IndustryStandard/IoRemappingTable.h",
            "Include/IndustryStandard/UefiTcgPlatform.h",
            "Include/Library/PcdLib.h",
            "Include/Library/SafeIntLib.h",
            "Include/Protocol/DebugSupport.h",
            "Test/UnitTest/Library/BaseSafeIntLib/TestBaseSafeIntLib.c",
            "Library/BaseFdtLib",
            "Library/MipiSysTLib/mipi_syst.h",
            "Include/Register/Amd/SmramSaveStateMap.h"
        ]
    },
    ## options defined ci/Plugin/CompilerPlugin
    "CompilerPlugin": {
        "DscPath": "MdePkg.dsc"
    },

    ## options defined ci/Plugin/HostUnitTestCompilerPlugin
    "HostUnitTestCompilerPlugin": {
        "DscPath": "Test/MdePkgHostTest.dsc"
    },

    ## options defined ci/Plugin/CharEncodingCheck
    "CharEncodingCheck": {
        "IgnoreFiles": []
    },

    ## options defined ci/Plugin/DependencyCheck
    "DependencyCheck": {
        "AcceptableDependencies": [
            "MdePkg/MdePkg.dec"
        ],
        # For host based unit tests
        "AcceptableDependencies-HOST_APPLICATION":[
            "UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec"
        ],
        # For UEFI shell based apps
        "AcceptableDependencies-UEFI_APPLICATION":[],
        "IgnoreInf": []
    },

    ## options defined ci/Plugin/DscCompleteCheck
    "DscCompleteCheck": {
        "IgnoreInf": [""],
        "DscPath": "MdePkg.dsc"
    },

    ## options defined ci/Plugin/HostUnitTestDscCompleteCheck
    "HostUnitTestDscCompleteCheck": {
        "IgnoreInf": [""],
        "DscPath": "Test/MdePkgHostTest.dsc"
    },

    ## options defined ci/Plugin/GuidCheck
    "GuidCheck": {
        "IgnoreGuidName": [
            "gEfiFirmwareVolumeTopFileGuid" # sec modules must be set to this guid
        ],
        "IgnoreGuidValue": ["00000000-0000-0000-0000-000000000000"],
        "IgnoreFoldersAndFiles": [],
        "IgnoreDuplicates": [
            "gEfiFirmwareVolumeBlockProtocolGuid=gEfiFirmwareVolumeBlock2ProtocolGuid",
            "gEfiMmAccessProtocolGuid=gEfiSmmAccess2ProtocolGuid",
            "gEfiSmmCommunicationProtocolGuid=gEfiMmCommunicationProtocolGuid",
            "gEfiMmPciRootBridgeIoProtocolGuid=gEfiSmmPciRootBridgeIoProtocolGuid",
            "gEfiTrEEProtocolGuid=gEfiTcg2ProtocolGuid",
            "gEfiSmmPowerButtonDispatch2ProtocolGuid=gEfiMmPowerButtonDispatchProtocolGuid",
            "gEfiSmmBase2ProtocolGuid=gEfiMmBaseProtocolGuid",
            "gEfiSmmUsbDispatch2ProtocolGuid=gEfiMmUsbDispatchProtocolGuid",
            "gEfiSmmCpuProtocolGuid=gEfiMmCpuProtocolGuid",
            "gEfiAcpiTableGuid=gEfiAcpi20TableGuid",
            "gEfiSmmControl2ProtocolGuid=gEfiMmControlProtocolGuid",
            "gEfiSmmStandbyButtonDispatch2ProtocolGuid=gEfiMmStandbyButtonDispatchProtocolGuid",
            "gEfiSmmStatusCodeProtocolGuid=gEfiMmStatusCodeProtocolGuid",
            "gEfiDxeSmmReadyToLockProtocolGuid=gEfiDxeMmReadyToLockProtocolGuid",
            "gEfiSmmIoTrapDispatch2ProtocolGuid=gEfiMmIoTrapDispatchProtocolGuid",
            "gEfiSmmReadyToLockProtocolGuid=gEfiMmReadyToLockProtocolGuid",
            "gEfiSmmSxDispatch2ProtocolGuid=gEfiMmSxDispatchProtocolGuid",
            "gEfiPeiCapsulePpiGuid=gPeiCapsulePpiGuid",
            "gEfiSmmCpuIo2ProtocolGuid=gEfiMmCpuIoProtocolGuid",
            "gEfiSmmRscHandlerProtocolGuid=gEfiMmRscHandlerProtocolGuid",
            "gEfiSmmConfigurationProtocolGuid=gEfiMmConfigurationProtocolGuid",
            "gEfiSmmGpiDispatch2ProtocolGuid=gEfiMmGpiDispatchProtocolGuid",
            "gEfiSmmEndOfDxeProtocolGuid=gEfiMmEndOfDxeProtocolGuid",
            "gEfiSmmSwDispatch2ProtocolGuid=gEfiMmSwDispatchProtocolGuid",
            "gEfiDebugPortProtocolGuid=gEfiDebugPortVariableGuid=gEfiDebugPortDevicePathGuid", ## is this a bug
            "gEfiProcessorSpecificErrorSectionGuid=gEfiIa32X64ProcessorErrorSectionGuid",  ## is this a bug
            "gEfiSmmPeriodicTimerDispatch2ProtocolGuid=gEfiMmPeriodicTimerDispatchProtocolGuid",
            "gEfiPeiMmAccessPpiGuid=gPeiSmmAccessPpiGuid",
            "gPeiSmmControlPpiGuid=gEfiPeiMmControlPpiGuid",
            "gEfiPeiMmCommunicationPpiGuid=gEfiPeiSmmCommunicationPpiGuid",
            ]
    },

    ## options defined ci/Plugin/LibraryClassCheck
    "LibraryClassCheck": {
        "IgnoreHeaderFile": []
    },

    ## options defined ci/Plugin/SpellCheck
    "SpellCheck": {
        "AuditOnly": True,           # Fails test but run in AuditOnly mode to collect log
        "IgnoreFiles": [],           # use gitignore syntax to ignore errors in matching files
        "ExtendWords": [],           # words to extend to the dictionary for this package
        "IgnoreStandardPaths": [],   # Standard Plugin defined paths that should be ignore
        "AdditionalIncludePaths": [] # Additional paths to spell check (wildcards supported)
    },

    # options defined in .pytool/Plugin/UncrustifyCheck
    "UncrustifyCheck": {
        "IgnoreFiles": [
            "Library/BaseFdtLib/libfdt",
            "Library/BaseFdtLib/limits.h",
            "Library/BaseFdtLib/stdbool.h",
            "Library/BaseFdtLib/stddef.h",
            "Library/BaseFdtLib/stdint.h",
            "Library/BaseFdtLib/stdlib.h",
            "Library/BaseFdtLib/string.h",
            "mipi_syst.h"
        ]
    }
}
