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 <manuel.pegourie-gonnard@arm.com>
diff --git a/programs/psa/CMakeLists.txt b/programs/psa/CMakeLists.txt
index 23e85fe..01bd687 100644
--- a/programs/psa/CMakeLists.txt
+++ b/programs/psa/CMakeLists.txt
@@ -4,6 +4,21 @@
     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})
@@ -11,6 +26,9 @@
 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"