set(executables
    crypto_examples
    key_ladder_demo
    psa_constant_names
)

foreach(exe IN LISTS executables)
    add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>)
    target_link_libraries(${exe} ${mbedcrypto_target})
    target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
endforeach()

target_include_directories(psa_constant_names PRIVATE ${CMAKE_CURRENT_BINARY_DIR})

install(TARGETS ${executables}
        DESTINATION "bin"
        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

install(PROGRAMS
            key_ladder_demo.sh
        DESTINATION "bin")

set(executables
    crypto_examples
    key_ladder_demo
    psa_constant_names
)

add_custom_command(
    OUTPUT
        ${CMAKE_CURRENT_BINARY_DIR}/psa_constant_names_generated.c
    COMMAND
        ${PYTHON}
            ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_psa_constants.py
            ${CMAKE_CURRENT_BINARY_DIR}
    WORKING_DIRECTORY
        ${CMAKE_CURRENT_SOURCE_DIR}/../..
    DEPENDS
        ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_psa_constants.py
        ${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_values.h
        ${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_extra.h
)

foreach(exe IN LISTS executables)
    add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>)
    target_link_libraries(${exe} ${mbedcrypto_target})
    target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
endforeach()

target_include_directories(psa_constant_names PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
add_custom_target(generate_psa_constant_names_generated_c
    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/psa_constant_names_generated.c)
add_dependencies(psa_constant_names generate_psa_constant_names_generated_c)

install(TARGETS ${executables}
        DESTINATION "bin"
        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

install(PROGRAMS
            key_ladder_demo.sh
        DESTINATION "bin")

Allow CMake to generate psa_constant_names_generated.c
Allow CMake to generate psa_constant_names_generated.c

This one's a bit funny too as the generated file is not a source to the
executable (ie, it's not passed as an argument to the compiler), so
CMake's dependency resolution didn't work even though the file is in the
same directory.

For some reason, the following didn't work either:

    add_dependencies(psa_constant_names
        ${CMAKE_CURRENT_BINARY_DIR}/psa_constant_names_generated.c)

So, apply the same strategy as for cross-directory use of a generated
file by creating a target and using it as a dependency.

Signed-off-by: Manuel Pégourié-Gonnard <4ba0d615aeeda88e422ca8fba28fe2938485facf@arm.com>
