Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 38 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,41 @@ 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()
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)
Expand All @@ -84,6 +118,7 @@ target_include_directories(${PROJECT_NAME}_static
$<INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR}>
)
target_link_libraries(${PROJECT_NAME}_static PUBLIC protobuf::libprotobuf)
osi_link_absl(${PROJECT_NAME}_static)
install(TARGETS ${PROJECT_NAME}_static
EXPORT ${PROJECT_NAME}_targets
ARCHIVE DESTINATION "${OSI_INSTALL_LIB_DIR}" COMPONENT lib)
Expand Down Expand Up @@ -113,6 +148,7 @@ target_include_directories(${PROJECT_NAME}_pic
$<INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR}>
)
target_link_libraries(${PROJECT_NAME}_pic PUBLIC protobuf::libprotobuf)
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
Expand All @@ -130,6 +166,7 @@ target_include_directories(${PROJECT_NAME}
$<INSTALL_INTERFACE:${OSI_INSTALL_INCLUDE_DIR}>
)
target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf)
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}
Expand Down