Skip to content

Commit 1681853

Browse files
committed
fix: improve abseil patch for macOS
Signed-off-by: jdsika <carlo.van-driesten@vdl.digital>
1 parent aed3c94 commit 1681853

File tree

1 file changed

+31
-19
lines changed

1 file changed

+31
-19
lines changed

CMakeLists.txt

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,34 @@ if(NOT COMMAND protobuf_generate_cpp)
7373
include(FindProtobuf)
7474
endif()
7575

76+
# Protobuf 25+ uses Abseil logging. Link Abseil when available so static libs
77+
# propagate required symbols to consumers.
78+
find_package(absl CONFIG QUIET)
79+
set(OSI_ABSL_TARGETS "")
80+
if(absl_FOUND)
81+
if(TARGET absl::log)
82+
list(APPEND OSI_ABSL_TARGETS absl::log)
83+
endif()
84+
if(TARGET absl::log_internal)
85+
list(APPEND OSI_ABSL_TARGETS absl::log_internal)
86+
endif()
87+
if(TARGET absl::log_internal_check_op)
88+
list(APPEND OSI_ABSL_TARGETS absl::log_internal_check_op)
89+
endif()
90+
if(TARGET absl::check)
91+
list(APPEND OSI_ABSL_TARGETS absl::check)
92+
endif()
93+
if(TARGET absl::base)
94+
list(APPEND OSI_ABSL_TARGETS absl::base)
95+
endif()
96+
endif()
97+
98+
function(osi_link_absl target)
99+
if(OSI_ABSL_TARGETS)
100+
target_link_libraries(${target} PUBLIC ${OSI_ABSL_TARGETS})
101+
endif()
102+
endfunction()
103+
76104
file(GLOB OSI_PROTO_FILES open-simulation-interface/*.proto)
77105
list(INSERT OSI_PROTO_FILES 0 ${CMAKE_CURRENT_BINARY_DIR}/osi_version.proto)
78106

@@ -90,13 +118,7 @@ target_include_directories(${PROJECT_NAME}_static
90118
$<INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR}>
91119
)
92120
target_link_libraries(${PROJECT_NAME}_static PUBLIC protobuf::libprotobuf)
93-
find_package(absl CONFIG QUIET)
94-
if(TARGET absl::log)
95-
target_link_libraries(${PROJECT_NAME}_static PUBLIC absl::log)
96-
endif()
97-
if(TARGET absl::log_internal_check_op)
98-
target_link_libraries(${PROJECT_NAME}_static PUBLIC absl::log_internal_check_op)
99-
endif()
121+
osi_link_absl(${PROJECT_NAME}_static)
100122
install(TARGETS ${PROJECT_NAME}_static
101123
EXPORT ${PROJECT_NAME}_targets
102124
ARCHIVE DESTINATION "${OSI_INSTALL_LIB_DIR}" COMPONENT lib)
@@ -126,12 +148,7 @@ target_include_directories(${PROJECT_NAME}_pic
126148
$<INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR}>
127149
)
128150
target_link_libraries(${PROJECT_NAME}_pic PUBLIC protobuf::libprotobuf)
129-
if(TARGET absl::log)
130-
target_link_libraries(${PROJECT_NAME}_pic PUBLIC absl::log)
131-
endif()
132-
if(TARGET absl::log_internal_check_op)
133-
target_link_libraries(${PROJECT_NAME}_pic PUBLIC absl::log_internal_check_op)
134-
endif()
151+
osi_link_absl(${PROJECT_NAME}_pic)
135152
set_property(TARGET ${PROJECT_NAME}_pic PROPERTY POSITION_INDEPENDENT_CODE ON)
136153
install(TARGETS ${PROJECT_NAME}_pic
137154
EXPORT ${PROJECT_NAME}_targets
@@ -149,12 +166,7 @@ target_include_directories(${PROJECT_NAME}
149166
$<INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR}>
150167
)
151168
target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf)
152-
if(TARGET absl::log)
153-
target_link_libraries(${PROJECT_NAME} PUBLIC absl::log)
154-
endif()
155-
if(TARGET absl::log_internal_check_op)
156-
target_link_libraries(${PROJECT_NAME} PUBLIC absl::log_internal_check_op)
157-
endif()
169+
osi_link_absl(${PROJECT_NAME})
158170
set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${${PROJECT_NAME}_SOVERSION})
159171
set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${${PROJECT_NAME}_LIBVERSION})
160172
install(TARGETS ${PROJECT_NAME}

0 commit comments

Comments
 (0)