mirror of https://github.com/python/cpython
bpo-45774: Harden SQLite detection (GH-30016)
This commit is contained in:
parent
0aa8d5cbd8
commit
f1606a5ba5
|
@ -0,0 +1,2 @@
|
|||
``configure`` now verifies that all SQLite C APIs needed for the
|
||||
:mod:`sqlite3` extension module are found.
|
|
@ -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,20 +12262,47 @@ $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 :
|
||||
have_sqlite3=yes
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
|
||||
#include <sqlite3.h>
|
||||
#if SQLITE_VERSION_NUMBER < 3007015
|
||||
# error "SQLite 3.7.15 or higher required"
|
||||
#endif
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_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
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
|
@ -12289,59 +12316,552 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char sqlite3_open_v2 ();
|
||||
char sqlite3_bind_double ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return sqlite3_open_v2 ();
|
||||
return sqlite3_bind_double ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_sqlite3_sqlite3_open_v2=yes
|
||||
ac_cv_lib_sqlite3_sqlite3_bind_double=yes
|
||||
else
|
||||
ac_cv_lib_sqlite3_sqlite3_open_v2=no
|
||||
ac_cv_lib_sqlite3_sqlite3_bind_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_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 :
|
||||
{ $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
|
||||
|
||||
have_sqlite3=yes
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
LIBS="-lsqlite3 $LIBS"
|
||||
|
||||
else
|
||||
|
||||
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. */
|
||||
|
||||
|
||||
#include <sqlite3.h>
|
||||
#if SQLITE_VERSION_NUMBER < 3007015
|
||||
# error "SQLite 3.7.15 or higher required"
|
||||
#endif
|
||||
|
||||
/* 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_compile "$LINENO"; then :
|
||||
have_supported_sqlite3=yes
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_sqlite3_sqlite3_column_decltype=yes
|
||||
else
|
||||
have_supported_sqlite3=no
|
||||
ac_cv_lib_sqlite3_sqlite3_column_decltype=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_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_sqlite3=no
|
||||
|
||||
have_supported_sqlite3=no
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5
|
||||
|
||||
|
||||
{ $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 :
|
||||
$as_echo_n "(cached) " >&6
|
||||
|
@ -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 :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your version of SQLite does not support loadable extensions" >&5
|
||||
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" \
|
||||
|
|
94
configure.ac
94
configure.ac
|
@ -3562,45 +3562,79 @@ 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>
|
||||
#if SQLITE_VERSION_NUMBER < 3007015
|
||||
# error "SQLite 3.7.15 or higher required"
|
||||
#endif
|
||||
], [])
|
||||
], [have_supported_sqlite3=yes], [have_supported_sqlite3=no])
|
||||
], [have_sqlite3=no])
|
||||
AC_CHECK_LIB([sqlite3], [sqlite3_load_extension],
|
||||
[have_sqlite3_load_extension=yes],
|
||||
[have_sqlite3_load_extension=no])
|
||||
have_sqlite3=yes
|
||||
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([
|
||||
#include <sqlite3.h>
|
||||
#if SQLITE_VERSION_NUMBER < 3007015
|
||||
# error "SQLite 3.7.15 or higher required"
|
||||
#endif
|
||||
], [])
|
||||
], [
|
||||
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_supported_sqlite3=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.])
|
||||
])
|
||||
|
||||
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.
|
||||
dnl
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue