From 999308ba092b5f7503bccee6a645c2225ad4722f Mon Sep 17 00:00:00 2001 From: jdsika Date: Wed, 4 Feb 2026 10:49:24 +0100 Subject: [PATCH 1/3] ci: allow protobuf installation with homebrew Signed-off-by: jdsika --- CMakeLists.txt | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 122a132..61e6006 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,10 @@ set(OSI_INSTALL_INCLUDE_DIR ${OSI_INSTALL_INCLUDE_DIR}/osi${VERSION_MAJOR}) configure_file(open-simulation-interface/osi_version.proto.in osi_version.proto) -find_package(Protobuf REQUIRED) +find_package(Protobuf CONFIG QUIET) +if(NOT Protobuf_FOUND) + find_package(Protobuf REQUIRED) +endif() file(GLOB OSI_PROTO_FILES open-simulation-interface/*.proto) list(INSERT OSI_PROTO_FILES 0 ${CMAKE_CURRENT_BINARY_DIR}/osi_version.proto) @@ -84,6 +87,13 @@ target_include_directories(${PROJECT_NAME}_static $ ) target_link_libraries(${PROJECT_NAME}_static PUBLIC protobuf::libprotobuf) +find_package(absl CONFIG QUIET) +if(TARGET absl::log) + target_link_libraries(${PROJECT_NAME}_static PUBLIC absl::log) +endif() +if(TARGET absl::log_internal_check_op) + target_link_libraries(${PROJECT_NAME}_static PUBLIC absl::log_internal_check_op) +endif() install(TARGETS ${PROJECT_NAME}_static EXPORT ${PROJECT_NAME}_targets ARCHIVE DESTINATION "${OSI_INSTALL_LIB_DIR}" COMPONENT lib) @@ -113,6 +123,12 @@ target_include_directories(${PROJECT_NAME}_pic $ ) target_link_libraries(${PROJECT_NAME}_pic PUBLIC protobuf::libprotobuf) +if(TARGET absl::log) + target_link_libraries(${PROJECT_NAME}_pic PUBLIC absl::log) +endif() +if(TARGET absl::log_internal_check_op) + target_link_libraries(${PROJECT_NAME}_pic PUBLIC absl::log_internal_check_op) +endif() set_property(TARGET ${PROJECT_NAME}_pic PROPERTY POSITION_INDEPENDENT_CODE ON) install(TARGETS ${PROJECT_NAME}_pic EXPORT ${PROJECT_NAME}_targets @@ -130,6 +146,12 @@ target_include_directories(${PROJECT_NAME} $ ) target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf) +if(TARGET absl::log) + target_link_libraries(${PROJECT_NAME} PUBLIC absl::log) +endif() +if(TARGET absl::log_internal_check_op) + target_link_libraries(${PROJECT_NAME} PUBLIC absl::log_internal_check_op) +endif() set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${${PROJECT_NAME}_SOVERSION}) set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${${PROJECT_NAME}_LIBVERSION}) install(TARGETS ${PROJECT_NAME} From aed3c942006b4daf9127f71f5014c07f963df0e2 Mon Sep 17 00:00:00 2001 From: jdsika Date: Wed, 4 Feb 2026 11:36:28 +0100 Subject: [PATCH 2/3] fix(ci): cmake proto_cpp find Signed-off-by: jdsika --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61e6006..189f697 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,6 +69,9 @@ find_package(Protobuf CONFIG QUIET) if(NOT Protobuf_FOUND) find_package(Protobuf REQUIRED) endif() +if(NOT COMMAND protobuf_generate_cpp) + include(FindProtobuf) +endif() file(GLOB OSI_PROTO_FILES open-simulation-interface/*.proto) list(INSERT OSI_PROTO_FILES 0 ${CMAKE_CURRENT_BINARY_DIR}/osi_version.proto) From 1681853c920c41ca9be155cf48131589fb65a4a3 Mon Sep 17 00:00:00 2001 From: jdsika Date: Thu, 5 Feb 2026 10:47:13 +0100 Subject: [PATCH 3/3] fix: improve abseil patch for macOS Signed-off-by: jdsika --- CMakeLists.txt | 50 +++++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 189f697..cda428f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,34 @@ if(NOT COMMAND protobuf_generate_cpp) include(FindProtobuf) endif() +# Protobuf 25+ uses Abseil logging. Link Abseil when available so static libs +# propagate required symbols to consumers. +find_package(absl CONFIG QUIET) +set(OSI_ABSL_TARGETS "") +if(absl_FOUND) + if(TARGET absl::log) + list(APPEND OSI_ABSL_TARGETS absl::log) + endif() + if(TARGET absl::log_internal) + list(APPEND OSI_ABSL_TARGETS absl::log_internal) + endif() + if(TARGET absl::log_internal_check_op) + list(APPEND OSI_ABSL_TARGETS absl::log_internal_check_op) + endif() + if(TARGET absl::check) + list(APPEND OSI_ABSL_TARGETS absl::check) + endif() + if(TARGET absl::base) + list(APPEND OSI_ABSL_TARGETS absl::base) + endif() +endif() + +function(osi_link_absl target) + if(OSI_ABSL_TARGETS) + target_link_libraries(${target} PUBLIC ${OSI_ABSL_TARGETS}) + endif() +endfunction() + file(GLOB OSI_PROTO_FILES open-simulation-interface/*.proto) list(INSERT OSI_PROTO_FILES 0 ${CMAKE_CURRENT_BINARY_DIR}/osi_version.proto) @@ -90,13 +118,7 @@ target_include_directories(${PROJECT_NAME}_static $ ) target_link_libraries(${PROJECT_NAME}_static PUBLIC protobuf::libprotobuf) -find_package(absl CONFIG QUIET) -if(TARGET absl::log) - target_link_libraries(${PROJECT_NAME}_static PUBLIC absl::log) -endif() -if(TARGET absl::log_internal_check_op) - target_link_libraries(${PROJECT_NAME}_static PUBLIC absl::log_internal_check_op) -endif() +osi_link_absl(${PROJECT_NAME}_static) install(TARGETS ${PROJECT_NAME}_static EXPORT ${PROJECT_NAME}_targets ARCHIVE DESTINATION "${OSI_INSTALL_LIB_DIR}" COMPONENT lib) @@ -126,12 +148,7 @@ target_include_directories(${PROJECT_NAME}_pic $ ) target_link_libraries(${PROJECT_NAME}_pic PUBLIC protobuf::libprotobuf) -if(TARGET absl::log) - target_link_libraries(${PROJECT_NAME}_pic PUBLIC absl::log) -endif() -if(TARGET absl::log_internal_check_op) - target_link_libraries(${PROJECT_NAME}_pic PUBLIC absl::log_internal_check_op) -endif() +osi_link_absl(${PROJECT_NAME}_pic) set_property(TARGET ${PROJECT_NAME}_pic PROPERTY POSITION_INDEPENDENT_CODE ON) install(TARGETS ${PROJECT_NAME}_pic EXPORT ${PROJECT_NAME}_targets @@ -149,12 +166,7 @@ target_include_directories(${PROJECT_NAME} $ ) target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf) -if(TARGET absl::log) - target_link_libraries(${PROJECT_NAME} PUBLIC absl::log) -endif() -if(TARGET absl::log_internal_check_op) - target_link_libraries(${PROJECT_NAME} PUBLIC absl::log_internal_check_op) -endif() +osi_link_absl(${PROJECT_NAME}) set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${${PROJECT_NAME}_SOVERSION}) set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${${PROJECT_NAME}_LIBVERSION}) install(TARGETS ${PROJECT_NAME}