|
2 | 2 | # |
3 | 3 | # SPDX-License-Identifier: Apache-2.0 |
4 | 4 |
|
| 5 | +if(ZeroMQ_FOUND) |
| 6 | + return() |
| 7 | +endif() |
5 | 8 |
|
6 | | -if(NOT ZeroMQ_FOUND) |
7 | | - if((NOT ZeroMQ_ROOT) AND (NOT (ENV{ZeroMQ_ROOT} STREQUAL ""))) |
8 | | - set(ZeroMQ_ROOT "$ENV{ZeroMQ_ROOT}") |
9 | | - endif() |
10 | | - if(ZeroMQ_ROOT) |
11 | | - set(ZeroMQ_INCLUDE_OPTS HINTS ${ZeroMQ_ROOT}/include NO_DEFAULT_PATHS) |
12 | | - set(ZeroMQ_LIBRARY_OPTS |
13 | | - HINTS ${ZeroMQ_ROOT}/lib ${ZeroMQ_ROOT}/lib64 |
14 | | - NO_DEFAULT_PATHS |
15 | | - ) |
16 | | - endif() |
| 9 | +set(_zmq_version_exact) |
| 10 | +if(ZeroMQ_FIND_VERSION_EXACT) |
| 11 | + list(APPEND _zmq_version_exact EXACT) |
| 12 | +endif() |
17 | 13 |
|
18 | | - find_path(ZeroMQ_INCLUDE_DIR zmq.h ${ZeroMQ_INCLUDE_OPTS}) |
19 | | - find_library(ZeroMQ_LIBRARY zmq ${ZeroMQ_LIBRARY_OPTS}) |
20 | | - if(ZeroMQ_INCLUDE_DIR) |
21 | | - file(STRINGS ${ZeroMQ_INCLUDE_DIR}/zmq.h _ver_strings |
22 | | - REGEX "ZMQ_VERSION_[^ ]* [0-9]+" |
23 | | - ) |
24 | | - foreach(v IN LISTS _ver_strings) |
25 | | - string(REGEX MATCH "ZMQ_VERSION_([^ ]+) ([0-9]+)" v "${v}") |
26 | | - set(ZeroMQ_VERSION_${CMAKE_MATCH_1} ${CMAKE_MATCH_2}) |
27 | | - endforeach() |
28 | | - set(ZeroMQ_VERSION |
29 | | - ${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH} |
30 | | - ) |
31 | | - endif() |
| 14 | +set(_zmq_quiet) |
| 15 | +if(ZeroMQ_FIND_QUIET) |
| 16 | + list(APPEND _zmq_quiet QUIET) |
| 17 | +endif() |
| 18 | + |
| 19 | +set(_zmq_required) |
| 20 | +if(ZeroMQ_FIND_REQUIRED) |
| 21 | + set(_zmq_required "REQUIRED") |
| 22 | +endif() |
32 | 23 |
|
33 | | - include(FindPackageHandleStandardArgs) |
34 | | - find_package_handle_standard_args(ZeroMQ |
35 | | - FOUND_VAR ZeroMQ_FOUND |
36 | | - VERSION_VAR ZeroMQ_VERSION |
37 | | - REQUIRED_VARS ZeroMQ_LIBRARY ZeroMQ_INCLUDE_DIR |
38 | | - ) |
39 | | - if(ZeroMQ_FOUND) |
40 | | - set(ZeroMQ_INCLUDE_DIRS ${ZeroMQ_INCLUDE_DIR}) |
41 | | - set(ZeroMQ_LIBRARIES ${ZeroMQ_LIBRARY}) |
42 | | - if(ZeroMQ_FOUND AND NOT TARGET ZeroMQ::ZMQ) |
43 | | - add_library(ZeroMQ::ZMQ UNKNOWN IMPORTED) |
44 | | - set_target_properties(ZeroMQ::ZMQ PROPERTIES |
45 | | - IMPORTED_LOCATION "${ZeroMQ_LIBRARY}" |
46 | | - INTERFACE_INCLUDE_DIRECTORIES "${ZeroMQ_INCLUDE_DIR}" |
47 | | - ) |
48 | | - endif() |
| 24 | +find_package(ZeroMQ ${ZeroMQ_FIND_VERSION} ${_zmq_version_exact} ${_zmq_quiet} CONFIG) |
| 25 | + |
| 26 | +# If native package was found, stop here |
| 27 | +if(TARGET libzmq) |
| 28 | + add_library(ZeroMQ::ZMQ ALIAS libzmq) |
| 29 | + return() |
| 30 | +endif() |
| 31 | + |
| 32 | +# pkg-config fallback |
| 33 | +find_package(PkgConfig ${_zmq_quiet} ${_zmq_required}) |
| 34 | +if(NOT PkgConfig_FOUND) |
| 35 | + return() |
| 36 | +endif() |
| 37 | + |
| 38 | +# Version handling |
| 39 | +if(ZeroMQ_FIND_VERSION) |
| 40 | + if(ZeroMQ_FIND_VERSION_EXACT) |
| 41 | + pkg_check_modules(ZMQ ${_zmq_quiet} ${_zmq_required} IMPORTED_TARGET libzmq=${ZeroMQ_FIND_VERSION}) |
| 42 | + else() |
| 43 | + pkg_check_modules(ZMQ ${_zmq_quiet} ${_zmq_required} IMPORTED_TARGET libzmq>=${ZeroMQ_FIND_VERSION}) |
49 | 44 | endif() |
| 45 | +else() |
| 46 | + pkg_check_modules(ZMQ ${_zmq_quiet} ${_zmq_required} IMPORTED_TARGET libzmq) |
| 47 | +endif() |
| 48 | + |
| 49 | +# Create alias target to match imported target name of the native package |
| 50 | +if(TARGET PkgConfig::ZMQ) |
| 51 | + add_library(ZeroMQ::ZMQ ALIAS PkgConfig::ZMQ) |
50 | 52 | endif() |
0 commit comments