Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 24 additions & 17 deletions cmake/UserverCodegenTarget.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,29 @@ 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
)
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()
Expand All @@ -83,23 +106,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(
Expand Down
Loading