X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/d7d8ed7f193d8aa37b7c4450c033384b80a02942..0d2a5aeeb4120999afc79d06619d90e26e2fec5c:/configure.ac diff --git a/configure.ac b/configure.ac index d9712fa..bc93f4b 100644 --- a/configure.ac +++ b/configure.ac @@ -7,48 +7,70 @@ AC_PROG_CC AC_C_BIGENDIAN -AC_ARG_ENABLE(backend,AC_HELP_STRING([--enable-backend=],[Choose the backend database to use. Defaults to db4.]), [], [enable_backend="db4"]) +dnl We should always have these backends available. +backends="file fs keyd" -AC_ARG_ENABLE(keyd,AC_HELP_STRING([--enable-keyd],[Use keyd as the DB backend.]), [], []) - -AC_MSG_CHECKING([which key database backend to use]) -AC_MSG_RESULT([$enable_backend]) -AC_CHECK_FILE([$srcdir/keydb_$enable_backend.c], ,AC_MSG_ERROR([non existent key database backend $enable_backend])) +AC_CHECK_LIB(pq, PQsetdbLogin,[have_libpq="yes" backends="$backends pg"],have_libpq="no") -if test "x$enable_backend" = "xdb4" -then - AC_CHECK_HEADER(db.h, have_db_h="yes", have_db_h="no") - AC_MSG_CHECKING(for libdb version in db.h) - printf "#include \nDB_VERSION_MAJOR DB_VERSION_MINOR\n" >conftest.c - set `eval $ac_cpp conftest.c | egrep '^ *[[0-9]] *'`; v="$1"; vv="$2" - AC_MSG_RESULT($v.$vv) - if test "$v" -ne 4; then - AC_MSG_ERROR([ * onak requires libdb version 4]) - fi +AC_CHECK_HEADER(db.h, have_db_h="yes", have_db_h="no") +AC_MSG_CHECKING(for libdb version in db.h) +printf "#include \nDB_VERSION_MAJOR DB_VERSION_MINOR\n" >conftest.c +set `eval $ac_cpp conftest.c | egrep '^ *[[0-9]] *'`; v="$1"; vv="$2" +AC_MSG_RESULT($v.$vv) +if test "$v" -eq 4; then for db in "db-$v.$vv" "db$v.$vv" "db-$v" "db$v" "db"; do AC_MSG_CHECKING(for db_create in lib$db) oldLIBS="$LIBS" LIBS="$LIBS -l$db" + db4libs="-l$db" AC_TRY_LINK([#include ], db_create(0, 0, 0), have_libdb="yes", have_libdb="no") AC_MSG_RESULT($have_libdb) - if test "$have_libdb" != "no"; then break; fi LIBS="$oldLIBS" + if test "$have_libdb" != "no"; then break; fi done +fi +if test "$have_libdb" = "yes" -a "$have_db_h" = "yes"; then + AC_DEFINE(HAVE_LIBDB4, 1, [libdb found]) + backends="$backends db4" +fi + +AC_MSG_CHECKING(available backends) +AC_MSG_RESULT($backends) + +AC_ARG_ENABLE(backend,AC_HELP_STRING([--enable-backend=],[Choose the backend database to use. Defaults to dynamic.]), [], [enable_backend="dynamic"]) + +AC_ARG_ENABLE(keyd,AC_HELP_STRING([--enable-keyd],[Use keyd as the DB backend.]), [], []) + +AC_MSG_CHECKING([which key database backend to use]) +AC_MSG_RESULT([$enable_backend]) +AC_CHECK_FILE([$srcdir/keydb_$enable_backend.c], ,AC_MSG_ERROR([non existent key database backend $enable_backend])) + +if test "x$enable_backend" = "xdb4" +then if test "$have_libdb" = "no" -o "$have_db_h" = "no"; then AC_MSG_ERROR(libdb not found.) fi - AC_DEFINE(HAVE_LIBDB, 1, [libdb found]) + LIBS="$LIBS $db4libs" else if test "x$enable_backend" = "xpg" then - AC_CHECK_LIB(pq, PQsetdbLogin,, - AC_MSG_ERROR([cannot compile PostgreSQL backend without libpq])) + if test "$have_libpq" = "no"; then + AC_MSG_ERROR(libpq not found.) + fi + LIBS="$LIBS -lpq" fi fi -AC_SUBST(DBTYPE, $enable_backend) +dnl If we are explicitly told which backend to use, only build that one. +if test "x$enable_backend" = "xdb4" +then + backend="$enable_backend" +fi +AC_SUBST(DBTYPE, $enable_backend) +AC_SUBST(DB4LIBS, $db4libs) AC_SUBST(KEYD, $enable_keyd) +AC_SUBST(BACKENDS, $backends) AC_CONFIG_FILES(Makefile)