diff options
author | robot-ya-builder <robot-ya-builder@yandex-team.com> | 2023-04-05 17:38:35 +0300 |
---|---|---|
committer | robot-ya-builder <robot-ya-builder@yandex-team.com> | 2023-04-05 17:38:35 +0300 |
commit | 7456291b9b9c90d528322880dd744bfc3c94e046 (patch) | |
tree | d6d4b60c9804071017b8be0830003af40b263618 /cmake/protobuf.cmake | |
parent | 54ad0af8cfe99687f95779e2d97d3e6ad6b350d4 (diff) | |
download | ydb-7456291b9b9c90d528322880dd744bfc3c94e046.tar.gz |
External build system generator release 25
Update tools: yexport
Diffstat (limited to 'cmake/protobuf.cmake')
-rw-r--r-- | cmake/protobuf.cmake | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cmake/protobuf.cmake b/cmake/protobuf.cmake index 880ac6cd8b..774f0c7a3e 100644 --- a/cmake/protobuf.cmake +++ b/cmake/protobuf.cmake @@ -63,3 +63,49 @@ function(target_proto_messages Tgt Scope) ) endforeach() endfunction() + +function(target_ev_messages Tgt Scope) + get_built_tool_path(protoc_bin protoc_dependency contrib/tools/protoc/bin protoc) + get_built_tool_path(cpp_styleguide_bin cpp_styleguide_dependency contrib/tools/protoc/plugins/cpp_styleguide cpp_styleguide) + get_built_tool_path(event2cpp_bin event2cpp_dependency tools/event2cpp/bin event2cpp) + + get_property(ProtocExtraOutsSuf TARGET ${Tgt} PROPERTY PROTOC_EXTRA_OUTS) + foreach(proto ${ARGN}) + if(proto MATCHES ${CMAKE_BINARY_DIR}) + file(RELATIVE_PATH protoRel ${CMAKE_BINARY_DIR} ${proto}) + elseif (proto MATCHES ${CMAKE_SOURCE_DIR}) + file(RELATIVE_PATH protoRel ${CMAKE_SOURCE_DIR} ${proto}) + else() + set(protoRel ${proto}) + endif() + get_filename_component(OutputBase ${protoRel} NAME_WLE) + get_filename_component(OutputDir ${CMAKE_BINARY_DIR}/${protoRel} DIRECTORY) + list(TRANSFORM ProtocExtraOutsSuf PREPEND ${OutputDir}/${OutputBase} OUTPUT_VARIABLE ProtocExtraOuts) + add_custom_command( + OUTPUT + ${OutputDir}/${OutputBase}.ev.pb.cc + ${OutputDir}/${OutputBase}.ev.pb.h + ${ProtocExtraOuts} + COMMAND ${protoc_bin} + ${COMMON_PROTOC_FLAGS} + "-I$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTO_ADDINCL>>,;-I>" + "$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTO_OUTS>>,;>" + --plugin=protoc-gen-cpp_styleguide=${cpp_styleguide_bin} + --plugin=protoc-gen-event2cpp=${event2cpp_bin} + "$<JOIN:$<TARGET_GENEX_EVAL:${Tgt},$<TARGET_PROPERTY:${Tgt},PROTOC_OPTS>>,;>" + ${protoRel} + DEPENDS + ${proto} + $<TARGET_PROPERTY:${Tgt},PROTOC_DEPS> + ${protoc_dependency} + ${cpp_styleguide_dependency} + ${event2cpp_dependency} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND_EXPAND_LISTS + ) + target_sources(${Tgt} ${Scope} + ${OutputDir}/${OutputBase}.ev.pb.cc ${OutputDir}/${OutputBase}.ev.pb.h + ${ProtocExtraOuts} + ) + endforeach() +endfunction() |