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)