@@ -73,6 +73,34 @@ if(NOT COMMAND protobuf_generate_cpp)
7373 include (FindProtobuf)
7474endif ()
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+
76104file (GLOB OSI_PROTO_FILES open-simulation-interface /*.proto)
77105list (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)
92120target_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)
100122install (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)
128150target_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)
135152set_property (TARGET ${PROJECT_NAME} _pic PROPERTY POSITION_INDEPENDENT_CODE ON )
136153install (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)
151168target_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} )
158170set_property (TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${${PROJECT_NAME} _SOVERSION})
159171set_property (TARGET ${PROJECT_NAME} PROPERTY VERSION ${${PROJECT_NAME} _LIBVERSION})
160172install (TARGETS ${PROJECT_NAME}
0 commit comments