Skip to content
Open
Show file tree
Hide file tree
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
40 changes: 21 additions & 19 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,33 @@ set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# --- dependencies --
find_package(
Boost 1.68
COMPONENTS date_time
thread
chrono
random
REQUIRED)

# Try to find Boost::system
find_package(Boost COMPONENTS system)
if (NOT Boost_SYSTEM_FOUND)
message(WARNING "Boost::system not found, some examples may not compile")
if(NOT PROJECT_IS_TOP_LEVEL OR AZMQ_BUILD_TESTS OR AZMQ_BUILD_DOC)
# --- dependencies --
find_package(
Boost 1.68
COMPONENTS date_time
thread
chrono
random
OPTIONAL_COMPONENTS
system
REQUIRED)

include(FindAzmqLibzmq.cmake)

set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
else()
add_library(Azmq::libzmq INTERFACE IMPORTED)
add_library(Boost::headers INTERFACE IMPORTED)
add_library(Threads::Threads INTERFACE IMPORTED)
endif()

include(FindAzmqLibzmq.cmake)

set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)

# --- create library --
add_library(${PROJECT_NAME} INTERFACE)
add_library(Azmq::${PROJECT_NAME} ALIAS ${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME} INTERFACE Azmq::libzmq Boost::boost ${Boost_SYSTEM_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries(${PROJECT_NAME} INTERFACE Azmq::libzmq Boost::headers "$<$<TARGET_EXISTS:Boost::system>:Boost::system>" Threads::Threads)
target_include_directories(${PROJECT_NAME} INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
"$<INSTALL_INTERFACE:include>")

Expand Down
17 changes: 11 additions & 6 deletions FindAzmqLibzmq.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,17 @@
if (TARGET Azmq::libzmq)
# allow overriding from the calling script
message(STATUS "using provided Azmq::libzmq target")
elseif (TARGET libzmq AND BUILD_SHARED_LIBS)
return()
else()
add_library(Azmq::libzmq INTERFACE IMPORTED)
endif()

if (TARGET libzmq AND BUILD_SHARED_LIBS)
message(STATUS "using existing shared library target")
add_library(Azmq::libzmq ALIAS libzmq)
target_link_libraries(Azmq::libzmq INTERFACE libzmq)
elseif (TARGET libzmq-static AND NOT BUILD_SHARED_LIBS)
message(STATUS "using existing static library target")
add_library(Azmq::libzmq ALIAS libzmq-static)
target_link_libraries(Azmq::libzmq INTERFACE libzmq-static)
else ()
# try finding the package
find_package(ZeroMQ QUIET)
Expand All @@ -24,14 +29,14 @@ else ()
if (BUILD_SHARED_LIBS)
if (TARGET libzmq)
message(STATUS "using cmake config libzmq")
add_library(Azmq::libzmq ALIAS libzmq)
target_link_libraries(Azmq::libzmq INTERFACE libzmq)
else ()
message(FATAL_ERROR "libzmq not exported in the cmake configuration")
endif ()
else ()
if (TARGET libzmq-static)
message(STATUS "using cmake config static libzmq")
add_library(Azmq::libzmq ALIAS libzmq-static)
target_link_libraries(Azmq::libzmq INTERFACE libzmq-static)
else ()
message(FATAL_ERROR "libzmq-static not exported in the cmake configuration")
endif ()
Expand All @@ -42,7 +47,7 @@ else ()
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBZMQ REQUIRED IMPORTED_TARGET GLOBAL libzmq)
if (LIBZMQ_FOUND)
add_library(Azmq::libzmq ALIAS PkgConfig::LIBZMQ)
target_link_libraries(Azmq::libzmq INTERFACE PkgConfig::LIBZMQ)
else ()
message(FAIL_ERROR "Can't find the required libzmq library")
endif ()
Expand Down
9 changes: 2 additions & 7 deletions azmqConfig.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
include(CMakeFindDependencyMacro)
find_package(Boost 1.68 COMPONENTS date_time thread chrono random REQUIRED)
find_package(Boost 1.68 COMPONENTS system)
if (NOT Boost_SYSTEM_FOUND)
message(WARNING "Boost::system not found")
endif()
find_dependency(Boost 1.68 OPTIONAL_COMPONENTS system)

include(${CMAKE_CURRENT_LIST_DIR}/FindAzmqLibzmq.cmake)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)
find_dependency(Threads)
include("${CMAKE_CURRENT_LIST_DIR}/azmqTargets.cmake")
Loading