diff --git a/src/cmake/messages.cmake b/src/cmake/messages.cmake index 18d6d67c55c..46ebd07a070 100644 --- a/src/cmake/messages.cmake +++ b/src/cmake/messages.cmake @@ -41,13 +41,14 @@ # SOURCE_DIR : the directory to search for sources from # [defaults to OUTPUT_DIR] # LOCAL: don't recurse [defaults to false] +# DEPENDS: : Add extra dependencies [optional] function(messages) # Parse args set(options LOCAL) set(oneValueArgs TARGET OUTPUT_DIR SOURCE_DIR) - set(multiValueArgs "") + set(multiValueArgs DEPENDS) cmake_parse_arguments( ARG # prefix on the parsed args @@ -72,8 +73,10 @@ function(messages) if (DEFINED ARG_OUTPUT_DIR) set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_OUTPUT_DIR}) + set(OUTPUT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/${ARG_OUTPUT_DIR}) else() set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + set(OUTPUT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}) endif() if (DEFINED ARG_SOURCE_DIR) @@ -86,12 +89,27 @@ function(messages) set(local '--local') endif() - add_custom_command( - TARGET ${ARG_TARGET} - POST_BUILD - COMMAND ${CMAKE_SOURCE_DIR}/etc/find_messages.py + if (NOT DEFINED ARG_DEPENDS) + add_custom_command( + TARGET ${ARG_TARGET} + POST_BUILD + COMMAND ${CMAKE_SOURCE_DIR}/etc/find_messages.py ${local} > ${OUTPUT_DIR}/messages.txt - WORKING_DIRECTORY ${SOURCE_DIR} - ) + WORKING_DIRECTORY ${SOURCE_DIR} + ) + else() + add_custom_command( + OUTPUT messages_checked + COMMAND ${CMAKE_SOURCE_DIR}/etc/find_messages.py + ${local} + > ${OUTPUT_DIR}/messages.txt + && touch ${OUTPUT_BUILD_DIR}/messages_checked + WORKING_DIRECTORY ${SOURCE_DIR} + DEPENDS ${ARG_DEPS} + ) + add_custom_target(${ARG_TARGET}_messages DEPENDS messages_checked) + add_dependencies(${ARG_TARGET} ${ARG_TARGET}_messages) + endif() + endfunction() diff --git a/src/cts/src/CMakeLists.txt b/src/cts/src/CMakeLists.txt index cf626b11c65..88502f5181a 100644 --- a/src/cts/src/CMakeLists.txt +++ b/src/cts/src/CMakeLists.txt @@ -102,6 +102,7 @@ target_link_libraries(cts messages( TARGET cts OUTPUT_DIR .. + DEPENDS cts_lib ) if (Python3_FOUND AND BUILD_PYTHON) diff --git a/src/odb/CMakeLists.txt b/src/odb/CMakeLists.txt index 696671052a9..30f9a352449 100644 --- a/src/odb/CMakeLists.txt +++ b/src/odb/CMakeLists.txt @@ -84,10 +84,8 @@ if(ENABLE_TESTS) ) endif() -add_custom_command( - OUTPUT messages_checked - COMMAND ${CMAKE_SOURCE_DIR}/etc/find_messages.py > messages.txt && touch ${CMAKE_CURRENT_BINARY_DIR}/messages_checked - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +messages( + TARGET odb DEPENDS db cdl @@ -99,7 +97,3 @@ add_custom_command( gdsin gdsout ) - -add_custom_target(odb_messages DEPENDS messages_checked) - -add_dependencies(odb odb_messages)