## @file
# CI configuration for SecurityPkg
#
# Copyright (c) Microsoft Corporation
# Copyright (c) 2020 - 2024, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
    "LicenseCheck": {
        "IgnoreFiles": [
            "DeviceSecurity/SpdmLib/Include",
        ]
    },
    "EccCheck": {
        ## Exception sample looks like below:
        ## "ExceptionList": [
        ##     "<ErrorID>", "<KeyWord>"
        ## ]
        "ExceptionList": [
            "8005", "gRT",
            "8001", "DxeTpm2MeasureBootLibUnitTestMain",
            "8001", "DxeTpmMeasureBootLibUnitTestMain"
        ],
        ## Both file path and directory path are accepted.
        "IgnoreFiles": [
            "Library/TcgStorageCoreLib/TcgStorageUtil.c",
            "Library/TcgStorageCoreLib/TcgStorageCore.c",
            "Library/Tpm2CommandLib/Tpm2NVStorage.c",
            "DeviceSecurity/SpdmLib/Include",
            "DeviceSecurity/SpdmLib/libspdm",
            "DeviceSecurity/OsStub"
        ]
    },
    "CompilerPlugin": {
        "DscPath": "SecurityPkg.dsc"
    },
    ## options defined .pytool/Plugin/HostUnitTestCompilerPlugin
    "HostUnitTestCompilerPlugin": {
        "DscPath": "Test/SecurityPkgHostTest.dsc"
    },
    "CharEncodingCheck": {
        "IgnoreFiles": []
    },
    "DependencyCheck": {
        "AcceptableDependencies": [
            "MdePkg/MdePkg.dec",
            "MdeModulePkg/MdeModulePkg.dec",
            "UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec",
            "SecurityPkg/SecurityPkg.dec",
            "StandaloneMmPkg/StandaloneMmPkg.dec",
            "CryptoPkg/CryptoPkg.dec"
        ],
        # For host based unit tests
        "AcceptableDependencies-HOST_APPLICATION":[],
        # For UEFI shell based apps
        "AcceptableDependencies-UEFI_APPLICATION":[],
        "IgnoreInf": []
    },
    "DscCompleteCheck": {
        "DscPath": "SecurityPkg.dsc",
        "IgnoreInf": []
    },
    ## options defined .pytool/Plugin/HostUnitTestDscCompleteCheck
    "HostUnitTestDscCompleteCheck": {
        "IgnoreInf": [""],
        "DscPath": "Test/SecurityPkgHostTest.dsc"
    },
    "GuidCheck": {
        "IgnoreGuidName": [],
        "IgnoreGuidValue": ["00000000-0000-0000-0000-000000000000"],
        "IgnoreFoldersAndFiles": [],
        "IgnoreDuplicates": [
            "Tpm2InstanceLibDTpm=gEfiTpmDeviceInstanceTpm20DtpmGuid", #  by design
        ]
    },
    "LibraryClassCheck": {
        "IgnoreHeaderFile": [
            "DeviceSecurity/SpdmLib/Include/library",
            "DeviceSecurity/SpdmLib/libspdm/include/library",
        ],
        "skip": True
    },

    ## options defined ci/Plugin/SpellCheck
    "SpellCheck": {
        "AuditOnly": True,           # Fails test but run in AuditOnly mode to collect log
        "ExtendWords": [             # words to extend to the dictionary for this package
            "shortformed", # tpm acpi
            "autodetect",
            "blocksid",
            "comid",
            "cpinsidpin", #OpalSScV2
            "ecdsa", # TPM
            "ecschnorr", # TPM
            "eisaid", # ACPI
            "harddisk",
            "hashall",
            "hashto",
            "kek's",
            "lfanew", # PE/COFF
            "pcrindex",
            "pkglength",
            "ppuser",
            "preos",
            "stclear",
            "toctou",
            "tpm's",
            "tpmcmdbuflength",
            "tpmcommlib",
            "tpmnvvaluelength",
            "wrlocked",
            "xored"
        ],
        "IgnoreStandardPaths": [],   # Standard Plugin defined paths that should be ignore
        "AdditionalIncludePaths": [] # Additional paths to spell check (wildcards supported)
    },

    "Defines": {
        "BLD_*_CONTINUOUS_INTEGRATION": "TRUE",
    },

    "DebugMacroCheck": {
      "StringSubstitutions": {
          # SecurityPkg/IntelTdx/TdTcg2Dxe/TdTcg2Dxe.c
          # Reason: Acknowledging use of two format specifiers in string with one argument
          #         Replace ternary operator in debug string with single specifier
          'Index == COLUME_SIZE/2 ? " | %02x" : " %02x"': "%d"
      }
    }
}
