## @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>
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
    ## options defined .pytool/Plugin/LicenseCheck
    "LicenseCheck": {
        "IgnoreFiles": []
    },
    "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"
        ]
    },
    ## 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)
    }
}
