From c3d23abd7dfe540ace4774e2447a8840f8576ad5 Mon Sep 17 00:00:00 2001 From: Aleksey Ignatiev Date: Sun, 31 Aug 2025 21:40:38 +0300 Subject: [PATCH 1/2] Schedule defered make main target only once --- cmake/UserverCodegenTarget.cmake | 42 +++++++++++++++++++------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/cmake/UserverCodegenTarget.cmake b/cmake/UserverCodegenTarget.cmake index 9e9cc74cd03b..9d5a9d34d49d 100644 --- a/cmake/UserverCodegenTarget.cmake +++ b/cmake/UserverCodegenTarget.cmake @@ -68,6 +68,30 @@ function(_userver_codegen_make_directory_target) set_property(GLOBAL APPEND PROPERTY userver_codegen_targets "userver-codegen-impl-${index}") endfunction() +function(_userver_schedule_make_main_target_once) + cmake_language( + DEFER + DIRECTORY + "${CMAKE_SOURCE_DIR}" + GET_CALL + userver_codegen_make_main_target + scheduled + ) + message(STATUS "already scheduled: ${scheduled}") + if(NOT scheduled) + # On first codegen invocation, schedule userver-codegen target creation. + cmake_language( + DEFER + DIRECTORY + "${CMAKE_SOURCE_DIR}" + ID + userver_codegen_make_main_target + CALL + _userver_codegen_make_main_target + ) + endif() +endfunction() + function(_userver_codegen_register_files FILES_LIST) if(CMAKE_VERSION VERSION_LESS "3.19" OR NOT FILES_LIST) return() @@ -83,23 +107,7 @@ function(_userver_codegen_register_files FILES_LIST) # On first codegen files in the current directory, schedule indexed codegen target creation. cmake_language(DEFER DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" CALL _userver_codegen_make_directory_target) - get_property( - has_userver_codegen_targets GLOBAL - PROPERTY userver_codegen_targets - SET - ) - if(NOT has_userver_codegen_targets) - # On first codegen invocation, schedule userver-codegen target creation. - cmake_language( - DEFER - DIRECTORY - "${CMAKE_SOURCE_DIR}" - ID - userver_codegen_make_main_target - CALL - _userver_codegen_make_main_target - ) - endif() + _userver_schedule_make_main_target_once() endif() set_property( From 85895a01abec7d8a9091a088be418824a49642b2 Mon Sep 17 00:00:00 2001 From: Aleksey Ignatiev Date: Sun, 31 Aug 2025 22:17:53 +0300 Subject: [PATCH 2/2] Remove log --- cmake/UserverCodegenTarget.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/UserverCodegenTarget.cmake b/cmake/UserverCodegenTarget.cmake index 9d5a9d34d49d..36f6634b28c9 100644 --- a/cmake/UserverCodegenTarget.cmake +++ b/cmake/UserverCodegenTarget.cmake @@ -77,7 +77,6 @@ function(_userver_schedule_make_main_target_once) userver_codegen_make_main_target scheduled ) - message(STATUS "already scheduled: ${scheduled}") if(NOT scheduled) # On first codegen invocation, schedule userver-codegen target creation. cmake_language(