| #!/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_history |
| |
| 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.""" |
| history = config_history.ConfigHistory() |
| old_public = history.options('mbedtls', '3.6') |
| new_public = history.options('mbedtls', '4.0') |
| crypto_public = history.options('tfpsacrypto', '1.0') |
| crypto_internal = history.internal('tfpsacrypto', '1.0') |
| for option in sorted(old_public - new_public): |
| if option in ALWAYS_ENABLED_SINCE_4_0: |
| continue |
| if option in crypto_public: |
| yield CryptoOption(option) |
| elif option in crypto_internal: |
| yield CryptoInternal(option) |
| else: |
| yield Removed(option, 'Mbed TLS 4.0') |
| |
| 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) |