2020-02-06 01:21:02 +01:00
|
|
|
cmake_minimum_required(VERSION 3.5)
|
|
|
|
|
|
|
|
project(liblokimq CXX)
|
|
|
|
|
2020-03-05 06:00:35 +01:00
|
|
|
include(GNUInstallDirs)
|
|
|
|
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
|
2020-03-02 16:21:52 +01:00
|
|
|
add_library(lokimq
|
2020-02-06 01:21:02 +01:00
|
|
|
lokimq/lokimq.cpp
|
|
|
|
lokimq/bt_serialize.cpp
|
2020-03-02 16:21:52 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
install(
|
|
|
|
FILES lokimq/batch.h
|
|
|
|
lokimq/bt_serialize.h
|
|
|
|
lokimq/hex.h
|
|
|
|
lokimq/lokimq.h
|
|
|
|
lokimq/string_view.h
|
|
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lokimq
|
|
|
|
)
|
|
|
|
|
2020-03-05 06:00:35 +01:00
|
|
|
# We require cppzmq >= 4.3, and versions before 4.3.2 have some security issues, so try to find
|
|
|
|
# >=4.3.2 on the system and, if we don't (or found an old one) build a bundled one.
|
|
|
|
include(FindPkgConfig)
|
|
|
|
pkg_search_module(libzmq QUIET libzmq>=4.3.2)
|
|
|
|
if(NOT libzmq_FOUND)
|
|
|
|
message(STATUS "libzmq >= 4.3.2 not found, building bundled 4.3.2")
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/local-libzmq")
|
|
|
|
include(LocalLibzmq)
|
|
|
|
endif()
|
|
|
|
|
2020-03-02 16:21:52 +01:00
|
|
|
set(CPPZMQ_BUILD_TESTS OFF CACHE BOOL "Disable cppzmq tests")
|
2020-02-06 01:21:02 +01:00
|
|
|
add_subdirectory(cppzmq EXCLUDE_FROM_ALL)
|
|
|
|
|
2020-03-02 16:21:52 +01:00
|
|
|
target_include_directories(lokimq
|
|
|
|
PUBLIC
|
|
|
|
$<INSTALL_INTERFACE:>
|
|
|
|
$<INSTALL_INTERFACE:mapbox-variant/include>
|
|
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
|
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mapbox-variant/include>
|
|
|
|
)
|
2020-02-06 01:21:02 +01:00
|
|
|
|
2020-03-02 16:21:52 +01:00
|
|
|
target_compile_options(lokimq PRIVATE -Wall -Wextra -Werror)
|
2020-03-05 19:52:28 +01:00
|
|
|
set_target_properties(lokimq PROPERTIES
|
|
|
|
CXX_STANDARD 14
|
|
|
|
CXX_STANDARD_REQUIRED ON
|
|
|
|
POSITION_INDEPENDENT_CODE ON
|
|
|
|
)
|
2020-02-06 01:21:02 +01:00
|
|
|
|
|
|
|
target_link_libraries(lokimq PUBLIC cppzmq)
|
|
|
|
|
2020-03-05 21:00:26 +01:00
|
|
|
if(NOT SODIUM_LIBRARIES)
|
|
|
|
pkg_search_module(SODIUM REQUIRED libsodium)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Really want to just use SODIUM_LINK_LIBRARIES here, but that isn't in older cmake:
|
|
|
|
find_library(libsodium_link_libs NAMES ${SODIUM_LIBRARIES} PATHS ${SODIUM_LIBRARY_DIRS})
|
|
|
|
target_link_libraries(lokimq PRIVATE ${libsodium_link_libs})
|
|
|
|
|
|
|
|
target_include_directories(lokimq PRIVATE ${SODIUM_INCLUDE_DIRS})
|
|
|
|
|
2020-03-01 19:28:50 +01:00
|
|
|
add_library(lokimq::lokimq ALIAS lokimq)
|
2020-03-02 16:21:52 +01:00
|
|
|
|
|
|
|
export(
|
|
|
|
TARGETS lokimq
|
|
|
|
NAMESPACE lokimq::
|
|
|
|
FILE lokimqTargets.cmake
|
|
|
|
)
|
|
|
|
install(
|
|
|
|
TARGETS lokimq
|
|
|
|
EXPORT lokimqConfig
|
2020-03-03 20:25:19 +01:00
|
|
|
DESTINATION lib
|
2020-03-02 16:21:52 +01:00
|
|
|
)
|
2020-03-01 19:28:50 +01:00
|
|
|
|
|
|
|
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
|
|
|
set(lokimq_IS_TOPLEVEL_PROJECT TRUE)
|
|
|
|
else()
|
|
|
|
set(lokimq_IS_TOPLEVEL_PROJECT FALSE)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
option(LOKIMQ_BUILD_TESTS "Building and perform lokimq tests" ${lokimq_IS_TOPLEVEL_PROJECT})
|
|
|
|
if(LOKIMQ_BUILD_TESTS)
|
2020-02-06 23:10:26 +01:00
|
|
|
add_subdirectory(tests)
|
|
|
|
endif()
|
|
|
|
|