Skip to content

Commit 5e8d129

Browse files
committed
bring back internal spatialite for Debian squeeze and Ubuntu lucid, maverick, natty and oneiric
1 parent 0b915ba commit 5e8d129

24 files changed

+300081
-44
lines changed

CMakeLists.txt

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,17 @@ ENDIF (WITH_POSTGRESQL)
5656
SET (WITH_INTERNAL_QWTPOLAR TRUE CACHE BOOL "Use internal build of QwtPolar")
5757

5858
SET (WITH_SPATIALITE TRUE CACHE BOOL "Determines whether SPATIALITE support should be built")
59-
IF(WITH_SPATIALITE)
59+
IF (WITH_SPATIALITE)
60+
SET (WITH_INTERNAL_SPATIALITE FALSE CACHE BOOL "Determines whether SPATIALITE support should be built internally")
6061
SET (WITH_PYSPATIALITE FALSE CACHE BOOL "Determines whether PYSPATIALITE should be built")
61-
ENDIF(WITH_SPATIALITE)
62+
IF(WITH_INTERNAL_SPATIALITE)
63+
SET(SPATIALITE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/core/spatialite/headers)
64+
SET(HAVE_SPATIALITE TRUE)
65+
IF(WIN32 OR APPLE)
66+
FIND_PACKAGE(Iconv REQUIRED)
67+
ENDIF(WIN32 OR APPLE)
68+
ENDIF (WITH_INTERNAL_SPATIALITE)
69+
ENDIF (WITH_SPATIALITE)
6270

6371
# try to configure and build python bindings by default
6472
SET (WITH_BINDINGS TRUE CACHE BOOL "Determines whether python bindings should be built")
@@ -166,19 +174,21 @@ IF (NOT WITH_INTERNAL_QWTPOLAR)
166174
FIND_PACKAGE(QwtPolar REQUIRED)
167175
ENDIF(NOT WITH_INTERNAL_QWTPOLAR)
168176

169-
FIND_PACKAGE(Sqlite3)
170-
IF (NOT SQLITE3_FOUND)
171-
MESSAGE (SEND_ERROR "sqlite3 dependency was not found (try compiling with internal spatialite)!")
172-
ENDIF (NOT SQLITE3_FOUND)
177+
IF (NOT WITH_INTERNAL_SPATIALITE)
178+
FIND_PACKAGE(Sqlite3)
179+
IF (NOT SQLITE3_FOUND)
180+
MESSAGE (SEND_ERROR "sqlite3 dependency was not found (try compiling with internal spatialite)!")
181+
ENDIF (NOT SQLITE3_FOUND)
182+
ENDIF (NOT WITH_INTERNAL_SPATIALITE)
173183

174184
# optional
175185
IF (WITH_POSTGRESQL)
176186
FIND_PACKAGE(Postgres) # PostgreSQL provider, SPIT plugin
177187
ENDIF (WITH_POSTGRESQL)
178188

179-
IF (WITH_SPATIALITE)
189+
IF (WITH_SPATIALITE AND NOT WITH_INTERNAL_SPATIALITE)
180190
FIND_PACKAGE(SPATIALITE)
181-
ENDIF (WITH_SPATIALITE)
191+
ENDIF (WITH_SPATIALITE AND NOT WITH_INTERNAL_SPATIALITE)
182192

183193
IF (NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
184194
MESSAGE (SEND_ERROR "Some dependencies were not found!")

debian/python-qgis.install.lenny

Lines changed: 0 additions & 5 deletions
This file was deleted.

debian/rules

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,14 @@ CMAKE_OPTS := \
4343
-D QGIS_CGIBIN_SUBDIR=/usr/lib/cgi-bin \
4444
-D WITH_APIDOC=TRUE
4545

46-
ifeq (,$(findstring $(DISTRIBUTION),"sid"))
46+
ifneq (,$(findstring $(DISTRIBUTION),"squeeze wheezy lucid maverick natty oneiric precise"))
4747
CMAKE_OPTS += -D WITH_PYSPATIALITE=TRUE
4848
endif
4949

50+
ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid maverick natty oneiric"))
51+
CMAKE_OPTS += -D WITH_INTERNAL_SPATIALITE=TRUE
52+
endif
53+
5054
ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid maverick natty oneiric"))
5155
CMAKE_OPTS += -D WITH_GLOBE=FALSE
5256
else

python/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ IF (WITH_PYSPATIALITE)
77
ADD_SUBDIRECTORY(pyspatialite)
88
ENDIF (WITH_PYSPATIALITE)
99

10+
IF (WITH_INTERNAL_SPATIALITE)
11+
INCLUDE_DIRECTORIES(
12+
../src/core/spatialite/headers
13+
../src/core/spatialite/headers/spatialite
14+
)
15+
ENDIF (WITH_INTERNAL_SPATIALITE)
16+
1017
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QGIS_PYTHON_OUTPUT_DIRECTORY})
1118
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${QGIS_PYTHON_OUTPUT_DIRECTORY})
1219

python/pyspatialite/CMakeLists.txt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PYTHON_OUTPUT_DIRECTORY}/pyspatialite)
22
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_OUTPUT_DIRECTORY}/pyspatialite)
33

4+
IF(WITH_INTERNAL_SPATIALITE)
5+
INCLUDE_DIRECTORIES(
6+
../../src/core/spatialite/headers
7+
../../src/core/spatialite/headers/spatialite
8+
)
9+
ENDIF(WITH_INTERNAL_SPATIALITE)
10+
411
INCLUDE_DIRECTORIES(
512
${PYTHON_INCLUDE_PATH}
613
${GEOS_INCLUDE_DIR}
@@ -37,7 +44,11 @@ IF (NOT APPLE)
3744
TARGET_LINK_LIBRARIES(pyspatialite ${PYTHON_LIBRARY})
3845
ENDIF (NOT APPLE)
3946

40-
TARGET_LINK_LIBRARIES(pyspatialite qgis_core ${SPATIALITE_LIBRARY})
47+
TARGET_LINK_LIBRARIES(pyspatialite qgis_core)
48+
49+
IF(NOT WITH_INTERNAL_SPATIALITE)
50+
TARGET_LINK_LIBRARIES(pyspatialite ${SPATIALITE_LIBRARY})
51+
ENDIF(NOT WITH_INTERNAL_SPATIALITE)
4152

4253
IF (APPLE)
4354
SET_TARGET_PROPERTIES(pyspatialite PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")

src/app/CMakeLists.txt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -407,9 +407,14 @@ IF (ANDROID)
407407
ENDIF (ANDROID)
408408

409409
IF (HAVE_SPATIALITE)
410-
INCLUDE_DIRECTORIES(${SPATIALITE_INCLUDE_DIR})
411-
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
412-
ADD_DEFINITIONS(-DEXTERNAL_SPATIALITE)
410+
IF (WITH_INTERNAL_SPATIALITE)
411+
INCLUDE_DIRECTORIES(../core/spatialite/headers)
412+
INCLUDE_DIRECTORIES(../core/spatialite/headers/spatialite)
413+
ELSE (WITH_INTERNAL_SPATIALITE)
414+
INCLUDE_DIRECTORIES(${SPATIALITE_INCLUDE_DIR})
415+
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
416+
ADD_DEFINITIONS(-DEXTERNAL_SPATIALITE)
417+
ENDIF (WITH_INTERNAL_SPATIALITE)
413418
ENDIF (HAVE_SPATIALITE)
414419

415420
INCLUDE_DIRECTORIES(
@@ -425,7 +430,7 @@ ENDIF (POSTGRES_FOUND)
425430

426431
#############
427432
IF (ANDROID)
428-
ADD_LIBRARY(${QGIS_APP_NAME} SHARED ${QGIS_APP_SRCS} ${QGIS_APP_MOC_SRCS} ${INDEX_SRC} ${QGIS_APP_HDRS} ${QGIS_APP_MOC_HDRS} ${IMAGE_RCC_SRCS})
433+
ADD_LIBRARY(${QGIS_APP_NAME} SHARED ${QGIS_APP_SRCS} ${QGIS_APP_MOC_SRCS} ${QGIS_APP_HDRS} ${QGIS_APP_MOC_HDRS} ${IMAGE_RCC_SRCS})
429434
ELSE (ANDROID)
430435
ADD_EXECUTABLE(${QGIS_APP_NAME} MACOSX_BUNDLE WIN32 ${QGIS_APP_SRCS} ${QGIS_APP_MOC_SRCS} ${IMAGE_RCC_SRCS})
431436
ENDIF (ANDROID)
@@ -450,9 +455,11 @@ ENDIF (ANDROID)
450455

451456
IF(WIN32)
452457
ADD_DEFINITIONS(-DQWT_DLL)
453-
ENDIF( WIN32 )
458+
ENDIF(WIN32)
454459

455-
TARGET_LINK_LIBRARIES(${QGIS_APP_NAME} ${SQLITE_LIBRARY})
460+
IF(NOT WITH_INTERNAL_SPATIALITE)
461+
TARGET_LINK_LIBRARIES(${QGIS_APP_NAME} ${SQLITE_LIBRARY})
462+
ENDIF(NOT WITH_INTERNAL_SPATIALITE)
456463

457464
IF (APPLE)
458465
TARGET_LINK_LIBRARIES(${QGIS_APP_NAME} ${APP_SERVICES_LIBRARY} )

src/browser/CMakeLists.txt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,21 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
6262
${CMAKE_CURRENT_BINARY_DIR}/../ui
6363
${CMAKE_CURRENT_BINARY_DIR}
6464
${GDAL_INCLUDE_DIR} # remove once raster layer is cleaned up
65-
${SQLITE3_INCLUDE_DIR}
6665
)
6766

67+
IF (WITH_INTERNAL_SPATIALITE)
68+
INCLUDE_DIRECTORIES(../core/spatialite/headers/spatialite)
69+
ELSE (WITH_INTERNAL_SPATIALITE)
70+
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
71+
ENDIF (WITH_INTERNAL_SPATIALITE)
72+
73+
TARGET_LINK_LIBRARIES(qbrowser qgis_core qgis_gui)
74+
75+
IF (NOT WITH_INTERNAL_SPATIALITE)
76+
TARGET_LINK_LIBRARIES(qbrowser ${SQLITE3_LIBRARY})
77+
ENDIF (NOT WITH_INTERNAL_SPATIALITE)
78+
6879
TARGET_LINK_LIBRARIES(qbrowser
69-
qgis_core
70-
qgis_gui
71-
${SQLITE3_LIBRARY}
7280
${QT_QTCORE_LIBRARY}
7381
${QT_QTGUI_LIBRARY}
7482
${QT_QTNETWORK_LIBRARY}

src/core/CMakeLists.txt

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,39 @@ IF (QT_MOBILITY_LOCATION_FOUND)
215215
)
216216
ENDIF (QT_MOBILITY_LOCATION_FOUND)
217217

218+
IF (WITH_INTERNAL_SPATIALITE)
219+
IF (WIN32 OR APPLE OR ANDROID)
220+
INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
221+
ENDIF (WIN32 OR APPLE OR ANDROID)
222+
IF (WIN32)
223+
ADD_DEFINITIONS(-DDLL_EXPORT)
224+
ENDIF (WIN32)
225+
226+
#
227+
# sqlite3 requires some extraflags to be defined
228+
# in order to support:
229+
# - huge database > 2 GB
230+
# - RTree Spatial Index
231+
#
232+
ADD_DEFINITIONS(-D_LARGE_FILE=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1)
233+
ADD_DEFINITIONS(-DSQLITE_ENABLE_RTREE=1)
234+
235+
SET(QGIS_CORE_SRCS
236+
${QGIS_CORE_SRCS}
237+
spatialite/sqlite3.c
238+
spatialite/spatialite.c
239+
)
240+
241+
IF(MSVC)
242+
# dirty code
243+
SET_SOURCE_FILES_PROPERTIES(spatialite/sqlite3.c spatialite/spatialite.c PROPERTIES COMPILE_FLAGS /W0)
244+
ELSE(MSVC)
245+
SET_SOURCE_FILES_PROPERTIES(spatialite/sqlite3.c spatialite/spatialite.c PROPERTIES COMPILE_FLAGS -w)
246+
ENDIF(MSVC)
247+
248+
INCLUDE_DIRECTORIES(BEFORE spatialite/headers/spatialite)
249+
ENDIF (WITH_INTERNAL_SPATIALITE)
250+
218251
ADD_FLEX_FILES(QGIS_CORE_SRCS qgssearchstringlexer.ll qgsexpressionlexer.ll)
219252

220253
ADD_BISON_FILES(QGIS_CORE_SRCS qgssearchstringparser.yy qgsexpressionparser.yy)
@@ -420,9 +453,12 @@ INCLUDE_DIRECTORIES(
420453
${PROJ_INCLUDE_DIR}
421454
${GEOS_INCLUDE_DIR}
422455
${GDAL_INCLUDE_DIR}
423-
${SQLITE3_INCLUDE_DIR}
424456
)
425457

458+
IF (NOT WITH_INTERNAL_SPATIALITE)
459+
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
460+
ENDIF (NOT WITH_INTERNAL_SPATIALITE)
461+
426462
IF (WIN32)
427463
IF (MSVC)
428464
ADD_DEFINITIONS("-DCORE_EXPORT=__declspec(dllexport)")
@@ -441,7 +477,7 @@ ENDIF (WIN32)
441477
#############################################################
442478
# qgis_core library
443479

444-
ADD_LIBRARY(qgis_core SHARED ${QGIS_CORE_SRCS} ${QGIS_CORE_MOC_SRCS} ${INDEX_SRC} ${QGIS_CORE_HDRS} ${QGIS_CORE_MOC_HDRS})
480+
ADD_LIBRARY(qgis_core SHARED ${QGIS_CORE_SRCS} ${QGIS_CORE_MOC_SRCS} ${QGIS_CORE_HDRS} ${QGIS_CORE_MOC_HDRS})
445481

446482
SET_TARGET_PROPERTIES(qgis_core PROPERTIES
447483
PUBLIC_HEADER "${QGIS_CORE_HDRS};${QGIS_CORE_MOC_HDRS}"
@@ -488,10 +524,23 @@ TARGET_LINK_LIBRARIES(qgis_core
488524
${PROJ_LIBRARY}
489525
${GEOS_LIBRARY}
490526
${GDAL_LIBRARY}
491-
${SQLITE3_LIBRARY}
492527
${SPATIALINDEX_LIBRARY}
493528
)
494529

530+
IF (WITH_INTERNAL_SPATIALITE)
531+
IF (WIN32 OR APPLE)
532+
TARGET_LINK_LIBRARIES(qgis_core ${ICONV_LIBRARY})
533+
ENDIF (WIN32 OR APPLE)
534+
IF (ANDROID)
535+
TARGET_LINK_LIBRARIES(qgis_core ${ICONV_LIBRARY} ${CHARSET_LIBRARY})
536+
ENDIF (ANDROID)
537+
IF (UNIX AND NOT ANDROID)
538+
TARGET_LINK_LIBRARIES(qgis_core pthread ${CMAKE_DL_LIBS})
539+
ENDIF (UNIX AND NOT ANDROID)
540+
ELSE (WITH_INTERNAL_SPATIALITE)
541+
TARGET_LINK_LIBRARIES(qgis_core ${SQLITE3_LIBRARY})
542+
ENDIF (WITH_INTERNAL_SPATIALITE)
543+
495544
IF (HAVE_ZLIB)
496545
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
497546
TARGET_LINK_LIBRARIES(qgis_core ${ZLIB_LIBRARY})
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
spatialite.h -- Gaia spatial support for SQLite
3+
4+
version 2.4, 2009 September 17
5+
6+
Author: Sandro Furieri a.furieri@lqt.it
7+
8+
------------------------------------------------------------------------------
9+
10+
Version: MPL 1.1/GPL 2.0/LGPL 2.1
11+
12+
The contents of this file are subject to the Mozilla Public License Version
13+
1.1 (the "License"); you may not use this file except in compliance with
14+
the License. You may obtain a copy of the License at
15+
http://www.mozilla.org/MPL/
16+
17+
Software distributed under the License is distributed on an "AS IS" basis,
18+
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
19+
for the specific language governing rights and limitations under the
20+
License.
21+
22+
The Original Code is the SpatiaLite library
23+
24+
The Initial Developer of the Original Code is Alessandro Furieri
25+
26+
Portions created by the Initial Developer are Copyright (C) 2008
27+
the Initial Developer. All Rights Reserved.
28+
29+
Contributor(s):
30+
31+
Alternatively, the contents of this file may be used under the terms of
32+
either the GNU General Public License Version 2 or later (the "GPL"), or
33+
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
34+
in which case the provisions of the GPL or the LGPL are applicable instead
35+
of those above. If you wish to allow use of your version of this file only
36+
under the terms of either the GPL or the LGPL, and not to allow others to
37+
use your version of this file under the terms of the MPL, indicate your
38+
decision by deleting the provisions above and replace them with the notice
39+
and other provisions required by the GPL or the LGPL. If you do not delete
40+
the provisions above, a recipient may use your version of this file under
41+
the terms of any one of the MPL, the GPL or the LGPL.
42+
43+
*/
44+
45+
#ifdef DLL_EXPORT
46+
#define SPATIALITE_DECLARE __declspec(dllexport)
47+
#else
48+
#define SPATIALITE_DECLARE extern
49+
#endif
50+
51+
#ifndef _SPATIALITE_H
52+
#define _SPATIALITE_H
53+
54+
#ifdef __cplusplus
55+
extern "C"
56+
{
57+
#endif
58+
59+
SPATIALITE_DECLARE const char *spatialite_version (void);
60+
SPATIALITE_DECLARE void spatialite_init (int verbose);
61+
SPATIALITE_DECLARE int dump_shapefile (sqlite3 * sqlite, char *table,
62+
char *column, char *charset,
63+
char *shp_path, char *geom_type,
64+
int verbose, int *rows);
65+
SPATIALITE_DECLARE int load_shapefile (sqlite3 * sqlite, char *shp_path,
66+
char *table, char *charset, int srid,
67+
char *column, int coerce2d,
68+
int compressed, int verbose,
69+
int *rows);
70+
SPATIALITE_DECLARE int load_dbf (sqlite3 * sqlite, char *shp_path,
71+
char *table, char *charset, int verbose,
72+
int *rows);
73+
SPATIALITE_DECLARE double math_round (double value);
74+
SPATIALITE_DECLARE sqlite3_int64 math_llabs (sqlite3_int64 value);
75+
SPATIALITE_DECLARE void spatial_ref_sys_init (sqlite3 * sqlite,
76+
int verbose);
77+
78+
#ifdef __cplusplus
79+
}
80+
#endif
81+
82+
#endif /* _SPATIALITE_H */

0 commit comments

Comments
 (0)