From fa5bd491fce269e55fe463f52eede0c2735a184a Mon Sep 17 00:00:00 2001 From: Denis Rouzaud Date: Fri, 2 Jun 2017 21:39:44 +0200 Subject: [PATCH] run code_layout build from top CMakeLists instead of adding an extra CMakeLists in .ci/travis/code_layout to build API doc, astyle and run tests (indentation, spelling, sip, doc coverage), the top CMakeLists has been adapted to allow not building core libraries and possibly just the static code layout * astyle has been moved from /src/astyle to /lib/astyle (I would propose to move all external libraries, and possibly add git submodules) --- .ci/travis/code_layout/CMakeLists.txt | 28 - .ci/travis/code_layout/install.sh | 2 +- .ci/travis/code_layout/script.sh | 4 - .ci/travis/linux/blacklist.txt | 2 + .ci/travis/macos/blacklist.txt | 6 +- .gitignore | 1 - CMakeLists.txt | 1009 +++++++++-------- cmake_templates/Doxyfile.in | 2 +- debian/copyright | 3 +- doc/CMakeLists.txt | 104 +- {src => external}/astyle/ASBeautifier.cpp | 0 {src => external}/astyle/ASEnhancer.cpp | 0 {src => external}/astyle/ASFormatter.cpp | 0 {src => external}/astyle/ASLocalizer.cpp | 0 {src => external}/astyle/ASLocalizer.h | 0 {src => external}/astyle/ASResource.cpp | 0 {src => external}/astyle/CMakeLists.txt | 0 {src => external}/astyle/LICENSE.md | 0 {src => external}/astyle/astyle.h | 0 {src => external}/astyle/astyle_main.cpp | 0 {src => external}/astyle/astyle_main.h | 0 scripts/addcopyright.sh | 2 +- scripts/astyle.sh | 4 +- scripts/spell_check/.agignore | 2 +- scripts/update-indent.sh | 2 +- src/CMakeLists.txt | 3 - tests/CMakeLists.txt | 13 +- tests/code_layout/CMakeLists.txt | 16 + .../sipifyheader.expected.sip | 4 +- tests/{scripts => code_layout}/sipifyheader.h | 0 .../test_qgsdoccoverage.py | 0 .../test_qgssipcoverage.py | 0 .../test_sipfiles_uptodate.sh | 0 tests/{scripts => code_layout}/test_sipify.sh | 2 +- tests/src/python/CMakeLists.txt | 5 - 35 files changed, 610 insertions(+), 604 deletions(-) delete mode 100644 .ci/travis/code_layout/CMakeLists.txt rename {src => external}/astyle/ASBeautifier.cpp (100%) rename {src => external}/astyle/ASEnhancer.cpp (100%) rename {src => external}/astyle/ASFormatter.cpp (100%) rename {src => external}/astyle/ASLocalizer.cpp (100%) rename {src => external}/astyle/ASLocalizer.h (100%) rename {src => external}/astyle/ASResource.cpp (100%) rename {src => external}/astyle/CMakeLists.txt (100%) rename {src => external}/astyle/LICENSE.md (100%) rename {src => external}/astyle/astyle.h (100%) rename {src => external}/astyle/astyle_main.cpp (100%) rename {src => external}/astyle/astyle_main.h (100%) create mode 100644 tests/code_layout/CMakeLists.txt rename tests/{scripts => code_layout}/sipifyheader.expected.sip (98%) rename tests/{scripts => code_layout}/sipifyheader.h (100%) rename tests/{src/python => code_layout}/test_qgsdoccoverage.py (100%) rename tests/{src/python => code_layout}/test_qgssipcoverage.py (100%) rename tests/{scripts => code_layout}/test_sipfiles_uptodate.sh (100%) rename tests/{scripts => code_layout}/test_sipify.sh (69%) 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)