From 52296ddc295a1a0d8d6ed91a473d4f8d3477fa22 Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Wed, 25 Nov 2020 11:23:30 +0800 Subject: [PATCH] [cmake] avoid unnecessary rebuilds (#5857) This commit avoid unnecessary rebuilds. The issue is caused by the openthread-mbedtls-config target added by add_custom_target will always be run, so the generated openthread-mbedtls-config.h is always re-generated. This commit changes to use add_custom_command to generate the header file. --- third_party/mbedtls/CMakeLists.txt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/third_party/mbedtls/CMakeLists.txt b/third_party/mbedtls/CMakeLists.txt index 7b5dcae42..8831952c0 100644 --- a/third_party/mbedtls/CMakeLists.txt +++ b/third_party/mbedtls/CMakeLists.txt @@ -26,7 +26,7 @@ # POSSIBILITY OF SUCH DAMAGE. # -set(OT_MBEDTLS_DEFAULT_CONFIG_FILE \"${CMAKE_CURRENT_BINARY_DIR}/openthread-mbedtls-config.h\") +set(OT_MBEDTLS_DEFAULT_CONFIG_FILE \"openthread-mbedtls-config.h\") set(OT_MBEDTLS_CONFIG_FILE "" CACHE STRING "The mbedTLS config file") @@ -45,8 +45,8 @@ find_program(SED_EXE sed) add_subdirectory(repo) if(UNIFDEFALL_EXE AND SED_EXE AND UNIFDEF_VERSION VERSION_GREATER_EQUAL 2.10) - add_custom_target(openthread-mbedtls-config - ${UNIFDEFALL_EXE} + add_custom_command(OUTPUT openthread-mbedtls-config.h + COMMAND ${UNIFDEFALL_EXE} "'-D$,';'-D>'" "-I$,;-I>" "-I$" @@ -54,8 +54,14 @@ if(UNIFDEFALL_EXE AND SED_EXE AND UNIFDEF_VERSION VERSION_GREATER_EQUAL 2.10) "${CMAKE_CURRENT_SOURCE_DIR}/mbedtls-config.h" | ${SED_EXE} '/openthread-core-config\.h/d' > openthread-mbedtls-config.h + MAIN_DEPENDENCY mbedtls-config.h COMMAND_EXPAND_LISTS ) + + add_custom_target(openthread-mbedtls-config + DEPENDS openthread-mbedtls-config.h) + + add_dependencies(ot-config openthread-mbedtls-config) add_dependencies(mbedtls openthread-mbedtls-config) add_dependencies(mbedx509 openthread-mbedtls-config) add_dependencies(mbedcrypto openthread-mbedtls-config) @@ -63,6 +69,8 @@ else() configure_file(mbedtls-config.h openthread-mbedtls-config.h COPYONLY) endif() +target_include_directories(ot-config INTERFACE ${CMAKE_CURRENT_BINARY_DIR}) + target_compile_definitions(mbedtls PUBLIC "MBEDTLS_CONFIG_FILE=$,${OT_MBEDTLS_CONFIG_FILE},${OT_MBEDTLS_DEFAULT_CONFIG_FILE}>"