bpo-45747: Detect gdbm/dbm dependencies in configure (GH-29467)

Co-authored-by: Erlend Egeberg Aasland <erlend.aasland@innova.no>
This commit is contained in:
Christian Heimes 2021-11-10 21:26:55 +02:00 committed by GitHub
parent c1323d4b8c
commit 0a9f69539b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 497 additions and 262 deletions

339
configure vendored
View file

@ -10822,6 +10822,340 @@ else
TCLTK_LIBS="$with_tcltk_libs"
fi
# check for _gdbmmodulec dependencies
for ac_header in gdbm.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "gdbm.h" "ac_cv_header_gdbm_h" "$ac_includes_default"
if test "x$ac_cv_header_gdbm_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GDBM_H 1
_ACEOF
LIBS_SAVE=$LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5
$as_echo_n "checking for gdbm_open in -lgdbm... " >&6; }
if ${ac_cv_lib_gdbm_gdbm_open+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgdbm $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char gdbm_open ();
int
main ()
{
return gdbm_open ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_gdbm_gdbm_open=yes
else
ac_cv_lib_gdbm_gdbm_open=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5
$as_echo "$ac_cv_lib_gdbm_gdbm_open" >&6; }
if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGDBM 1
_ACEOF
LIBS="-lgdbm $LIBS"
fi
LIBS=$LIBS_SAVE
fi
done
# check for _dbmmodule.c dependencies
for ac_header in ndbm.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "ndbm.h" "ac_cv_header_ndbm_h" "$ac_includes_default"
if test "x$ac_cv_header_ndbm_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_NDBM_H 1
_ACEOF
LIBS_SAVE="$LIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dbm_open in -lndbm" >&5
$as_echo_n "checking for dbm_open in -lndbm... " >&6; }
if ${ac_cv_lib_ndbm_dbm_open+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lndbm $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char dbm_open ();
int
main ()
{
return dbm_open ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_ndbm_dbm_open=yes
else
ac_cv_lib_ndbm_dbm_open=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ndbm_dbm_open" >&5
$as_echo "$ac_cv_lib_ndbm_dbm_open" >&6; }
if test "x$ac_cv_lib_ndbm_dbm_open" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBNDBM 1
_ACEOF
LIBS="-lndbm $LIBS"
fi
LIBS="$LIBS_SAVE"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dbm_open in -lgdbm_compat" >&5
$as_echo_n "checking for dbm_open in -lgdbm_compat... " >&6; }
if ${ac_cv_lib_gdbm_compat_dbm_open+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgdbm_compat $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char dbm_open ();
int
main ()
{
return dbm_open ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_gdbm_compat_dbm_open=yes
else
ac_cv_lib_gdbm_compat_dbm_open=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_compat_dbm_open" >&5
$as_echo "$ac_cv_lib_gdbm_compat_dbm_open" >&6; }
if test "x$ac_cv_lib_gdbm_compat_dbm_open" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGDBM_COMPAT 1
_ACEOF
LIBS="-lgdbm_compat $LIBS"
fi
LIBS="$LIBS_SAVE"
fi
done
# "gdbm-ndbm.h" and "gdbm/ndbm.h" are both normalized to "gdbm_ndbm_h"
# unset ac_cv_header_gdbm_ndbm_h to prevent false positive cache hits.
{ ac_cv_header_gdbm_ndbm_h=; unset ac_cv_header_gdbm_ndbm_h;}
if ${ac_cv_header_gdbm_slash_ndbm_h+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_fn_c_check_header_mongrel "$LINENO" "gdbm/ndbm.h" "ac_cv_header_gdbm_ndbm_h" "$ac_includes_default"
if test "x$ac_cv_header_gdbm_ndbm_h" = xyes; then :
ac_cv_header_gdbm_slash_ndbm_h=yes
else
ac_cv_header_gdbm_slash_ndbm_h=no
fi
fi
if test "x$ac_cv_header_gdbm_slash_ndbm_h" = xyes; then :
$as_echo "#define HAVE_GDBM_NDBM_H 1" >>confdefs.h
fi
{ ac_cv_header_gdbm_ndbm_h=; unset ac_cv_header_gdbm_ndbm_h;}
if ${ac_cv_header_gdbm_dash_ndbm_h+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_fn_c_check_header_mongrel "$LINENO" "gdbm-ndbm.h" "ac_cv_header_gdbm_ndbm_h" "$ac_includes_default"
if test "x$ac_cv_header_gdbm_ndbm_h" = xyes; then :
ac_cv_header_gdbm_dash_ndbm_h=yes
else
ac_cv_header_gdbm_dash_ndbm_h=no
fi
fi
if test "x$ac_cv_header_gdbm_dash_ndbm_h" = xyes; then :
$as_echo "#define HAVE_GDBM_DASH_NDBM_H 1" >>confdefs.h
fi
{ ac_cv_header_gdbm_ndbm_h=; unset ac_cv_header_gdbm_ndbm_h;}
if test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm_h" = yes; then
LIBS_SAVE="$LIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dbm_open in -lgdbm_compat" >&5
$as_echo_n "checking for dbm_open in -lgdbm_compat... " >&6; }
if ${ac_cv_lib_gdbm_compat_dbm_open+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgdbm_compat $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char dbm_open ();
int
main ()
{
return dbm_open ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_gdbm_compat_dbm_open=yes
else
ac_cv_lib_gdbm_compat_dbm_open=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_compat_dbm_open" >&5
$as_echo "$ac_cv_lib_gdbm_compat_dbm_open" >&6; }
if test "x$ac_cv_lib_gdbm_compat_dbm_open" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGDBM_COMPAT 1
_ACEOF
LIBS="-lgdbm_compat $LIBS"
fi
LIBS="$LIBS_SAVE"
fi
# Check for libdb >= 5 with dbm_open()
# db.h re-defines the name of the function
for ac_header in db.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default"
if test "x$ac_cv_header_db_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_DB_H 1
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libdb" >&5
$as_echo_n "checking for libdb... " >&6; }
if ${ac_cv_have_libdb+:} false; then :
$as_echo_n "(cached) " >&6
else
LIBS_SAVE="$LIBS"
LIBS="$LIBS -ldb"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define DB_DBM_HSEARCH 1
#include <db.h>
#if DB_VERSION_MAJOR < 5
#error "dh.h: DB_VERSION_MAJOR < 5 is not supported."
#endif
int
main ()
{
DBM *dbm = dbm_open(NULL, 0, 0)
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_have_libdb=yes
else
ac_cv_have_libdb=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS="$LIBS_SAVE"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_libdb" >&5
$as_echo "$ac_cv_have_libdb" >&6; }
if test "x$ac_cv_have_libdb" = xyes; then :
$as_echo "#define HAVE_LIBDB 1" >>confdefs.h
fi
fi
done
# Check for --with-dbmliborder
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dbmliborder" >&5
$as_echo_n "checking for --with-dbmliborder... " >&6; }
@ -10833,12 +11167,15 @@ if test x$with_dbmliborder = xyes
then
as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:..." "$LINENO" 5
else
for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
as_save_IFS=$IFS
IFS=:
for db in $with_dbmliborder; do
if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
then
as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:..." "$LINENO" 5
fi
done
IFS=$as_save_IFS
fi
fi