diff --git a/CMakeLists.txt b/CMakeLists.txt index c0d0d29..08fb7a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,35 @@ cmake_minimum_required(VERSION 2.8.12) project(cppzmq) -find_package(ZeroMQ REQUIRED) +find_package(ZeroMQ) + +# libzmq autotools install: fallback to pkg-config +if(NOT ZeroMQ_FOUND) + find_package(PkgConfig) + pkg_check_modules(PC_LIBZMQ QUIET libzmq) + + set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION}) + find_library(ZeroMQ_LIBRARY NAMES libzmq.so + PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS}) + find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq.a + PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS}) + + add_library(libzmq SHARED IMPORTED) + set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS}) + set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY}) + + add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS}) + set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS}) + set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY}) + + if(ZeroMQ_LIBRARY AND ZeroMQ_STATIC_LIBRARY) + set(ZeroMQ_FOUND ON) + endif() +endif() + +if(NOT ZeroMQ_FOUND) + message(FATAL_ERROR "ZeroMQ was NOT found!") +endif() if (ZeroMQ_FOUND AND (NOT TARGET libzmq OR NOT TARGET libzmq-static)) message(FATAL_ERROR "ZeroMQ version not supported!") diff --git a/cppzmqConfig.cmake.in b/cppzmqConfig.cmake.in index 24b217c..2dd990b 100644 --- a/cppzmqConfig.cmake.in +++ b/cppzmqConfig.cmake.in @@ -17,7 +17,35 @@ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) -find_dependency(ZeroMQ) +find_package(ZeroMQ) + +# libzmq autotools install: fallback to pkg-config +if(NOT ZeroMQ_FOUND) + find_package(PkgConfig) + pkg_check_modules(PC_LIBZMQ QUIET libzmq) + + set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION}) + find_library(ZeroMQ_LIBRARY NAMES libzmq.so + PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS}) + find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq.a + PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS}) + + add_library(libzmq SHARED IMPORTED) + set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS}) + set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY}) + + add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS}) + set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS}) + set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY}) + + if(ZeroMQ_LIBRARY AND ZeroMQ_STATIC_LIBRARY) + set(ZeroMQ_FOUND ON) + endif() +endif() + +if(NOT ZeroMQ_FOUND) + message(FATAL_ERROR "ZeroMQ was NOT found!") +endif() if(NOT TARGET @PROJECT_NAME@) include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")