## @file
# CI configuration for MdePkg
#
# Copyright (c) Microsoft Corporation
# Copyright (c) 2020, Intel Corporation. All rights reserved.
# Copyright (c) 2021, Arm Limited. All rights reserved.
# Copyright (c) 2023, Loongson Technology Corporation Limited. All rights reserved.
# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
    "PrEval": {
        "DscPath": "MdePkg.dsc",
    },
    ## 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": [
        ##     "", ""
        ## ]
        "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",
            "8005", "__security_cookie",
            "8006", "__stack_chk_fail"
        ],
        ## 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",
            "Test/UnitTest/Library/DevicePathLib/TestDevicePathLib.c",
            "Test/UnitTest/Library/DevicePathLib/TestDevicePathLib.h",
            "Test/UnitTest/Library/DevicePathLib/TestDevicePathStringConversions.c",
            "Include/Register/LoongArch64/Cpucfg.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",
            "gEdkiiPeiMpServices2PpiGuid=gEfiPeiMpServices2PpiGuid",
            ]
    },
    ## 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"
        ]
    }
}