]> the.earth.li Git - onak.git/commitdiff
Add CMake checking for Berkeley DB
authorJonathan McDowell <noodles@earth.li>
Fri, 8 Sep 2023 13:52:56 +0000 (14:52 +0100)
committerJonathan McDowell <noodles@earth.li>
Fri, 8 Sep 2023 13:52:56 +0000 (14:52 +0100)
Rather than hard coding the fact we build in Berkeley DB support,
actually check for the existence of the library and only build it if we
find it.

cmake/FindBDB.cmake [new file with mode: 0644]
keydb/CMakeLists.txt

diff --git a/cmake/FindBDB.cmake b/cmake/FindBDB.cmake
new file mode 100644 (file)
index 0000000..aa82c1a
--- /dev/null
@@ -0,0 +1,24 @@
+# No pkg-config support in Berkeley DB, so try to find it manually
+
+set(BDB_PREFIX "" CACHE PATH "path ")
+
+find_path(BDB_INCLUDE_DIR db.h
+       PATHS ${BDB_PREFIX}/include /usr/include /usr/local/include)
+
+find_library(BDB_LIBRARY NAMES db
+       PATHS ${BDB_PREFIX}/lib /usr/lib /usr/local/lib)
+
+if(BDB_INCLUDE_DIR AND BDB_LIBRARY)
+       get_filename_component(BDB_LIBRARY_DIR ${BDB_LIBRARY} PATH)
+       set(BDB_FOUND TRUE)
+endif()
+
+if(BDB_FOUND)
+       if(NOT BDB_FIND_QUIETLY)
+               MESSAGE(STATUS "Found Berkeley DB: ${BDB_LIBRARY}")
+       endif()
+elseif(BDB_FOUND)
+       if(BDB_FIND_REQUIRED)
+               message(FATAL_ERROR "Could not find Berkeley DB")
+       endif()
+endif()
index 35911f6421c7e4fcb1d92328c6108951a6899f64..3d09dc4b065acb0ea9f60beb7bb1e6f7fe0ae9ed 100644 (file)
@@ -4,8 +4,11 @@
 set(BACKENDS "file" "fs" "keyring" "stacked")
 
 # DB4 backend (add check for existence)
-LIST(APPEND BACKENDS db4)
-set(BACKEND_db4_LIBS db-5.3)
+find_package(BDB)
+if (BDB_FOUND)
+       LIST(APPEND BACKENDS db4)
+       set(BACKEND_db4_LIBS db)
+endif()
 
 # HKP backend - needs libcurl
 pkg_check_modules(CURL libcurl)