# Copyright 2026 Google LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # --- Protobuf --- function(generate_protobuf TARGET_NAME _root_path) set(GENERATED_SRCS) set(GENERATED_HDRS) add_custom_command( OUTPUT "" COMMAND $ ARGS --version ) foreach(PROTO_FILE ${LITERTLM_PROTO_FILES}) file(RELATIVE_PATH REL_PROTO_PATH "${_root_path}" "${PROTO_FILE}") get_filename_component(REL_DIR "${REL_PROTO_PATH}" DIRECTORY) get_filename_component(FIL_WE "${REL_PROTO_PATH}" NAME_WE) set(OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${REL_DIR}") set(SRC_FILE "${OUT_DIR}/${FIL_WE}.pb.cc") set(HDR_FILE "${OUT_DIR}/${FIL_WE}.pb.h") file(MAKE_DIRECTORY "${OUT_DIR}") add_custom_command( OUTPUT "${SRC_FILE}" "${HDR_FILE}" COMMAND $ ARGS --cpp_out "${CMAKE_CURRENT_BINARY_DIR}" -I "${_root_path}" "${PROTO_FILE}" DEPENDS "${PROTO_FILE}" protobuf::protoc COMMENT "Generating C++ from ${REL_PROTO_PATH}" VERBATIM ) list(APPEND GENERATED_SRCS "${SRC_FILE}") list(APPEND GENERATED_HDRS "${HDR_FILE}") endforeach() target_sources(${TARGET_NAME} PRIVATE ${GENERATED_SRCS} ${GENERATED_HDRS}) endfunction()