lnav/m4/lnav_with_sqlite3.m4
Suresh Sundriyal 6663740c5e [secure-mode] Disallow ATTACH statements completely.
The code to handle in-memory db exceptions is hideous and unreliable,
given the fact that SQLite does not expose much in terms of getting the
current value and the methods to check the compile time options can
themselves be disabled by a compile=time option in SQLite.

There really isn't much use for in-memory databases and if someone
really needs it, they can always choose to run in normal mode, so just
remove the extra code.
2016-05-04 20:21:01 -07:00

110 lines
3.2 KiB
Plaintext

dnl
dnl @Modified from: ax_sqlite3.m4
dnl @author Mateusz Loskot <mateusz@loskot.net>
dnl @version $Date: 2006/08/30 14:28:55 $
dnl @license AllPermissive
dnl
dnl Copyright (c) 2015, Suresh Sundriyal
dnl
dnl @file lnav_with_sqlite3.m4
dnl
AC_DEFUN([LNAV_WITH_SQLITE3],
[dnl
AC_ARG_WITH([sqlite3],
AS_HELP_STRING([--with-sqlite3=@<:@prefix@:>@],[compile with sqlite3]),
[],
[with_sqlite3="yes"]
)
AS_VAR_SET(saved_CFLAGS, $CFLAGS)
AS_VAR_SET(saved_CPPFLAGS, $CPPFLAGS)
AS_VAR_SET(saved_LDFLAGS, $LDFLAGS)
AS_VAR_SET(saved_LIBS, $LIBS)
AS_CASE(["$with_sqlite3"],
[no],
AC_MSG_ERROR([sqlite3 required to build]),
[yes],
[],
[dnl
LNAV_ADDTO(CFLAGS, [-I$with_sqlite3/include])
LNAV_ADDTO(CPPFLAGS, [-I$with_sqlite3/include])
AS_VAR_SET([SQLITE3_LDFLAGS], ["-L$with_sqlite3/lib"])
AS_VAR_SET([SQLITE3_CFLAGS], ["-I$with_sqlite3/include"])
LDFLAGS="-L$with_sqlite3/lib $LDFLAGS"
]
)
AC_SEARCH_LIBS([sqlite3_open], [sqlite3],
AS_VAR_SET([SQLITE3_LIBS], ["-lsqlite3"]),
AC_MSG_ERROR([sqlite3 library not found]),
[-pthread]dnl
)
AC_CHECK_HEADERS([sqlite3.h], [],
AC_MSG_ERROR([sqlite3 headers not found])
)
sqlite3_version_req=ifelse([$1], [], [3.0.0], [$1])
sqlite3_version_req_shorten=`expr $sqlite3_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
sqlite3_version_req_major=`expr $sqlite3_version_req : '\([[0-9]]*\)'`
sqlite3_version_req_minor=`expr $sqlite3_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
sqlite3_version_req_micro=`expr $sqlite3_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
if test "x$sqlite3_version_req_micro" = "x" ; then
sqlite3_version_req_micro="0"
fi
sqlite3_version_req_number=`expr $sqlite3_version_req_major \* 1000000 \
\+ $sqlite3_version_req_minor \* 1000 \
\+ $sqlite3_version_req_micro`
AC_MSG_CHECKING([for SQLite3 library >= $sqlite3_version_req])
AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE(
[
AC_LANG_PROGRAM([[@%:@include <sqlite3.h>]],
[[
#if (SQLITE_VERSION_NUMBER >= $sqlite3_version_req_number)
// Everything is okay
#else
# error SQLite version is too old
#endif
]]
)
],
[
AC_MSG_RESULT([yes])
],
[
AC_MSG_RESULT([not found])
AC_MSG_ERROR([SQLite3 version >= $sqlite3_version_req is required])
]
)
AC_LANG_POP([C++])
AC_CHECK_FUNC(sqlite3_stmt_readonly,
AC_DEFINE([HAVE_SQLITE3_STMT_READONLY], [],
[Have the sqlite3_stmt_readonly function]
)
)
AC_CHECK_FUNC(sqlite3_value_subtype,
HAVE_SQLITE3_VALUE_SUBTYPE=1
AC_DEFINE([HAVE_SQLITE3_VALUE_SUBTYPE], [],
[Have the sqlite3_value_subtype function]
)
)
AC_SUBST(HAVE_SQLITE3_VALUE_SUBTYPE)
AS_VAR_SET(CFLAGS, $saved_CFLAGS)
AS_VAR_SET(CPPFLAGS, $saved_CPPFLAGS)
AS_VAR_SET(LDFLAGS, $saved_LDFLAGS)
AS_VAR_SET(LIBS, $saved_LIBS)
AC_SUBST(SQLITE3_CFLAGS)
AC_SUBST(SQLITE3_LDFLAGS)
AC_SUBST(SQLITE3_LIBS)
]
)