2013-09-04 22:50:30 +02:00
SET ( CPACK_PACKAGE_VERSION_MAJOR "2" )
SET ( CPACK_PACKAGE_VERSION_MINOR "1" )
2012-04-30 09:21:16 +02:00
SET ( CPACK_PACKAGE_VERSION_PATCH "0" )
2008-08-23 21:37:31 +00:00
SET ( COMPLETE_VERSION ${ CPACK_PACKAGE_VERSION_MAJOR } . ${ CPACK_PACKAGE_VERSION_MINOR } . ${ CPACK_PACKAGE_VERSION_PATCH } )
2012-06-14 23:18:19 +02:00
SET ( RELEASE_NAME "Master" )
2008-08-23 21:37:31 +00:00
SET ( PROJECT_VERSION ${ COMPLETE_VERSION } )
PROJECT ( qgis ${ PROJECT_VERSION } )
2010-10-30 19:37:00 +00:00
IF ( APPLE )
SET ( QGIS_APP_NAME "QGIS" )
ELSE ( APPLE )
SET ( QGIS_APP_NAME "qgis" )
ENDIF ( APPLE )
2010-03-05 15:22:21 +00:00
2009-04-11 20:51:50 +00:00
# Note the version no is Mmmpp for Major/minor/patch, 0-padded, thus '10100' for 1.1.0
2010-03-05 15:22:21 +00:00
MATH ( EXPR QGIS_VERSION_INT "${CPACK_PACKAGE_VERSION_MAJOR}*10000+${CPACK_PACKAGE_VERSION_MINOR}*100+${CPACK_PACKAGE_VERSION_PATCH}" )
2013-05-20 16:43:39 +02:00
MESSAGE ( STATUS "QGIS version: ${COMPLETE_VERSION} ${RELEASE_NAME} (${QGIS_VERSION_INT})" )
2008-08-23 21:37:31 +00:00
#############################################################
# CMake settings
2013-07-21 21:44:11 +02:00
CMAKE_MINIMUM_REQUIRED ( VERSION 2.8.0 )
2008-08-23 21:37:31 +00:00
SET ( CMAKE_COLOR_MAKEFILE ON )
# set path to additional CMake modules
SET ( CMAKE_MODULE_PATH ${ CMAKE_SOURCE_DIR } /cmake ${ CMAKE_MODULE_PATH } )
# in generated makefiles use relative paths so the project dir is moveable
# Note commented out since it cause problems but it would be nice to resolve these and enable
2011-05-28 11:50:03 +02:00
#
# issue is caused by INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) near the end of this file generating incorrect path
2008-08-23 21:37:31 +00:00
#SET (CMAKE_USE_RELATIVE_PATHS ON)
# try to configure and build GRASS plugin by default
SET ( WITH_GRASS TRUE CACHE BOOL "Determines whether GRASS plugin should be built" )
IF ( WITH_GRASS )
2010-07-18 11:48:34 +00:00
FIND_PACKAGE ( GRASS )
SET ( GRASS_PREFIX ${ GRASS_PREFIX } CACHE PATH "Path to GRASS base directory" )
2008-08-23 21:37:31 +00:00
ENDIF ( WITH_GRASS )
2012-01-09 00:39:50 +01:00
SET ( WITH_DESKTOP TRUE CACHE BOOL "Determines whether QGIS desktop should be built" )
2010-11-12 10:46:25 +00:00
# mapserver by us disabled default because it needs FastCGI (which is optional dependency)
SET ( WITH_MAPSERVER FALSE CACHE BOOL "Determines whether QGIS mapserver should be built" )
2013-05-22 14:17:12 +02:00
IF ( WITH_MAPSERVER )
SET ( MAPSERVER_SKIP_ECW FALSE CACHE BOOL "Determines whether QGIS mapserver should disable ECW (ECW in server apps requires a special license)" )
ENDIF ( WITH_MAPSERVER )
2010-08-21 09:23:12 +00:00
2011-05-06 16:39:45 +02:00
# build our version of astyle
SET ( WITH_ASTYLE FALSE CACHE BOOL "If you plan to contribute you should reindent with scripts/prepare-commit.sh (using 'our' astyle)" )
2008-08-23 21:37:31 +00:00
# try to configure and build POSTGRESQL support
SET ( WITH_POSTGRESQL TRUE CACHE BOOL "Determines whether POSTGRESQL support should be built" )
IF ( WITH_POSTGRESQL )
SET ( POSTGRESQL_PREFIX "" CACHE PATH "Path to POSTGRESQL base directory" )
ENDIF ( WITH_POSTGRESQL )
2011-10-07 23:29:49 +02:00
SET ( WITH_INTERNAL_QWTPOLAR TRUE CACHE BOOL "Use internal build of QwtPolar" )
2012-11-03 20:06:54 +01:00
SET ( WITH_INTERNAL_QEXTSERIALPORT TRUE CACHE BOOL "Use internal build of Qextserialport" )
2013-04-07 20:49:10 +02:00
SET ( WITH_INTERNAL_SPATIALITE FALSE CACHE BOOL "Determines whether SPATIALITE support should be built internally" )
SET ( WITH_PYSPATIALITE FALSE CACHE BOOL "Determines whether PYSPATIALITE should be built" )
SET ( WITH_QSPATIALITE FALSE CACHE BOOL "Determines whether QSPATIALITE sql driver should be built" )
IF ( WITH_INTERNAL_SPATIALITE )
SET ( SPATIALITE_INCLUDE_DIR ${ CMAKE_SOURCE_DIR } /src/core/spatialite/headers )
SET ( HAVE_SPATIALITE TRUE )
IF ( WIN32 OR APPLE OR CYGWIN )
FIND_PACKAGE ( Iconv REQUIRED )
ENDIF ( WIN32 OR APPLE OR CYGWIN )
ENDIF ( WITH_INTERNAL_SPATIALITE )
2009-03-24 20:52:12 +00:00
2013-01-09 16:46:30 +01:00
SET ( WITH_ORACLE FALSE CACHE BOOL "Determines whether Oracle support should be built" )
IF ( WITH_ORACLE )
SET ( HAVE_ORACLE TRUE )
ENDIF ( WITH_ORACLE )
2008-08-23 21:37:31 +00:00
# try to configure and build python bindings by default
SET ( WITH_BINDINGS TRUE CACHE BOOL "Determines whether python bindings should be built" )
IF ( WITH_BINDINGS )
# By default bindings will be installed only to QGIS directory
# Someone might want to install it to python site-packages directory
# as otherwise user has to use PYTHONPATH environemnt variable to add
# QGIS bindings to package search path
SET ( BINDINGS_GLOBAL_INSTALL FALSE CACHE BOOL "Install bindings to global python directory? (might need root)" )
2013-02-03 03:42:12 -07:00
SET ( WITH_STAGED_PLUGINS TRUE CACHE BOOL "Stage-install core Python plugins to run from build directory? (utilities and console are always staged)" )
2012-10-25 22:48:37 -06:00
SET ( WITH_PY_COMPILE FALSE CACHE BOOL "Determines whether Python modules in staged or installed locations are byte-compiled" )
2012-10-03 11:31:40 -06:00
# concatenate QScintilla2 API files
2013-08-31 14:04:51 -06:00
SET ( WITH_QSCIAPI TRUE CACHE BOOL "Whether to generate PyQGIS QScintilla2 API file. (For devs) run 'make qsci-pap-src' in between QGIS build and install to regenerate .pap file in source tree for console auto-completion." )
# keep casual users from updating their source tree via WITH_QSCIAPI
MARK_AS_ADVANCED ( WITH_QSCIAPI )
2012-11-25 17:04:31 -07:00
# path to custom Python framework on Mac
IF ( APPLE )
SET ( PYTHON_CUSTOM_FRAMEWORK "" CACHE PATH "Path to custom Python.framework on Mac. (should not have to specify other Python options)" )
ENDIF ( APPLE )
2008-08-23 21:37:31 +00:00
ENDIF ( WITH_BINDINGS )
2012-01-06 17:45:32 +01:00
#BUILD WITH QtMobility by default on android only. Other platform can force it
IF ( ANDROID )
SET ( DEFAULT_WITH_QTMOBILITY TRUE )
ELSE ( ANDROID )
SET ( DEFAULT_WITH_QTMOBILITY FALSE )
ENDIF ( ANDROID )
2012-02-23 18:16:20 +01:00
SET ( WITH_QTMOBILITY ${ DEFAULT_WITH_QTMOBILITY } CACHE BOOL "Determines if QtMobility related code should be build (for example internal GPS)" )
2012-01-06 17:45:32 +01:00
2011-07-09 00:15:13 +02:00
SET ( WITH_GLOBE FALSE CACHE BOOL "Determines whether Globe plugin should be built" )
2011-07-06 00:00:53 +02:00
IF ( WITH_GLOBE )
2011-07-10 13:36:29 +02:00
SET ( QT_USE_QTOPENGL 1 )
2011-07-09 00:15:13 +02:00
FIND_PACKAGE ( OSGEARTH REQUIRED )
2012-10-19 00:53:40 +02:00
IF ( OSGEARTHQT_LIBRARY )
# following variable is used in qgsconfig.h
SET ( HAVE_OSGEARTHQT TRUE )
ENDIF ( OSGEARTHQT_LIBRARY )
2011-07-06 00:00:53 +02:00
ENDIF ( WITH_GLOBE )
2009-12-20 16:42:03 +00:00
# Compile flag. Make it possible to turn it off.
2011-02-23 21:20:03 +00:00
SET ( PEDANTIC TRUE CACHE BOOL "Determines if we should compile in pedantic mode." )
2008-08-23 21:37:31 +00:00
# whether unit tests should be build
2011-11-14 10:42:14 +02:00
SET ( ENABLE_TESTS TRUE CACHE BOOL "Build unit tests?" )
2008-08-23 21:37:31 +00:00
# hide this variable because building of python bindings might fail
# if set to other directory than expected
MARK_AS_ADVANCED ( LIBRARY_OUTPUT_PATH )
2013-03-08 19:57:40 -07:00
IF ( MSVC AND CMAKE_GENERATOR MATCHES "NMake" )
# following variable is also used in qgsconfig.h
SET ( USING_NMAKE TRUE )
ENDIF ( MSVC AND CMAKE_GENERATOR MATCHES "NMake" )
2008-08-23 21:37:31 +00:00
#############################################################
# check if lexer and parser are not missing
# http://www.mail-archive.com/cmake@cmake.org/msg02861.html
INCLUDE ( Flex )
FIND_FLEX ( )
IF ( NOT FLEX_EXECUTABLE )
MESSAGE ( FATAL_ERROR "Couldn't find Flex" )
ENDIF ( NOT FLEX_EXECUTABLE )
INCLUDE ( Bison )
FIND_BISON ( )
IF ( NOT BISON_EXECUTABLE )
MESSAGE ( FATAL_ERROR "Couldn't find Bison" )
ENDIF ( NOT BISON_EXECUTABLE )
#############################################################
# search for dependencies
2011-07-25 14:45:31 +02:00
IF ( NOT WIN32 AND NOT ANDROID )
2009-12-03 09:13:55 +00:00
INCLUDE ( CheckFunctionExists )
CHECK_FUNCTION_EXISTS ( openpty OPENPTY_IN_LIBC )
IF ( NOT OPENPTY_IN_LIBC )
SET ( CMAKE_REQUIRED_INCLUDES util.h )
SET ( CMAKE_REQUIRED_LIBRARIES util )
CHECK_FUNCTION_EXISTS ( openpty NEED_LIBUTIL )
IF ( NEED_LIBUTIL )
SET ( OPENPTY_LIBRARY util )
ELSE ( NEED_LIBUTIL )
MESSAGE ( SEND_ERROR "openpty not found!" )
ENDIF ( NEED_LIBUTIL )
ENDIF ( NOT OPENPTY_IN_LIBC )
2011-07-25 14:45:31 +02:00
ENDIF ( NOT WIN32 AND NOT ANDROID )
2009-12-03 09:13:55 +00:00
2008-08-23 21:37:31 +00:00
# required
FIND_PACKAGE ( Proj )
2009-04-05 19:06:54 +00:00
FIND_PACKAGE ( GEOS )
FIND_PACKAGE ( GDAL )
2013-01-04 23:08:59 +01:00
FIND_PACKAGE ( Expat REQUIRED )
2012-04-24 13:53:36 +02:00
FIND_PACKAGE ( Spatialindex REQUIRED )
2011-02-19 20:09:21 +00:00
FIND_PACKAGE ( Qwt REQUIRED )
2012-11-03 20:06:54 +01:00
2011-02-04 15:35:49 +00:00
IF ( NOT WITH_INTERNAL_QWTPOLAR )
2011-02-19 20:09:21 +00:00
FIND_PACKAGE ( QwtPolar REQUIRED )
2011-02-04 15:35:49 +00:00
ENDIF ( NOT WITH_INTERNAL_QWTPOLAR )
2008-08-23 21:37:31 +00:00
2012-11-03 20:06:54 +01:00
IF ( WITH_INTERNAL_QEXTSERIALPORT )
SET ( QEXTSERIALPORT_INCLUDE_DIR ${ CMAKE_SOURCE_DIR } /src/core/gps/qextserialport )
ELSE ( WITH_INTERNAL_QEXTSERIALPORT )
FIND_PACKAGE ( Qextserialport REQUIRED )
ENDIF ( WITH_INTERNAL_QEXTSERIALPORT )
2012-04-24 20:50:43 +02:00
IF ( NOT WITH_INTERNAL_SPATIALITE )
FIND_PACKAGE ( Sqlite3 )
IF ( NOT SQLITE3_FOUND )
MESSAGE ( SEND_ERROR "sqlite3 dependency was not found (try compiling with internal spatialite)!" )
ENDIF ( NOT SQLITE3_FOUND )
ENDIF ( NOT WITH_INTERNAL_SPATIALITE )
2008-08-23 21:37:31 +00:00
# optional
IF ( WITH_POSTGRESQL )
FIND_PACKAGE ( Postgres ) # PostgreSQL provider, SPIT plugin
ENDIF ( WITH_POSTGRESQL )
2009-04-05 19:06:54 +00:00
2013-04-07 20:49:10 +02:00
IF ( NOT WITH_INTERNAL_SPATIALITE )
2009-04-05 10:46:08 +00:00
FIND_PACKAGE ( SPATIALITE )
2013-04-07 20:49:10 +02:00
ENDIF ( NOT WITH_INTERNAL_SPATIALITE )
2008-08-23 21:37:31 +00:00
IF ( NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND )
MESSAGE ( SEND_ERROR "Some dependencies were not found!" )
ENDIF ( NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND )
IF ( POSTGRES_FOUND )
# following variable is used in qgsconfig.h
SET ( HAVE_POSTGRESQL TRUE )
ENDIF ( POSTGRES_FOUND )
2009-03-24 20:52:12 +00:00
IF ( SPATIALITE_FOUND )
# following variable is used in qgsconfig.h
SET ( HAVE_SPATIALITE TRUE )
ENDIF ( SPATIALITE_FOUND )
2008-08-23 21:37:31 +00:00
2012-02-06 09:24:17 +01:00
# following variable is used in qgsconfig.h
SET ( HAVE_MSSQL TRUE )
2008-08-23 21:37:31 +00:00
#############################################################
# search for Qt4
2013-07-27 16:44:47 +02:00
SET ( QT_MIN_VERSION 4.5.0 )
2010-03-05 15:22:21 +00:00
FIND_PACKAGE ( Qt4 ${ QT_MIN_VERSION } REQUIRED )
SET ( QT_USE_QTXML 1 )
SET ( QT_USE_QTNETWORK 1 )
SET ( QT_USE_QTSVG 1 )
SET ( QT_USE_QTSQL 1 )
2012-08-13 16:41:28 +02:00
SET ( QT_USE_QTWEBKIT 1 )
2012-01-10 10:12:14 +01:00
2012-08-13 16:41:28 +02:00
IF ( NOT QT_QTXML_FOUND OR NOT QT_QTNETWORK_FOUND OR NOT QT_QTSVG_FOUND OR NOT QT_QTSQL_FOUND OR NOT QT_QTWEBKIT_FOUND )
2012-01-10 10:12:14 +01:00
MESSAGE ( SEND_ERROR "Some Qt4 modules haven't been found!" )
2012-08-13 16:41:28 +02:00
ENDIF ( NOT QT_QTXML_FOUND OR NOT QT_QTNETWORK_FOUND OR NOT QT_QTSVG_FOUND OR NOT QT_QTSQL_FOUND OR NOT QT_QTWEBKIT_FOUND )
2008-08-23 21:37:31 +00:00
2013-06-23 17:08:35 -06:00
IF ( WITH_QTMOBILITY )
FIND_PACKAGE ( QtMobility 1.1.0 )
ENDIF ( WITH_QTMOBILITY )
2012-06-23 00:16:39 +02:00
IF ( ANDROID )
2012-08-13 16:41:28 +02:00
SET ( DEFAULT_WITH_TOUCH TRUE )
2012-06-23 00:16:39 +02:00
ELSE ( ANDROID )
2012-08-13 16:41:28 +02:00
SET ( DEFAULT_WITH_TOUCH FALSE )
2012-06-23 00:16:39 +02:00
ENDIF ( ANDROID )
2012-08-13 16:41:28 +02:00
2012-06-23 00:16:39 +02:00
#Add a touch mode if Qt has Qt Gestures (starting from 4.6)
IF ( ( QT_VERSION_MAJOR EQUAL 4 AND QT_VERSION_MINOR GREATER 5 ) OR QT_VERSION_MAJOR GREATER 4 )
2012-08-13 16:41:28 +02:00
SET ( WITH_TOUCH ${ DEFAULT_WITH_TOUCH } CACHE BOOL "Determines if touch interface related code should be build" )
2012-06-23 00:16:39 +02:00
ELSE ( ( QT_VERSION_MAJOR EQUAL 4 AND QT_VERSION_MINOR GREATER 5 ) OR QT_VERSION_MAJOR GREATER 4 )
2012-08-13 16:41:28 +02:00
SET ( WITH_TOUCH FALSE )
2012-06-23 00:16:39 +02:00
ENDIF ( ( QT_VERSION_MAJOR EQUAL 4 AND QT_VERSION_MINOR GREATER 5 ) OR QT_VERSION_MAJOR GREATER 4 )
2012-08-13 16:41:28 +02:00
2012-06-23 00:16:39 +02:00
IF ( WITH_TOUCH )
2012-08-13 16:41:28 +02:00
# following variable is used in qgsconfig.h
SET ( HAVE_TOUCH TRUE )
MESSAGE ( STATUS "Touch support enabled" )
2012-06-23 00:16:39 +02:00
ELSE ( WITH_TOUCH )
2012-08-13 16:41:28 +02:00
MESSAGE ( STATUS "Touch support disabled" )
2012-06-23 00:16:39 +02:00
ENDIF ( WITH_TOUCH )
2012-10-17 18:17:14 -06:00
# search for QScintilla2 (C++ lib)
IF ( WITH_BINDINGS )
# TODO: make required after testing find paths on Windows platforms
#FIND_PACKAGE(QScintilla REQUIRED)
FIND_PACKAGE ( QScintilla )
ELSE ( WITH_BINDINGS )
# for when library is used in .h/cpp
FIND_PACKAGE ( QScintilla )
ENDIF ( WITH_BINDINGS )
2008-08-23 21:37:31 +00:00
IF ( ENABLE_TESTS )
SET ( QT_USE_QTTEST TRUE )
ENABLE_TESTING ( )
2012-04-14 15:04:14 +02:00
# Adds some testing specific build targets e.g. make Experimental
INCLUDE ( Dart )
2011-11-17 09:54:09 +02:00
# Define "make check" as alias for "make test" - thanks geos :-)
2012-04-08 15:09:29 +02:00
add_custom_target ( check COMMAND ctest --output-on-failure )
2012-04-14 15:04:14 +02:00
# Additional test configuration options e.g. max upload size of test report
CONFIGURE_FILE (
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e _ t e m p l a t e s / C T e s t C u s t o m . c m a k e . i n "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / C T e s t C u s t o m . c m a k e "
I M M E D I A T E @ O N L Y )
2012-04-09 00:52:58 +02:00
# For server side testing we have no X, we can use xfvb as a fake x
# sudo apt-get install xfvb
add_custom_target ( check-no-x COMMAND xvfb-run --server-args= "-screen 10,1024x768x24" ctest --output-on-failure )
2008-08-23 21:37:31 +00:00
ENDIF ( ENABLE_TESTS )
INCLUDE ( ${ QT_USE_FILE } )
# Disable automatic conversion from QString to ASCII 8-bit strings (char *)
# (Keeps code compatible with Qt/Mac/64bit)
ADD_DEFINITIONS ( -DQT_NO_CAST_TO_ASCII )
FIND_PROGRAM ( QT_LRELEASE_EXECUTABLE
N A M E S l r e l e a s e
P A T H S $ { Q T _ B I N A R Y _ D I R }
N O _ D E F A U L T _ P A T H
)
#############################################################
# enable warnings
IF ( PEDANTIC )
2009-08-18 21:32:20 +00:00
MESSAGE ( STATUS "Pedantic compiler settings enabled" )
2008-08-23 21:37:31 +00:00
IF ( MSVC )
2013-03-08 19:57:40 -07:00
IF ( NOT USING_NMAKE )
ADD_DEFINITIONS ( /W4 )
ENDIF ( NOT USING_NMAKE )
2008-08-23 21:37:31 +00:00
# disable warnings
ADD_DEFINITIONS ( /wd4100 ) # unused formal parameters
ADD_DEFINITIONS ( /wd4127 ) # constant conditional expressions (used in Qt template classes)
2013-02-07 13:14:47 +01:00
ADD_DEFINITIONS ( /wd4505 ) # unreferenced local function has been removed (QgsRasterDataProvider::extent)
2008-08-23 21:37:31 +00:00
ADD_DEFINITIONS ( /wd4510 ) # default constructor could not be generated (sqlite3_index_info, QMap)
ADD_DEFINITIONS ( /wd4512 ) # assignment operator could not be generated (sqlite3_index_info)
ADD_DEFINITIONS ( /wd4610 ) # user defined constructor required (sqlite3_index_info)
2009-12-20 16:42:03 +00:00
ADD_DEFINITIONS ( /wd4706 ) # assignment within conditional expression (pal)
2008-08-23 21:37:31 +00:00
ELSE ( MSVC )
2013-02-03 21:20:26 +01:00
# add warnings via flags (not as definitions as on Mac -Wall can not be overridden per language )
SET ( _warnings "-Wall -Wextra -Wno-long-long -Wformat-security -Wno-strict-aliasing" )
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_warnings}" )
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_warnings}" )
2008-08-23 21:37:31 +00:00
# Qt produces lots of warnings with strict aliasing (as of Qt 4.4.0 & GCC 4.3)
2011-10-11 18:10:31 +00:00
# There are redundant declarations in Qt and GDAL
# ADD_DEFINITIONS( -fstrict-aliasing -Wstrict-aliasing=1 -Wredundant-decls )
2013-02-02 17:06:22 +01:00
IF ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
2013-03-18 15:30:46 -06:00
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage -Wno-overloaded-virtual" )
2013-02-02 17:06:22 +01:00
ENDIF ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
2008-08-23 21:37:31 +00:00
ENDIF ( MSVC )
2013-02-02 17:06:22 +01:00
2008-08-23 21:37:31 +00:00
ENDIF ( PEDANTIC )
2013-02-02 17:06:22 +01:00
IF ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments" )
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments" )
SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Qunused-arguments" )
SET ( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Qunused-arguments" )
SET ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Qunused-arguments" )
ENDIF ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
2011-01-28 16:59:02 +00:00
IF ( CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)" )
# spatialite crashes on ppc - see bugs.debian.org/603986
ADD_DEFINITIONS ( -fno-strict-aliasing )
ENDIF ( CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)" )
2009-08-18 21:32:20 +00:00
IF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo )
MESSAGE ( STATUS "Debug output enabled" )
2008-08-23 21:37:31 +00:00
ADD_DEFINITIONS ( -DQGISDEBUG=1 )
2009-08-18 21:32:20 +00:00
ENDIF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo )
2008-08-23 21:37:31 +00:00
2012-08-13 17:12:28 +02:00
IF ( MSVC )
SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DQGISDEBUG=1" )
SET ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQGISDEBUG=1" )
2012-08-18 19:43:53 +02:00
# disable macros that offend std::numeric_limits<T>::min()/max()
ADD_DEFINITIONS ( -DNOMINMAX )
2012-08-13 17:12:28 +02:00
ENDIF ( MSVC )
2008-08-23 21:37:31 +00:00
#############################################################
# platform specific stuff
IF ( WIN32 )
SET ( DEFAULT_LIB_SUBDIR lib )
2010-06-23 16:33:54 +00:00
SET ( DEFAULT_LIBEXEC_SUBDIR . )
2008-08-23 21:37:31 +00:00
SET ( DEFAULT_DATA_SUBDIR . )
SET ( DEFAULT_PLUGIN_SUBDIR plugins )
SET ( DEFAULT_INCLUDE_SUBDIR include )
2011-05-28 11:50:03 +02:00
2008-08-23 21:37:31 +00:00
IF ( MSVC )
SET ( DEFAULT_BIN_SUBDIR bin )
2010-08-21 09:23:12 +00:00
SET ( DEFAULT_CGIBIN_SUBDIR bin )
2008-08-23 21:37:31 +00:00
# put all the build products into a single directory
# under build (doesnt affect install target) to make for
# easier debugging.
2011-05-28 11:50:03 +02:00
2008-08-23 21:37:31 +00:00
# Turn on defines for non standard maths stuff
ADD_DEFINITIONS ( -D_USE_MATH_DEFINES )
# Turn off deprecation warnings
ADD_DEFINITIONS ( -D_CRT_SECURE_NO_WARNINGS )
ADD_DEFINITIONS ( -D_CRT_NONSTDC_NO_WARNINGS )
2011-05-28 11:50:03 +02:00
2009-08-18 21:32:20 +00:00
IF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo )
2013-03-08 19:57:40 -07:00
IF ( NOT USING_NMAKE )
MESSAGE ( STATUS "Generating browse files" )
ADD_DEFINITIONS ( /FR )
ENDIF ( NOT USING_NMAKE )
2009-08-18 21:32:20 +00:00
ENDIF ( CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo )
2008-08-23 21:37:31 +00:00
2009-07-29 08:59:18 +00:00
IF ( INSTALL_DEPS )
INSTALL ( DIRECTORY ${ INSTALL_DEPS } DESTINATION . )
ENDIF ( INSTALL_DEPS )
2008-08-23 21:37:31 +00:00
ELSE ( MSVC )
2009-07-23 11:07:34 +00:00
SET ( DEFAULT_BIN_SUBDIR . )
2010-08-21 09:23:12 +00:00
SET ( DEFAULT_CGIBIN_SUBDIR . )
2008-08-23 21:37:31 +00:00
ENDIF ( MSVC )
ELSE ( WIN32 )
IF ( APPLE )
# for Mac OS X, everything is put inside an application bundle
2011-07-04 11:15:40 -05:00
# save the root install prefix for the app later
SET ( QGIS_INSTALL_PREFIX ${ CMAKE_INSTALL_PREFIX } )
2010-10-30 19:37:00 +00:00
SET ( QGIS_MACAPP_PREFIX ${ CMAKE_INSTALL_PREFIX } / ${ QGIS_APP_NAME } .app/Contents )
2011-07-04 11:15:40 -05:00
# common prefix for components, let cmake handle it
2010-10-30 19:37:00 +00:00
SET ( CMAKE_INSTALL_PREFIX ${ QGIS_MACAPP_PREFIX } /MacOS )
# 4 bundling levels, each includes previous
# 0 nothing
# 1 Qt frameworks
# 2 non-system libraries, "standard"
# 3 non-system frameworks, "standalone"
2011-07-04 11:15:40 -05:00
SET ( QGIS_MACAPP_BUNDLE 1 CACHE STRING "What to bundle into app package" )
2011-07-24 11:57:26 -05:00
SET ( QGIS_MACAPP_BUNDLE_USER "" CACHE STRING "Path to user bundling script" )
2011-07-04 11:15:40 -05:00
SET ( QGIS_MACAPP_INSTALL_DEV FALSE CACHE BOOL "Install developer frameworks" )
SET ( QGIS_MACAPP_DEV_PREFIX "/Library/Frameworks" CACHE STRING "Path to install developer frameworks" )
2010-10-30 19:37:00 +00:00
# if we have @loader_path, >=OSX 10.5 (darwin 9+)
IF ( CMAKE_SYSTEM_VERSION VERSION_GREATER 9.0.0 OR CMAKE_SYSTEM_VERSION VERSION_EQUAL 9.0.0 )
SET ( OSX_HAVE_LOADERPATH 1 )
ELSE ( )
SET ( OSX_HAVE_LOADERPATH 0 )
ENDIF ( )
2008-08-23 21:37:31 +00:00
#this will define ${APP_SERVICES_LIBRARY}
FIND_LIBRARY ( APP_SERVICES_LIBRARY ApplicationServices )
2010-10-30 19:37:00 +00:00
SET ( DEFAULT_BIN_SUBDIR bin )
SET ( QGIS_BIN_SUBDIR_REV .. )
SET ( DEFAULT_CGIBIN_SUBDIR fcgi-bin )
SET ( QGIS_CGIBIN_SUBDIR_REV .. )
SET ( DEFAULT_LIB_SUBDIR lib )
SET ( QGIS_LIB_SUBDIR_REV .. )
SET ( QGIS_FW_SUBDIR ../Frameworks )
SET ( QGIS_FW_SUBDIR_REV ../MacOS )
SET ( DEFAULT_DATA_SUBDIR ../Resources )
SET ( QGIS_DATA_SUBDIR_REV ../MacOS )
SET ( DEFAULT_LIBEXEC_SUBDIR lib/qgis )
SET ( QGIS_LIBEXEC_SUBDIR_REV ../.. )
SET ( DEFAULT_PLUGIN_SUBDIR ../PlugIns/qgis )
SET ( QGIS_PLUGIN_SUBDIR_REV ../../MacOS )
SET ( DEFAULT_INCLUDE_SUBDIR include/qgis )
2012-10-26 18:41:32 -06:00
# path for framework references when running from build directory
# changed later to reference in-app resources upon install
SET ( CMAKE_INSTALL_NAME_DIR ${ CMAKE_BINARY_DIR } /output/lib )
2012-04-07 12:22:19 -05:00
IF ( WITH_GLOBE )
2013-09-11 22:36:23 -06:00
SET ( OSG_PLUGINS_PATH "" CACHE PATH "Path to OSG plugins for bundling" )
IF ( QGIS_MACAPP_BUNDLE GREATER 0 )
# ensure OSG plugins bundled path will be used by globe plugin
SET ( HAVE_MACAPP_BUNDLED_OSG 1 )
ENDIF ( QGIS_MACAPP_BUNDLE GREATER 0 )
2012-04-07 12:22:19 -05:00
ENDIF ( WITH_GLOBE )
2013-04-01 16:24:57 -05:00
# recent cmakes force SDKs, recent SDKs don't have user symlinks
# need to find non-system frameworks
# cmake bug #0007250 - CMAKE_SHARED_LINKER_FLAGS ignored when creating
# a framework, so these need to be manually handled with LINK_FLAGS options
SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -F/Library/Frameworks" )
SET ( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -F/Library/Frameworks" )
SET ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -F/Library/Frameworks" )
2010-10-30 19:37:00 +00:00
ELSE ( APPLE )
# UNIX
2011-03-06 02:09:21 +00:00
SET ( DEFAULT_BIN_SUBDIR bin )
SET ( DEFAULT_CGIBIN_SUBDIR bin )
SET ( DEFAULT_LIB_SUBDIR lib ${ LIB_SUFFIX } )
SET ( DEFAULT_DATA_SUBDIR share/qgis )
SET ( DEFAULT_LIBEXEC_SUBDIR lib ${ LIB_SUFFIX } /qgis )
SET ( DEFAULT_PLUGIN_SUBDIR lib ${ LIB_SUFFIX } /qgis/plugins )
SET ( DEFAULT_INCLUDE_SUBDIR include/qgis )
2010-10-30 19:37:00 +00:00
ENDIF ( APPLE )
2008-08-23 21:37:31 +00:00
ENDIF ( WIN32 )
2011-08-19 05:17:18 +02:00
IF ( ANDROID )
SET ( DEFAULT_PLUGIN_SUBDIR lib )
SET ( DEFAULT_DATA_SUBDIR files/share )
ENDIF ( ANDROID )
2008-08-23 21:37:31 +00:00
2010-08-21 09:23:12 +00:00
#assume we have escaped compiler directives
2009-01-07 22:54:16 +00:00
#eventually we want to change this to new
2011-05-28 11:50:03 +02:00
#since we don't need to jump through so many
2009-01-07 22:54:16 +00:00
#hoops to escape compiler directives then
IF ( COMMAND cmake_policy )
cmake_policy ( SET CMP0003 NEW )
cmake_policy ( SET CMP0005 OLD )
ENDIF ( COMMAND cmake_policy )
2008-08-23 21:37:31 +00:00
IF ( WIN32 )
2011-05-24 11:38:32 +02:00
SET ( DLLIMPORT "__declspec(dllimport)" )
SET ( DLLEXPORT "__declspec(dllexport)" )
2008-08-23 21:37:31 +00:00
ELSE ( WIN32 )
2012-04-03 10:36:53 +02:00
IF ( PEDANTIC AND NOT APPLE )
2012-04-02 21:07:31 +02:00
SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
SET ( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined" )
SET ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-undefined" )
2012-04-03 10:36:53 +02:00
ENDIF ( PEDANTIC AND NOT APPLE )
2012-04-02 21:07:31 +02:00
2011-05-24 11:38:32 +02:00
SET ( DLLIMPORT "" )
SET ( DLLEXPORT "" )
ENDIF ( WIN32 )
ADD_DEFINITIONS ( "-DCORE_EXPORT=${DLLIMPORT}" )
ADD_DEFINITIONS ( "-DGUI_EXPORT=${DLLIMPORT}" )
ADD_DEFINITIONS ( "-DPYTHON_EXPORT=${DLLIMPORT}" )
ADD_DEFINITIONS ( "-DANALYSIS_EXPORT=${DLLIMPORT}" )
2013-09-06 22:07:42 +02:00
ADD_DEFINITIONS ( "-DAPP_EXPORT=${DLLIMPORT}" )
2008-08-23 21:37:31 +00:00
#############################################################
# user-changeable settings which can be used to customize
# layout of QGIS installation
# (default values are platform-specific)
SET ( QGIS_BIN_SUBDIR ${ DEFAULT_BIN_SUBDIR } CACHE STRING "Subdirectory where executables will be installed" )
2010-08-21 09:23:12 +00:00
SET ( QGIS_CGIBIN_SUBDIR ${ DEFAULT_CGIBIN_SUBDIR } CACHE STRING "Subdirectory where CGI executables will be installed" )
2008-08-23 21:37:31 +00:00
SET ( QGIS_LIB_SUBDIR ${ DEFAULT_LIB_SUBDIR } CACHE STRING "Subdirectory where libraries will be installed" )
2010-06-23 16:33:54 +00:00
SET ( QGIS_LIBEXEC_SUBDIR ${ DEFAULT_LIBEXEC_SUBDIR } CACHE STRING "Subdirectory where private executables will be installed" )
2008-08-23 21:37:31 +00:00
SET ( QGIS_DATA_SUBDIR ${ DEFAULT_DATA_SUBDIR } CACHE STRING "Subdirectory where QGIS data will be installed" )
SET ( QGIS_PLUGIN_SUBDIR ${ DEFAULT_PLUGIN_SUBDIR } CACHE STRING "Subdirectory where plugins will be installed" )
SET ( QGIS_INCLUDE_SUBDIR ${ DEFAULT_INCLUDE_SUBDIR } CACHE STRING "Subdirectory where header files will be installed" )
# mark *_SUBDIR variables as advanced as this is not something
# that an average user would use
2010-10-30 19:37:00 +00:00
MARK_AS_ADVANCED ( QGIS_BIN_SUBDIR QGIS_CGIBIN_SUBDIR QGIS_LIB_SUBDIR QGIS_LIBEXEC_SUBDIR QGIS_DATA_SUBDIR QGIS_PLUGIN_SUBDIR QGIS_INCLUDE_SUBDIR )
2008-08-23 21:37:31 +00:00
# full paths for the installation
SET ( QGIS_BIN_DIR ${ QGIS_BIN_SUBDIR } )
2010-08-21 09:23:12 +00:00
SET ( QGIS_CGIBIN_DIR ${ QGIS_CGIBIN_SUBDIR } )
2008-08-23 21:37:31 +00:00
SET ( QGIS_LIB_DIR ${ QGIS_LIB_SUBDIR } )
2010-06-23 16:33:54 +00:00
SET ( QGIS_LIBEXEC_DIR ${ QGIS_LIBEXEC_SUBDIR } )
2008-08-23 21:37:31 +00:00
SET ( QGIS_DATA_DIR ${ QGIS_DATA_SUBDIR } )
SET ( QGIS_PLUGIN_DIR ${ QGIS_PLUGIN_SUBDIR } )
SET ( QGIS_INCLUDE_DIR ${ QGIS_INCLUDE_SUBDIR } )
2011-07-25 19:12:40 +02:00
# set the default locations where the targets (executables, libraries) will land when compiled
# this is to allow running qgis from the source tree without having to actually do a "make install"
SET ( QGIS_OUTPUT_DIRECTORY ${ CMAKE_BINARY_DIR } /output )
SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ QGIS_OUTPUT_DIRECTORY } / ${ QGIS_BIN_SUBDIR } )
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ QGIS_OUTPUT_DIRECTORY } / ${ QGIS_LIB_SUBDIR } )
# write a marker with source directory path into the output's bin directory
# if run from the build directory QGIS will detect it and alter the paths
2013-06-16 22:42:44 +10:00
FILE ( WRITE ${ QGIS_OUTPUT_DIRECTORY } / ${ QGIS_BIN_SUBDIR } /qgisbuildpath.txt "${CMAKE_SOURCE_DIR}\n${QGIS_OUTPUT_DIRECTORY}" )
2011-07-25 19:12:40 +02:00
2008-08-23 21:37:31 +00:00
# manual page - makes sense only on unix systems
2011-07-04 11:15:40 -05:00
IF ( UNIX AND NOT APPLE )
2008-08-23 21:37:31 +00:00
SET ( DEFAULT_MANUAL_SUBDIR man )
SET ( QGIS_MANUAL_SUBDIR ${ DEFAULT_MANUAL_SUBDIR } CACHE STRING "Subdirectory where manual files will be installed" )
MARK_AS_ADVANCED ( QGIS_MANUAL_SUBDIR )
SET ( QGIS_MANUAL_DIR ${ CMAKE_INSTALL_PREFIX } / ${ QGIS_MANUAL_SUBDIR } )
2011-07-04 11:15:40 -05:00
ENDIF ( UNIX AND NOT APPLE )
2008-08-23 21:37:31 +00:00
2010-01-16 11:04:41 +00:00
#############################################################
# Python bindings
IF ( WITH_BINDINGS )
# python support: check for interpreter, sip, pyqt4
FIND_PACKAGE ( PythonInterp REQUIRED )
FIND_PACKAGE ( PythonLibrary REQUIRED )
FIND_PACKAGE ( SIP REQUIRED )
FIND_PACKAGE ( PyQt4 REQUIRED )
2012-10-17 18:17:14 -06:00
FIND_PACKAGE ( Qsci REQUIRED )
2010-01-16 11:04:41 +00:00
INCLUDE ( PythonMacros )
INCLUDE ( SIPMacros )
INCLUDE ( PyQt4Macros )
# setup SIP variables
2011-01-28 16:59:02 +00:00
SEPARATE_ARGUMENTS ( PYQT4_SIP_FLAGS ) # convert space separated values to a list
SET ( SIP_INCLUDES ${ PYQT4_SIP_DIR } ${ CMAKE_SOURCE_DIR } /python )
SET ( SIP_CONCAT_PARTS 4 )
SET ( SIP_EXTRA_OPTIONS ${ PYQT4_SIP_FLAGS } )
2010-01-16 11:04:41 +00:00
IF ( NOT BINDINGS_GLOBAL_INSTALL )
2011-01-28 16:59:02 +00:00
SET ( PYTHON_SITE_PACKAGES_DIR ${ QGIS_DATA_DIR } /python )
2010-01-16 11:04:41 +00:00
ENDIF ( NOT BINDINGS_GLOBAL_INSTALL )
ENDIF ( WITH_BINDINGS )
2012-10-17 18:17:14 -06:00
# Set QSCINTILLA_VERSION_STR to that of module, if no headers found
IF ( NOT EXISTS QSCINTILLA_VERSION_STR AND EXISTS QSCI_MOD_VERSION_STR )
SET ( QSCINTILLA_VERSION_STR ${ QSCI_MOD_VERSION_STR } )
ENDIF ( NOT EXISTS QSCINTILLA_VERSION_STR AND EXISTS QSCI_MOD_VERSION_STR )
2008-08-23 21:37:31 +00:00
#############################################################
# create qgsconfig.h
2011-07-04 11:15:40 -05:00
# installed with app target
2008-08-23 21:37:31 +00:00
CONFIGURE_FILE ( ${ CMAKE_SOURCE_DIR } /cmake_templates/qgsconfig.h.in ${ CMAKE_BINARY_DIR } /qgsconfig.h )
INCLUDE_DIRECTORIES ( ${ CMAKE_BINARY_DIR } )
2009-04-11 10:16:16 +00:00
# Added by Jef to prevent python core and gui libs linking to other qgisCore and qgisGui libs
# that may be in the same install prefix
LINK_DIRECTORIES ( ${ CMAKE_BINARY_DIR } /src/core ${ CMAKE_BINARY_DIR } /src/gui )
2008-08-23 21:37:31 +00:00
#############################################################
2011-05-04 21:56:25 +02:00
# create qgsversion.h
2010-11-16 20:20:27 +00:00
FIND_FILE ( GIT_MARKER index PATHS ${ CMAKE_SOURCE_DIR } /.git )
2011-05-04 21:56:25 +02:00
IF ( GIT_MARKER )
2012-04-21 00:56:28 +02:00
FIND_PROGRAM ( GITCOMMAND git PATHS c:/cygwin/bin )
IF ( GITCOMMAND )
2011-05-06 16:39:45 +02:00
IF ( MSVC )
ADD_CUSTOM_COMMAND (
O U T P U T $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / q g s v e r s i o n . h
2012-04-21 00:56:28 +02:00
C O M M A N D f o r / f \ " u s e b a c k q t o k e n s = 1 \ " % % a i n " ( ` \ " $ { G I T C O M M A N D } \ " l o g - n 1 - - o n e l i n e ` ) " d o e c h o \ #define QGSVERSION \"%%a\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h
2011-05-06 16:39:45 +02:00
M A I N _ D E P E N D E N C Y $ { G I T _ M A R K E R }
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
)
ELSE ( MSVC )
2011-07-14 19:32:09 +02:00
EXECUTE_PROCESS (
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
2012-04-21 00:56:28 +02:00
C O M M A N D $ { G I T C O M M A N D } l o g - n 1 - - p r e t t y = % h O U T P U T _ V A R I A B L E R E V I S I O N
2011-07-14 19:32:09 +02:00
)
2011-07-04 11:15:40 -05:00
STRING ( STRIP "${REVISION}" REVISION )
2012-10-24 13:58:49 +02:00
# Get GIT remote and branch
EXECUTE_PROCESS (
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
2013-06-23 17:08:35 -06:00
C O M M A N D $ { G I T C O M M A N D } n a m e - r e v - - n a m e - o n l y H E A D O U T P U T _ V A R I A B L E G I T _ L O C A L _ B R A N C H
2012-10-24 13:58:49 +02:00
)
STRING ( STRIP "${GIT_LOCAL_BRANCH}" GIT_LOCAL_BRANCH )
EXECUTE_PROCESS (
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
2013-06-23 17:08:35 -06:00
C O M M A N D $ { G I T C O M M A N D } c o n f i g b r a n c h . $ { G I T _ L O C A L _ B R A N C H } . r e m o t e O U T P U T _ V A R I A B L E G I T _ R E M O T E
2012-10-24 13:58:49 +02:00
)
STRING ( STRIP "${GIT_REMOTE}" GIT_REMOTE )
EXECUTE_PROCESS (
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
C O M M A N D $ { G I T C O M M A N D } c o n f i g r e m o t e . $ { G I T _ R E M O T E } . u r l O U T P U T _ V A R I A B L E G I T _ R E M O T E _ U R L
)
STRING ( STRIP "${GIT_REMOTE_URL}" GIT_REMOTE_URL )
2011-05-06 16:39:45 +02:00
ADD_CUSTOM_COMMAND (
O U T P U T $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / q g s v e r s i o n . h
2011-07-04 11:15:40 -05:00
C O M M A N D e c h o \ \ \ #define QGSVERSION \\\"${REVISION}\\\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h
2012-10-24 13:58:49 +02:00
C O M M A N D e c h o \ \ \ #define QGS_GIT_REMOTE_URL \\\"${GIT_REMOTE_URL}\\\" >>${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h
2011-05-06 16:39:45 +02:00
M A I N _ D E P E N D E N C Y $ { G I T _ M A R K E R }
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
)
ENDIF ( MSVC )
2012-04-21 00:56:28 +02:00
ELSE ( GITCOMMAND )
2011-05-04 21:56:25 +02:00
MESSAGE ( STATUS "git marker, but no git found - version will be unknown" )
2011-07-04 11:15:40 -05:00
SET ( REVISION "unknown" )
2011-05-04 21:56:25 +02:00
FILE ( WRITE ${ CMAKE_CURRENT_BINARY_DIR } /qgsversion.h "#define QGSVERSION \" unknown\ "" )
2012-04-21 00:56:28 +02:00
ENDIF ( GITCOMMAND )
2011-05-04 21:56:25 +02:00
ELSE ( GIT_MARKER )
2011-07-04 11:15:40 -05:00
SET ( REVISION "exported" )
2011-05-04 21:56:25 +02:00
FILE ( WRITE ${ CMAKE_CURRENT_BINARY_DIR } /qgsversion.h "#define QGSVERSION \" exported\ "" )
ENDIF ( GIT_MARKER )
ADD_CUSTOM_TARGET ( version ALL DEPENDS ${ CMAKE_CURRENT_BINARY_DIR } /qgsversion.h )
2008-08-23 21:37:31 +00:00
#############################################################
# process subdirs
2012-09-04 20:31:59 +02:00
#create a variable to specify where our test data is
#so that unit tests can use TEST_DATA_DIR to locate
#the test data. See CMakeLists in test dirs for more info
#TEST_DATA_DIR is also used by QgsRenderChecker currently in core
SET ( TEST_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/testdata" )
2011-05-27 22:45:08 +02:00
ADD_SUBDIRECTORY ( src )
ADD_SUBDIRECTORY ( doc )
ADD_SUBDIRECTORY ( images )
ADD_SUBDIRECTORY ( resources )
ADD_SUBDIRECTORY ( i18n )
2008-08-23 21:37:31 +00:00
2010-01-16 11:04:41 +00:00
IF ( WITH_BINDINGS )
2011-05-27 22:45:08 +02:00
ADD_SUBDIRECTORY ( python )
2010-01-16 11:04:41 +00:00
ENDIF ( WITH_BINDINGS )
2008-08-23 21:37:31 +00:00
IF ( ENABLE_TESTS )
2011-05-27 22:45:08 +02:00
ADD_SUBDIRECTORY ( tests )
2011-11-14 13:14:25 +02:00
SET ( CTEST_BINARY_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/output/bin" )
MESSAGE ( STATUS "Ctest Binary Directory set to: ${CTEST_BINARY_DIRECTORY}" )
2008-08-23 21:37:31 +00:00
ENDIF ( ENABLE_TESTS )
2010-10-30 19:37:00 +00:00
IF ( APPLE )
# must be last for install, so install_name_tool can do its work
2011-05-27 22:45:08 +02:00
ADD_SUBDIRECTORY ( mac )
2012-10-25 02:55:50 -06:00
2012-10-26 18:41:32 -06:00
# allow QGIS to be run directly from build directory and to run unit tests
2012-10-30 17:34:55 -06:00
EXECUTE_PROCESS ( COMMAND /bin/mkdir -p "${QGIS_OUTPUT_DIRECTORY}/lib" )
EXECUTE_PROCESS (
2012-10-26 18:41:32 -06:00
C O M M A N D / b i n / l n - f s . . / . . / P l u g i n s / q g i s / q g i s g r a s s . f r a m e w o r k l i b /
2012-10-30 17:34:55 -06:00
W O R K I N G _ D I R E C T O R Y " $ { Q G I S _ O U T P U T _ D I R E C T O R Y } "
)
EXECUTE_PROCESS (
2012-10-26 18:41:32 -06:00
C O M M A N D / b i n / l n - f s . . / . . / P l u g i n s / q g i s / q g i s s q l a n y c o n n e c t i o n . f r a m e w o r k l i b /
W O R K I N G _ D I R E C T O R Y " $ { Q G I S _ O U T P U T _ D I R E C T O R Y } "
2012-10-25 14:49:02 -06:00
)
2010-10-30 19:37:00 +00:00
ENDIF ( APPLE )
2008-08-23 21:37:31 +00:00
# manual page - makes sense only on unix systems
2010-10-30 19:37:00 +00:00
IF ( UNIX AND NOT APPLE )
2013-09-10 23:20:00 +02:00
INSTALL ( FILES qgis.1 qbrowser.1 DESTINATION ${ QGIS_MANUAL_DIR } /man1 )
2010-10-30 19:37:00 +00:00
ENDIF ( UNIX AND NOT APPLE )
2008-08-23 21:37:31 +00:00
2011-03-06 02:09:21 +00:00
INSTALL ( FILES cmake/FindQGIS.cmake DESTINATION ${ QGIS_DATA_DIR } )
2012-10-25 22:48:37 -06:00
#############################################################
# Post-install commands
ADD_SUBDIRECTORY ( postinstall )
2008-08-23 21:37:31 +00:00
#############################################################
# Uninstall stuff see: http://www.vtk.org/Wiki/CMake_FAQ
CONFIGURE_FILE (
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e _ t e m p l a t e s / c m a k e _ u n i n s t a l l . c m a k e . i n "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e "
I M M E D I A T E @ O N L Y )
ADD_CUSTOM_TARGET ( uninstall
" $ { C M A K E _ C O M M A N D } " - P " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e " )
#############################################################
# Enable packaging
INCLUDE ( InstallRequiredSystemLibraries )
2013-05-20 16:43:39 +02:00
SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "QGIS" )
2008-08-23 21:37:31 +00:00
SET ( CPACK_PACKAGE_VENDOR "Open Source Geospatial Foundation" )
SET ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README" )
SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING" )
2013-05-20 16:43:39 +02:00
SET ( CPACK_PACKAGE_INSTALL_DIRECTORY "QGIS ${COMPLETE_VERSION}" )
2008-08-23 21:37:31 +00:00
IF ( WIN32 AND NOT UNIX )
# There is a bug in NSI that does not handle full unix paths properly. Make
# sure there is at least one set of four (4) backslashes.
SET ( CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/win_build\\\\sidebar.bmp" )
SET ( CPACK_NSIS_INSTALLED_ICON_NAME "\\\\qgis.exe" )
2013-05-20 16:43:39 +02:00
SET ( CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} QGIS" )
2008-08-23 21:37:31 +00:00
SET ( CPACK_NSIS_HELP_LINK "http:\\\\\\\\qgis.org" )
SET ( CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\qgis.org" )
SET ( CPACK_NSIS_CONTACT "tim@linfiniti.com" )
SET ( CPACK_NSIS_MODIFY_PATH ON )
# SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " !include \\\"${CMAKE_SOURCE_DIR}\\\\win_build\\\\extra.nsh\\\"")
ELSE ( WIN32 AND NOT UNIX )
2013-05-20 16:43:39 +02:00
#SET(CPACK_STRIP_FILES "QGIS")
2008-08-23 21:37:31 +00:00
#SET(CPACK_SOURCE_STRIP_FILES "")
ENDIF ( WIN32 AND NOT UNIX )
SET ( CPACK_PACKAGE_EXECUTABLES "qgis" "QGIS" )
INCLUDE ( CPack )