Skip to content

Commit 55ca9c5

Browse files
Anonymous Maartenmadebr
authored andcommitted
CMake: use libsodium if available, else use tweet_nacl
1 parent 5d98e60 commit 55ca9c5

File tree

3 files changed

+65
-19
lines changed

3 files changed

+65
-19
lines changed

CMakeLists.txt

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@ if(APPLE)
99
option(ZMQ_BUILD_FRAMEWORK "Build as OS X framework" ON)
1010
endif()
1111

12-
if(WIN32)
13-
option(WITH_TWEETNACL "Build with tweetnacl" OFF)
14-
else()
15-
option(WITH_TWEETNACL "Build with tweetnacl" ON)
16-
endif()
12+
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}")
13+
find_package(Sodium)
1714

18-
if(WITH_TWEETNACL)
19-
add_definitions(-DHAVE_TWEETNACL -DHAVE_LIBSODIUM)
15+
set(USE_TWEETNACL OFF)
16+
17+
if(SODIUM_FOUND)
18+
add_definitions(-DHAVE_LIBSODIUM)
19+
include_directories(${SODIUM_INCLUDE_DIRS})
20+
else()
21+
set(USE_TWEETNACL ON)
22+
add_definitions(-DHAVE_TWEETNACL)
2023
include_directories(
2124
tweetnacl/contrib/randombytes
2225
tweetnacl/src
@@ -25,16 +28,12 @@ if(WITH_TWEETNACL)
2528
set(TWEETNACL_SOURCES
2629
tweetnacl/src/tweetnacl.c
2730
)
28-
if(WIN32)
29-
else()
31+
32+
if(NOT WIN32)
3033
list(APPEND TWEETNACL_SOURCES tweetnacl/contrib/randombytes/devurandom.c)
3134
endif()
32-
else()
33-
find_library(SODIUM_FOUND sodium)
3435
endif()
3536

36-
37-
3837
set(POLLER "" CACHE STRING "Choose polling system. valid values are
3938
kqueue, epoll, devpoll, poll or select [default=autodetect]")
4039

@@ -502,9 +501,11 @@ foreach(source ${cxx-sources})
502501
list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/src/${source})
503502
endforeach()
504503

505-
foreach(source ${TWEETNACL_SOURCES})
506-
list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/${source})
507-
endforeach()
504+
if(USE_TWEETNACL)
505+
foreach(source ${TWEETNACL_SOURCES})
506+
list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/${source})
507+
endforeach()
508+
endif()
508509

509510
foreach(source ${rc-sources})
510511
list(APPEND sources ${CMAKE_CURRENT_BINARY_DIR}/${source})
@@ -602,7 +603,7 @@ else()
602603
PUBLIC_HEADER "${public_headers}"
603604
VERSION ${ZMQ_VERSION}
604605
SOVERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.0"
605-
OUTPUT_NAME "libzmq")
606+
OUTPUT_NAME "libzmq")
606607
if(ZMQ_BUILD_FRAMEWORK)
607608
set_target_properties(libzmq PROPERTIES
608609
FRAMEWORK TRUE
@@ -623,7 +624,11 @@ else()
623624
OUTPUT_NAME "libzmq-static")
624625
endif()
625626

626-
target_link_libraries(libzmq ${SODIUM_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
627+
target_link_libraries(libzmq ${CMAKE_THREAD_LIBS_INIT})
628+
629+
if(SODIUM_FOUND)
630+
target_link_libraries(libzmq ${SODIUM_LIBRARIES})
631+
endif()
627632
if(HAVE_WS2_32)
628633
target_link_libraries(libzmq ws2_32)
629634
elseif(HAVE_WS2)

FindSodium.cmake

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
################################################################################
2+
# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
3+
# Please refer to the README for information about making permanent changes. #
4+
################################################################################
5+
6+
if (NOT MSVC)
7+
include(FindPkgConfig)
8+
pkg_check_modules(PC_SODIUM "libsodium")
9+
if (NOT PC_SODIUM_FOUND)
10+
pkg_check_modules(PC_SODIUM "sodium")
11+
endif (NOT PC_SODIUM_FOUND)
12+
if (PC_SODIUM_FOUND)
13+
set(SODIUM_INCLUDE_HINTS ${PC_SODIUM_INCLUDE_DIRS} ${PC_SODIUM_INCLUDE_DIRS}/*)
14+
set(SODIUM_LIBRARY_HINTS ${PC_SODIUM_LIBRARY_DIRS} ${PC_SODIUM_LIBRARY_DIRS}/*)
15+
endif()
16+
endif (NOT MSVC)
17+
18+
# some libraries install the headers is a subdirectory of the include dir
19+
# returned by pkg-config, so use a wildcard match to improve chances of finding
20+
# headers and libraries.
21+
find_path(
22+
SODIUM_INCLUDE_DIRS
23+
NAMES sodium.h
24+
HINTS ${SODIUM_INCLUDE_HINTS}
25+
)
26+
27+
find_library(
28+
SODIUM_LIBRARIES
29+
NAMES libsodium sodium
30+
HINTS ${SODIUM_LIBRARY_HINTS}
31+
)
32+
33+
include(FindPackageHandleStandardArgs)
34+
find_package_handle_standard_args(SODIUM DEFAULT_MSG SODIUM_LIBRARIES SODIUM_INCLUDE_DIRS)
35+
mark_as_advanced(SODIUM_FOUND SODIUM_LIBRARIES SODIUM_INCLUDE_DIRS)
36+
37+
################################################################################
38+
# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
39+
# Please refer to the README for information about making permanent changes. #
40+
################################################################################

tests/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ set(tests
5050
test_pub_invert_matching
5151
test_thread_safe
5252
test_client_server
53-
test_sockopt_hwm
53+
test_sockopt_hwm
5454
test_heartbeats
5555
test_poller
5656
)
@@ -83,6 +83,7 @@ foreach(test ${tests})
8383
else()
8484
add_test(NAME ${test} COMMAND ${test})
8585
endif()
86+
set_tests_properties(${test} PROPERTIES TIMEOUT 10)
8687
endforeach()
8788

8889
if(NOT WIN32)

0 commit comments

Comments
 (0)