]> granicus.if.org Git - esp-idf/commitdiff
CMake: Make IDF_PATH available to Kconfiglib when not explicitly set.
authorSagar Bijwe <sagar@espressif.com>
Fri, 11 Jan 2019 06:29:59 +0000 (11:59 +0530)
committerSagar Bijwe <sagar@espressif.com>
Mon, 21 Jan 2019 11:32:31 +0000 (17:02 +0530)
When IDF_PATH is not set by the user, cmake infers the same through
other means and sets it as an environment variable. However, some
sub-invocation of cmake may not see this variable as it is not set
in the parent. This change adds a custom command for exporting IDF_PATH
just before invoking ldgen so that IDF_PATH can be used in Kconfig
without any errors.

tools/ci/test_build_system_cmake.sh
tools/cmake/ldgen.cmake

index b19f1f0a3e1c5150128f21986afcd9828f889642..a8886d68b70eb25c1111128b6c1650a32bd5158c 100755 (executable)
@@ -236,6 +236,21 @@ function run_tests()
     mv CMakeLists.txt.bak CMakeLists.txt
     assert_built ${APP_BINS} ${BOOTLOADER_BINS} ${PARTITION_BIN}
 
+    print_status "Can build with IDF_PATH unset and inferred by cmake when Kconfig needs it to be set"
+    clean_build_dir
+    sed -i.bak 's/ENV{IDF_PATH}/{IDF_PATH}/' CMakeLists.txt
+    export IDF_PATH_BACKUP="$IDF_PATH"
+    mv main/Kconfig.projbuild main/Kconfig.projbuild_bak
+    echo "source \"\$IDF_PATH/examples/wifi/getting_started/station/main/Kconfig.projbuild\"" > main/Kconfig.projbuild
+    (unset IDF_PATH &&
+         cd build &&
+         cmake -G Ninja .. -DIDF_PATH=${IDF_PATH_BACKUP} &&
+         ninja) || failure "Ninja build failed"
+    mv CMakeLists.txt.bak CMakeLists.txt
+    mv main/Kconfig.projbuild_bak main/Kconfig.projbuild
+    assert_built ${APP_BINS} ${BOOTLOADER_BINS} ${PARTITION_BIN}
+
+
     # Next two tests will use this fake 'esp31b' target
     export fake_target=esp31b
     mkdir -p components/$fake_target
index 09d580ea581542201a1d6cbd3c9e959dcf054baf..b8e58c0ee1d99be54985269f1f1513f090df1df4 100644 (file)
@@ -63,6 +63,7 @@ function(ldgen_process_template template output)
         --env       "COMPONENT_KCONFIGS=${COMPONENT_KCONFIGS}"
         --env       "COMPONENT_KCONFIGS_PROJBUILD=${COMPONENT_KCONFIGS_PROJBUILD}"
         --env       "IDF_CMAKE=y"
+        --env       "IDF_PATH=${IDF_PATH}"
         --env       "IDF_TARGET=${IDF_TARGET}"
         DEPENDS     ${template} $<TARGET_PROPERTY:ldgen,FRAGMENT_FILES> ${SDKCONFIG} ldgen_section_infos
     )
@@ -79,4 +80,4 @@ function(ldgen_add_dependencies)
     if(IDF_PROJECT_EXECUTABLE)
         add_dependencies(${IDF_PROJECT_EXECUTABLE} ldgen)
     endif()
-endfunction()
\ No newline at end of file
+endfunction()