From 88eaa340755ea50f541f6d66182476aa97ed34ab Mon Sep 17 00:00:00 2001 From: Renz Christian Bagaporo Date: Wed, 15 May 2019 11:40:57 +0800 Subject: [PATCH 1/2] cmake: fix custom bootloader issue Issue is that when users creates a custom bootloader from $IDF_PATH/components/bootloader. Parent project build uses the copy but bootloader subproject build uses the original still. The issue is solved by passing the custom bootloader as extra component directory so bootloader build knows to use the new copy (itself) in the build. --- components/bootloader/project_include.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/bootloader/project_include.cmake b/components/bootloader/project_include.cmake index 557c42742f..4b0137e949 100644 --- a/components/bootloader/project_include.cmake +++ b/components/bootloader/project_include.cmake @@ -15,9 +15,10 @@ set(bootloader_binary_files externalproject_add(bootloader # TODO: support overriding the bootloader in COMPONENT_PATHS - SOURCE_DIR "${IDF_PATH}/components/bootloader/subproject" + SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/subproject" BINARY_DIR "${bootloader_build_dir}" CMAKE_ARGS -DSDKCONFIG=${SDKCONFIG} -DIDF_PATH=${IDF_PATH} + -DEXTRA_COMPONENT_DIRS=${CMAKE_CURRENT_LIST_DIR} INSTALL_COMMAND "" BUILD_ALWAYS 1 # no easy way around this... BUILD_BYPRODUCTS ${bootloader_binary_files} From 9e7d9ef3851da0a1041776e8262115927097a018 Mon Sep 17 00:00:00 2001 From: Renz Christian Bagaporo Date: Wed, 15 May 2019 14:49:51 +0800 Subject: [PATCH 2/2] ci: check that custom bootloader overrides original --- tools/ci/test_build_system_cmake.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/ci/test_build_system_cmake.sh b/tools/ci/test_build_system_cmake.sh index 9fd36da83b..81ed61ff5d 100755 --- a/tools/ci/test_build_system_cmake.sh +++ b/tools/ci/test_build_system_cmake.sh @@ -250,6 +250,14 @@ EOF export PATH="$OLDPATH" rm ./python + print_status "Custom bootloader overrides original" + clean_build_dir + (mkdir components && cd components && cp -r $IDF_PATH/components/bootloader .) + idf.py build + grep "$PWD/components/bootloader/subproject/main/bootloader_start.c" build/bootloader/compile_commands.json \ + || failure "Custom bootloader source files should be built instead of the original's" + rm -rf components + print_status "All tests completed" if [ -n "${FAILURES}" ]; then echo "Some failures were detected:"