diff --git a/.ci/travis/code_layout/CMakeLists.txt b/.ci/travis/code_layout/CMakeLists.txt deleted file mode 100644 index 1f6a1f3413f..00000000000 --- a/.ci/travis/code_layout/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ - - -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.6) - -SET(CMAKE_CXX_STANDARD 11) - -SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../../../cmake ${CMAKE_MODULE_PATH}) - -ADD_SUBDIRECTORY(../../../src/astyle qgisstyle) - -ENABLE_TESTING() - -ADD_TEST(qgis_indentation ${CMAKE_SOURCE_DIR}/../../../scripts/verify-indentation.sh) -ADD_TEST(qgis_spelling ${CMAKE_SOURCE_DIR}/../../../scripts/spell_check/spell_test.sh) -ADD_TEST(qgis_sipify ${CMAKE_SOURCE_DIR}/../../../tests/scripts/test_sipify.sh) -ADD_TEST(qgis_sip_uptodate ${CMAKE_SOURCE_DIR}/../../../tests/scripts/test_sipfiles_uptodate.sh) - -IF (WITH_APIDOC) - ADD_SUBDIRECTORY(../../../doc doc) - - INCLUDE(CreateQgsVersion) - CREATE_QGSVERSION() - - set(QGIS_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc") - - INCLUDE(UsePythonTest) - ADD_PYTHON_TEST(PyQgsDocCoverage ${CMAKE_SOURCE_DIR}/../../../tests/src/python/test_qgsdoccoverage.py) -ENDIF (WITH_APIDOC) diff --git a/.ci/travis/code_layout/install.sh b/.ci/travis/code_layout/install.sh index ad77d0dc40f..97f438131ed 100755 --- a/.ci/travis/code_layout/install.sh +++ b/.ci/travis/code_layout/install.sh @@ -18,5 +18,5 @@ export CORES=2 mkdir build cd build -cmake -DWITH_APIDOC=ON ../.ci/travis/code_layout +cmake -DWITH_CORE=OFF -DWITH_APIDOC=ON -DWITH_ASTYLE=ON -DENABLE_TESTS=ON .. make -j${CORES} diff --git a/.ci/travis/code_layout/script.sh b/.ci/travis/code_layout/script.sh index 407e49ac7e0..1c5a2198217 100755 --- a/.ci/travis/code_layout/script.sh +++ b/.ci/travis/code_layout/script.sh @@ -14,10 +14,6 @@ ########################################################################### set -e -DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) - -export QGISSTYLE=${DIR}/scripts/qgisstyle - pushd build xvfb-run ctest -V --output-on-failure popd diff --git a/.ci/travis/linux/blacklist.txt b/.ci/travis/linux/blacklist.txt index f097cb16727..bf5c2d9c9b9 100755 --- a/.ci/travis/linux/blacklist.txt +++ b/.ci/travis/linux/blacklist.txt @@ -11,6 +11,8 @@ PyQgsDBManagerGpkg # layout tests are run on separate build qgis_indentation qgis_spelling +qgis_sipify +qgis_sip_uptodate # flacky qgis_filedownloader diff --git a/.ci/travis/macos/blacklist.txt b/.ci/travis/macos/blacklist.txt index 63c4b4f4f12..4171ad046c5 100644 --- a/.ci/travis/macos/blacklist.txt +++ b/.ci/travis/macos/blacklist.txt @@ -1,4 +1,8 @@ +# layout tests are run on separate build qgis_spelling +qgis_sipify +qgis_sip_uptodate + qgis_openstreetmaptest qgis_wcsprovidertest PyQgsServer @@ -49,4 +53,4 @@ PyQgsFileDownloader PyQgsSettings PyQgsConsole PyQgsLocator -PyQgsAuthManagerPasswordOWSTest +PyQgsAuthManagerPasswordOWSTest diff --git a/.gitignore b/.gitignore index 48df43d6a11..86ee2ead03c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ .pydevproject /CMakeLists.txt.user /CMakeLists.txt.user.* -.ci/travis/code_layout/scripts/qgisstyle* api_doc build* debian/*.debhelper diff --git a/CMakeLists.txt b/CMakeLists.txt index b440d6a94c6..9d1dec069ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,298 +34,306 @@ SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) # issue is caused by INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) near the end of this file generating incorrect path #SET (CMAKE_USE_RELATIVE_PATHS ON) -# try to configure and build GRASS plugin by default -FOREACH (GRASS_SEARCH_VERSION 6 7) - # For GRASS 6 are used cached variables without version suffix so that existing caches don't have to be reconfigured. - # Cached variables: WITH_GRASS, WITH_GRASS7, GRASS_PREFIX, GRASS_PREFIX7, GRASS_INCLUDE_DIR, GRASS_INCLUDE_DIR7 - # Everywhere else each variable has version major appended. - # Normal variables: GRASS_FOUND6, GRASS_FOUND7, GRASS_MAJOR_VERSION6, GRASS_MAJOR_VERSION7, etc. - # In addition there is also GRASS_FOUND, which is TRUE if at least one version of GRASS was found - IF (GRASS_SEARCH_VERSION EQUAL 6) - SET (GRASS_CACHE_VERSION "") - ELSE (GRASS_SEARCH_VERSION EQUAL 6) - SET (GRASS_CACHE_VERSION ${GRASS_SEARCH_VERSION}) - ENDIF (GRASS_SEARCH_VERSION EQUAL 6) +SET (WITH_CORE TRUE CACHE BOOL "Determines whether QGIS core should be built.") +MARK_AS_ADVANCED(WITH_CORE) - SET (WITH_GRASS${GRASS_CACHE_VERSION} TRUE CACHE BOOL "Determines whether GRASS ${GRASS_SEARCH_VERSION} plugin should be built") - IF (WITH_GRASS${GRASS_CACHE_VERSION}) - FIND_PACKAGE(GRASS ${GRASS_SEARCH_VERSION}) - SET (GRASS_PREFIX${GRASS_CACHE_VERSION} ${GRASS_PREFIX${GRASS_SEARCH_VERSION}} CACHE PATH "Path to GRASS ${GRASS_SEARCH_VERSION} base directory") - ENDIF (WITH_GRASS${GRASS_CACHE_VERSION}) -ENDFOREACH (GRASS_SEARCH_VERSION) +IF(WITH_CORE) + # try to configure and build GRASS plugin by default + FOREACH (GRASS_SEARCH_VERSION 6 7) + # For GRASS 6 are used cached variables without version suffix so that existing caches don't have to be reconfigured. + # Cached variables: WITH_GRASS, WITH_GRASS7, GRASS_PREFIX, GRASS_PREFIX7, GRASS_INCLUDE_DIR, GRASS_INCLUDE_DIR7 + # Everywhere else each variable has version major appended. + # Normal variables: GRASS_FOUND6, GRASS_FOUND7, GRASS_MAJOR_VERSION6, GRASS_MAJOR_VERSION7, etc. + # In addition there is also GRASS_FOUND, which is TRUE if at least one version of GRASS was found + IF (GRASS_SEARCH_VERSION EQUAL 6) + SET (GRASS_CACHE_VERSION "") + ELSE (GRASS_SEARCH_VERSION EQUAL 6) + SET (GRASS_CACHE_VERSION ${GRASS_SEARCH_VERSION}) + ENDIF (GRASS_SEARCH_VERSION EQUAL 6) -SET (WITH_DESKTOP TRUE CACHE BOOL "Determines whether QGIS desktop should be built") + SET (WITH_GRASS${GRASS_CACHE_VERSION} TRUE CACHE BOOL "Determines whether GRASS ${GRASS_SEARCH_VERSION} plugin should be built") + IF (WITH_GRASS${GRASS_CACHE_VERSION}) + FIND_PACKAGE(GRASS ${GRASS_SEARCH_VERSION}) + SET (GRASS_PREFIX${GRASS_CACHE_VERSION} ${GRASS_PREFIX${GRASS_SEARCH_VERSION}} CACHE PATH "Path to GRASS ${GRASS_SEARCH_VERSION} base directory") + ENDIF (WITH_GRASS${GRASS_CACHE_VERSION}) + ENDFOREACH (GRASS_SEARCH_VERSION) -# server disabled default because it needs FastCGI (which is optional dependency) -SET (WITH_SERVER FALSE CACHE BOOL "Determines whether QGIS server should be built") -IF(WITH_SERVER) - SET (SERVER_SKIP_ECW FALSE CACHE BOOL "Determines whether QGIS server should disable ECW (ECW in server apps requires a special license)") + SET (WITH_DESKTOP TRUE CACHE BOOL "Determines whether QGIS desktop should be built") - SET (WITH_SERVER_PLUGINS TRUE CACHE BOOL "Determines whether QGIS server support for python plugins should be built") - IF(WITH_SERVER_PLUGINS) - SET(HAVE_SERVER_PYTHON_PLUGINS TRUE) - ENDIF(WITH_SERVER_PLUGINS) -ENDIF(WITH_SERVER) + # server disabled default because it needs FastCGI (which is optional dependency) + SET (WITH_SERVER FALSE CACHE BOOL "Determines whether QGIS server should be built") + IF(WITH_SERVER) + SET (SERVER_SKIP_ECW FALSE CACHE BOOL "Determines whether QGIS server should disable ECW (ECW in server apps requires a special license)") -# Custom widgets -SET (WITH_CUSTOM_WIDGETS FALSE CACHE BOOL "Determines whether QGIS custom widgets for Qt Designer should be built") + SET (WITH_SERVER_PLUGINS TRUE CACHE BOOL "Determines whether QGIS server support for python plugins should be built") + IF(WITH_SERVER_PLUGINS) + SET(HAVE_SERVER_PYTHON_PLUGINS TRUE) + ENDIF(WITH_SERVER_PLUGINS) + ENDIF(WITH_SERVER) + + # Custom widgets + SET (WITH_CUSTOM_WIDGETS FALSE CACHE BOOL "Determines whether QGIS custom widgets for Qt Designer should be built") + + # 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) + + SET (WITH_INTERNAL_QEXTSERIALPORT TRUE CACHE BOOL "Use internal build of Qextserialport") + + SET (WITH_QSPATIALITE FALSE CACHE BOOL "Determines whether QSPATIALITE sql driver should be built") + + SET (WITH_ORACLE FALSE CACHE BOOL "Determines whether Oracle support should be built") + IF(WITH_ORACLE) + SET(HAVE_ORACLE TRUE) + SET(ORACLE_INCLUDEDIR "" CACHE STRING "Path to OCI headers") + SET(ORACLE_LIBDIR "" CACHE STRING "Path to OCI libraries") + ENDIF(WITH_ORACLE) + + + # 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 environment 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)") + SET (WITH_STAGED_PLUGINS TRUE CACHE BOOL "Stage-install core Python plugins to run from build directory? (utilities and console are always staged)") + SET (WITH_PY_COMPILE FALSE CACHE BOOL "Determines whether Python modules in staged or installed locations are byte-compiled") + # concatenate QScintilla2 API files + 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) + ADD_DEFINITIONS(-DWITH_BINDINGS) + ENDIF (WITH_BINDINGS) + + #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) + SET (WITH_QTMOBILITY ${DEFAULT_WITH_QTMOBILITY} CACHE BOOL "Determines if QtMobility related code should be build (for example internal GPS)") + + SET (WITH_GEOREFERENCER TRUE CACHE BOOL "Determines whether GeoReferencer plugin should be built") + + SET (WITH_GLOBE FALSE CACHE BOOL "Determines whether Globe plugin should be built") + IF (WITH_GLOBE) + SET(QT_USE_QTOPENGL 1) + FIND_PACKAGE(OSGEARTH REQUIRED) + IF (OSGEARTHQT_LIBRARY) + # following variable is used in qgsconfig.h + SET(HAVE_OSGEARTHQT TRUE) + ENDIF (OSGEARTHQT_LIBRARY) + ENDIF (WITH_GLOBE) + + # Compile flag. Make it possible to turn it off. + SET (PEDANTIC TRUE CACHE BOOL "Determines if we should compile in pedantic mode.") + + # whether coverage tests should be performed + SET (ENABLE_COVERAGE FALSE CACHE BOOL "Perform coverage tests?") + + # whether coverage documentation should be generated + SET (GENERATE_COVERAGE_DOCS FALSE CACHE BOOL "Generate coverage docs (requires lcov)?") + + # hide this variable because building of python bindings might fail + # if set to other directory than expected + MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH) + + 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") + + IF (CMAKE_GENERATOR MATCHES "Ninja") + # following variable is also used in qgsconfig.h + SET (USING_NINJA TRUE) + ENDIF (CMAKE_GENERATOR MATCHES "Ninja") + + ############################################################# + # 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 + + IF(NOT WIN32 AND NOT ANDROID) + 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) + ENDIF(NOT WIN32 AND NOT ANDROID) + + # required + FIND_PACKAGE(Proj) + FIND_PACKAGE(GEOS) + FIND_PACKAGE(GDAL) + FIND_PACKAGE(Expat REQUIRED) + FIND_PACKAGE(Spatialindex REQUIRED) + FIND_PACKAGE(Qwt REQUIRED) + + 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) + + FIND_PACKAGE(Sqlite3) + IF (NOT SQLITE3_FOUND) + MESSAGE (SEND_ERROR "sqlite3 dependency was not found!") + ENDIF (NOT SQLITE3_FOUND) + + # optional + IF (WITH_POSTGRESQL) + FIND_PACKAGE(Postgres) # PostgreSQL provider + ENDIF (WITH_POSTGRESQL) + + FIND_PACKAGE(SpatiaLite REQUIRED) + + IF(SPATIALITE_VERSION_GE_4_0_0) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_VERSION_GE_4_0_0") + ENDIF(SPATIALITE_VERSION_GE_4_0_0) + IF(SPATIALITE_VERSION_G_4_1_1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_VERSION_G_4_1_1") + ENDIF(SPATIALITE_VERSION_G_4_1_1) + IF(SPATIALITE_HAS_INIT_EX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_HAS_INIT_EX") + ENDIF(SPATIALITE_HAS_INIT_EX) + + IF (NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND) + MESSAGE (SEND_ERROR "Some dependencies were not found! Proj: ${PROJ_FOUND}, Geos: ${GEOS_FOUND}, GDAL: ${GDAL_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) + + SET (WITH_QTWEBKIT TRUE CACHE BOOL "Enable QtWebkit support") + IF (WITH_QTWEBKIT) + ADD_DEFINITIONS(-DWITH_QTWEBKIT) + MESSAGE(STATUS "Qt WebKit support enabled") + ELSE (WITH_QTWEBKIT) + MESSAGE(STATUS "Qt WebKit support DISABLED.") + ENDIF(WITH_QTWEBKIT) + ############################################################# + # search for Qt5 + SET(QT_MIN_VERSION 5.2.0) + FIND_PACKAGE(Qt5Core QUIET) + FIND_PACKAGE(Qt5Gui REQUIRED) + FIND_PACKAGE(Qt5Widgets REQUIRED) + FIND_PACKAGE(Qt5Network REQUIRED) + FIND_PACKAGE(Qt5Xml REQUIRED) + FIND_PACKAGE(Qt5Svg REQUIRED) + FIND_PACKAGE(Qt5Concurrent REQUIRED) + FIND_PACKAGE(Qt5PrintSupport REQUIRED) + FIND_PACKAGE(Qt5Positioning) + IF (WITH_QTWEBKIT) + FIND_PACKAGE(Qt5WebKit REQUIRED) + FIND_PACKAGE(Qt5WebKitWidgets REQUIRED) + ENDIF(WITH_QTWEBKIT) + FIND_PACKAGE(Qt5Test REQUIRED) + FIND_PACKAGE(Qt5UiTools REQUIRED) + FIND_PACKAGE(Qt5Script REQUIRED) + FIND_PACKAGE(Qt5Sql REQUIRED) + INCLUDE("cmake/modules/ECMQt4To5Porting.cmake") + MESSAGE(STATUS "Found Qt version: ${Qt5Core_VERSION_STRING}") + + IF(WITH_QTWEBKIT) + SET(OPTIONAL_QTWEBKIT ${QT_QTWEBKIT_LIBRARY}) + ENDIF(WITH_QTWEBKIT) + + IF (WITH_QTMOBILITY) + FIND_PACKAGE(QtMobility 1.1.0) + ENDIF (WITH_QTMOBILITY) + + # search for QScintilla2 (C++ lib) + FIND_PACKAGE(QScintilla REQUIRED) + + # Password helper + FIND_PACKAGE(QtKeychain REQUIRED) + # Master password hash and authentication encryption + FIND_PACKAGE(QCA REQUIRED) + # Check for runtime dependency of qca-ossl plugin + # REQUIRED if unit tests are to be run from build directory + IF(NOT MSVC) + include(QCAMacros) + FIND_QCAOSSL_PLUGIN_CPP(ENABLE_TESTS) + ENDIF(NOT MSVC) + + IF (SUPPRESS_QT_WARNINGS) + # Newer versions of UseQt4.cmake include Qt with -isystem automatically + # This can be used to force this behavior on older systems + # Can be removed as soon as Travis-CI updates from precise + INCLUDE_DIRECTORIES(SYSTEM ${QT_INCLUDE_DIR}) + ENDIF (SUPPRESS_QT_WARNINGS) + + # 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 + NAMES lrelease + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH + ) +ENDIF(WITH_CORE) # 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)") -# 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) - -SET (WITH_INTERNAL_QEXTSERIALPORT TRUE CACHE BOOL "Use internal build of Qextserialport") - -SET (WITH_QSPATIALITE FALSE CACHE BOOL "Determines whether QSPATIALITE sql driver should be built") - -SET (WITH_ORACLE FALSE CACHE BOOL "Determines whether Oracle support should be built") -IF(WITH_ORACLE) - SET(HAVE_ORACLE TRUE) - SET(ORACLE_INCLUDEDIR "" CACHE STRING "Path to OCI headers") - SET(ORACLE_LIBDIR "" CACHE STRING "Path to OCI libraries") -ENDIF(WITH_ORACLE) - - -# 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 environment 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)") - SET (WITH_STAGED_PLUGINS TRUE CACHE BOOL "Stage-install core Python plugins to run from build directory? (utilities and console are always staged)") - SET (WITH_PY_COMPILE FALSE CACHE BOOL "Determines whether Python modules in staged or installed locations are byte-compiled") - # concatenate QScintilla2 API files - 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) - ADD_DEFINITIONS(-DWITH_BINDINGS) -ENDIF (WITH_BINDINGS) - -#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) -SET (WITH_QTMOBILITY ${DEFAULT_WITH_QTMOBILITY} CACHE BOOL "Determines if QtMobility related code should be build (for example internal GPS)") - -SET (WITH_GEOREFERENCER TRUE CACHE BOOL "Determines whether GeoReferencer plugin should be built") - -SET (WITH_GLOBE FALSE CACHE BOOL "Determines whether Globe plugin should be built") -IF (WITH_GLOBE) - SET(QT_USE_QTOPENGL 1) - FIND_PACKAGE(OSGEARTH REQUIRED) - IF (OSGEARTHQT_LIBRARY) - # following variable is used in qgsconfig.h - SET(HAVE_OSGEARTHQT TRUE) - ENDIF (OSGEARTHQT_LIBRARY) -ENDIF (WITH_GLOBE) - -# Compile flag. Make it possible to turn it off. -SET (PEDANTIC TRUE CACHE BOOL "Determines if we should compile in pedantic mode.") - +############################################################# +# testing # whether unit tests should be build SET (ENABLE_TESTS TRUE CACHE BOOL "Build unit tests?") - -# whether coverage tests should be performed -SET (ENABLE_COVERAGE FALSE CACHE BOOL "Perform coverage tests?") - -# whether coverage documentation should be generated -SET (GENERATE_COVERAGE_DOCS FALSE CACHE BOOL "Generate coverage docs (requires lcov)?") - -# hide this variable because building of python bindings might fail -# if set to other directory than expected -MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH) - -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") - -IF (CMAKE_GENERATOR MATCHES "Ninja") - # following variable is also used in qgsconfig.h - SET (USING_NINJA TRUE) -ENDIF (CMAKE_GENERATOR MATCHES "Ninja") - -############################################################# -# 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 - -IF(NOT WIN32 AND NOT ANDROID) - 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) -ENDIF(NOT WIN32 AND NOT ANDROID) - -# required -FIND_PACKAGE(Proj) -FIND_PACKAGE(GEOS) -FIND_PACKAGE(GDAL) -FIND_PACKAGE(Expat REQUIRED) -FIND_PACKAGE(Spatialindex REQUIRED) -FIND_PACKAGE(Qwt REQUIRED) - -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) - -FIND_PACKAGE(Sqlite3) -IF (NOT SQLITE3_FOUND) - MESSAGE (SEND_ERROR "sqlite3 dependency was not found!") -ENDIF (NOT SQLITE3_FOUND) - -# optional -IF (WITH_POSTGRESQL) - FIND_PACKAGE(Postgres) # PostgreSQL provider -ENDIF (WITH_POSTGRESQL) - -FIND_PACKAGE(SpatiaLite REQUIRED) - -IF(SPATIALITE_VERSION_GE_4_0_0) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_VERSION_GE_4_0_0") -ENDIF(SPATIALITE_VERSION_GE_4_0_0) -IF(SPATIALITE_VERSION_G_4_1_1) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_VERSION_G_4_1_1") -ENDIF(SPATIALITE_VERSION_G_4_1_1) -IF(SPATIALITE_HAS_INIT_EX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_HAS_INIT_EX") -ENDIF(SPATIALITE_HAS_INIT_EX) - -IF (NOT PROJ_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND) - MESSAGE (SEND_ERROR "Some dependencies were not found! Proj: ${PROJ_FOUND}, Geos: ${GEOS_FOUND}, GDAL: ${GDAL_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) - -SET (WITH_QTWEBKIT TRUE CACHE BOOL "Enable QtWebkit support") -IF (WITH_QTWEBKIT) - ADD_DEFINITIONS(-DWITH_QTWEBKIT) - MESSAGE(STATUS "Qt WebKit support enabled") -ELSE (WITH_QTWEBKIT) - MESSAGE(STATUS "Qt WebKit support DISABLED.") -ENDIF(WITH_QTWEBKIT) -############################################################# -# search for Qt5 -SET(QT_MIN_VERSION 5.2.0) -FIND_PACKAGE(Qt5Core QUIET) -FIND_PACKAGE(Qt5Gui REQUIRED) -FIND_PACKAGE(Qt5Widgets REQUIRED) -FIND_PACKAGE(Qt5Network REQUIRED) -FIND_PACKAGE(Qt5Xml REQUIRED) -FIND_PACKAGE(Qt5Svg REQUIRED) -FIND_PACKAGE(Qt5Concurrent REQUIRED) -FIND_PACKAGE(Qt5PrintSupport REQUIRED) -FIND_PACKAGE(Qt5Positioning) -IF (WITH_QTWEBKIT) - FIND_PACKAGE(Qt5WebKit REQUIRED) - FIND_PACKAGE(Qt5WebKitWidgets REQUIRED) -ENDIF(WITH_QTWEBKIT) -FIND_PACKAGE(Qt5Test REQUIRED) -FIND_PACKAGE(Qt5UiTools REQUIRED) -FIND_PACKAGE(Qt5Script REQUIRED) -FIND_PACKAGE(Qt5Sql REQUIRED) -INCLUDE("cmake/modules/ECMQt4To5Porting.cmake") -MESSAGE(STATUS "Found Qt version: ${Qt5Core_VERSION_STRING}") - -IF(WITH_QTWEBKIT) - SET(OPTIONAL_QTWEBKIT ${QT_QTWEBKIT_LIBRARY}) -ENDIF(WITH_QTWEBKIT) - -IF (WITH_QTMOBILITY) - FIND_PACKAGE(QtMobility 1.1.0) -ENDIF (WITH_QTMOBILITY) - -# search for QScintilla2 (C++ lib) -FIND_PACKAGE(QScintilla REQUIRED) - -# Password helper -FIND_PACKAGE(QtKeychain REQUIRED) -# Master password hash and authentication encryption -FIND_PACKAGE(QCA REQUIRED) -# Check for runtime dependency of qca-ossl plugin -# REQUIRED if unit tests are to be run from build directory -IF(NOT MSVC) -include(QCAMacros) -FIND_QCAOSSL_PLUGIN_CPP(ENABLE_TESTS) -ENDIF(NOT MSVC) - -# ModelTest -SET(ENABLE_MODELTEST FALSE CACHE BOOL "Enable QT ModelTest (not for production)") - IF (ENABLE_TESTS) - SET( QT_USE_QTTEST TRUE ) - ADD_DEFINITIONS(-DENABLE_TESTS) - ENABLE_TESTING() - # Adds some testing specific build targets e.g. make Experimental - INCLUDE(Dart) - # Define "make check" as alias for "make test" - thanks geos :-) - add_custom_target(check COMMAND ctest --output-on-failure) - # Additional test configuration options e.g. max upload size of test report - CONFIGURE_FILE( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_templates/CTestCustom.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake" - IMMEDIATE @ONLY) - # 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) -ENDIF (ENABLE_TESTS) +SET( QT_USE_QTTEST TRUE ) +ADD_DEFINITIONS(-DENABLE_TESTS) +ENABLE_TESTING() +# Adds some testing specific build targets e.g. make Experimental +INCLUDE(Dart) +# Define "make check" as alias for "make test" - thanks geos :-) +add_custom_target(check COMMAND ctest --output-on-failure) +# Additional test configuration options e.g. max upload size of test report +CONFIGURE_FILE( + "${CMAKE_SOURCE_DIR}/cmake_templates/CTestCustom.cmake.in" + "${CMAKE_BINARY_DIR}/CTestCustom.cmake" + IMMEDIATE @ONLY) +# 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) +ENDIF(ENABLE_TESTS) -IF (SUPPRESS_QT_WARNINGS) - # Newer versions of UseQt4.cmake include Qt with -isystem automatically - # This can be used to force this behavior on older systems - # Can be removed as soon as Travis-CI updates from precise - INCLUDE_DIRECTORIES(SYSTEM ${QT_INCLUDE_DIR}) -ENDIF (SUPPRESS_QT_WARNINGS) - -# 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 - NAMES lrelease - PATHS ${QT_BINARY_DIR} - NO_DEFAULT_PATH -) +IF (WITH_CORE) +# ModelTest + SET(ENABLE_MODELTEST FALSE CACHE BOOL "Enable QT ModelTest (not for production)") +ENDIF (WITH_CORE) ############################################################# # enable use of c++11 features where available @@ -429,149 +437,150 @@ ENDIF(ENABLE_COVERAGE) ############################################################# # platform specific stuff +IF (WITH_CORE) + IF (WIN32) + SET (DEFAULT_LIB_SUBDIR lib) + SET (DEFAULT_LIBEXEC_SUBDIR .) + SET (DEFAULT_DATA_SUBDIR .) + SET (DEFAULT_PLUGIN_SUBDIR plugins) + SET (DEFAULT_INCLUDE_SUBDIR include) -IF (WIN32) - SET (DEFAULT_LIB_SUBDIR lib) - SET (DEFAULT_LIBEXEC_SUBDIR .) - SET (DEFAULT_DATA_SUBDIR .) - SET (DEFAULT_PLUGIN_SUBDIR plugins) - SET (DEFAULT_INCLUDE_SUBDIR include) + SET (DEFAULT_SERVER_MODULE_SUBDIR server) - SET (DEFAULT_SERVER_MODULE_SUBDIR server) + IF (MSVC) + SET (DEFAULT_BIN_SUBDIR bin) + SET (DEFAULT_CGIBIN_SUBDIR bin) + # put all the build products into a single directory + # under build (doesn't affect install target) to make for + # easier debugging. - IF (MSVC) - SET (DEFAULT_BIN_SUBDIR bin) - SET (DEFAULT_CGIBIN_SUBDIR bin) - # put all the build products into a single directory - # under build (doesn't affect install target) to make for - # easier debugging. + # Turn on defines for non standard maths stuff + ADD_DEFINITIONS(-D_USE_MATH_DEFINES) - # 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) - # Turn off deprecation warnings - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) - ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNINGS) + IF (CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) + IF (NOT USING_NMAKE AND NOT USING_NINJA) + MESSAGE (STATUS "Generating browse files") + ADD_DEFINITIONS( /FR ) + ENDIF (NOT USING_NMAKE AND NOT USING_NINJA) + ENDIF (CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) - IF (CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) - IF (NOT USING_NMAKE AND NOT USING_NINJA) - MESSAGE (STATUS "Generating browse files") - ADD_DEFINITIONS( /FR ) - ENDIF (NOT USING_NMAKE AND NOT USING_NINJA) - ENDIF (CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) + IF (INSTALL_DEPS) + INSTALL(DIRECTORY ${INSTALL_DEPS} DESTINATION .) + ENDIF (INSTALL_DEPS) + ELSE(MSVC) + SET (DEFAULT_BIN_SUBDIR .) + SET (DEFAULT_CGIBIN_SUBDIR .) + ENDIF(MSVC) + ELSE (WIN32) - IF (INSTALL_DEPS) - INSTALL(DIRECTORY ${INSTALL_DEPS} DESTINATION .) - ENDIF (INSTALL_DEPS) - ELSE(MSVC) - SET (DEFAULT_BIN_SUBDIR .) - SET (DEFAULT_CGIBIN_SUBDIR .) - ENDIF(MSVC) -ELSE (WIN32) + IF (APPLE) + IF (POLICY CMP0042) # in CMake 3.0.0+ + SET (CMAKE_MACOSX_RPATH OFF) # otherwise ON by default + ENDIF (POLICY CMP0042) + # for Mac OS X, everything is put inside an application bundle + # save the root install prefix for the app later + SET (QGIS_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) + SET (QGIS_MACAPP_PREFIX ${CMAKE_INSTALL_PREFIX}/${QGIS_APP_NAME}.app/Contents) + # common prefix for components, let cmake handle it + 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" + SET (QGIS_MACAPP_BUNDLE 1 CACHE STRING "What to bundle into app package") + SET (QGIS_MACAPP_BUNDLE_USER "" CACHE STRING "Path to user bundling script") + 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") + # 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 () - IF (APPLE) - IF (POLICY CMP0042) # in CMake 3.0.0+ - SET (CMAKE_MACOSX_RPATH OFF) # otherwise ON by default - ENDIF (POLICY CMP0042) - # for Mac OS X, everything is put inside an application bundle - # save the root install prefix for the app later - SET (QGIS_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) - SET (QGIS_MACAPP_PREFIX ${CMAKE_INSTALL_PREFIX}/${QGIS_APP_NAME}.app/Contents) - # common prefix for components, let cmake handle it - 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" - SET (QGIS_MACAPP_BUNDLE 1 CACHE STRING "What to bundle into app package") - SET (QGIS_MACAPP_BUNDLE_USER "" CACHE STRING "Path to user bundling script") - 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") - # 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 () + 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) - 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) + # Set server moodules path to DEFAULT_LIBEXEC_SUBDIR+'/server' + SET (DEFAULT_SERVER_MODULE_SUBDIR ${DEFAULT_LIBEXEC_SUBDIR}/server) - # Set server moodules path to DEFAULT_LIBEXEC_SUBDIR+'/server' - SET (DEFAULT_SERVER_MODULE_SUBDIR ${DEFAULT_LIBEXEC_SUBDIR}/server) + # 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) + IF (WITH_GLOBE) + SET (OSG_PLUGINS_PATH "" CACHE PATH "Path to OSG plugins for bundling") + ENDIF (WITH_GLOBE) + # 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") - # 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) - IF (WITH_GLOBE) - SET (OSG_PLUGINS_PATH "" CACHE PATH "Path to OSG plugins for bundling") - ENDIF (WITH_GLOBE) - # 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") + ELSE (APPLE) + # UNIX + 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) - ELSE (APPLE) - # UNIX - 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) + SET (DEFAULT_SERVER_MODULE_SUBDIR ${DEFAULT_LIBEXEC_SUBDIR}/server) + ENDIF (APPLE) - SET (DEFAULT_SERVER_MODULE_SUBDIR ${DEFAULT_LIBEXEC_SUBDIR}/server) - ENDIF (APPLE) + ENDIF (WIN32) -ENDIF (WIN32) + IF (ANDROID) + SET (DEFAULT_PLUGIN_SUBDIR lib) + SET (DEFAULT_DATA_SUBDIR files/share) + string(REPLACE "" "" CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}") + ENDIF (ANDROID) -IF (ANDROID) - SET (DEFAULT_PLUGIN_SUBDIR lib) - SET (DEFAULT_DATA_SUBDIR files/share) - string(REPLACE "" "" CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}") -ENDIF (ANDROID) + #assume we have escaped compiler directives + #eventually we want to change this to new + #since we don't need to jump through so many + #hoops to escape compiler directives then + IF(COMMAND cmake_policy) + cmake_policy(SET CMP0003 NEW) + cmake_policy(SET CMP0005 OLD) + IF(NOT "${CMAKE_VERSION}" VERSION_LESS "3.3") + cmake_policy(SET CMP0063 NEW) + ENDIF(NOT "${CMAKE_VERSION}" VERSION_LESS "3.3") + IF(MSVC) + cmake_policy(SET CMP0020 NEW) + ENDIF(MSVC) + ENDIF(COMMAND cmake_policy) -#assume we have escaped compiler directives -#eventually we want to change this to new -#since we don't need to jump through so many -#hoops to escape compiler directives then -IF(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) - cmake_policy(SET CMP0005 OLD) - IF(NOT "${CMAKE_VERSION}" VERSION_LESS "3.3") - cmake_policy(SET CMP0063 NEW) - ENDIF(NOT "${CMAKE_VERSION}" VERSION_LESS "3.3") - IF(MSVC) - cmake_policy(SET CMP0020 NEW) - ENDIF(MSVC) -ENDIF(COMMAND cmake_policy) + IF (PEDANTIC AND NOT WIN32 AND NOT APPLE) + 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") + ENDIF(PEDANTIC AND NOT WIN32 AND NOT APPLE) -IF (PEDANTIC AND NOT WIN32 AND NOT APPLE) - 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") -ENDIF(PEDANTIC AND NOT WIN32 AND NOT APPLE) - -SET(CMAKE_CXX_VISIBILITY_PRESET hidden) -INCLUDE(GenerateExportHeader) + SET(CMAKE_CXX_VISIBILITY_PRESET hidden) + INCLUDE(GenerateExportHeader) +ENDIF (WITH_CORE) ############################################################# # user-changeable settings which can be used to customize @@ -635,7 +644,7 @@ FIND_PACKAGE(PythonInterp 3 REQUIRED) ############################################################# # Python bindings -IF (WITH_BINDINGS) +IF (WITH_CORE AND WITH_BINDINGS) FIND_PACKAGE(PythonLibrary REQUIRED) @@ -662,38 +671,42 @@ IF (WITH_BINDINGS) SET(PYUIC_WIDGET_PLUGIN_DIRECTORY ${PYQT5_MOD_DIR}/uic/widget-plugins/) ENDIF (WITH_CUSTOM_WIDGETS) -ENDIF (WITH_BINDINGS) +ENDIF (WITH_CORE AND WITH_BINDINGS) ############################################################# # create qgsconfig.h # installed with app target - CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake_templates/qgsconfig.h.in ${CMAKE_BINARY_DIR}/qgsconfig.h) INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) -# 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) - -#################################################### -# clang-tidy -FIND_PROGRAM( - CLANG_TIDY_EXE - NAMES "clang-tidy" - DOC "Path to clang-tidy executable" - ) -IF(NOT CLANG_TIDY_EXE) - MESSAGE(STATUS "clang-tidy not found.") -ELSE(NOT CLANG_TIDY_EXE) - MESSAGE(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}") - SET(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks=*,-clang-analyzer-alpha.*,-cppcoreguidelines*,-readability-implicit-bool-cast,-llvm-include-order,-cert-err58-cpp,-modernize-pass-by-value,-google-readability-braces-around-statements,-modernize-use-auto,-modernize-loop-convert,-readability-else-after-return,-readability-braces-around-statements,-google-runtime-references,-readability-named-parameter,-google-default-arguments,-google-readability-todo,-readability-inconsistent-declaration-parameter-name,-cert-flp30-c,-google-readability-casting,-clang-analyzer-security.FloatLoopCounter,-google-runtime-int,-modernize-use-using,-google-explicit-constructor,-google-build-using-namespace,-cert-err34-c,-clang-analyzer-core.CallAndMessage,-google-readability-function-size,-modernize-make-shared,-modernize-use-nullptr,-clang-analyzer-cplusplus.NewDeleteLeaks,-clang-analyzer-core.NonNullParamChecker,performance-unnecessary-copy-initialization,-readability-simplify-boolean-expr,-modernize-raw-string-literal,-performance-unnecessary-copy-initialization") -ENDIF(NOT CLANG_TIDY_EXE) - ############################################################# # create qgsversion.h INCLUDE(CreateQgsVersion) CREATE_QGSVERSION() +#################################################### +# 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 +IF (WITH_CORE) + LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/src/core ${CMAKE_BINARY_DIR}/src/gui) +ENDIF (WITH_CORE) + +#################################################### +# clang-tidy +IF (WITH_CORE) + FIND_PROGRAM( + CLANG_TIDY_EXE + NAMES "clang-tidy" + DOC "Path to clang-tidy executable" + ) + IF(NOT CLANG_TIDY_EXE) + MESSAGE(STATUS "clang-tidy not found.") + ELSE(NOT CLANG_TIDY_EXE) + MESSAGE(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}") + SET(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks=*,-clang-analyzer-alpha.*,-cppcoreguidelines*,-readability-implicit-bool-cast,-llvm-include-order,-cert-err58-cpp,-modernize-pass-by-value,-google-readability-braces-around-statements,-modernize-use-auto,-modernize-loop-convert,-readability-else-after-return,-readability-braces-around-statements,-google-runtime-references,-readability-named-parameter,-google-default-arguments,-google-readability-todo,-readability-inconsistent-declaration-parameter-name,-cert-flp30-c,-google-readability-casting,-clang-analyzer-security.FloatLoopCounter,-google-runtime-int,-modernize-use-using,-google-explicit-constructor,-google-build-using-namespace,-cert-err34-c,-clang-analyzer-core.CallAndMessage,-google-readability-function-size,-modernize-make-shared,-modernize-use-nullptr,-clang-analyzer-cplusplus.NewDeleteLeaks,-clang-analyzer-core.NonNullParamChecker,performance-unnecessary-copy-initialization,-readability-simplify-boolean-expr,-modernize-raw-string-literal,-performance-unnecessary-copy-initialization") + ENDIF(NOT CLANG_TIDY_EXE) +ENDIF (WITH_CORE) + ############################################################# # process subdirs @@ -703,15 +716,45 @@ CREATE_QGSVERSION() #TEST_DATA_DIR is also used by QgsRenderChecker currently in core SET (TEST_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/testdata") -ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(doc) -ADD_SUBDIRECTORY(images) -ADD_SUBDIRECTORY(resources) -ADD_SUBDIRECTORY(i18n) -IF (WITH_BINDINGS) - ADD_SUBDIRECTORY(python) -ENDIF (WITH_BINDINGS) +IF (WITH_CORE) + ADD_SUBDIRECTORY(src) + ADD_SUBDIRECTORY(images) + ADD_SUBDIRECTORY(resources) + ADD_SUBDIRECTORY(i18n) + + IF (WITH_BINDINGS) + ADD_SUBDIRECTORY(python) + ENDIF (WITH_BINDINGS) + + IF (APPLE) + # must be last for install, so install_name_tool can do its work + ADD_SUBDIRECTORY(mac) + + # allow QGIS to be run directly from build directory and to run unit tests + EXECUTE_PROCESS(COMMAND /bin/mkdir -p "${QGIS_OUTPUT_DIRECTORY}/lib") + EXECUTE_PROCESS( + COMMAND /bin/ln -fs ../../Plugins/qgis/qgisgrass6.framework lib/ + WORKING_DIRECTORY "${QGIS_OUTPUT_DIRECTORY}" + ) + EXECUTE_PROCESS( + COMMAND /bin/ln -fs ../../Plugins/qgis/qgisgrass7.framework lib/ + WORKING_DIRECTORY "${QGIS_OUTPUT_DIRECTORY}" + ) + ENDIF (APPLE) + + # manual page - makes sense only on unix systems + IF (UNIX AND NOT APPLE) + INSTALL (FILES qgis.1 DESTINATION ${QGIS_MANUAL_DIR}/man1) + ENDIF (UNIX AND NOT APPLE) + + INSTALL(FILES cmake/FindQGIS.cmake DESTINATION ${QGIS_DATA_DIR}) +ENDIF (WITH_CORE) + +IF (WITH_ASTYLE) + ADD_SUBDIRECTORY(external/astyle) +ENDIF(WITH_ASTYLE) IF (ENABLE_TESTS) ADD_SUBDIRECTORY(tests) @@ -719,73 +762,55 @@ IF (ENABLE_TESTS) MESSAGE (STATUS "Ctest Binary Directory set to: ${CTEST_BINARY_DIRECTORY}") ENDIF (ENABLE_TESTS) -IF (APPLE) - # must be last for install, so install_name_tool can do its work - ADD_SUBDIRECTORY(mac) - - # allow QGIS to be run directly from build directory and to run unit tests - EXECUTE_PROCESS(COMMAND /bin/mkdir -p "${QGIS_OUTPUT_DIRECTORY}/lib") - EXECUTE_PROCESS( - COMMAND /bin/ln -fs ../../Plugins/qgis/qgisgrass6.framework lib/ - WORKING_DIRECTORY "${QGIS_OUTPUT_DIRECTORY}" - ) - EXECUTE_PROCESS( - COMMAND /bin/ln -fs ../../Plugins/qgis/qgisgrass7.framework lib/ - WORKING_DIRECTORY "${QGIS_OUTPUT_DIRECTORY}" - ) -ENDIF (APPLE) - -# manual page - makes sense only on unix systems -IF (UNIX AND NOT APPLE) - INSTALL (FILES qgis.1 DESTINATION ${QGIS_MANUAL_DIR}/man1) -ENDIF (UNIX AND NOT APPLE) - -INSTALL(FILES cmake/FindQGIS.cmake DESTINATION ${QGIS_DATA_DIR}) - ############################################################# # Post-install commands -ADD_SUBDIRECTORY(postinstall) +IF (WITH_CORE) + ADD_SUBDIRECTORY(postinstall) +ENDIF (WITH_CORE) ############################################################# # Uninstall stuff see: http://www.vtk.org/Wiki/CMake_FAQ -CONFIGURE_FILE( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_templates/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) +IF (WITH_CORE) + CONFIGURE_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_templates/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) -ADD_CUSTOM_TARGET(uninstall - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + ADD_CUSTOM_TARGET(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") +ENDIF (WITH_CORE) ############################################################# # Enable packaging +IF (WITH_CORE) + # Do not warn about runtime libs when building using VS Express + IF(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS) + SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) + ENDIF() + INCLUDE(InstallRequiredSystemLibraries) -# Do not warn about runtime libs when building using VS Express -IF(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS) - SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) -ENDIF() -INCLUDE(InstallRequiredSystemLibraries) + SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "QGIS") + 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") + SET(CPACK_PACKAGE_INSTALL_DIRECTORY "QGIS ${COMPLETE_VERSION}") + 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") + SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} QGIS") + 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_PACKAGE_DESCRIPTION_SUMMARY "QGIS") -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") -SET(CPACK_PACKAGE_INSTALL_DIRECTORY "QGIS ${COMPLETE_VERSION}") -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") - SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} QGIS") - 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) - #SET(CPACK_STRIP_FILES "QGIS") - #SET(CPACK_SOURCE_STRIP_FILES "") -ENDIF(WIN32 AND NOT UNIX) -SET(CPACK_PACKAGE_EXECUTABLES "qgis" "QGIS") -SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md") -INCLUDE(CPack) + # SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " !include \\\"${CMAKE_SOURCE_DIR}\\\\win_build\\\\extra.nsh\\\"") + ELSE(WIN32 AND NOT UNIX) + #SET(CPACK_STRIP_FILES "QGIS") + #SET(CPACK_SOURCE_STRIP_FILES "") + ENDIF(WIN32 AND NOT UNIX) + SET(CPACK_PACKAGE_EXECUTABLES "qgis" "QGIS") + SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md") + INCLUDE(CPack) +ENDIF (WITH_CORE) diff --git a/cmake_templates/Doxyfile.in b/cmake_templates/Doxyfile.in index c1699c11064..ab9fc85d39b 100644 --- a/cmake_templates/Doxyfile.in +++ b/cmake_templates/Doxyfile.in @@ -1133,7 +1133,7 @@ HTML_STYLESHEET = # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/api_custom.css +HTML_EXTRA_STYLESHEET = @CMAKE_SOURCE_DIR@/doc/api_custom.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note diff --git a/debian/copyright b/debian/copyright index 9e4f205e493..78c0db9d6dc 100644 --- a/debian/copyright +++ b/debian/copyright @@ -182,7 +182,7 @@ Files: src/app/qtmain_android.cpp Copyright: 2009-2011, BogDan Vatra License: BSD-3-Clause -Files: src/astyle/* +Files: external/astyle/* Copyright: Jim Pattee Tal Davidson Comment: Artistic Style is maintained and updated by Jim Pattee. @@ -2343,4 +2343,3 @@ License: Zlib misrepresented as being the original software. . 3. This notice may not be removed or altered from any source distribution. - diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index cafdfc7773c..28313245982 100755 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -18,7 +18,7 @@ IF(TXT2TAGS_EXECUTABLE) ADD_CUSTOM_TARGET (t2tdoc ALL DEPENDS ${QGIS_DOC_FILES}) ELSE(TXT2TAGS_EXECUTABLE) SET(QGIS_DOC_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/../INSTALL + ${CMAKE_SOURCE_DIR}/INSTALL ) ENDIF(TXT2TAGS_EXECUTABLE) @@ -46,65 +46,65 @@ IF(WITH_APIDOC) ENDIF(GENERATE_QHP) SET(DOXYGEN_INCLUDE_PATH - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core + ${CMAKE_SOURCE_DIR}/src/core ) STRING(REPLACE ";" " " DOXYGEN_INCLUDE_PATH "${DOXYGEN_INCLUDE_PATH}") SET(DOXYGEN_INPUT - ${CMAKE_CURRENT_SOURCE_DIR}/../doc - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/annotations - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/auth - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/composer - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/diagram - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/dxf - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/effects - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/fieldformatter - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/geometry - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/gps - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/layertree - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/metadata - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/pal - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/processing - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/providers - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/providers/memory - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/raster - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/scalebar - ${CMAKE_CURRENT_SOURCE_DIR}/../src/core/symbology-ng - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/auth - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/attributetable - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/editorwidgets - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/editorwidgets/core - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/effects - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/layertree - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/locator - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/raster - ${CMAKE_CURRENT_SOURCE_DIR}/../src/gui/symbology-ng - ${CMAKE_CURRENT_SOURCE_DIR}/../src/analysis - ${CMAKE_CURRENT_SOURCE_DIR}/../src/analysis/interpolation - ${CMAKE_CURRENT_SOURCE_DIR}/../src/analysis/network - ${CMAKE_CURRENT_SOURCE_DIR}/../src/analysis/openstreetmap - ${CMAKE_CURRENT_SOURCE_DIR}/../src/analysis/raster - ${CMAKE_CURRENT_SOURCE_DIR}/../src/analysis/vector - ${CMAKE_CURRENT_SOURCE_DIR}/../src/plugins + ${CMAKE_SOURCE_DIR}/doc + ${CMAKE_SOURCE_DIR}/src/core + ${CMAKE_SOURCE_DIR}/src/core/annotations + ${CMAKE_SOURCE_DIR}/src/core/auth + ${CMAKE_SOURCE_DIR}/src/core/composer + ${CMAKE_SOURCE_DIR}/src/core/diagram + ${CMAKE_SOURCE_DIR}/src/core/dxf + ${CMAKE_SOURCE_DIR}/src/core/effects + ${CMAKE_SOURCE_DIR}/src/core/fieldformatter + ${CMAKE_SOURCE_DIR}/src/core/geometry + ${CMAKE_SOURCE_DIR}/src/core/gps + ${CMAKE_SOURCE_DIR}/src/core/layertree + ${CMAKE_SOURCE_DIR}/src/core/metadata + ${CMAKE_SOURCE_DIR}/src/core/pal + ${CMAKE_SOURCE_DIR}/src/core/processing + ${CMAKE_SOURCE_DIR}/src/core/providers + ${CMAKE_SOURCE_DIR}/src/core/providers/memory + ${CMAKE_SOURCE_DIR}/src/core/raster + ${CMAKE_SOURCE_DIR}/src/core/scalebar + ${CMAKE_SOURCE_DIR}/src/core/symbology-ng + ${CMAKE_SOURCE_DIR}/src/gui + ${CMAKE_SOURCE_DIR}/src/gui/auth + ${CMAKE_SOURCE_DIR}/src/gui/attributetable + ${CMAKE_SOURCE_DIR}/src/gui/editorwidgets + ${CMAKE_SOURCE_DIR}/src/gui/editorwidgets/core + ${CMAKE_SOURCE_DIR}/src/gui/effects + ${CMAKE_SOURCE_DIR}/src/gui/layertree + ${CMAKE_SOURCE_DIR}/src/gui/locator + ${CMAKE_SOURCE_DIR}/src/gui/raster + ${CMAKE_SOURCE_DIR}/src/gui/symbology-ng + ${CMAKE_SOURCE_DIR}/src/analysis + ${CMAKE_SOURCE_DIR}/src/analysis/interpolation + ${CMAKE_SOURCE_DIR}/src/analysis/network + ${CMAKE_SOURCE_DIR}/src/analysis/openstreetmap + ${CMAKE_SOURCE_DIR}/src/analysis/raster + ${CMAKE_SOURCE_DIR}/src/analysis/vector + ${CMAKE_SOURCE_DIR}/src/plugins ) IF(WITH_SERVER_PLUGINS) SET(DOXYGEN_INPUT ${DOXYGEN_INPUT} - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserver.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgscapabilitiescache.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserverexception.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsrequesthandler.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserverfilter.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsaccesscontrolfilter.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserverinterface.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserverrequest.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserverresponse.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserverrequest.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsservice.h - ${CMAKE_CURRENT_SOURCE_DIR}/../src/server/qgsserviceregistry.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserver.h + ${CMAKE_SOURCE_DIR}/src/server/qgscapabilitiescache.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserverexception.h + ${CMAKE_SOURCE_DIR}/src/server/qgsrequesthandler.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserverfilter.h + ${CMAKE_SOURCE_DIR}/src/server/qgsaccesscontrolfilter.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserverinterface.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserverrequest.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserverresponse.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserverrequest.h + ${CMAKE_SOURCE_DIR}/src/server/qgsservice.h + ${CMAKE_SOURCE_DIR}/src/server/qgsserviceregistry.h ) ENDIF(WITH_SERVER_PLUGINS) @@ -120,7 +120,7 @@ IF(WITH_APIDOC) STRING(REPLACE ";" " " DOXYGEN_INPUT "${DOXYGEN_INPUT}") - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/../cmake_templates/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) + CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake_templates/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) SET (DOXYGEN_ON_DEMAND FALSE CACHE BOOL "Determines whether the QGIS API doxygen documentation should be build on demand only") diff --git a/src/astyle/ASBeautifier.cpp b/external/astyle/ASBeautifier.cpp similarity index 100% rename from src/astyle/ASBeautifier.cpp rename to external/astyle/ASBeautifier.cpp diff --git a/src/astyle/ASEnhancer.cpp b/external/astyle/ASEnhancer.cpp similarity index 100% rename from src/astyle/ASEnhancer.cpp rename to external/astyle/ASEnhancer.cpp diff --git a/src/astyle/ASFormatter.cpp b/external/astyle/ASFormatter.cpp similarity index 100% rename from src/astyle/ASFormatter.cpp rename to external/astyle/ASFormatter.cpp diff --git a/src/astyle/ASLocalizer.cpp b/external/astyle/ASLocalizer.cpp similarity index 100% rename from src/astyle/ASLocalizer.cpp rename to external/astyle/ASLocalizer.cpp diff --git a/src/astyle/ASLocalizer.h b/external/astyle/ASLocalizer.h similarity index 100% rename from src/astyle/ASLocalizer.h rename to external/astyle/ASLocalizer.h diff --git a/src/astyle/ASResource.cpp b/external/astyle/ASResource.cpp similarity index 100% rename from src/astyle/ASResource.cpp rename to external/astyle/ASResource.cpp diff --git a/src/astyle/CMakeLists.txt b/external/astyle/CMakeLists.txt similarity index 100% rename from src/astyle/CMakeLists.txt rename to external/astyle/CMakeLists.txt diff --git a/src/astyle/LICENSE.md b/external/astyle/LICENSE.md similarity index 100% rename from src/astyle/LICENSE.md rename to external/astyle/LICENSE.md diff --git a/src/astyle/astyle.h b/external/astyle/astyle.h similarity index 100% rename from src/astyle/astyle.h rename to external/astyle/astyle.h diff --git a/src/astyle/astyle_main.cpp b/external/astyle/astyle_main.cpp similarity index 100% rename from src/astyle/astyle_main.cpp rename to external/astyle/astyle_main.cpp diff --git a/src/astyle/astyle_main.h b/external/astyle/astyle_main.h similarity index 100% rename from src/astyle/astyle_main.h rename to external/astyle/astyle_main.h diff --git a/scripts/addcopyright.sh b/scripts/addcopyright.sh index e54abd8db28..b3aec80f396 100755 --- a/scripts/addcopyright.sh +++ b/scripts/addcopyright.sh @@ -43,7 +43,7 @@ for i in $FILES; do author=volayaf ;; - src/app/gps/qwtpolar-*|src/app/qtmain_android.cpp|src/core/gps/qextserialport/*|src/astyle/*|python/pyspatialite/*) + src/app/gps/qwtpolar-*|src/app/qtmain_android.cpp|src/core/gps/qextserialport/*|lib/astyle/*|python/pyspatialite/*) # Skip third party files echo $f skipped continue diff --git a/scripts/astyle.sh b/scripts/astyle.sh index f6d09de918b..326bb782982 100755 --- a/scripts/astyle.sh +++ b/scripts/astyle.sh @@ -24,7 +24,7 @@ done if [ -z "$ASTYLE" ]; then echo "qgisstyle not found - please enable WITH_ASTYLE in cmake and build it" >&2 - exit 1 + exit 1 fi if type -p tput >/dev/null; then @@ -72,7 +72,7 @@ astyleit() { for f in "$@"; do case "$f" in - src/app/gps/qwtpolar-*|src/core/gps/qextserialport/*|src/plugins/grass/qtermwidget/*|src/astyle/*|python/ext-libs/*|src/providers/spatialite/qspatialite/*|src/plugins/globe/osgEarthQt/*|src/plugins/globe/osgEarthUtil/*|python/ext-libs/*|*/ui_*.py|*.astyle|tests/testdata/*|editors/*) + src/app/gps/qwtpolar-*|src/core/gps/qextserialport/*|src/plugins/grass/qtermwidget/*|external/astyle/*|python/ext-libs/*|src/providers/spatialite/qspatialite/*|src/plugins/globe/osgEarthQt/*|src/plugins/globe/osgEarthUtil/*|python/ext-libs/*|*/ui_*.py|*.astyle|tests/testdata/*|editors/*) echo -ne "$f skipped $elcr" continue ;; diff --git a/scripts/spell_check/.agignore b/scripts/spell_check/.agignore index e810aeb5d3c..af804c11009 100644 --- a/scripts/spell_check/.agignore +++ b/scripts/spell_check/.agignore @@ -5,12 +5,12 @@ debian/build.*/ debian/build*/ debian/.*/usr/ i18n/ +lib/astyle ms-windows/osgeo4w/ python/ext-libs/ python/plugins/processing/algs/otb/ python/plugins/processing/algs/saga/ python/qsci_apis/ -src/astyle src/app/gps/qwtpolar-1.0/ src/app/gps/qwtpolar-1.1.1/ src/core/pal diff --git a/scripts/update-indent.sh b/scripts/update-indent.sh index 8fede4757e2..171d1f80690 100644 --- a/scripts/update-indent.sh +++ b/scripts/update-indent.sh @@ -57,7 +57,7 @@ ASTYLEDIFF=astyle.r$REV0-r$REV1.diff # reformat for f in $MODIFIED; do case "$f" in - src/core/gps/qextserialport/*|src/plugins/grass/qtermwidget/*|src/astyle/*|python/pyspatialite/*) + src/core/gps/qextserialport/*|src/plugins/grass/qtermwidget/*|external/astyle/*|python/pyspatialite/*) echo $f skipped continue ;; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 170ca58d85d..6a580a72d74 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -27,6 +27,3 @@ IF (WITH_CUSTOM_WIDGETS) ADD_SUBDIRECTORY(customwidgets) ENDIF (WITH_CUSTOM_WIDGETS) -IF (WITH_ASTYLE) - ADD_SUBDIRECTORY(astyle) -ENDIF(WITH_ASTYLE) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 057c7b09ef9..343d4ba3244 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,10 +1,11 @@ IF (ENABLE_TESTS) - ADD_SUBDIRECTORY(src) - ADD_SUBDIRECTORY(bench) + + IF (WITH_CORE) + ADD_SUBDIRECTORY(src) + ADD_SUBDIRECTORY(bench) + ENDIF (WITH_CORE) + + ADD_SUBDIRECTORY(code_layout) ENDIF (ENABLE_TESTS) -IF(WITH_ASTYLE) - ADD_TEST(qgis_indentation ${CMAKE_SOURCE_DIR}/scripts/verify-indentation.sh) -ENDIF(WITH_ASTYLE) -ADD_TEST(qgis_spelling ${CMAKE_SOURCE_DIR}/scripts/spell_check/spell_test.sh) diff --git a/tests/code_layout/CMakeLists.txt b/tests/code_layout/CMakeLists.txt new file mode 100644 index 00000000000..c9e077401c4 --- /dev/null +++ b/tests/code_layout/CMakeLists.txt @@ -0,0 +1,16 @@ +IF(WITH_ASTYLE) + ADD_TEST(qgis_indentation ${CMAKE_SOURCE_DIR}/scripts/verify-indentation.sh) +ENDIF(WITH_ASTYLE) + +ADD_TEST(qgis_spelling ${CMAKE_SOURCE_DIR}/scripts/spell_check/spell_test.sh) + +ADD_TEST(qgis_sipify ${CMAKE_SOURCE_DIR}/tests/code_layout/test_sipify.sh) +ADD_TEST(qgis_sip_uptodate ${CMAKE_SOURCE_DIR}/tests/code_layout/test_sipfiles_uptodate.sh) + +IF (WITH_APIDOC) + INCLUDE(UsePythonTest) + ADD_PYTHON_TEST(PyQgsDocCoverage ${CMAKE_SOURCE_DIR}/tests/code_layout/test_qgsdoccoverage.py) + IF (WITH_CORE) + ADD_PYTHON_TEST(PyQgsSipCoverage ${CMAKE_SOURCE_DIR}/tests/code_layout/test_qgssipcoverage.py) + ENDIF(WITH_CORE) +ENDIF (WITH_APIDOC) diff --git a/tests/scripts/sipifyheader.expected.sip b/tests/code_layout/sipifyheader.expected.sip similarity index 98% rename from tests/scripts/sipifyheader.expected.sip rename to tests/code_layout/sipifyheader.expected.sip index e95d1143245..542ef882676 100644 --- a/tests/scripts/sipifyheader.expected.sip +++ b/tests/code_layout/sipifyheader.expected.sip @@ -1,7 +1,7 @@ /************************************************************************ * This file has been generated automatically from * * * - * tests/scripts/sipifyheader.h * + * tests/code_layout/sipifyheader.h * * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/ @@ -442,7 +442,7 @@ class TemplateInheritance5 : SomethingElse /************************************************************************ * This file has been generated automatically from * * * - * tests/scripts/sipifyheader.h * + * tests/code_layout/sipifyheader.h * * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/ diff --git a/tests/scripts/sipifyheader.h b/tests/code_layout/sipifyheader.h similarity index 100% rename from tests/scripts/sipifyheader.h rename to tests/code_layout/sipifyheader.h diff --git a/tests/src/python/test_qgsdoccoverage.py b/tests/code_layout/test_qgsdoccoverage.py similarity index 100% rename from tests/src/python/test_qgsdoccoverage.py rename to tests/code_layout/test_qgsdoccoverage.py diff --git a/tests/src/python/test_qgssipcoverage.py b/tests/code_layout/test_qgssipcoverage.py similarity index 100% rename from tests/src/python/test_qgssipcoverage.py rename to tests/code_layout/test_qgssipcoverage.py diff --git a/tests/scripts/test_sipfiles_uptodate.sh b/tests/code_layout/test_sipfiles_uptodate.sh similarity index 100% rename from tests/scripts/test_sipfiles_uptodate.sh rename to tests/code_layout/test_sipfiles_uptodate.sh diff --git a/tests/scripts/test_sipify.sh b/tests/code_layout/test_sipify.sh similarity index 69% rename from tests/scripts/test_sipify.sh rename to tests/code_layout/test_sipify.sh index 45f58aa1a97..29daf3ed071 100755 --- a/tests/scripts/test_sipify.sh +++ b/tests/code_layout/test_sipify.sh @@ -5,7 +5,7 @@ DIR=$(git rev-parse --show-toplevel) pushd ${DIR} > /dev/null -outdiff=$(./scripts/sipify.pl tests/scripts/sipifyheader.h | diff tests/scripts/sipifyheader.expected.sip -) +outdiff=$(./scripts/sipify.pl tests/code_layout/sipifyheader.h | diff tests/code_layout/sipifyheader.expected.sip -) popd > /dev/null if [[ $outdiff ]]; then diff --git a/tests/src/python/CMakeLists.txt b/tests/src/python/CMakeLists.txt index cd53e7e2a97..fa48c5668a7 100755 --- a/tests/src/python/CMakeLists.txt +++ b/tests/src/python/CMakeLists.txt @@ -190,11 +190,6 @@ IF (ENABLE_ORACLETEST) ADD_PYTHON_TEST(PyQgsOracleProvider test_provider_oracle.py) ENDIF (ENABLE_ORACLETEST) -IF (WITH_APIDOC) - ADD_PYTHON_TEST(PyQgsDocCoverage test_qgsdoccoverage.py) - ADD_PYTHON_TEST(PyQgsSipCoverage test_qgssipcoverage.py) -ENDIF (WITH_APIDOC) - IF (WITH_SERVER) ADD_PYTHON_TEST(PyQgsServer test_qgsserver.py) ADD_PYTHON_TEST(PyQgsServerPlugins test_qgsserver_plugins.py)