Use CMake to find Python 3 interpreter

The name of the Python 3 interpreter is ambiguous. 'python3' is not
available on all systems and 'python' can be both a Python 2 and
Python 3 interpreter.

Change-Id: I4ea119c617d1746fd34ecdd118a7c25dfe17dc86
diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake
index 11c57d0..c8a4987 100644
--- a/cmake/helpers.cmake
+++ b/cmake/helpers.cmake
@@ -143,11 +143,14 @@
 # Generate binaries
 #############################################################################
 
+set(Python3_FIND_STRATEGY LOCATION)
+find_package(Python3 COMPONENTS Interpreter)
+
 function(ethosu_add_binaries target)
     set(SCRIPTS_DIR ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../scripts)
 
     add_custom_command(TARGET ${target} POST_BUILD
-        COMMAND ${SCRIPTS_DIR}/generate_binaries.py --output ./fw $<TARGET_FILE:${target}> -d ${target}.d
+        COMMAND ${Python3_EXECUTABLE} ${SCRIPTS_DIR}/generate_binaries.py --output ./fw $<TARGET_FILE:${target}> -d ${target}.d
         DEPFILE ${CMAKE_CURRENT_BINARY_DIR}/${target}.d
         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
         COMMENT "Generate binaries for ${target}")
diff --git a/targets/corstone-300/CMakeLists.txt b/targets/corstone-300/CMakeLists.txt
index 9d5ce26..d2e3322 100644
--- a/targets/corstone-300/CMakeLists.txt
+++ b/targets/corstone-300/CMakeLists.txt
@@ -26,7 +26,10 @@
     set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/toolchain/armclang.cmake")
 endif()
 
-set(ETHOSU_COMMAND_DEFAULT python3 ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/run_ctest.py -t corstone-300 CACHE INTERNAL "Default test command")
+set(Python3_FIND_STRATEGY LOCATION)
+find_package(Python3 COMPONENTS Interpreter)
+
+set(ETHOSU_COMMAND_DEFAULT ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/run_ctest.py -t corstone-300 CACHE INTERNAL "Default test command")
 
 #############################################################################
 # Project