From 927007fdd2d0a268803eefea25a81875a1c0be2a 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 a1ae2b8c90..a4faae97e3 100644 --- a/components/bootloader/project_include.cmake +++ b/components/bootloader/project_include.cmake @@ -57,11 +57,12 @@ if((NOT CONFIG_SECURE_BOOT_ENABLED) OR idf_build_get_property(idf_target IDF_TARGET) 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} -DIDF_TARGET=${idf_target} -DSECURE_BOOT_SIGNING_KEY=${secure_boot_signing_key} -DPYTHON_DEPS_CHECKED=1 + -DEXTRA_COMPONENT_DIRS=${CMAKE_CURRENT_LIST_DIR} INSTALL_COMMAND "" BUILD_ALWAYS 1 # no easy way around this... BUILD_BYPRODUCTS ${bootloader_binary_files} From 1cf696438620e0c022c564ac98649d0d4a2cd247 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 7474eb8d98..77abe9bac2 100755 --- a/tools/ci/test_build_system_cmake.sh +++ b/tools/ci/test_build_system_cmake.sh @@ -411,6 +411,14 @@ endmenu\n" >> ${IDF_PATH}/Kconfig; || failure "ccache should not be used even when present if --no-ccache is specified" rm -f ccache + 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:"