dnl Find the compiler and linker flags for libcdb.
dnl
dnl Finds the compiler and linker flags for linking with the libcdb library.
dnl Provides the --with-libcdb, --with-libcdb-lib, and --with-libcdb-include
dnl configure options to specify non-standard paths to libcdb libraries.
dnl
dnl Provides the macros RRA_LIB_CDB and RRA_LIB_CDB_OPTIONAL and sets the
dnl substitution variables CDB_CPPFLAGS, CDB_LDFLAGS, and CDB_LIBS. Also
dnl provides RRA_LIB_CDB_SWITCH to set CPPFLAGS, LDFLAGS, and LIBS to include
dnl the TinyCDB libraries, saving the current values, and RRA_LIB_CDB_RESTORE
dnl to restore those settings to before the last RRA_LIB_CDB_SWITCH. Defines
dnl HAVE_CDB and sets rra_use_CDB to true if the library is found.
dnl
dnl Depends on the lib-helper.m4 framework.
dnl
dnl The canonical version of this file is maintained in the rra-c-util
dnl package, available at .
dnl
dnl Written by Russ Allbery
dnl Copyright 2013
dnl The Board of Trustees of the Leland Stanford Junior University
dnl
dnl This file is free software; the authors give unlimited permission to copy
dnl and/or distribute it, with or without modifications, as long as this
dnl notice is preserved.
dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to
dnl versions that include the TinyCDB flags. Used as a wrapper, with
dnl RRA_LIB_CDB_RESTORE, around tests.
AC_DEFUN([RRA_LIB_CDB_SWITCH], [RRA_LIB_HELPER_SWITCH([CDB])])
dnl Restore CPPFLAGS, LDFLAGS, and LIBS to their previous values (before
dnl RRA_LIB_CDB_SWITCH was called).
AC_DEFUN([RRA_LIB_CDB_RESTORE], [RRA_LIB_HELPER_RESTORE([CDB])])
dnl Checks if the libcdb library is present. The single argument, if "true",
dnl says to fail if the libcdb library could not be found.
AC_DEFUN([_RRA_LIB_CDB_INTERNAL],
[RRA_LIB_HELPER_PATHS([CDB])
RRA_LIB_CDB_SWITCH
AC_CHECK_LIB([cdb], [cdb_init], [CDB_LIBS=-lcdb],
[AS_IF([test x"$1" = xtrue],
[AC_MSG_ERROR([cannot find usable TinyCDB library])])])
AC_CHECK_HEADERS([cdb.h])
RRA_LIB_CDB_RESTORE])
dnl The main macro for packages with mandatory TinyCDB support.
AC_DEFUN([RRA_LIB_CDB],
[RRA_LIB_HELPER_VAR_INIT([CDB])
RRA_LIB_HELPER_WITH([tinycdb], [TinyCDB], [CDB])
_RRA_LIB_CDB_INTERNAL([true])
rra_use_CDB=true
AC_DEFINE([HAVE_CDB], 1, [Define if libcdb is available.])])
dnl The main macro for packages with optional TinyCDB support.
AC_DEFUN([RRA_LIB_CDB_OPTIONAL],
[RRA_LIB_HELPER_VAR_INIT([CDB])
RRA_LIB_HELPER_WITH_OPTIONAL([tinycdb], [TinyCDB], [CDB])
AS_IF([test x"$rra_use_CDB" != xfalse],
[AS_IF([test x"$rra_use_CDB" = xtrue],
[_RRA_LIB_CDB_INTERNAL([true])],
[_RRA_LIB_CDB_INTERNAL([false])])])
AS_IF([test x"$CDB_LIBS" != x],
[rra_use_CDB=true
AC_DEFINE([HAVE_CDB], 1, [Define if libcdb is available.])])])