Przeglądaj źródła

tools: fix idf.py to be able to select a generator for build

Roland Dobai 6 lat temu
rodzic
commit
570653bc7b

+ 13 - 0
tools/ci/test_build_system_cmake.sh

@@ -234,6 +234,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

+ 3 - 0
tools/idf_py_actions/tools.py

@@ -193,6 +193,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: