| dnl =================================================================== |
| dnl Licensed to the Apache Software Foundation (ASF) under one |
| dnl or more contributor license agreements. See the NOTICE file |
| dnl distributed with this work for additional information |
| dnl regarding copyright ownership. The ASF licenses this file |
| dnl to you under the Apache License, Version 2.0 (the |
| dnl "License"); you may not use this file except in compliance |
| dnl with the License. You may obtain a copy of the License at |
| dnl |
| dnl http://www.apache.org/licenses/LICENSE-2.0 |
| dnl |
| dnl Unless required by applicable law or agreed to in writing, |
| dnl software distributed under the License is distributed on an |
| dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| dnl KIND, either express or implied. See the License for the |
| dnl specific language governing permissions and limitations |
| dnl under the License. |
| dnl =================================================================== |
| dnl |
| dnl SVN_LIB_SQLITE(minimum_ver, recommended_ver, url) |
| dnl |
| dnl Search for a suitable version of sqlite. minimum_ver is a |
| dnl version string which is the lowest suitable version we can use. |
| dnl recommended_ver is the recommended version of sqlite, which is |
| dnl not necessarily the latest version released. url is the URL of |
| dnl the recommended version of sqlite. |
| dnl |
| dnl If a --with-sqlite=PREFIX option is passed, look for a suitable sqlite |
| dnl either installed under the directory PREFIX or as an amalgamation file |
| dnl at the path PREFIX. In this case ignore any sqlite-amalgamation/ subdir |
| dnl within the source tree. |
| dnl |
| dnl If no --with-sqlite option is passed, look first for |
| dnl sqlite-amalgamation/sqlite3.c which should be the amalgamated version of |
| dnl the source distribution. If the amalgamation exists and is the wrong |
| dnl version, exit with a failure. If no sqlite-amalgamation/ subdir is |
| dnl present, search for a sqlite installed on the system. |
| dnl |
| dnl If the search for sqlite fails, set svn_lib_sqlite to no, otherwise set |
| dnl it to yes. |
| |
| AC_DEFUN(SVN_LIB_SQLITE, |
| [ |
| SQLITE_MINIMUM_VER="$1" |
| SQLITE_RECOMMENDED_VER="$2" |
| SQLITE_URL="$3" |
| SQLITE_PKGNAME="sqlite3" |
| |
| SVN_SQLITE_MIN_VERNUM_PARSE |
| |
| AC_MSG_NOTICE([checking sqlite library]) |
| |
| AC_ARG_WITH(sqlite, |
| AS_HELP_STRING([--with-sqlite=PREFIX], |
| [Use installed SQLite library or amalgamation file.]), |
| [ |
| if test "$withval" = "yes" ; then |
| AC_MSG_ERROR([--with-sqlite requires an argument.]) |
| else |
| sqlite_dir="$withval" |
| fi |
| |
| if test -d $sqlite_dir; then |
| dnl pointed at an sqlite installation |
| SVN_SQLITE_DIR_CONFIG($sqlite_dir) |
| else |
| dnl pointed at the amalgamation file |
| SVN_SQLITE_FILE_CONFIG($sqlite_dir) |
| fi |
| |
| if test -z "$svn_lib_sqlite"; then |
| AC_MSG_WARN([no suitable sqlite found in $sqlite_dir]) |
| SVN_DOWNLOAD_SQLITE |
| fi |
| ], |
| [ |
| dnl see if the sqlite amalgamation exists in the source tree |
| SVN_SQLITE_FILE_CONFIG($abs_srcdir/sqlite-amalgamation/sqlite3.c) |
| |
| if test -z "$svn_lib_sqlite"; then |
| SVN_SQLITE_FILE_CONFIG($abs_builddir/sqlite-amalgamation/sqlite3.c) |
| fi |
| |
| if test -z "$svn_lib_sqlite"; then |
| dnl check the "standard" location of /usr |
| SVN_SQLITE_DIR_CONFIG() |
| fi |
| |
| if test -z "$svn_lib_sqlite"; then |
| dnl no --with-sqlite switch, and no sqlite subdir, look in PATH |
| SVN_SQLITE_PKG_CONFIG |
| fi |
| |
| if test -z "$svn_lib_sqlite"; then |
| SVN_DOWNLOAD_SQLITE |
| fi |
| ]) |
| |
| AC_SUBST(SVN_SQLITE_INCLUDES) |
| AC_SUBST(SVN_SQLITE_LIBS) |
| ]) |
| |
| dnl SVN_SQLITE_PKG_CONFIG |
| dnl |
| dnl Look for sqlite in PATH using pkg-config. |
| AC_DEFUN(SVN_SQLITE_PKG_CONFIG, |
| [ |
| if test -n "$PKG_CONFIG"; then |
| AC_MSG_CHECKING([sqlite library version (via pkg-config)]) |
| sqlite_version=`$PKG_CONFIG $SQLITE_PKGNAME --modversion --silence-errors` |
| |
| if test -n "$sqlite_version"; then |
| SVN_SQLITE_VERNUM_PARSE([$sqlite_version], [sqlite_ver_num]) |
| |
| if test "$sqlite_ver_num" -ge "$sqlite_min_ver_num"; then |
| AC_MSG_RESULT([$sqlite_version]) |
| svn_lib_sqlite="yes" |
| SVN_SQLITE_INCLUDES="`$PKG_CONFIG $SQLITE_PKGNAME --cflags`" |
| SVN_SQLITE_LIBS="`$PKG_CONFIG $SQLITE_PKGNAME --libs`" |
| else |
| AC_MSG_RESULT([none or unsupported $sqlite_version]) |
| fi |
| fi |
| fi |
| |
| if test -z "$svn_lib_sqlite"; then |
| AC_MSG_RESULT(no) |
| fi |
| ]) |
| |
| dnl SVN_SQLITE_DIR_CONFIG(sqlite_dir) |
| dnl |
| dnl Check to see if we've got an appropriate sqlite library at sqlite_dir. |
| dnl If we don't, fail. |
| AC_DEFUN(SVN_SQLITE_DIR_CONFIG, |
| [ |
| if test -z "$1"; then |
| sqlite_dir="" |
| sqlite_include="sqlite3.h" |
| else |
| sqlite_dir="$1" |
| sqlite_include="$1/include/sqlite3.h" |
| fi |
| |
| save_CPPFLAGS="$CPPFLAGS" |
| save_LDFLAGS="$LDFLAGS" |
| |
| if test ! -z "$1"; then |
| CPPFLAGS="$CPPFLAGS -I$sqlite_dir/include" |
| LDFLAGS="$LDFLAGS -L$sqlite_dir/lib" |
| fi |
| |
| AC_CHECK_HEADER(sqlite3.h, |
| [ |
| AC_MSG_CHECKING([sqlite library version (via header)]) |
| AC_EGREP_CPP(SQLITE_VERSION_OKAY,[ |
| #include "$sqlite_include" |
| #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num |
| SQLITE_VERSION_OKAY |
| #endif], |
| [AC_MSG_RESULT([okay]) |
| AC_CHECK_LIB(sqlite3, sqlite3_close, [ |
| svn_lib_sqlite="yes" |
| if test -z "$sqlite_dir" -o ! -d "$sqlite_dir"; then |
| SVN_SQLITE_LIBS="-lsqlite3" |
| else |
| SVN_SQLITE_INCLUDES="-I$sqlite_dir/include" |
| SVN_SQLITE_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS(-L$sqlite_dir/lib -lsqlite3)`" |
| fi |
| ])], [AC_MSG_RESULT([unsupported SQLite version])]) |
| ]) |
| |
| CPPFLAGS="$save_CPPFLAGS" |
| LDFLAGS="$save_LDFLAGS" |
| ]) |
| |
| dnl SVN_SQLITE_FILE_CONFIG(sqlite_file) |
| dnl |
| dnl Check to see if we've got an appropriate sqlite amalgamation file |
| dnl at sqlite_file. If not, fail. |
| AC_DEFUN(SVN_SQLITE_FILE_CONFIG, |
| [ |
| sqlite_amalg="$1" |
| AC_MSG_CHECKING([sqlite amalgamation]) |
| if test ! -e $sqlite_amalg; then |
| AC_MSG_RESULT([no]) |
| else |
| AC_MSG_RESULT([yes]) |
| AC_MSG_CHECKING([sqlite amalgamation file version]) |
| AC_EGREP_CPP(SQLITE_VERSION_OKAY,[ |
| #include "$sqlite_amalg" |
| #if SQLITE_VERSION_NUMBER >= $sqlite_min_ver_num |
| SQLITE_VERSION_OKAY |
| #endif], |
| [AC_MSG_RESULT([amalgamation found and is okay]) |
| _SVN_SQLITE_DSO_LIBS |
| AC_DEFINE(SVN_SQLITE_INLINE, 1, |
| [Defined if svn should use the amalgamated version of sqlite]) |
| SVN_SQLITE_INCLUDES="-I`dirname $sqlite_amalg`" |
| if test -n "$svn_sqlite_dso_ldflags"; then |
| SVN_SQLITE_LIBS="$svn_sqlite_dso_ldflags -lpthread" |
| else |
| SVN_SQLITE_LIBS="-lpthread" |
| fi |
| svn_lib_sqlite="yes"], |
| [AC_MSG_RESULT([unsupported amalgamation SQLite version])]) |
| fi |
| ]) |
| |
| dnl SVN_SQLITE_VERNUM_PARSE(version_string, result_var) |
| dnl |
| dnl Parse a x.y[.z] version string version_string into a number result_var. |
| AC_DEFUN(SVN_SQLITE_VERNUM_PARSE, |
| [ |
| version_string="$1" |
| |
| major=`expr $version_string : '\([[0-9]]*\)'` |
| minor=`expr $version_string : '[[0-9]]*\.\([[0-9]]*\)'` |
| micro=`expr $version_string : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` |
| if test -z "$micro"; then |
| micro=0 |
| fi |
| $2=`expr $major \* 1000000 \ |
| \+ $minor \* 1000 \ |
| \+ $micro` |
| ]) |
| |
| dnl SVN_SQLITE_MIN_VERNUM_PARSE() |
| dnl |
| dnl Parse a x.y.z version string SQLITE_MINIMUM_VER into a number |
| dnl sqlite_min_ver_num. |
| AC_DEFUN(SVN_SQLITE_MIN_VERNUM_PARSE, |
| [ |
| SVN_SQLITE_VERNUM_PARSE([$SQLITE_MINIMUM_VER], [sqlite_min_ver_num]) |
| ]) |
| |
| dnl SVN_DOWNLOAD_SQLITE() |
| dnl no sqlite found, print out a message telling the user what to do |
| AC_DEFUN(SVN_DOWNLOAD_SQLITE, |
| [ |
| echo "" |
| echo "An appropriate version of sqlite could not be found. We recommmend" |
| echo "${SQLITE_RECOMMENDED_VER}, but require at least ${SQLITE_MINIMUM_VER}." |
| echo "Please either install a newer sqlite on this system" |
| echo "" |
| echo "or" |
| echo "" |
| echo "get the sqlite ${SQLITE_RECOMMENDED_VER} amalgamation from:" |
| echo " ${SQLITE_URL}" |
| echo "unpack the archive using unzip and rename the resulting" |
| echo "directory to:" |
| echo "$abs_srcdir/sqlite-amalgamation" |
| if test x"$abs_srcdir" != x"$abs_builddir"; then |
| echo "or to:" |
| echo "$abs_builddir/sqlite-amalgamation" |
| fi |
| echo "" |
| AC_MSG_ERROR([Subversion requires SQLite]) |
| ]) |
| |
| dnl _SVN_SQLITE_DSO_LIBS() dnl Find additional libraries that the |
| dnl sqlite amalgamation code should link in order to load |
| dnl shared libraries. Copied from build/libtool.m4 |
| AC_DEFUN(_SVN_SQLITE_DSO_LIBS, |
| [ |
| case $host_os in |
| beos* | mingw* | pw32* | cegcc* | cygwin*) |
| svn_sqlite_dso_ldflags= |
| ;; |
| |
| darwin*) |
| # if libdl is installed we need to link against it |
| AC_CHECK_LIB([dl], [dlopen], |
| [lt_cv_dlopen="dlopen" svn_sqlite_dso_ldflags="-ldl"],[ |
| svn_sqlite_dso_ldflags= |
| ]) |
| ;; |
| |
| *) |
| AC_CHECK_FUNC([shl_load], |
| [svn_sqlite_dso_ldflags=], |
| [AC_CHECK_LIB([dld], [shl_load], |
| [svn_sqlite_dso_ldflags="-ldld"], |
| [AC_CHECK_FUNC([dlopen], |
| [svn_sqlite_dso_ldflags=], |
| [AC_CHECK_LIB([dl], [dlopen], |
| [svn_sqlite_dso_ldflags="-ldl"], |
| [AC_CHECK_LIB([svld], [dlopen], |
| [svn_sqlite_dso_ldflags="-lsvld"], |
| [AC_CHECK_LIB([dld], [dld_link], |
| [svn_sqlite_dso_ldflags="-ldld"]) |
| ]) |
| ]) |
| ]) |
| ]) |
| ]) |
| ;; |
| esac |
| |
| AC_MSG_CHECKING([additional libraries for sqlite]) |
| if test -n "$svn_sqlite_dso_ldflags"; then |
| AC_MSG_RESULT(${svn_sqlite_dso_ldflags}) |
| else |
| AC_MSG_RESULT(none) |
| fi |
| ]) |