Merge pull request #3367 from hug-dev/psa-constants-in-build-dir

Generate PSA constant names in CMake build dir
This commit is contained in:
Gilles Peskine 2020-06-02 12:29:46 +02:00 committed by GitHub
commit 73b394290a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 3 deletions

View File

@ -5,11 +5,12 @@ add_executable(key_ladder_demo key_ladder_demo.c)
target_link_libraries(key_ladder_demo mbedtls) target_link_libraries(key_ladder_demo mbedtls)
add_executable(psa_constant_names psa_constant_names.c) add_executable(psa_constant_names psa_constant_names.c)
target_include_directories(psa_constant_names PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(psa_constant_names mbedtls) target_link_libraries(psa_constant_names mbedtls)
add_custom_target( add_custom_target(
psa_constant_names_generated psa_constant_names_generated
COMMAND ${PYTHON_EXECUTABLE} scripts/generate_psa_constants.py COMMAND ${PYTHON_EXECUTABLE} scripts/generate_psa_constants.py ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../
) )
add_dependencies(psa_constant_names psa_constant_names_generated) add_dependencies(psa_constant_names psa_constant_names_generated)

View File

@ -1,13 +1,19 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Generate programs/psa/psa_constant_names_generated.c """Generate psa_constant_names_generated.c
which is included by programs/psa/psa_constant_names.c. which is included by programs/psa/psa_constant_names.c.
The code generated by this module is only meant to be used in the context The code generated by this module is only meant to be used in the context
of that program. of that program.
An argument passed to this script will modify the output directory where the
file is written:
* by default (no arguments passed): writes to programs/psa/
* OUTPUT_FILE_DIR passed: writes to OUTPUT_FILE_DIR/
""" """
import os import os
import re import re
import sys
OUTPUT_TEMPLATE = '''\ OUTPUT_TEMPLATE = '''\
/* Automatically generated by generate_psa_constant.py. DO NOT EDIT. */ /* Automatically generated by generate_psa_constant.py. DO NOT EDIT. */
@ -395,6 +401,8 @@ def generate_psa_constants(header_file_names, output_file_name):
if __name__ == '__main__': if __name__ == '__main__':
if not os.path.isdir('programs') and os.path.isdir('../programs'): if not os.path.isdir('programs') and os.path.isdir('../programs'):
os.chdir('..') os.chdir('..')
# Allow to change the directory where psa_constant_names_generated.c is written to.
OUTPUT_FILE_DIR = sys.argv[1] if len(sys.argv) == 2 else "programs/psa"
generate_psa_constants(['include/psa/crypto_values.h', generate_psa_constants(['include/psa/crypto_values.h',
'include/psa/crypto_extra.h'], 'include/psa/crypto_extra.h'],
'programs/psa/psa_constant_names_generated.c') OUTPUT_FILE_DIR + '/psa_constant_names_generated.c')