Skip to content

Commit 6579627

Browse files
author
Erlend E. Aasland
committed
bpo-45723: Add helpers for save/restore env
PoC: Apply to SQLite check.
1 parent 29e5874 commit 6579627

File tree

2 files changed

+68
-46
lines changed

2 files changed

+68
-46
lines changed

configure

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2806,6 +2806,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
28062806

28072807

28082808

2809+
28092810
if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then
28102811
# If we're building out-of-tree, we need to make sure the following
28112812
# resources get picked up before their $srcdir counterparts.
@@ -11022,16 +11023,17 @@ fi
1102211023
as_fn_append LIBSQLITE3_CFLAGS ' -I$(srcdir)/Modules/_sqlite'
1102311024

1102411025
save_CFLAGS=$CFLAGS
11025-
save_CPPFLAGS=$CPPFLAGS
11026-
save_LDFLAGS=$LDFLAGS
11027-
save_LIBS=$LIBS
11028-
CPPFLAGS="$LIBSQLITE3_CFLAGS $CFLAGS"
11029-
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
11026+
save_CPPFLAGS=$CPPFLAGS
11027+
save_LDFLAGS=$LDFLAGS
11028+
save_LIBS=$LIBS
11029+
11030+
CPPFLAGS="$LIBSQLITE3_CFLAGS $CFLAGS"
11031+
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
1103011032

11031-
ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default"
11033+
ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default"
1103211034
if test "x$ac_cv_header_sqlite3_h" = xyes; then :
1103311035

11034-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_open_v2 in -lsqlite3" >&5
11036+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_open_v2 in -lsqlite3" >&5
1103511037
$as_echo_n "checking for sqlite3_open_v2 in -lsqlite3... " >&6; }
1103611038
if ${ac_cv_lib_sqlite3_sqlite3_open_v2+:} false; then :
1103711039
$as_echo_n "(cached) " >&6
@@ -11069,15 +11071,15 @@ fi
1106911071
$as_echo "$ac_cv_lib_sqlite3_sqlite3_open_v2" >&6; }
1107011072
if test "x$ac_cv_lib_sqlite3_sqlite3_open_v2" = xyes; then :
1107111073

11072-
have_sqlite3=yes
11073-
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11074+
have_sqlite3=yes
11075+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1107411076
/* end confdefs.h. */
1107511077

1107611078

11077-
#include <sqlite3.h>
11078-
#if SQLITE_VERSION_NUMBER < 3007015
11079-
# error "SQLite 3.7.15 or higher required"
11080-
#endif
11079+
#include <sqlite3.h>
11080+
#if SQLITE_VERSION_NUMBER < 3007015
11081+
# error "SQLite 3.7.15 or higher required"
11082+
#endif
1108111083

1108211084
int
1108311085
main ()
@@ -11099,7 +11101,7 @@ else
1109911101
have_sqlite3=no
1110011102
fi
1110111103

11102-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5
11104+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5
1110311105
$as_echo_n "checking for sqlite3_load_extension in -lsqlite3... " >&6; }
1110411106
if ${ac_cv_lib_sqlite3_sqlite3_load_extension+:} false; then :
1110511107
$as_echo_n "(cached) " >&6
@@ -11149,10 +11151,12 @@ fi
1114911151

1115011152

1115111153

11152-
CFLAGS=$save_CFLAGS
11153-
CPPFLAGS=$save_CPPFLAGS
11154-
LDFLAGS=$save_LDFLAGS
11155-
LIBS=$save_LIBS
11154+
CFLAGS=$save_CFLAGS
11155+
CPPFLAGS=$save_CPPFLAGS
11156+
LDFLAGS=$save_LDFLAGS
11157+
LIBS=$save_LIBS
11158+
11159+
1115611160

1115711161
# Check for support for loadable sqlite extensions
1115811162
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-loadable-sqlite-extensions" >&5

configure.ac

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,32 @@ m4_ifdef(
2323
[AC_MSG_ERROR([Please install pkgconf's m4 macro package and re-run autoreconf])]
2424
)dnl
2525

26+
dnl Helpers for saving and restoring environment variables:
27+
dnl - _SAVE_VAR([VAR]) Helper for SAVE_ENV; stores VAR as save_VAR
28+
dnl - _RESTORE_VAR([VAR]) Helper for RESTORE_ENV; restores VAR from save_VAR
29+
dnl - SAVE_ENV Saves CFLAGS, LDFLAGS, LIBS, and CPPFLAGS
30+
dnl - RESTORE_ENV Restores CFLAGS, LDFLAGS, LIBS, and CPPFLAGS
31+
dnl - WITH_SAVE_ENV([SCRIPT]) Runs SCRIPT wrapped with SAVE_ENV/RESTORE_ENV
32+
AC_DEFUN([_SAVE_VAR], [AS_VAR_COPY([save_][$1], [$1])])dnl
33+
AC_DEFUN([_RESTORE_VAR], [AS_VAR_COPY([$1], [save_][$1])])dnl
34+
AC_DEFUN([SAVE_ENV],
35+
[_SAVE_VAR([CFLAGS])]
36+
[_SAVE_VAR([CPPFLAGS])]
37+
[_SAVE_VAR([LDFLAGS])]
38+
[_SAVE_VAR([LIBS])]
39+
)dnl
40+
AC_DEFUN([RESTORE_ENV],
41+
[_RESTORE_VAR([CFLAGS])]
42+
[_RESTORE_VAR([CPPFLAGS])]
43+
[_RESTORE_VAR([LDFLAGS])]
44+
[_RESTORE_VAR([LIBS])]
45+
)dnl
46+
AC_DEFUN([WITH_SAVE_ENV],
47+
[SAVE_ENV]
48+
[$1]
49+
[RESTORE_ENV]
50+
)dnl
51+
2652
AC_SUBST(BASECPPFLAGS)
2753
if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then
2854
# If we're building out-of-tree, we need to make sure the following
@@ -3175,34 +3201,26 @@ PKG_CHECK_MODULES(
31753201
AS_VAR_APPEND([LIBSQLITE3_CFLAGS], [' -I$(srcdir)/Modules/_sqlite'])
31763202

31773203
dnl bpo-45774/GH-29507: The CPP check in AC_CHECK_HEADER can fail on FreeBSD,
3178-
dnl hence CPPFLAGS instead of CFLAGS. We still need to save CFLAGS, because it
3179-
dnl is touched by AC_CHECK_HEADER.
3180-
AS_VAR_COPY([save_CFLAGS], [CFLAGS])
3181-
AS_VAR_COPY([save_CPPFLAGS], [CPPFLAGS])
3182-
AS_VAR_COPY([save_LDFLAGS], [LDFLAGS])
3183-
AS_VAR_COPY([save_LIBS], [LIBS])
3184-
CPPFLAGS="$LIBSQLITE3_CFLAGS $CFLAGS"
3185-
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
3186-
3187-
AC_CHECK_HEADER([sqlite3.h], [
3188-
AC_CHECK_LIB([sqlite3], [sqlite3_open_v2], [
3189-
have_sqlite3=yes
3190-
AC_COMPILE_IFELSE([
3191-
AC_LANG_PROGRAM([
3192-
#include <sqlite3.h>
3193-
#if SQLITE_VERSION_NUMBER < 3007015
3194-
# error "SQLite 3.7.15 or higher required"
3195-
#endif
3196-
], [])
3197-
], [have_supported_sqlite3=yes], [have_supported_sqlite3=no])
3198-
], [have_sqlite3=no])
3199-
AC_CHECK_LIB([sqlite3], [sqlite3_load_extension])
3200-
])
3201-
3202-
AS_VAR_COPY([CFLAGS], [save_CFLAGS])
3203-
AS_VAR_COPY([CPPFLAGS], [save_CPPFLAGS])
3204-
AS_VAR_COPY([LDFLAGS], [save_LDFLAGS])
3205-
AS_VAR_COPY([LIBS], [save_LIBS])
3204+
dnl hence CPPFLAGS instead of CFLAGS.
3205+
WITH_SAVE_ENV(
3206+
CPPFLAGS="$LIBSQLITE3_CFLAGS $CFLAGS"
3207+
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
3208+
3209+
AC_CHECK_HEADER([sqlite3.h], [
3210+
AC_CHECK_LIB([sqlite3], [sqlite3_open_v2], [
3211+
have_sqlite3=yes
3212+
AC_COMPILE_IFELSE([
3213+
AC_LANG_PROGRAM([
3214+
#include <sqlite3.h>
3215+
#if SQLITE_VERSION_NUMBER < 3007015
3216+
# error "SQLite 3.7.15 or higher required"
3217+
#endif
3218+
], [])
3219+
], [have_supported_sqlite3=yes], [have_supported_sqlite3=no])
3220+
], [have_sqlite3=no])
3221+
AC_CHECK_LIB([sqlite3], [sqlite3_load_extension])
3222+
])
3223+
)
32063224

32073225
# Check for support for loadable sqlite extensions
32083226
AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)

0 commit comments

Comments
 (0)