FairMQ/cmake/FindZeroMQ.cmake
Dennis Klein db5f3d794c Do not require the static library
Standard policy in most Linux distributions is to not install
static libraries.
2018-08-30 17:39:56 +02:00

114 lines
3.5 KiB
CMake

################################################################################
# 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
VERSION_VAR ZeroMQ_VERSION
)
if(ZeroMQ_FOUND AND NOT TARGET libzmq)
add_library(libzmq SHARED IMPORTED)
set_target_properties(libzmq PROPERTIES
IMPORTED_LOCATION ${ZeroMQ_LIBRARY_SHARED}
INTERFACE_INCLUDE_DIRECTORIES ${ZeroMQ_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES "$<$<PLATFORM_ID:Linux>:rt>;pthread"
)
endif()
mark_as_advanced(
ZeroMQ_LIBRARIES
ZeroMQ_LIBRARY_SHARED
ZeroMQ_LIBRARY_STATIC
ZeroMQ_HEADER_FILE
ZeroMQ_VERSION_MAJOR
ZeroMQ_VERSION_MINOR
ZeroMQ_VERSION_PATCH
)