From 36ba5bc5ee944a6b5dc9b6e0cd27398eed28753c Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Wed, 18 Sep 2019 17:54:10 +1000 Subject: [PATCH] cmake: Account for IDF_PATH case mismatches on case insensitive filesystems --- tools/cmake/idf.cmake | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/cmake/idf.cmake b/tools/cmake/idf.cmake index e97d83fcd..2d396c886 100644 --- a/tools/cmake/idf.cmake +++ b/tools/cmake/idf.cmake @@ -1,19 +1,24 @@ get_property(__idf_env_set GLOBAL PROPERTY __IDF_ENV_SET) if(NOT __idf_env_set) # Infer an IDF_PATH relative to the tools/cmake directory - get_filename_component(_idf_path "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE) + get_filename_component(_idf_path "${CMAKE_CURRENT_LIST_DIR}/../.." REALPATH) file(TO_CMAKE_PATH "${_idf_path}" _idf_path) # Get the path set in environment set(idf_path $ENV{IDF_PATH}) - file(TO_CMAKE_PATH "${idf_path}" idf_path) # Environment IDF_PATH should match the inferred IDF_PATH. If not, warn the user. + # (Note: REALPATH is needed in both above steps to account for case on case + # insensitive filesystems, or relative paths) if(idf_path) + get_filename_component(idf_path "${idf_path}" REALPATH) + file(TO_CMAKE_PATH "${idf_path}" idf_path) + if(NOT idf_path STREQUAL _idf_path) message(WARNING "IDF_PATH environment variable is different from inferred IDF_PATH. Check if your project's top-level CMakeLists.txt includes the right - CMake files. Environment IDF_PATH will be used for the build.") + CMake files. Environment IDF_PATH will be used for the build: + ${idf_path}") endif() else() message(WARNING "IDF_PATH environment variable not found. Setting IDF_PATH to '${_idf_path}'.") @@ -43,4 +48,4 @@ if(NOT __idf_env_set) __build_init("${idf_path}") set_property(GLOBAL PROPERTY __IDF_ENV_SET 1) -endif() \ No newline at end of file +endif()