summaryrefslogtreecommitdiff
path: root/cmake/FindProtobufC.cmake
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2025-12-23 11:59:45 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-01-07 10:00:06 +0100
commit48c294105f5123dc876fbad199ec1e0166d82a18 (patch)
treec49ce8ac75a7d63c10ea1ff960eeff750c680a8e /cmake/FindProtobufC.cmake
parent145be13e8c18fcb39476d8f65fed23d82320f22f (diff)
downloadouroboros-48c294105f5123dc876fbad199ec1e0166d82a18.tar.gz
ouroboros-48c294105f5123dc876fbad199ec1e0166d82a18.zip
build: Refactor CMake modules
This moves the CMake build logic out of the source tree and splits it up into a more modular form. The tests now have a CMakeLists.txt file in their respective source directory. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'cmake/FindProtobufC.cmake')
-rw-r--r--cmake/FindProtobufC.cmake74
1 files changed, 0 insertions, 74 deletions
diff --git a/cmake/FindProtobufC.cmake b/cmake/FindProtobufC.cmake
deleted file mode 100644
index ff892b5b..00000000
--- a/cmake/FindProtobufC.cmake
+++ /dev/null
@@ -1,74 +0,0 @@
-function(PROTOBUF_GENERATE_C SRCS HDRS)
- if (NOT ARGN)
- message(SEND_ERROR "Error: PROTOBUF_GENERATE_C() called without any proto files")
- return()
- endif ()
-
- if (PROTOBUF_GENERATE_C_APPEND_PATH)
- # Create an include path for each file specified
- foreach (FIL ${ARGN})
- get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
- get_filename_component(ABS_PATH ${ABS_FIL} PATH)
- list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
- if (${_contains_already} EQUAL -1)
- list(APPEND _protobuf_include_path -I ${ABS_PATH})
- endif ()
- endforeach ()
- else ()
- set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
- endif ()
-
- set(${SRCS})
- set(${HDRS})
- foreach(FIL ${ARGN})
- get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
- get_filename_component(FIL_WE ${FIL} NAME_WE)
-
- list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb-c.c")
- list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb-c.h")
-
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb-c.c"
- "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb-c.h"
- COMMAND ${PROTOBUF_PROTOC_C_EXECUTABLE}
- ARGS --c_out=${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL}
- DEPENDS ${ABS_FIL} ${PROTOBUF_PROTOC_C_EXECUTABLE}
- COMMENT "Running C protocol buffer compiler on ${FIL}"
- VERBATIM )
- endforeach()
-
- set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
- set(${SRCS} ${${SRCS}} PARENT_SCOPE)
- set(${HDRS} ${${HDRS}} PARENT_SCOPE)
-endfunction()
-
-# By default have PROTOBUF_GENERATE_C macro pass -I to protoc
-# for each directory where a proto file is referenced.
-if (NOT DEFINED PROTOBUF_GENERATE_C_APPEND_PATH)
- set(PROTOBUF_GENERATE_C_APPEND_PATH TRUE)
-endif ()
-
-# Find library
-find_library(PROTOBUF_C_LIBRARY
- NAMES libprotobuf-c.so libprotobuf-c libprotobuf-c.dylib
- )
-mark_as_advanced(PROTOBUF_C_LIBRARY)
-
-# Find the include directory
-find_path(PROTOBUF_C_INCLUDE_DIR
- google/protobuf-c/protobuf-c.h
- )
-mark_as_advanced(PROTOBUF_C_INCLUDE_DIR)
-
-# Find the protoc-c Executable
-find_program(PROTOBUF_PROTOC_C_EXECUTABLE
- NAMES protoc protoc-c
- DOC "The Google Protocol Buffers C Compiler"
- )
-mark_as_advanced(PROTOBUF_PROTOC_C_EXECUTABLE)
-
-find_package(PackageHandleStandardArgs)
-find_package_handle_standard_args(ProtobufC DEFAULT_MSG
- PROTOBUF_C_LIBRARY PROTOBUF_C_INCLUDE_DIR PROTOBUF_PROTOC_C_EXECUTABLE)
-
-set(PROTOBUF_C_INCLUDE_DIRS ${PROTOBUF_C_INCLUDE_DIR})