Skip to content

Commit 405d71d

Browse files
author
timlinux
committed
Added the option (off by default) to build with an internal copy of sqlite3. This is the recommended approach by the author of sqlite3, but the old way (linking to an external lib) remains default for now. To use add -DWITH_INTERNAL_SQLITE3 to cmake command line
git-svn-id: http://svn.osgeo.org/qgis/trunk@8236 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 7891b11 commit 405d71d

File tree

5 files changed

+88151
-76
lines changed

5 files changed

+88151
-76
lines changed

CMakeLists.txt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ IF (WITH_BINDINGS)
4545
SET (BINDINGS_GLOBAL_INSTALL FALSE CACHE BOOL "Install bindings to global python directory? (might need root)")
4646
ENDIF (WITH_BINDINGS)
4747

48+
# Optionally allow embedding sqlite3 into the binary (sqlite amalgamation) as
49+
# recommended by sqlite developer
50+
SET (WITH_INTERNAL_SQLITE3 FALSE CACHE BOOL "Compile sqlite3 support directly into the binary")
4851
# Compile flag. Make it posible to turn it off.
4952
SET (PEDANTIC FALSE CACHE BOOL "Determines if we should compile with -Wall -Werror.")
5053

@@ -80,7 +83,14 @@ ENDIF (NOT BISON_EXECUTABLE)
8083

8184
# required
8285
FIND_PACKAGE(Proj)
83-
FIND_PACKAGE(Sqlite3)
86+
87+
#optional since we can use internal sqlite
88+
IF (NOT WITH_INTERNAL_SQLITE3)
89+
FIND_PACKAGE(Sqlite3)
90+
IF (NOT SQLITE3_FOUND)
91+
MESSAGE (SEND_ERROR "sqlite3 dependency was not found (try compiling with sqlite3 internal)!")
92+
ENDIF (NOT SQLITE3_FOUND)
93+
ENDIF (NOT WITH_INTERNAL_SQLITE3)
8494
FIND_PACKAGE(GEOS)
8595
FIND_PACKAGE(GDAL)
8696

@@ -102,9 +112,9 @@ IF (WITH_BINDINGS)
102112
ENDIF (WITH_BINDINGS)
103113

104114

105-
IF (NOT PROJ_FOUND OR NOT SQLITE3_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
115+
IF (NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
106116
MESSAGE (SEND_ERROR "Some dependencies were not found!")
107-
ENDIF (NOT PROJ_FOUND OR NOT SQLITE3_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
117+
ENDIF (NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
108118

109119
IF (POSTGRES_FOUND)
110120
# following variable is used in qgsconfig.h

src/core/CMakeLists.txt

Lines changed: 89 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -4,75 +4,81 @@
44
# sources
55

66
SET(QGIS_CORE_SRCS
7-
qgis.cpp
8-
qgsapplication.cpp
9-
qgsattributeaction.cpp
10-
qgsclipper.cpp
11-
qgscontexthelp.cpp
12-
qgscoordinatetransform.cpp
13-
qgsdatasourceuri.cpp
14-
qgsdistancearea.cpp
15-
qgsexception.cpp
16-
qgsfeature.cpp
17-
qgsfield.cpp
18-
qgsgeometry.cpp
19-
qgshttptransaction.cpp
20-
qgslabel.cpp
21-
qgslabelattributes.cpp
22-
qgsline.cpp
23-
qgslogger.cpp
24-
qgsmaplayer.cpp
25-
qgsmaplayerregistry.cpp
26-
qgsmaprender.cpp
27-
qgsmaptopixel.cpp
28-
qgsmessageoutput.cpp
29-
qgspoint.cpp
30-
qgsproject.cpp
31-
qgsprojectfiletransform.cpp
32-
qgsprojectversion.cpp
33-
qgsprojectproperty.cpp
34-
qgsprovidercountcalcevent.cpp
35-
qgsproviderextentcalcevent.cpp
36-
qgsprovidermetadata.cpp
37-
qgsproviderregistry.cpp
38-
qgsrasterdataprovider.cpp
39-
qgsrect.cpp
40-
qgsrunprocess.cpp
41-
qgsscalecalculator.cpp
42-
qgssearchstring.cpp
43-
qgssearchtreenode.cpp
44-
qgssnapper.cpp
45-
qgsspatialrefsys.cpp
46-
qgsvectordataprovider.cpp
47-
qgsvectorfilewriter.cpp
48-
qgsvectorlayer.cpp
49-
50-
raster/qgscliptominmaxenhancement.cpp
51-
raster/qgscolorrampshader.cpp
52-
raster/qgscolortable.cpp
53-
raster/qgscontrastenhancement.cpp
54-
raster/qgscontrastenhancementfunction.cpp
55-
raster/qgsfreakoutshader.cpp
56-
raster/qgslinearminmaxenhancement.cpp
57-
raster/qgslinearminmaxenhancementwithclip.cpp
58-
raster/qgspseudocolorshader.cpp
59-
raster/qgsrasterlayer.cpp
60-
raster/qgsrastertransparency.cpp
61-
raster/qgsrastershader.cpp
62-
raster/qgsrastershaderfunction.cpp
63-
64-
renderer/qgscontinuouscolorrenderer.cpp
65-
renderer/qgsgraduatedsymbolrenderer.cpp
66-
renderer/qgsrenderer.cpp
67-
renderer/qgssinglesymbolrenderer.cpp
68-
renderer/qgsuniquevaluerenderer.cpp
69-
70-
symbology/qgsmarkercatalogue.cpp
71-
symbology/qgssymbol.cpp
72-
symbology/qgssymbologyutils.cpp
73-
74-
spatialindex/qgsspatialindex.cpp
75-
)
7+
qgis.cpp
8+
qgsapplication.cpp
9+
qgsattributeaction.cpp
10+
qgsclipper.cpp
11+
qgscontexthelp.cpp
12+
qgscoordinatetransform.cpp
13+
qgsdatasourceuri.cpp
14+
qgsdistancearea.cpp
15+
qgsexception.cpp
16+
qgsfeature.cpp
17+
qgsfield.cpp
18+
qgsgeometry.cpp
19+
qgshttptransaction.cpp
20+
qgslabel.cpp
21+
qgslabelattributes.cpp
22+
qgsline.cpp
23+
qgslogger.cpp
24+
qgsmaplayer.cpp
25+
qgsmaplayerregistry.cpp
26+
qgsmaprender.cpp
27+
qgsmaptopixel.cpp
28+
qgsmessageoutput.cpp
29+
qgspoint.cpp
30+
qgsproject.cpp
31+
qgsprojectfiletransform.cpp
32+
qgsprojectversion.cpp
33+
qgsprojectproperty.cpp
34+
qgsprovidercountcalcevent.cpp
35+
qgsproviderextentcalcevent.cpp
36+
qgsprovidermetadata.cpp
37+
qgsproviderregistry.cpp
38+
qgsrasterdataprovider.cpp
39+
qgsrect.cpp
40+
qgsrunprocess.cpp
41+
qgsscalecalculator.cpp
42+
qgssearchstring.cpp
43+
qgssearchtreenode.cpp
44+
qgssnapper.cpp
45+
qgsspatialrefsys.cpp
46+
qgsvectordataprovider.cpp
47+
qgsvectorfilewriter.cpp
48+
qgsvectorlayer.cpp
49+
50+
raster/qgscliptominmaxenhancement.cpp
51+
raster/qgscolorrampshader.cpp
52+
raster/qgscolortable.cpp
53+
raster/qgscontrastenhancement.cpp
54+
raster/qgscontrastenhancementfunction.cpp
55+
raster/qgsfreakoutshader.cpp
56+
raster/qgslinearminmaxenhancement.cpp
57+
raster/qgslinearminmaxenhancementwithclip.cpp
58+
raster/qgspseudocolorshader.cpp
59+
raster/qgsrasterlayer.cpp
60+
raster/qgsrastertransparency.cpp
61+
raster/qgsrastershader.cpp
62+
raster/qgsrastershaderfunction.cpp
63+
64+
renderer/qgscontinuouscolorrenderer.cpp
65+
renderer/qgsgraduatedsymbolrenderer.cpp
66+
renderer/qgsrenderer.cpp
67+
renderer/qgssinglesymbolrenderer.cpp
68+
renderer/qgsuniquevaluerenderer.cpp
69+
70+
symbology/qgsmarkercatalogue.cpp
71+
symbology/qgssymbol.cpp
72+
symbology/qgssymbologyutils.cpp
73+
74+
spatialindex/qgsspatialindex.cpp
75+
)
76+
IF (WITH_INTERNAL_SQLITE3)
77+
SET(QGIS_CORE_SRCS
78+
${QGIS_CORE_SRCS}
79+
sqlite3/sqlite3.c
80+
)
81+
ENDIF (WITH_INTERNAL_SQLITE3)
7682

7783
ADD_FLEX_FILES(QGIS_CORE_SRCS qgssearchstringlexer.ll)
7884

@@ -103,14 +109,21 @@ raster/qgsrasterlayer.h
103109

104110
QT4_WRAP_CPP(QGIS_CORE_MOC_SRCS ${QGIS_CORE_MOC_HDRS})
105111

106-
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} raster renderer symbology
112+
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
113+
raster
114+
renderer
115+
symbology
107116
spatialindex/include
108117
${QT_QTSVG_INCLUDE_DIR}
109118
${PROJ_INCLUDE_DIR}
110-
${SQLITE3_INCLUDE_DIR}
111119
${GEOS_INCLUDE_DIR}
112120
${GDAL_INCLUDE_DIR}
113121
)
122+
IF (WITH_INTERNAL_SQLITE3)
123+
INCLUDE_DIRECTORIES(sqlite3)
124+
ELSE (WITH_INTERNAL_SQLITE3)
125+
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
126+
ENDIF (WITH_INTERNAL_SQLITE3)
114127

115128
IF (WIN32)
116129
IF (MSVC)
@@ -170,7 +183,6 @@ TARGET_LINK_LIBRARIES(qgis_core
170183
${QT_QTMAIN_LIBRARY}
171184
${QT_QT3SUPPORT_LIBRARY}
172185
${PROJ_LIBRARY}
173-
${SQLITE3_LIBRARY}
174186
${GEOS_LIBRARY}
175187
${GDAL_LIBRARY}
176188
${PLATFORM_LIBRARIES}
@@ -182,6 +194,10 @@ IF (APPLE)
182194
)
183195
ENDIF (APPLE)
184196

197+
IF (NOT WITH_INTERNAL_SQLITE3)
198+
TARGET_LINK_LIBRARIES(qgis_core ${SQLITE3_LIBRARY})
199+
ENDIF (NOT WITH_INTERNAL_SQLITE3)
200+
185201
INSTALL(TARGETS qgis_core
186202
RUNTIME DESTINATION ${QGIS_BIN_DIR}
187203
LIBRARY DESTINATION ${QGIS_LIB_DIR}
@@ -264,4 +280,4 @@ spatialindex/qgsspatialindex.h
264280
)
265281

266282
INSTALL(CODE "MESSAGE(\"Installing CORE headers...\")")
267-
INSTALL(FILES ${QGIS_CORE_HDRS} ${QGIS_CORE_MOC_HDRS} DESTINATION ${QGIS_INCLUDE_DIR})
283+

0 commit comments

Comments
 (0)