From 660b876465b4bc1c635b5602f38ea429b63685ed Mon Sep 17 00:00:00 2001 From: Mahavir Jain Date: Mon, 4 Apr 2022 13:19:21 +0530 Subject: [PATCH] esp_crt_bundle: Fix build problems if MBEDTLS_CERTIFICATE_BUNDLE is disabled Exclude source and include file from build list if certificate bundle feature is disabled. Closes https://github.com/espressif/esp-idf/issues/8714 Closes IDFGH-7106 --- components/mbedtls/CMakeLists.txt | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/components/mbedtls/CMakeLists.txt b/components/mbedtls/CMakeLists.txt index 143466d82d..c8256547ad 100644 --- a/components/mbedtls/CMakeLists.txt +++ b/components/mbedtls/CMakeLists.txt @@ -7,8 +7,16 @@ if(NOT BOOTLOADER_BUILD) list(APPEND priv_requires esp_pm) endif() -idf_component_register(SRCS "esp_crt_bundle/esp_crt_bundle.c" - INCLUDE_DIRS "port/include" "mbedtls/include" "esp_crt_bundle/include" +set(mbedtls_srcs "") +set(mbedtls_include_dirs "port/include" "mbedtls/include") + +if(CONFIG_MBEDTLS_CERTIFICATE_BUNDLE) + list(APPEND mbedtls_srcs "esp_crt_bundle/esp_crt_bundle.c") + list(APPEND mbedtls_include_dirs "esp_crt_bundle/include") +endif() + +idf_component_register(SRCS "${mbedtls_srcs}" + INCLUDE_DIRS "${mbedtls_include_dirs}" REQUIRES lwip PRIV_REQUIRES "${priv_requires}" ) @@ -203,7 +211,14 @@ set_property(TARGET mbedcrypto APPEND PROPERTY LINK_LIBRARIES idf::driver idf::$ set_property(TARGET mbedcrypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES idf::driver idf::${target}) # Link mbedtls libraries to component library -target_link_libraries(${COMPONENT_LIB} PUBLIC ${mbedtls_targets}) +if(mbedtls_srcs STREQUAL "") + # For no sources in component library we must use "INTERFACE" + set(linkage_type INTERFACE) +else() + set(linkage_type PUBLIC) +endif() + +target_link_libraries(${COMPONENT_LIB} ${linkage_type} ${mbedtls_targets}) if(CONFIG_ESP_TLS_USE_DS_PERIPHERAL) # Link target (e.g. esp32s2) library to component library @@ -211,11 +226,11 @@ if(CONFIG_ESP_TLS_USE_DS_PERIPHERAL) set_property(TARGET mbedcrypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES $) # The linker seems to be unable to resolve all the dependencies without increasing this set_property(TARGET mbedcrypto APPEND PROPERTY LINK_INTERFACE_MULTIPLICITY 6) - target_link_libraries(${COMPONENT_LIB} PUBLIC ${target_lib}) + target_link_libraries(${COMPONENT_LIB} ${linkage_type} ${target_lib}) endif() # Link esp-cryptoauthlib to mbedtls if(CONFIG_ATCA_MBEDTLS_ECDSA) idf_component_get_property(cryptoauthlib esp-cryptoauthlib COMPONENT_LIB) - target_link_libraries(${COMPONENT_LIB} PUBLIC ${cryptoauthlib}) + target_link_libraries(${COMPONENT_LIB} ${linkage_type} ${cryptoauthlib}) endif()