bpo-45774: Harden SQLite detection (GH-30016)

This commit is contained in:
Erlend Egeberg Aasland 2022-04-05 14:54:47 +02:00 committed by GitHub
parent 0aa8d5cbd8
commit f1606a5ba5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 643 additions and 69 deletions

View File

@ -0,0 +1,2 @@
``configure`` now verifies that all SQLite C APIs needed for the
:mod:`sqlite3` extension module are found.

641
configure generated vendored
View File

@ -1742,8 +1742,8 @@ Optional Features:
--enable-optimizations enable expensive, stable optimizations (PGO, etc.)
(default is no)
--enable-loadable-sqlite-extensions
support loadable extensions in _sqlite module, see
Doc/library/sqlite3.rst (default is no)
support loadable extensions in the sqlite3 module,
see Doc/library/sqlite3.rst (default is no)
--enable-ipv6 enable ipv6 (with ipv4) support, see
Doc/library/socket.rst (default is yes if supported)
--enable-big-digits[=15|30]
@ -12262,56 +12262,22 @@ $as_echo "yes" >&6; }
fi
as_fn_append LIBSQLITE3_CFLAGS ' -I$(srcdir)/Modules/_sqlite'
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
CPPFLAGS="$LIBSQLITE3_CFLAGS $CFLAGS"
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default"
if test "x$ac_cv_header_sqlite3_h" = xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_open_v2 in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_open_v2 in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_open_v2+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_open_v2 ();
int
main ()
{
return sqlite3_open_v2 ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_open_v2=yes
else
ac_cv_lib_sqlite3_sqlite3_open_v2=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_sqlite3_sqlite3_open_v2" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_open_v2" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_open_v2" = xyes; then :
have_sqlite3=yes
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@ -12331,16 +12297,570 @@ main ()
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
have_supported_sqlite3=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_bind_double in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_bind_double in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_bind_double+:} false; then :
$as_echo_n "(cached) " >&6
else
have_supported_sqlite3=no
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_bind_double ();
int
main ()
{
return sqlite3_bind_double ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_bind_double=yes
else
ac_cv_lib_sqlite3_sqlite3_bind_double=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
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_sqlite3_sqlite3_bind_double" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_bind_double" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_bind_double" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_sqlite3=no
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_decltype in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_column_decltype in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_column_decltype+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_column_decltype ();
int
main ()
{
return sqlite3_column_decltype ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_column_decltype=yes
else
ac_cv_lib_sqlite3_sqlite3_column_decltype=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_sqlite3_sqlite3_column_decltype" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_column_decltype" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_column_decltype" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_double in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_column_double in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_column_double+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_column_double ();
int
main ()
{
return sqlite3_column_double ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_column_double=yes
else
ac_cv_lib_sqlite3_sqlite3_column_double=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_sqlite3_sqlite3_column_double" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_column_double" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_column_double" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_complete in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_complete in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_complete+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_complete ();
int
main ()
{
return sqlite3_complete ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_complete=yes
else
ac_cv_lib_sqlite3_sqlite3_complete=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_sqlite3_sqlite3_complete" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_complete" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_complete" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_enable_shared_cache in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_enable_shared_cache in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_enable_shared_cache+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_enable_shared_cache ();
int
main ()
{
return sqlite3_enable_shared_cache ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_enable_shared_cache=yes
else
ac_cv_lib_sqlite3_sqlite3_enable_shared_cache=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_sqlite3_sqlite3_enable_shared_cache" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_enable_shared_cache" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_enable_shared_cache" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_progress_handler in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_progress_handler in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_progress_handler+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_progress_handler ();
int
main ()
{
return sqlite3_progress_handler ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_progress_handler=yes
else
ac_cv_lib_sqlite3_sqlite3_progress_handler=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_sqlite3_sqlite3_progress_handler" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_progress_handler" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_progress_handler" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_result_double in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_result_double in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_result_double+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_result_double ();
int
main ()
{
return sqlite3_result_double ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_result_double=yes
else
ac_cv_lib_sqlite3_sqlite3_result_double=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_sqlite3_sqlite3_result_double" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_result_double" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_result_double" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_set_authorizer in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_set_authorizer in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_set_authorizer+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_set_authorizer ();
int
main ()
{
return sqlite3_set_authorizer ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_set_authorizer=yes
else
ac_cv_lib_sqlite3_sqlite3_set_authorizer=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_sqlite3_sqlite3_set_authorizer" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_set_authorizer" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace_v2 in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_trace_v2 in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_trace_v2+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_trace_v2 ();
int
main ()
{
return sqlite3_trace_v2 ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_trace_v2=yes
else
ac_cv_lib_sqlite3_sqlite3_trace_v2=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_sqlite3_sqlite3_trace_v2" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_trace_v2" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_trace_v2" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_trace in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_trace+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_trace ();
int
main ()
{
return sqlite3_trace ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_trace=yes
else
ac_cv_lib_sqlite3_sqlite3_trace=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_sqlite3_sqlite3_trace" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_trace" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_trace" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_value_double in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_value_double in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_value_double+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $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 sqlite3_value_double ();
int
main ()
{
return sqlite3_value_double ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_sqlite3_sqlite3_value_double=yes
else
ac_cv_lib_sqlite3_sqlite3_value_double=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_sqlite3_sqlite3_value_double" >&5
$as_echo "$ac_cv_lib_sqlite3_sqlite3_value_double" >&6; }
if test "x$ac_cv_lib_sqlite3_sqlite3_value_double" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSQLITE3 1
_ACEOF
LIBS="-lsqlite3 $LIBS"
else
have_supported_sqlite3=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5
$as_echo_n "checking for sqlite3_load_extension in -lsqlite3... " >&6; }
if ${ac_cv_lib_sqlite3_sqlite3_load_extension+:} false; then :
@ -12381,9 +12901,17 @@ if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes; then :
have_sqlite3_load_extension=yes
else
have_sqlite3_load_extension=no
fi
else
have_supported_sqlite3=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
@ -12395,30 +12923,37 @@ LIBS=$save_LIBS
# Check for support for loadable sqlite extensions
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-loadable-sqlite-extensions" >&5
$as_echo_n "checking for --enable-loadable-sqlite-extensions... " >&6; }
# Check whether --enable-loadable-sqlite-extensions was given.
if test "${enable_loadable_sqlite_extensions+set}" = set; then :
enableval=$enable_loadable_sqlite_extensions; if test "x$have_sqlite3_load_extension" = xno; then :
enableval=$enable_loadable_sqlite_extensions;
if test "x$have_sqlite3_load_extension" = xno; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: n/a" >&5
$as_echo "n/a" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your version of SQLite does not support loadable extensions" >&5
$as_echo "$as_me: WARNING: Your version of SQLite does not support loadable extensions" >&2;}
fi
else
enable_loadable_sqlite_extensions=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_loadable_sqlite_extensions" >&5
$as_echo "$enable_loadable_sqlite_extensions" >&6; }
if test "x$enable_loadable_sqlite_extensions" = xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define PY_SQLITE_ENABLE_LOAD_EXTENSION 1" >>confdefs.h
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
found_tcltk=no
for _QUERY in \
"tcl >= 8.5.12 tk >= 8.5.12" \

View File

@ -3562,15 +3562,22 @@ PKG_CHECK_MODULES(
)
AS_VAR_APPEND([LIBSQLITE3_CFLAGS], [' -I$(srcdir)/Modules/_sqlite'])
WITH_SAVE_ENV(
dnl PY_CHECK_SQLITE_FUNC(FUNCTION, IF-FOUND, IF-NOT-FOUND)
AC_DEFUN([PY_CHECK_SQLITE_FUNC], [
AC_CHECK_LIB([sqlite3], [$1], [$2], [
m4_ifblank([$3], [have_supported_sqlite3=no], [$3])
])
])
WITH_SAVE_ENV([
dnl bpo-45774/GH-29507: The CPP check in AC_CHECK_HEADER can fail on FreeBSD,
dnl hence CPPFLAGS instead of CFLAGS.
CPPFLAGS="$LIBSQLITE3_CFLAGS $CFLAGS"
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
AC_CHECK_HEADER([sqlite3.h], [
AC_CHECK_LIB([sqlite3], [sqlite3_open_v2], [
have_sqlite3=yes
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([
#include <sqlite3.h>
@ -3578,28 +3585,55 @@ dnl hence CPPFLAGS instead of CFLAGS.
# error "SQLite 3.7.15 or higher required"
#endif
], [])
], [have_supported_sqlite3=yes], [have_supported_sqlite3=no])
], [have_sqlite3=no])
], [
have_supported_sqlite3=yes
dnl Check that required functions are in place. A lot of stuff may be
dnl omitted with SQLITE_OMIT_* compile time defines.
PY_CHECK_SQLITE_FUNC([sqlite3_bind_double])
PY_CHECK_SQLITE_FUNC([sqlite3_column_decltype])
PY_CHECK_SQLITE_FUNC([sqlite3_column_double])
PY_CHECK_SQLITE_FUNC([sqlite3_complete])
PY_CHECK_SQLITE_FUNC([sqlite3_enable_shared_cache])
PY_CHECK_SQLITE_FUNC([sqlite3_progress_handler])
PY_CHECK_SQLITE_FUNC([sqlite3_result_double])
PY_CHECK_SQLITE_FUNC([sqlite3_set_authorizer])
PY_CHECK_SQLITE_FUNC([sqlite3_trace_v2], [], [
PY_CHECK_SQLITE_FUNC([sqlite3_trace])
])
PY_CHECK_SQLITE_FUNC([sqlite3_value_double])
AC_CHECK_LIB([sqlite3], [sqlite3_load_extension],
[have_sqlite3_load_extension=yes],
[have_sqlite3_load_extension=no])
])
[have_sqlite3_load_extension=no]
)
# Check for support for loadable sqlite extensions
AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
AC_ARG_ENABLE(loadable-sqlite-extensions,
AS_HELP_STRING([--enable-loadable-sqlite-extensions],
[support loadable extensions in _sqlite module, see Doc/library/sqlite3.rst (default is no)]),
[AS_VAR_IF([have_sqlite3_load_extension], [no],
[AC_MSG_WARN([Your version of SQLite does not support loadable extensions])])],
[enable_loadable_sqlite_extensions=no])
AC_MSG_RESULT($enable_loadable_sqlite_extensions)
AS_VAR_IF([enable_loadable_sqlite_extensions], [yes], [
AC_DEFINE(PY_SQLITE_ENABLE_LOAD_EXTENSION, 1,
[Define to 1 to build the sqlite module with loadable extensions support.])
], [
have_supported_sqlite3=no
])
])
])
dnl Check for support for loadable sqlite extensions
AC_MSG_CHECKING([for --enable-loadable-sqlite-extensions])
AC_ARG_ENABLE([loadable-sqlite-extensions],
AS_HELP_STRING(
[--enable-loadable-sqlite-extensions], [
support loadable extensions in the sqlite3 module, see
Doc/library/sqlite3.rst (default is no)
]
), [
AS_VAR_IF([have_sqlite3_load_extension], [no], [
AC_MSG_RESULT([n/a])
AC_MSG_WARN([Your version of SQLite does not support loadable extensions])
], [
AC_MSG_RESULT([yes])
AC_DEFINE(
[PY_SQLITE_ENABLE_LOAD_EXTENSION], [1],
[Define to 1 to build the sqlite module with loadable extensions support.]
)
])
], [
AC_MSG_RESULT([no])
]
)
dnl
dnl Detect Tcl/Tk. Use pkg-config if available.

View File

@ -655,6 +655,9 @@
/* Define to 1 if you have the `sendfile' library (-lsendfile). */
#undef HAVE_LIBSENDFILE
/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */
#undef HAVE_LIBSQLITE3
/* Define to 1 if you have the <libutil.h> header file. */
#undef HAVE_LIBUTIL_H