diff --git a/tools/ci/test_build_system_cmake.sh b/tools/ci/test_build_system_cmake.sh index 988bad67b..0405ec768 100755 --- a/tools/ci/test_build_system_cmake.sh +++ b/tools/ci/test_build_system_cmake.sh @@ -249,6 +249,19 @@ function run_tests() (cd build && cmake -G "Unix Makefiles" .. && make) || failure "Make build failed" assert_built ${APP_BINS} ${BOOTLOADER_BINS} ${PARTITION_BIN} + print_status "idf.py can build with Ninja" + clean_build_dir + idf.py -G Ninja build || failure "idf.py cannot build with Ninja" + grep "CMAKE_GENERATOR:INTERNAL=Ninja" build/CMakeCache.txt || failure "Ninja is not set in CMakeCache.txt" + assert_built ${APP_BINS} ${BOOTLOADER_BINS} ${PARTITION_BIN} + + print_status "idf.py can build with Unix Makefiles" + clean_build_dir + mkdir build + idf.py -G "Unix Makefiles" build || failure "idf.py cannot build with Unix Makefiles" + grep "CMAKE_GENERATOR:INTERNAL=Unix Makefiles" build/CMakeCache.txt || failure "Unix Makefiles are not set in CMakeCache.txt" + assert_built ${APP_BINS} ${BOOTLOADER_BINS} ${PARTITION_BIN} + print_status "Can build with IDF_PATH set via cmake cache not environment" clean_build_dir ${SED} -i.bak 's/ENV{IDF_PATH}/{IDF_PATH}/' CMakeLists.txt diff --git a/tools/idf_py_actions/tools.py b/tools/idf_py_actions/tools.py index 17485ead5..663522b82 100644 --- a/tools/idf_py_actions/tools.py +++ b/tools/idf_py_actions/tools.py @@ -213,6 +213,9 @@ def ensure_build_directory(args, prog_name, always_run_cmake=False): os.remove(cache_path) raise + # need to update cache so subsequent access in this method would reflect the result of the previous cmake run + cache = _parse_cmakecache(cache_path) if os.path.exists(cache_path) else {} + try: generator = cache["CMAKE_GENERATOR"] except KeyError: