2020-06-02 15:46:51 +02:00
cmake_minimum_required ( VERSION 3.10 ) # bionic's cmake version
find_program ( CCACHE_PROGRAM ccache )
if ( CCACHE_PROGRAM )
set_property ( GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}" )
endif ( )
2021-10-22 02:03:19 +02:00
project ( pyoxenmq
V E R S I O N 1 . 0 . 0
D E S C R I P T I O N " p y t h o n i n t e r f a c e t o O x e n M Q "
2020-06-02 15:46:51 +02:00
L A N G U A G E S C X X )
2021-10-22 05:45:15 +02:00
set ( CMAKE_CXX_STANDARD 17 )
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
set ( CMAKE_CXX_EXTENSIONS OFF )
2020-06-02 15:50:53 +02:00
2020-06-02 15:46:51 +02:00
option ( SUBMODULE_CHECK "Enables checking that vendored library submodules are up to date" ON )
if ( SUBMODULE_CHECK )
find_package ( Git )
if ( GIT_FOUND )
function ( check_submodule relative_path )
execute_process ( COMMAND git rev-parse "HEAD" WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } / ${ relative_path } OUTPUT_VARIABLE localHead )
execute_process ( COMMAND git rev-parse "HEAD:${relative_path}" WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } OUTPUT_VARIABLE checkedHead )
string ( COMPARE EQUAL "${localHead}" "${checkedHead}" upToDate )
if ( upToDate )
message ( STATUS "Submodule '${relative_path}' is up-to-date" )
else ( )
message ( FATAL_ERROR "Submodule '${relative_path}' is not up-to-date. Please update with\ngit submodule update --init --recursive\nor run cmake with -DSUBMODULE_CHECK=OFF" )
endif ( )
endfunction ( )
check_submodule ( external/pybind11 )
2021-02-01 16:48:27 +01:00
check_submodule ( external/oxen-mq )
2020-06-02 15:46:51 +02:00
endif ( )
endif ( )
add_subdirectory ( external/pybind11 )
2020-11-09 14:32:10 +01:00
2021-10-22 02:03:19 +02:00
pybind11_add_module ( oxenmq MODULE
s r c / b e n c o d e . c p p
2021-10-22 05:45:15 +02:00
s r c / o x e n m q . c p p
2021-10-22 02:03:19 +02:00
s r c / m o d u l e . c p p
)
2021-10-22 05:45:15 +02:00
if ( TARGET oxenmq::oxenmq )
target_link_libraries ( pyoxenmq PRIVATE oxenmq::oxenmq )
else ( )
include ( FindPkgConfig )
pkg_check_modules ( oxenmq REQUIRED IMPORTED_TARGET liboxenmq>=1.2.8 )
target_link_libraries ( oxenmq PRIVATE PkgConfig::oxenmq )
endif ( )