diff --git a/CMakeLists.txt b/CMakeLists.txt index 4adb6335..0561a92f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,32 +62,43 @@ if(BUILD_NANOMSG_TRANSPORT) endif() if(BUILD_OFI_TRANSPORT) - find_package2(PRIVATE asiofi VERSION 0.0.0 REQUIRED) - find_package2(PRIVATE OFI VERSION ${asiofi_OFI_VERSION} COMPONENTS ${asiofi_OFI_COMPONENTS} REQUIRED) + find_package2(PRIVATE asiofi REQUIRED + VERSION 0.0.0 + ) + find_package2(PRIVATE OFI REQUIRED + VERSION ${asiofi_OFI_VERSION} + COMPONENTS ${asiofi_OFI_COMPONENTS} + ) endif() if(BUILD_NANOMSG_TRANSPORT OR BUILD_OFI_TRANSPORT) - find_package2(PRIVATE msgpack VERSION 3.1.0 REQUIRED) + find_package2(PRIVATE msgpack REQUIRED + VERSION 3.1.0 + ) endif() if(BUILD_FAIRMQ) - set(_components container program_options thread system filesystem regex date_time signals) - if(asiofi_FOUND) - if(${asiofi_Boost_VERSION} VERSION_GREATER 1.64) - set(_version ${asiofi_Boost_VERSION}) - endif() - list(APPEND _components ${asiofi_Boost_COMPONENTS}) - list(REMOVE_DUPLICATES _components) - else() - set(_version 1.64) - endif() - find_package2(PUBLIC Boost VERSION ${_version} REQUIRED - COMPONENTS ${_components} - ) - find_package2(PUBLIC FairLogger VERSION 1.2.0 REQUIRED) - find_package2(PRIVATE ZeroMQ VERSION 4.1.5 REQUIRED) -endif() + find_package2(PUBLIC Boost REQUIRED + VERSION 1.64 ${asiofi_Boost_VERSION} + COMPONENTS + container + program_options + thread + system + filesystem + regex + date_time + signals + ${asiofi_Boost_COMPONENTS} + ) + find_package2(PUBLIC FairLogger REQUIRED + VERSION 1.2.0 + ) + find_package2(PRIVATE ZeroMQ REQUIRED + VERSION 4.1.5 + ) +endif() if(BUILD_DDS_PLUGIN) find_package2(PRIVATE DDS VERSION 2.2 REQUIRED) @@ -98,11 +109,17 @@ if(BUILD_PMIX_PLUGIN) endif() if(BUILD_TESTING) - find_package2(PRIVATE GTest VERSION 1.7.0 REQUIRED) + find_package2(PRIVATE GTest REQUIRED + VERSION 1.7.0 + ) endif() if(BUILD_DOCS) - find_package2(PRIVATE Doxygen VERSION 1.8.8 REQUIRED COMPONENTS dot OPTIONAL_COMPONENTS mscgen dia) + find_package2(PRIVATE Doxygen REQUIRED + VERSION 1.8.8 + COMPONENTS dot + OPTIONAL_COMPONENTS mscgen dia + ) endif() ################################################################################ diff --git a/cmake/FairMQLib.cmake b/cmake/FairMQLib.cmake index c4f15fc0..e7c79853 100644 --- a/cmake/FairMQLib.cmake +++ b/cmake/FairMQLib.cmake @@ -295,35 +295,50 @@ macro(install_cmake_package) endmacro() macro(find_package2 qualifier pkgname) - cmake_parse_arguments(ARGS "" "VERSION" "COMPONENTS" ${ARGN}) + cmake_parse_arguments(ARGS "" "" "VERSION;COMPONENTS" ${ARGN}) string(TOUPPER ${pkgname} pkgname_upper) set(old_CPP ${CMAKE_PREFIX_PATH}) set(CMAKE_PREFIX_PATH ${${pkgname_upper}_ROOT} $ENV{${pkgname_upper}_ROOT} ${CMAKE_PREFIX_PATH}) + unset(__version__) + unset(__components__) + if(ARGS_VERSION) + list(GET ARGS_VERSION 0 __version__) + list(LENGTH ARGS_VERSION __length__) + foreach(v IN LISTS ARGS_VERSION) + if(${v} VERSION_GREATER ${__version__}) + set(__version__ ${v}) + endif() + endforeach() + endif() if(ARGS_COMPONENTS) - find_package(${pkgname} ${ARGS_VERSION} QUIET COMPONENTS ${ARGS_COMPONENTS} ${ARGS_UNPARSED_ARGUMENTS}) + list(REMOVE_DUPLICATES ARGS_COMPONENTS) + find_package(${pkgname} ${__version__} QUIET COMPONENTS ${ARGS_COMPONENTS} ${ARGS_UNPARSED_ARGUMENTS}) else() - find_package(${pkgname} ${ARGS_VERSION} QUIET ${ARGS_UNPARSED_ARGUMENTS}) + find_package(${pkgname} ${__version__} QUIET ${ARGS_UNPARSED_ARGUMENTS}) endif() set(CMAKE_PREFIX_PATH ${old_CPP}) unset(old_CPP) if(${pkgname}_FOUND) if(${qualifier} STREQUAL PRIVATE) - set(PROJECT_${pkgname}_VERSION ${ARGS_VERSION}) - set(PROJECT_${pkgname}_COMPONENTS ${ARGS_COMPONENTS}) + set(PROJECT_${pkgname}_VERSION ${__version__}) + set(PROJECT_${pkgname}_COMPONENTS ${__components__}) set(PROJECT_PACKAGE_DEPENDENCIES ${PROJECT_PACKAGE_DEPENDENCIES} ${pkgname}) elseif(${qualifier} STREQUAL PUBLIC) - set(PROJECT_${pkgname}_VERSION ${ARGS_VERSION}) - set(PROJECT_${pkgname}_COMPONENTS ${ARGS_COMPONENTS}) + set(PROJECT_${pkgname}_VERSION ${__version__}) + set(PROJECT_${pkgname}_COMPONENTS ${__components__}) set(PROJECT_PACKAGE_DEPENDENCIES ${PROJECT_PACKAGE_DEPENDENCIES} ${pkgname}) - set(PROJECT_INTERFACE_${pkgname}_VERSION ${ARGS_VERSION}) - set(PROJECT_INTERFACE_${pkgname}_COMPONENTS ${ARGS_COMPONENTS}) + set(PROJECT_INTERFACE_${pkgname}_VERSION ${__version__}) + set(PROJECT_INTERFACE_${pkgname}_COMPONENTS ${__components__}) set(PROJECT_INTERFACE_PACKAGE_DEPENDENCIES ${PROJECT_INTERFACE_PACKAGE_DEPENDENCIES} ${pkgname}) elseif(${qualifier} STREQUAL INTERFACE) - set(PROJECT_INTERFACE_${pkgname}_VERSION ${ARGS_VERSION}) - set(PROJECT_INTERFACE_${pkgname}_COMPONENTS ${ARGS_COMPONENTS}) + set(PROJECT_INTERFACE_${pkgname}_VERSION ${__version__}) + set(PROJECT_INTERFACE_${pkgname}_COMPONENTS ${__components__}) set(PROJECT_INTERFACE_PACKAGE_DEPENDENCIES ${PROJECT_INTERFACE_PACKAGE_DEPENDENCIES} ${pkgname}) endif() endif() + + unset(__components__) + unset(__version__) endmacro() diff --git a/fairmq/CMakeLists.txt b/fairmq/CMakeLists.txt index 6db399ee..c037370d 100644 --- a/fairmq/CMakeLists.txt +++ b/fairmq/CMakeLists.txt @@ -28,14 +28,6 @@ if(BUILD_OFI_TRANSPORT) endif() -################## -# subdirectories # -################## -if(BUILD_OFI_TRANSPORT) - add_subdirectory(ofi) -endif() - - ########################## # libFairMQ header files # ########################## @@ -227,7 +219,7 @@ if(BUILD_NANOMSG_TRANSPORT) set(NANOMSG_DEPS nanomsg msgpackc-cxx) endif() if(BUILD_OFI_TRANSPORT) - set(OFI_DEPS asiofi::asiofi msgpack::msgpack) + set(OFI_DEPS asiofi::asiofi msgpackc-cxx) endif() set(optional_deps ${NANOMSG_DEPS} ${OFI_DEPS}) if(optional_deps) diff --git a/fairmq/ofi/CMakeLists.txt b/fairmq/ofi/CMakeLists.txt deleted file mode 100644 index 097de7a0..00000000 --- a/fairmq/ofi/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -################################################################################ -# Copyright (C) 2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH # -# # -# This software is distributed under the terms of the # -# GNU Lesser General Public Licence (LGPL) version 3, # -# copied verbatim in the file "LICENSE" # -################################################################################ - -protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS Control.proto) - -add_library(OfiTransport OBJECT ${PROTO_SRCS} ${PROTO_HDRS}) -target_include_directories(OfiTransport PRIVATE $)