Forráskód Böngészése

cmake: set IDF_VERSION_* variables at requirement expansion stage

Currently IDF_VERSION_* variables are not available to the component
CMakeLists.txt files at the requirements expansion stage. This makes
it harder to write component CMakeLists files compatible with
different IDF versions.

Include version.cmake from the requirements expansion script, add a
build system test.
Ivan Grokhotkov 5 éve
szülő
commit
f9f318d666

+ 7 - 0
tools/ci/test_build_system_cmake.sh

@@ -124,6 +124,13 @@ function run_tests()
     version+=$(git describe --always --tags --dirty)
     grep "${version}" log.log || failure "Project version should have a hash commit"
 
+    print_status "Use IDF version variables in component CMakeLists.txt file"
+    clean_build_dir
+    (echo -e "if (NOT IDF_VERSION_MAJOR)\n message(FATAL_ERROR \"IDF version not set\")\n endif()" \
+        && cat main/CMakeLists.txt) > main/CMakeLists.new && mv main/CMakeLists.new main/CMakeLists.txt
+    idf.py reconfigure || failure "Failed to use IDF_VERSION_MAJOR in component CMakeLists.txt"
+    git checkout -- main/CMakeLists.txt
+
     print_status "Moving BUILD_DIR_BASE out of tree"
     clean_build_dir
     OUTOFTREE_BUILD=${TESTDIR}/alt_build

+ 1 - 0
tools/cmake/scripts/component_get_requirements.cmake

@@ -12,6 +12,7 @@ endfunction()
 
 idf_build_get_property(idf_path IDF_PATH)
 include(${idf_path}/tools/cmake/utilities.cmake)
+include(${idf_path}/tools/cmake/version.cmake)
 
 function(__component_get_property var component_target property)
     set(_property __component_${component_target}_${property})