aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-11-09 11:34:42 +0100
committerGitHub <noreply@github.com>2019-11-09 11:34:42 +0100
commit25c4f55f8559a17e3d01668b0b3fbe3ea5aa5f97 (patch)
tree24973c1a97a6c999e8eb204e87d11755a8559c87
parentb462f1b4d7535c8d39d9fb3fb9ac4e93f577904e (diff)
parent589f2104784ff88670f43fab899ece6d503ac027 (diff)
downloadPROJ-25c4f55f8559a17e3d01668b0b3fbe3ea5aa5f97.tar.gz
PROJ-25c4f55f8559a17e3d01668b0b3fbe3ea5aa5f97.zip
Merge pull request #1721 from rouault/require_sqlite_3_11
Build: require SQLite 3.11 (refs #1718)
-rw-r--r--CMakeLists.txt6
-rw-r--r--cmake/FindSqlite3.cmake13
-rw-r--r--configure.ac6
-rw-r--r--docs/source/install.rst11
4 files changed, 32 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63f516a3..2761e542 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -127,6 +127,12 @@ if(NOT SQLITE3_FOUND)
message(SEND_ERROR "sqlite3 dependency not found!")
endif()
+# Would build and run with older versons, but with horrible performance
+# See https://github.com/OSGeo/PROJ/issues/1718
+IF("${SQLITE3_VERSION}" VERSION_LESS "3.11")
+ message(SEND_ERROR "sqlite3 >= 3.11 required!")
+ENDIF()
+
################################################################################
# threading configuration
################################################################################
diff --git a/cmake/FindSqlite3.cmake b/cmake/FindSqlite3.cmake
index 4f1d909f..06cba0fb 100644
--- a/cmake/FindSqlite3.cmake
+++ b/cmake/FindSqlite3.cmake
@@ -10,6 +10,7 @@
# and following variables are set:
# SQLITE3_INCLUDE_DIR
# SQLITE3_LIBRARY
+# SQLITE3_VERSION
# find_path and find_library normally search standard locations
@@ -53,9 +54,21 @@ if(SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
set(SQLITE3_FOUND TRUE)
endif()
+# Extract version information from the header file
+if(SQLITE3_INCLUDE_DIR)
+ file(STRINGS ${SQLITE3_INCLUDE_DIR}/sqlite3.h _ver_line
+ REGEX "^#define SQLITE_VERSION *\"[0-9]+\\.[0-9]+\\.[0-9]+\""
+ LIMIT_COUNT 1)
+ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
+ SQLITE3_VERSION "${_ver_line}")
+ unset(_ver_line)
+endif()
+
+
if(SQLITE3_FOUND)
if(NOT SQLITE3_FIND_QUIETLY)
message(STATUS "Found Sqlite3: ${SQLITE3_LIBRARY}")
+ message(STATUS "Sqlite3 version: ${SQLITE3_VERSION}")
endif()
else()
diff --git a/configure.ac b/configure.ac
index 7a6814b4..e9274621 100644
--- a/configure.ac
+++ b/configure.ac
@@ -280,7 +280,11 @@ dnl Check for sqlite3 library and binary
dnl ---------------------------------------------------------------------------
if test "x$SQLITE3_CFLAGS$SQLITE3_LIBS" = "x" ; then
- PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.7])
+
+ dnl Would build and run with older versons, but with horrible performance
+ dnl See https://github.com/OSGeo/PROJ/issues/1718
+
+ PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.11])
fi
AC_SUBST(SQLITE3_CFLAGS,$SQLITE3_CFLAGS)
AC_SUBST(SQLITE3_LIBS,$SQLITE3_LIBS)
diff --git a/docs/source/install.rst b/docs/source/install.rst
index fa13046b..08edba8d 100644
--- a/docs/source/install.rst
+++ b/docs/source/install.rst
@@ -126,15 +126,20 @@ Compilation and installation from source code
The classical way of installing PROJ is via the source code distribution. The
most recent version is available from the :ref:`download page<current_release>`.
-PROJ requires C and C++11 compilers. It also requires SQLite3 (headers,
-library and executable).
-
You will need that and at least the standard *proj-datumgrid* package for a
successful installation.
The following guides show how to compile and install the software using the
Autotools and CMake build systems.
+Build requirements
+--------------------------------------------------------------------------------
+
+- C99 compiler
+- C++11 compiler
+- SQLite3 >= 3.11 (headers, library and executable)
+- GNU make for autotools build or CMake >= 3.5
+
Autotools
--------------------------------------------------------------------------------