diff --git a/CMakeLists.txt b/CMakeLists.txt index d44af4f8..b86caf4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,8 +36,8 @@ option(BUILD_DDS_PLUGIN "Build DDS plugin." OFF) find_package2(PUBLIC Boost VERSION 1.64 REQUIRED COMPONENTS program_options thread system filesystem regex date_time signals ) -find_package2(PRIVATE ZeroMQ VERSION 4.2.2 REQUIRED) find_package2(PUBLIC FairLogger VERSION 1.0.6 REQUIRED) +find_package2(PRIVATE ZeroMQ VERSION 4.1.5 REQUIRED) if(BUILD_NANOMSG_TRANSPORT) find_package2(PRIVATE nanomsg VERSION 1.0.0 REQUIRED) @@ -95,9 +95,6 @@ install(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME_LOWER}/Version.h ) # Install cmake modules -install(FILES cmake/FindZeroMQ.cmake - DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} -) if(BUILD_DDS_PLUGIN) install(FILES cmake/FindDDS.cmake DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} diff --git a/README.md b/README.md index c9ac98a7..ffe7f8ad 100644 --- a/README.md +++ b/README.md @@ -6,17 +6,14 @@ C++ Message Queuing Library * **Boost** (PUBLIC) * **FairLogger** (PUBLIC) - * CMake - * dl - * pthread - * rt (Linux) - * ZeroMQ - * GTest (optional, `tests`) - * Msgpack (optional, `nanomsg_transport`) - * nanomsg (optional, `nanomsg_transport`) - * OFI (optional, `ofi_transport`) - * Protobuf (optional, `ofi_transport`) - * DDS (optional, `dds_plugin`) + * CMake (BUILD) + * GTest (BUILD, optional, `tests`) + * ZeroMQ (PRIVATE) + * Msgpack (PRIVATE, optional, `nanomsg_transport`) + * nanomsg (PRIVATE, optional, `nanomsg_transport`) + * OFI (PRIVATE, optional, `ofi_transport`) + * Protobuf (PRIVATE, optional, `ofi_transport`) + * DDS (PRIVATE, optional, `dds_plugin`) ## Installation diff --git a/cmake/FairMQLib.cmake b/cmake/FairMQLib.cmake index c3045f6b..0c53a3c2 100644 --- a/cmake/FairMQLib.cmake +++ b/cmake/FairMQLib.cmake @@ -264,12 +264,15 @@ macro(find_package2 qualifier pkgname) cmake_parse_arguments(ARGS "" "VERSION" "COMPONENTS" ${ARGN}) string(TOUPPER ${pkgname} pkgname_upper) - set(CMAKE_PREFIX_PATH ${${pkgname_upper}_ROOT} $ENV{${pkgname_upper}_ROOT} ${CMAKE_PREFIX_PATH}) + set(old_CPP ${CMAKE_PREFIX_PATH}) + set(CMAKE_PREFIX_PATH ${${pkgname_upper}_ROOT} $ENV{${pkgname_upper}_ROOT}) if(ARGS_COMPONENTS) find_package(${pkgname} ${ARGS_VERSION} QUIET COMPONENTS ${ARGS_COMPONENTS} ${ARGS_UNPARSED_ARGUMENTS}) else() find_package(${pkgname} ${ARGS_VERSION} QUIET ${ARGS_UNPARSED_ARGUMENTS}) endif() + set(CMAKE_PREFIX_PATH ${old_CPP}) + unset(old_CPP) if(${qualifier} STREQUAL PRIVATE) set(PROJECT_${pkgname}_VERSION ${ARGS_VERSION}) diff --git a/cmake/FindZeroMQ.cmake b/cmake/FindZeroMQ.cmake deleted file mode 100644 index 8a4798ae..00000000 --- a/cmake/FindZeroMQ.cmake +++ /dev/null @@ -1,112 +0,0 @@ -################################################################################ -# Copyright (C) 2012-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" # -################################################################################ -# -# Authors: -# -# Mohammad Al-Turany -# Dario Berzano -# Dennis Klein -# Matthias Richter -# Alexey Rybalchenko -# Florian Uhlig -# -# -# ############################# -# # Locate the ZeroMQ library # -# ############################# -# -# -# Usage: -# -# find_package(ZeroMQ [version] [QUIET] [REQUIRED]) -# -# -# Defines the following variables: -# -# ZeroMQ_FOUND - Found the ZeroMQ library -# ZeroMQ_INCLUDE_DIR (CMake cache) - Include directory -# ZeroMQ_LIBRARY_SHARED (CMake cache) - Path to shared libzmq -# ZeroMQ_LIBRARY_STATIC (CMake cache) - Path to static libzmq -# ZeroMQ_VERSION - full version string -# ZeroMQ_VERSION_MAJOR - major version component -# ZeroMQ_VERSION_MINOR - minor version component -# ZeroMQ_VERSION_PATCH - patch version component -# -# -# Accepts the following variables as hints for installation directories: -# -# ZEROMQ_ROOT (CMake var, ENV var) -# -# -# If the above variables are not defined, or if ZeroMQ could not be found there, -# it will look for it in the system directories. Custom ZeroMQ installations -# will always have priority over system ones. -# - -if(NOT ZEROMQ_ROOT) - set(ZEROMQ_ROOT $ENV{ZEROMQ_ROOT}) -endif() - -find_path(ZeroMQ_INCLUDE_DIR - NAMES zmq.h zmq_utils.h - HINTS ${ZEROMQ_ROOT} $ENV{ZEROMQ_ROOT} - PATH_SUFFIXES include - DOC "ZeroMQ include directories" -) - -find_library(ZeroMQ_LIBRARY_SHARED - NAMES libzmq.dylib libzmq.so - HINTS ${ZEROMQ_ROOT} $ENV{ZEROMQ_ROOT} - PATH_SUFFIXES lib - DOC "Path to libzmq.dylib or libzmq.so" -) - -find_library(ZeroMQ_LIBRARY_STATIC NAMES libzmq.a - HINTS ${ZEROMQ_ROOT} $ENV{ZEROMQ_ROOT} - PATH_SUFFIXES lib - DOC "Path to libzmq.a" -) - -find_file(ZeroMQ_HEADER_FILE "zmq.h" - ${ZeroMQ_INCLUDE_DIR} - NO_DEFAULT_PATH -) -if(DEFINED ZeroMQ_HEADER_FILE) - file(READ "${ZeroMQ_HEADER_FILE}" _ZeroMQ_HEADER_FILE_CONTENT) - string(REGEX MATCH "#define ZMQ_VERSION_MAJOR ([0-9])" _MATCH "${_ZeroMQ_HEADER_FILE_CONTENT}") - set(ZeroMQ_VERSION_MAJOR ${CMAKE_MATCH_1}) - string(REGEX MATCH "#define ZMQ_VERSION_MINOR ([0-9])" _MATCH "${_ZeroMQ_HEADER_FILE_CONTENT}") - set(ZeroMQ_VERSION_MINOR ${CMAKE_MATCH_1}) - string(REGEX MATCH "#define ZMQ_VERSION_PATCH ([0-9])" _MATCH "${_ZeroMQ_HEADER_FILE_CONTENT}") - set(ZeroMQ_VERSION_PATCH ${CMAKE_MATCH_1}) - set(ZeroMQ_VERSION "${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH}") -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(ZeroMQ - REQUIRED_VARS ZeroMQ_LIBRARY_SHARED ZeroMQ_INCLUDE_DIR ZeroMQ_LIBRARY_STATIC - VERSION_VAR ZeroMQ_VERSION -) - -if(ZeroMQ_FOUND AND NOT TARGET ZeroMQ) - add_library(ZeroMQ SHARED IMPORTED) - set_target_properties(ZeroMQ PROPERTIES - IMPORTED_LOCATION ${ZeroMQ_LIBRARY_SHARED} - INTERFACE_INCLUDE_DIRECTORIES ${ZeroMQ_INCLUDE_DIR} - ) -endif() - -mark_as_advanced( - ZeroMQ_LIBRARIES - ZeroMQ_LIBRARY_SHARED - ZeroMQ_LIBRARY_STATIC - ZeroMQ_HEADER_FILE - ZeroMQ_VERSION_MAJOR - ZeroMQ_VERSION_MINOR - ZeroMQ_VERSION_PATCH -) diff --git a/cmake/Findnanomsg.cmake b/cmake/Findnanomsg.cmake index eb9184e6..51415880 100644 --- a/cmake/Findnanomsg.cmake +++ b/cmake/Findnanomsg.cmake @@ -28,7 +28,7 @@ find_package_handle_standard_args(nanomsg if(NOT TARGET nanomsg AND nanomsg_FOUND) add_library(nanomsg SHARED IMPORTED) set_target_properties(nanomsg PROPERTIES - IMPORTED_LOCATION ${NANOMSG_LIBRARY_SHARED} - INTERFACE_INCLUDE_DIRECTORIES ${NANOMSG_INCLUDE_DIR} + IMPORTED_LOCATION ${nanomsg_LIBRARY_SHARED} + INTERFACE_INCLUDE_DIRECTORIES ${nanomsg_INCLUDE_DIR} ) endif() diff --git a/fairmq/CMakeLists.txt b/fairmq/CMakeLists.txt index 8ddbc6b1..0c931175 100644 --- a/fairmq/CMakeLists.txt +++ b/fairmq/CMakeLists.txt @@ -219,7 +219,6 @@ target_link_libraries(FairMQ PUBLIC # libFairMQ AND consumers of libFairMQ link aginst public dependencies dl - pthread Boost::boost Boost::program_options Boost::thread @@ -229,10 +228,9 @@ target_link_libraries(FairMQ Boost::date_time Boost::signals FairLogger::FairLogger - $<$:rt> PRIVATE # only libFairMQ links against private dependencies - ZeroMQ + libzmq ${NANOMSG_DEPS} ${OFI_DEPS} ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8948de54..5afc5824 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -59,7 +59,7 @@ add_testsuite(FairMQ.Parts parts/runner.cxx parts/_iterator_interface.cxx - LINKS FairMQ ZeroMQ + LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/parts TIMEOUT 5 ) @@ -69,7 +69,7 @@ add_testsuite(FairMQ.MessageResize message_resize/runner.cxx message_resize/_message_resize.cxx - LINKS FairMQ ZeroMQ + LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/message_resize TIMEOUT 5 )