X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=ed47ba32766625792e3a3b7d2ca348c7e3f834c5;hb=HEAD;hp=eebafdd4ebfb99d1f9494325fe743eaa0b96d38a;hpb=c981a80699901eb3d513a4cc9355574a69016037;p=onak.git diff --git a/CMakeLists.txt b/CMakeLists.txt index eebafdd..ed47ba3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) -project(onak VERSION 0.5.0 LANGUAGES C) +project(onak VERSION 0.6.3 LANGUAGES C) +include(CheckSymbolExists) include(FindPkgConfig) include(GNUInstallDirs) include(TestBigEndian) @@ -22,22 +23,45 @@ option(KEYD set(CMAKE_POSITION_INDEPENDENT_CODE ON) TEST_BIG_ENDIAN(WORDS_BIGENDIAN) +include(CheckCSourceCompiles) +check_c_source_compiles( + " + #include + static void f(__attribute__((unused))) {} + int main(void) { f(); return 0;} + " + HAVE___ATTRIBUTE__UNUSED +) +if (HAVE___ATTRIBUTE__UNUSED) + set(UNUSED_ATTRIB "__attribute__((unused))") +else() + set(UNUSED_ATTRIB "") +endif() + # Pick up a git based version number for development builds find_package(Git) if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") - EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} describe --tags --dirty - OUTPUT_VARIABLE GIT_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE "onak-" "" VERSION ${GIT_VERSION}) + if (EXISTS "${CMAKE_SOURCE_DIR}/.git/refs/tags/onak-0.6.2") + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} describe --tags --dirty + OUTPUT_VARIABLE GIT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE "onak-" "" VERSION ${GIT_VERSION}) + else() + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD + OUTPUT_VARIABLE VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() else() set(VERSION ${PROJECT_VERSION}) endif() # Core objects add_library(libonak STATIC armor.c charfuncs.c cleankey.c cleanup.c decodekey.c - getcgi.c hash.c keyarray.c keyid.c keyindex.c ll.c log.c marshal.c - mem.c merge.c onak-conf.c parsekey.c photoid.c rsa.c sigcheck.c sendsync.c - sha1x.c wordlist.c) + hash.c hash-helper.c key-store.c keyarray.c keyid.c keyindex.c + ll.c log.c marshal.c mem.c merge.c onak-conf.c parsekey.c photoid.c + rsa.c sigcheck.c sendsync.c sha1x.c wordlist.c) set(LIBONAK_LIBRARIES "") # Ideally use Nettle, fall back to our own md5/sha1 routines otherwise @@ -60,6 +84,19 @@ if (GMP_FOUND) target_include_directories(libonak SYSTEM PUBLIC ${GMP_INCLUDE_DIRS} ${HOGWEED_INCLUDE_DIRS}) LIST(APPEND LIBONAK_LIBRARIES ${GMP_LIBRARY} ${HOGWEED_LIBRARIES}) + + set(CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES ${NETTLE_LIBRARIES} ${HOGWEED_LIBRARIES}) + # API change in later version of Nettle + CHECK_SYMBOL_EXISTS(nettle_get_secp_256r1 "nettle/ecc-curve.h" HAVE_NETTLE_GET_SECP_256R1) + CHECK_SYMBOL_EXISTS(nettle_get_secp_384r1 "nettle/ecc-curve.h" HAVE_NETTLE_GET_SECP_384R1) + CHECK_SYMBOL_EXISTS(nettle_get_secp_521r1 "nettle/ecc-curve.h" HAVE_NETTLE_GET_SECP_521R1) +endif() + +# keyd will use this for socket activation, if it's available +pkg_check_modules(SYSTEMD libsystemd) +if (SYSTEMD_FOUND) + set(HAVE_SYSTEMD true) endif() # Build files that have substitutions in them