Files
mbedtls/scripts/generate_config_checks.py

57 lines
1.8 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""Generate C preprocessor code to check for bad configurations.
"""
from typing import Iterator
import framework_scripts_path # pylint: disable=unused-import
from mbedtls_framework.config_checks_generator import * \
#pylint: disable=wildcard-import,unused-wildcard-import
from mbedtls_framework import config_macros
class CryptoInternal(SubprojectInternal):
SUBPROJECT = 'TF-PSA-Crypto'
class CryptoOption(SubprojectOption):
SUBPROJECT = 'psa/crypto_config.h'
ALWAYS_ENABLED_SINCE_4_0 = frozenset([
'MBEDTLS_PSA_CRYPTO_CONFIG',
'MBEDTLS_USE_PSA_CRYPTO',
])
def checkers_for_removed_options() -> Iterator[Checker]:
"""Discover removed options. Yield corresponding checkers."""
previous_major = config_macros.History('mbedtls', '3.6')
current = config_macros.Current()
crypto = config_macros.Current('tf-psa-crypto')
old_public = previous_major.options()
new_public = current.options()
for option in sorted(old_public - new_public):
if option in ALWAYS_ENABLED_SINCE_4_0:
continue
if option in crypto.options():
yield CryptoOption(option)
elif option in crypto.internal():
yield CryptoInternal(option)
else:
yield Removed(option, 'Mbed TLS 4.0')
for option in (current.internal() - new_public - old_public -
crypto.options() - crypto.internal()):
yield Internal(option)
def all_checkers() -> Iterator[Checker]:
"""Yield all checkers."""
yield from checkers_for_removed_options()
MBEDTLS_CHECKS = BranchData(
header_directory='library',
header_prefix='mbedtls_',
project_cpp_prefix='MBEDTLS',
checkers=list(all_checkers()),
)
if __name__ == '__main__':
main(MBEDTLS_CHECKS)