Skip to content
Merged
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
4 changes: 2 additions & 2 deletions .github/release-tag.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"message": "xpro version 4.7.1.4 tag",
"tag": "xpv4.7.1.4"
"message": "xpro version 4.11.0.1 tag",
"tag": "xpv4.11.0.1"
}
9 changes: 3 additions & 6 deletions .github/workflows/xpbuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,12 @@ jobs:
uses: externpro/externpro/.github/workflows/build-linux.yml@26.01.1
secrets:
automation_token: ${{ secrets.GHCR_TOKEN }}
with:
cmake_workflow_preset_suffix: Release
with: {}
macos:
uses: externpro/externpro/.github/workflows/build-macos.yml@26.01.1
secrets: inherit
with:
cmake_workflow_preset_suffix: Release
with: {}
windows:
uses: externpro/externpro/.github/workflows/build-windows.yml@26.01.1
secrets: inherit
with:
cmake_workflow_preset_suffix: Release
with: {}
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@

# Build directory
*build/

# externpro
.env
_bld*/
docker-compose.override.yml
54 changes: 44 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.11)
cmake_minimum_required(VERSION 3.11...4.3)

list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Expand All @@ -8,7 +8,18 @@ include (DetectCPPZMQVersion)
project(cppzmq VERSION ${DETECTED_CPPZMQ_VERSION})

if (NOT TARGET libzmq AND NOT TARGET libzmq-static)
find_package(ZeroMQ QUIET)
if(COMMAND xpFindPkg)
find_package(libzmq)
set(ZeroMQ_FOUND TRUE)
set(_libzmq libzmq::libzmq)
set(_libzmqStatic libzmq::libzmq-static)
set(installTargets cppzmq-static)
else()
find_package(ZeroMQ QUIET)
set(_libzmq libzmq)
set(_libzmqStatic libzmq-static)
set(installTargets cppzmq cppzmq-static)
endif()

# libzmq autotools install: fallback to pkg-config
if(NOT ZeroMQ_FOUND)
Expand All @@ -22,7 +33,7 @@ if (NOT TARGET libzmq AND NOT TARGET libzmq-static)
message(FATAL_ERROR "ZeroMQ was not found, neither as a CMake package nor via pkg-config")
endif()

if (ZeroMQ_FOUND AND NOT (TARGET libzmq OR TARGET libzmq-static))
if (ZeroMQ_FOUND AND NOT (TARGET ${_libzmq} OR TARGET ${_libzmqStatic}))
message(FATAL_ERROR "ZeroMQ version not supported!")
endif()
endif()
Expand All @@ -37,30 +48,49 @@ set(CPPZMQ_HEADERS
foreach (target cppzmq cppzmq-static)
add_library(${target} INTERFACE)
target_include_directories(${target} INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>)
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
endforeach()

target_link_libraries(cppzmq INTERFACE libzmq)
target_link_libraries(cppzmq-static INTERFACE libzmq-static)
if(TARGET ${_libzmq})
target_link_libraries(cppzmq INTERFACE ${_libzmq})
endif()
if(TARGET ${_libzmqStatic})
target_link_libraries(cppzmq-static INTERFACE ${_libzmqStatic})
endif()

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(TARGETS cppzmq cppzmq-static
set(targetsFile ${PROJECT_NAME}Targets)
if(COMMAND xpExternPackage)
xpExternPackage(TARGETS_FILE ${targetsFile} EXPORT ${PROJECT_NAME}-targets
LIBRARIES ${installTargets} DEFAULT_TARGETS cppzmq-static
BASE v${cppzmq_VERSION} XPDIFF "patch"
WEB "https://zeromq.org/" UPSTREAM "github.com/zeromq/cppzmq"
DESC "header-only C++ binding for libzmq"
LICENSE "[MPL-2.0](http://wiki.zeromq.org/area:licensing 'Mozilla Public License 2.0')"
)
set(nSpace ${PROJECT_NAME}::)
set(nameSpace NAMESPACE ${nSpace})
elseif(NOT DEFINED CMAKE_INSTALL_CMAKEDIR)
set(CMAKE_INSTALL_CMAKEDIR share/cmake/${PROJECT_NAME})
endif()

install(TARGETS ${installTargets}
EXPORT ${PROJECT_NAME}-targets)

install(FILES ${CPPZMQ_HEADERS}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

# GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share".
set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}" CACHE STRING "install path for cppzmqConfig.cmake")
set(CPPZMQ_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_CMAKEDIR}" CACHE STRING "install path for cppzmqConfig.cmake")

configure_file(libzmq-pkg-config/FindZeroMQ.cmake
libzmq-pkg-config/FindZeroMQ.cmake
COPYONLY)

export(EXPORT ${PROJECT_NAME}-targets
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake")
FILE "${CMAKE_CURRENT_BINARY_DIR}/${targetsFile}.cmake")
configure_package_config_file(${PROJECT_NAME}Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})
Expand All @@ -78,17 +108,21 @@ set(CMAKE_SIZEOF_VOID_P ${CPPZMQ_SIZEOF_VOID_P})

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cppzmq.pc.in
${CMAKE_CURRENT_BINARY_DIR}/cppzmq.pc @ONLY)
if(NOT COMMAND xpExternPackage)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cppzmq.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()

install(EXPORT ${PROJECT_NAME}-targets
FILE ${PROJECT_NAME}Targets.cmake
FILE ${targetsFile}.cmake ${nameSpace}
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})
if(NOT COMMAND xpExternPackage)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}/libzmq-pkg-config)
endif()

option(CPPZMQ_BUILD_TESTS "Whether or not to build the tests" ON)

Expand Down
1 change: 0 additions & 1 deletion CMakePresetsBase.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
"hidden": true,
"binaryDir": "${sourceDir}/_bld-${presetName}",
"cacheVariables": {
"CPPZMQ_BUILD_TESTS": "OFF",
"CMAKE_EXPERIMENTAL_GENERATE_SBOM": "ca494ed3-b261-4205-a01f-603c95e4cae0"
}
}
Expand Down
6 changes: 3 additions & 3 deletions cppzmqConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
#
# ::
#
# cppzmq-static
# cppzmq
# @nSpace@cppzmq-static
# @nSpace@cppzmq
#
# This module sets the following variables in your project::
#
Expand All @@ -31,6 +31,6 @@ endif()

if(NOT TARGET @PROJECT_NAME@)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
get_target_property(@PROJECT_NAME@_INCLUDE_DIR cppzmq INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(@PROJECT_NAME@_INCLUDE_DIR @nSpace@cppzmq INTERFACE_INCLUDE_DIRECTORIES)
endif()

8 changes: 7 additions & 1 deletion tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,17 @@ add_executable(
timers.cpp
)

if(COMMAND xpExternPackage)
set(cppzmq_tgt cppzmq-static)
else()
set(cppzmq_tgt cppzmq)
endif()

target_include_directories(unit_tests PUBLIC ${CATCH_MODULE_PATH})
target_link_libraries(
unit_tests
PRIVATE Catch2::Catch2WithMain
PRIVATE cppzmq
PRIVATE ${cppzmq_tgt}
PRIVATE ${CMAKE_THREAD_LIBS_INIT}
)

Expand Down