diff --git a/tools/cmake/build.cmake b/tools/cmake/build.cmake index e89e114e01..74df6e9c95 100644 --- a/tools/cmake/build.cmake +++ b/tools/cmake/build.cmake @@ -130,9 +130,11 @@ function(__build_init idf_path) # Create the build target, to which the ESP-IDF build properties, dependencies are attached to add_library(__idf_build_target STATIC IMPORTED) - set_default(python "python") + # Set the Python path (which may be passed in via -DPYTHON=) and store in a build property + set_default(PYTHON "python") + file(TO_CMAKE_PATH ${PYTHON} PYTHON) + idf_build_set_property(PYTHON ${PYTHON}) - idf_build_set_property(PYTHON ${python}) idf_build_set_property(IDF_PATH ${idf_path}) idf_build_set_property(__PREFIX idf) @@ -266,8 +268,12 @@ function(__build_check_python) message(STATUS "Checking Python dependencies...") execute_process(COMMAND "${python}" "${idf_path}/tools/check_python_dependencies.py" RESULT_VARIABLE result) - if(NOT result EQUAL 0) + if(result EQUAL 1) + # check_python_dependencies returns error code 1 on failure message(FATAL_ERROR "Some Python dependencies must be installed. Check above message for details.") + elseif(NOT result EQUAL 0) + # means check_python_dependencies.py failed to run at all, result should be an error message + message(FATAL_ERROR "Failed to run Python dependency check. Python: ${python}, Error: ${result}") endif() endif() endfunction() diff --git a/tools/cmake/project.cmake b/tools/cmake/project.cmake index e35e883996..5b14ab4852 100644 --- a/tools/cmake/project.cmake +++ b/tools/cmake/project.cmake @@ -6,11 +6,15 @@ cmake_minimum_required(VERSION 3.5) # call. include(${CMAKE_CURRENT_LIST_DIR}/idf.cmake) +# setting PYTHON variable here for compatibility only, new code should use +# idf_build_get_property(variable PYTHON) +idf_build_get_property(PYTHON PYTHON) +if(NOT PYTHON) + message(FATAL_ERROR "Internal error, PYTHON build property not set correctly.") +endif() + +# legacy variable for compatibility set(IDFTOOL ${PYTHON} "${IDF_PATH}/tools/idf.py") -# Internally, the Python interpreter is already set to 'python'. Re-set here -# to be absolutely sure. -set_default(PYTHON "python") -idf_build_set_property(PYTHON ${PYTHON}) # On processing, checking Python required modules can be turned off if it was # already checked externally.