build: clean up AC_PACKAGE_WANT_GDBM

The AC_PACKAGE_WANT_GDBM macro is not easily read. It's not doing
anything particularly complex other than working through a set of
alternatives for headers and libraries.

This patch cleans it up to be more readable.  We also only attempt
to check in libgdbm_compat if the checks in libgdbm fail.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Jeff Mahoney
2018-03-15 17:54:54 -04:00
committed by Eryu Guan
parent 156dafb888
commit 3a670ba142
+50 -27
View File
@@ -1,43 +1,66 @@
AC_DEFUN([AC_PACKAGE_WANT_GDBM],
[ AC_CHECK_HEADER(gdbm-ndbm.h, [ gdbm_ndbm=true; have_db=true ], [ gdbm_ndbm=false; have_db=false ])
[
have_db=
AC_CHECK_HEADER(gdbm-ndbm.h,
[
have_db=true
AC_DEFINE(HAVE_GDBM_NDBM_H, [1],
[Define to 1 if you have the <gdbm-ndbm.h> header file.])
])
if test $gdbm_ndbm = true; then
AC_DEFINE(HAVE_GDBM_NDBM_H, [1], [Define to 1 if you have the <gdbm-ndbm.h> header file.])
else
if test -z "$have_db"; then
dnl gdbm-ndbm.h and gdbm/ndbm.h map to the same autoconf internal
dnl variable. We need to clear it or this test will be skipped
dnl and the cached result from first test will be used.
AS_UNSET([ac_cv_header_gdbm_ndbm_h])
AC_CHECK_HEADER(gdbm/ndbm.h, [ gdbm_ndbm_=true; have_db=true ], [ gdbm_ndbm_=false; have_db=false ])
if test $gdbm_ndbm_ = true; then
AC_DEFINE(HAVE_GDBM_NDBM_H_, [1], [Define to 1 if you have the <gdbm/ndbm.h> header file.])
else
AC_CHECK_HEADER(gdbm.h, [ gdbm_ndbm_=true; have_db=true ], [ gdbm_ndbm_=false; have_db=false ])
AC_CHECK_HEADER(ndbm.h, [ ndbm_=true ], [ ndbm_=false ])
AC_CHECK_HEADER(gdbm/ndbm.h,
[
have_db=true
AC_DEFINE(HAVE_GDBM_NDBM_H_, [1],
[Define to 1 if you have the <gdbm/ndbm.h> header file.])
])
fi
if test -z "$have_db"; then
AC_CHECK_HEADER(gdbm.h,
[
have_db=true
gdbm_ndbm_=true
], [
have_db=false
gdbm_ndbm_=false
])
AC_CHECK_HEADER(ndbm.h,
[
ndbm_=true
], [
ndbm_=false
])
if test $gdbm_ndbm_ = true; then
if test $ndbm_ = true; then
AC_DEFINE(HAVE_GDBM_H, [1], [Define to 1 if you have both <gdbm.h> and <ndbm.h> header files.])
fi
AC_DEFINE(HAVE_GDBM_H, [1],
[Define to 1 if you have both <gdbm.h> and <ndbm.h> header files.])
fi
fi
fi
if test "$have_db" = true; then
found=false
libgdbm=""
AC_CHECK_LIB(gdbm, dbm_open, found=true, found=false)
AC_CHECK_LIB(gdbm, dbm_fetch,, found=false)
AC_CHECK_LIB(gdbm, dbm_store,, found=false)
AC_CHECK_LIB(gdbm, dbm_close,, found=false)
if test $have_db = true; then
AC_CHECK_LIB(gdbm,dbm_open,found=true,found=false)
AC_CHECK_LIB(gdbm,dbm_fetch,,found=false)
AC_CHECK_LIB(gdbm,dbm_store,,found=false)
AC_CHECK_LIB(gdbm,dbm_close,,found=false)
if test $found = true; then
libgdbm="${libgdbm} -lgdbm"
if test "$found" = true; then
libgdbm="-lgdbm"
else
AC_CHECK_LIB(gdbm_compat,dbm_open,found=true,found=false,-lgdbm)
AC_CHECK_LIB(gdbm_compat,dbm_fetch,,found=false,-lgdbm)
AC_CHECK_LIB(gdbm_compat,dbm_store,,found=false,-lgdbm)
AC_CHECK_LIB(gdbm_compat,dbm_close,,found="false",-lgdbm)
AC_CHECK_LIB(gdbm_compat, dbm_open, found=true, found=false, -lgdbm)
AC_CHECK_LIB(gdbm_compat, dbm_fetch,, found=false, -lgdbm)
AC_CHECK_LIB(gdbm_compat, dbm_store,, found=false, -lgdbm)
AC_CHECK_LIB(gdbm_compat, dbm_close,, found="no", -lgdbm)
if test $found = true ; then
libgdbm="${libgdbm} -lgdbm_compat -lgdbm"
if test "$found" = "true"; then
libgdbm="-lgdbm_compat -lgdbm"
fi
fi
fi