]> the.earth.li Git - onak.git/blobdiff - keydb/CMakeLists.txt
Move key database backends into their own directory
[onak.git] / keydb / CMakeLists.txt
diff --git a/keydb/CMakeLists.txt b/keydb/CMakeLists.txt
new file mode 100644 (file)
index 0000000..35911f6
--- /dev/null
@@ -0,0 +1,61 @@
+# Key database backends
+
+# These have no dependencies and can always be compiled
+set(BACKENDS "file" "fs" "keyring" "stacked")
+
+# DB4 backend (add check for existence)
+LIST(APPEND BACKENDS db4)
+set(BACKEND_db4_LIBS db-5.3)
+
+# HKP backend - needs libcurl
+pkg_check_modules(CURL libcurl)
+if (CURL_FOUND)
+       LIST(APPEND BACKENDS hkp)
+       set(BACKEND_hkp_INC ${CURL_INCLUDE_DIRS})
+       set(BACKEND_hkp_LIBS ${CURL_LIBRARIES})
+endif()
+
+# PostgreSQL backend - needs libpq
+pkg_check_modules(POSTGRESQL libpq)
+if (POSTGRESQL_FOUND)
+       LIST(APPEND BACKENDS pg)
+       set(BACKEND_pg_INC ${POSTGRESQL_INCLUDE_DIRS})
+       set(BACKEND_pg_LIBS ${POSTGRESQL_LIBRARIES})
+endif()
+
+# keyd backend - can be disabled entirely
+if (KEYD STREQUAL "ON")
+       LIST(APPEND BACKENDS keyd)
+
+       add_executable(keyd keyd.c)
+       target_link_libraries(keyd libonak)
+       add_executable(keydctl keydctl.c ../onak-conf.c)
+       target_link_libraries(keydctl libonak)
+       target_compile_definitions(keydctl PRIVATE
+               CONFIGDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
+
+       pkg_check_modules(SYSTEMD libsystemd)
+       if (SYSTEMD_FOUND)
+               set(HAVE_SYSTEMD true)
+               target_include_directories(keyd SYSTEM PUBLIC
+                       ${SYSTEMD_INCLUDE_DIRS})
+               target_link_libraries(keyd ${SYSTEMD_LIBRARIES})
+       endif()
+
+       install(TARGETS keydctl RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       install(TARGETS keyd RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})
+       install(FILES keyd.8 keydctl.8
+               DESTINATION ${CMAKE_INSTALL_MANDIR}/man8/)
+endif()
+
+if (DBTYPE STREQUAL "dynamic")
+       foreach(BACKEND IN LISTS BACKENDS)
+               add_library(keydb_${BACKEND} SHARED keydb_${BACKEND}.c)
+               target_include_directories(keydb_${BACKEND} SYSTEM PUBLIC
+                       ${BACKEND_${BACKEND}_INC})
+               target_link_libraries(keydb_${BACKEND} libonak
+                       ${BACKEND_${BACKEND}_LIBS})
+               install(TARGETS keydb_${BACKEND} LIBRARY DESTINATION
+                       ${CMAKE_INSTALL_LIBDIR}/onak/backends/)
+       endforeach(BACKEND)
+endif()