###################### # # Copyright (C) 2010 - 2016 EngSaS - Engineering Solutions and Services Langenbach. All rights reserved. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA. # ###################### ###################### # # NOTE FOR CMAKE_CROSSCOMPILING # # # If crosscompiling on linux for mingw32, the path are modified, so that most # distributions are fitted. That means, you should have a toolchain file, where # the CMAKE_INSTALL_PREFIX variable is set to your mingw sys-root (mostly # something like that /usr/i686-w64-mingw32/sys-root/mingw/). If CROSS_CPACK is # set to ON, normal behaviour on windows is used # ###################### CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH}) PROJECT(libengsas) SET(TARGET_VERSION_MAJOR 0 ) SET(TARGET_VERSION_MINOR 6 ) SET(${PROJECT_NAME}_PATCH_LEVEL 0 ) SET(${PROJECT_NAME}_VERSION "${TARGET_VERSION_MAJOR}.${TARGET_VERSION_MINOR}.${${PROJECT_NAME}_PATCH_LEVEL}" ) SET(VERSION ${${PROJECT_NAME}_VERSION}) SET(CMAKE_DEBUG_POSTFIX "d") INCLUDE(CTest) # Set timeout for each test (for manual mode) # To set it with scripts see experimental.ctest #SET(DART_TESTING_TIMEOUT 60 CACHE STRING "") OPTION(BUILD_PACKAGE "Used to setup all stuff for packaging. To include the header files and libengsas-testing, set BUILD_DEV=ON" OFF) OPTION(BUILD_DEV "All stuff needed for developing (e.g. QtDesigner Plugins, header, ...). Also install libengsas-testing if BUILD_PACKAGE is set to ON" ON) OPTION(BUILD_DEBUG "Build in debug mode" OFF) OPTION(BINDINGS_KDE "Build with KDE features" ON) OPTION(BINDINGS_QT4 "Build with Qt4" OFF) OPTION(BINDINGS_QT5 "Build with Qt5" OFF) OPTION(COMPATIBLE_WITH_NON_KDE "Install KDE version compatible to non KDE version" OFF) OPTION(CROSS_CPACK "Enable, if you want to create NSIS installer for windows on linux" OFF) OPTION(L10N_ALL "Build with all languages" ON) OPTION(L10N_DE "Build with german language" OFF) OPTION(L10N_EN "Build with english language" OFF) OPTION(L10N_FR "Build with french language" OFF) OPTION(WITH_FILE_SERVICE_PLUGINS_ALL "Build with all EFileService plugins" ON) OPTION(WITH_FILE_SERVICE_FILESYSTEM "Build with EFileService plugin EFileSystem which uses local file system" OFF) OPTION(WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL "Build with all ESpreadsheetProvider plugins" ON) OPTION(WITH_SPREADSHEET_PROVIDER_CSV "Build with ESpreadsheetProvider plugin CSV which handles CSV files" OFF) OPTION(WITH_SPREADSHEET_PROVIDER_OO "Build with ESpreadsheetProvider plugin OpenOffice which handles ods and xls files" OFF) OPTION(WITH_SPREADSHEET_PROVIDER_MS "Build with ESpreadsheetProvider plugin MS Office which handles xls and xlsx files" OFF) OPTION(WITH_CHARTS "Build library with widgets to display charts" ON) OPTION(WITH_GRAPHS "Build library to handle graphs and graph database connection" ON) OPTION(WITH_GRAPH_DRIVER_ALL "Build all available graph database driver" ON) OPTION(WITH_GRAPH_DRIVER_NEO4J "Build NEO4j driver" OFF) OPTION(WITH_QML "Compile QML Plugins" ON) OPTION(WITH_API_DOCS "Generate API documentation" OFF) OPTION(WITH_EXAMPLES "Compile examples" OFF) SET(BUILD_DEBUG_WANTED ${BUILD_DEBUG}) SET(BUILD_DEV_WANTED ${BUILD_DEV}) SET(BUILD_TESTING_WANTED ${BUILD_TESTING}) SET(BUILD_PACKAGE_WANTED ${BUILD_PACKAGE}) SET(BINDINGS_KDE_WANTED ${BINDINGS_KDE}) SET(BINDINGS_QT4_WANTED ${BINDINGS_QT4}) SET(BINDINGS_QT5_WANTED ${BINDINGS_QT5}) SET(COMPATIBLE_WITH_NON_KDE_WANTED ${COMPATIBLE_WITH_NON_KDE}) SET(CROSS_CPACK_WANTED ${CROSS_CPACK}) SET(L10N_ALL_WANTED ${L10N_ALL}) SET(L10N_DE_WANTED ${L10N_DE}) SET(L10N_EN_WANTED ${L10N_EN}) SET(L10N_FR_WANTED ${L10N_FR}) SET(WITH_FILE_SERVICE_PLUGINS_ALL_WANTED ${WITH_FILE_SERVICE_PLUGINS_ALL}) SET(WITH_FILE_SERVICE_FILESYSTEM_WANTED ${WITH_FILE_SERVICE_FILESYSTEM}) SET(WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL_WANTED ${WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL}) SET(WITH_SPREADSHEET_PROVIDER_CSV_WANTED ${WITH_SPREADSHEET_PROVIDER_CSV}) SET(WITH_SPREADSHEET_PROVIDER_OO_WANTED ${WITH_SPREADSHEET_PROVIDER_OO}) SET(WITH_SPREADSHEET_PROVIDER_MS_WANTED ${WITH_SPREADSHEET_PROVIDER_MS}) SET(WITH_CHARTS_WANTED ${WITH_CHARTS}) SET(WITH_GRAPHS_WANTED ${WITH_GRAPHS}) SET(WITH_GRAPH_DRIVER_ALL_WANTED ${WITH_GRAPH_DRIVER_ALL}) SET(WITH_GRAPH_DRIVER_NEO4J_WANTED ${WITH_GRAPH_DRIVER_NEO4J}) SET(WITH_QML_WANTED ${WITH_QML}) SET(WITH_API_DOCS_WANTED ${WITH_API_DOCS}) SET(WITH_EXAMPLES_WANTED ${WITH_EXAMPLES}) IF(BUILD_TESTING) SET(DATABASE_TEST_HOST "192.178.2.1" CACHE STRING "Host running the MySQL server to run the database tests") SET(DATABASE_TEST_ADMIN_USER "test" CACHE STRING "User to connect to the MySQL server to run the database tests") SET(DATABASE_TEST_ADMIN_PASSWORD "testadmin" CACHE STRING "Password to connect to the MySQL server to run the database tests") ENDIF(BUILD_TESTING) MARK_AS_ADVANCED(COMPATIBLE_WITH_NON_KDE WITH_API_DOCS) IF(CROSS_CPACK AND CMAKE_CROSSCOMPILING) SET(BUILD_PACKAGE ON) ELSEIF(CROSS_CPACK AND NOT CMAKE_CROSSCOMPILING) SET(CROSS_CPACK OFF) ENDIF() IF(WIN32 AND (NOT CMAKE_CROSSCOMPILING OR CROSS_CPACK)) SET(PACK_WIN32_STUFF ON) ENDIF() # disable debug mode, when building package IF(BUILD_PACKAGE) IF(BUILD_DEBUG) MESSAGE("warning: Disabled Debug mode, because Packagemode succeed over BUILD_DEBUG") SET(BUILD_DEBUG OFF) ENDIF(BUILD_DEBUG) IF(BUILD_DEV) SET(WITH_API_DOCS ON) SET(WITH_EXAMPLES ON) ENDIF(BUILD_DEV) ENDIF(BUILD_PACKAGE) IF(BUILD_DEBUG) SET(CMAKE_BUILD_TYPE Debug) ELSE(BUILD_DEBUG) SET(CMAKE_BUILD_TYPE Release) ENDIF(BUILD_DEBUG) IF(NOT BINDINGS_QT4 AND NOT BINDINGS_QT5) MESSAGE("Trying to autodetect Qt version") FIND_PACKAGE(Qt4 QUIET) IF(Qt4_FOUND OR QT4_FOUND) SET(BINDINGS_QT4 ON) MESSAGE("Found Qt4 --> Prefer Qt4 over Qt5") ELSE(Qt4_FOUND OR QT4_FOUND) SET(BINDINGS_QT5 ON) MESSAGE("Qt4 not found --> Try to build with Qt5") ENDIF(Qt4_FOUND OR QT4_FOUND) ENDIF(NOT BINDINGS_QT4 AND NOT BINDINGS_QT5) IF(BINDINGS_QT4) # Qt4 must be included after setting the build type FIND_PACKAGE(Qt4 REQUIRED) ENDIF(BINDINGS_QT4) IF(BINDINGS_QT5) IF(BINDINGS_QT4) MESSAGE("Qt4 and Qt5 enabled --> Preferring Qt4 and therefore disabling Qt5") SET(BINDINGS_QT5 OFF) ELSE(BINDINGS_QT4) FIND_PACKAGE(Qt5Core REQUIRED) FIND_PACKAGE(Qt5Widgets REQUIRED) FIND_PACKAGE(Qt5Xml REQUIRED) FIND_PACKAGE(Qt5XmlPatterns REQUIRED) FIND_PACKAGE(Qt5Sql REQUIRED) FIND_PACKAGE(Qt5Network REQUIRED) FIND_PACKAGE(Qt5LinguistTools REQUIRED) # Do not automatically link against qtmain CMAKE_POLICY(SET CMP0020 OLD) ENDIF(BINDINGS_QT4) ENDIF(BINDINGS_QT5) # enable automatic moc by CMAKE SET(CMAKE_AUTOMOC ON) SET(PACK_HINTS ${QT_BINARY_DIR}) IF(CMAKE_CROSSCOMPILING) SET(PACK_HINTS ${PACK_HINTS} ${CMAKE_FIND_ROOT_PATH}/bin) SET(PACK_HINTS ${PACK_HINTS} ${CMAKE_FIND_ROOT_PATH}/lib/qt4) ENDIF() #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion-null -Wunused-but-set-variable -Wsequence-point") #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion-null -Wunused-but-set-variable -Wsequence-point") SET(KDE 0) IF(BINDINGS_KDE) FIND_PACKAGE(KDE4) IF(KDE4_FOUND) SET(KDE 1) # use, i.e. don't skip the full RPATH for the build tree SET(CMAKE_SKIP_BUILD_RPATH FALSE) # when building, don't use the install RPATH already # (but later on when installing) SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # the RPATH to be used when installing SET(CMAKE_INSTALL_RPATH "") # don't add the automatically determined parts of the RPATH # which point to directories outside the build tree to the install RPATH # (This is the only option which is changed in fedora in FindKDE4Internal.cmake to achieve # the wanted behaviour) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) ADD_DEFINITIONS(${KDE4_DEFINITIONS}) INCLUDE(KDE4Defaults) INCLUDE(MacroLibrary) # KDE also sets BUILD_TESTING to true # so we set it back to chosen state SET(BUILD_TESTING ${BUILD_TESTING_WANTED}) ELSE(KDE4_FOUND) MESSAGE("warning: KDE not found --> Disabled KDE-Bindings") SET(BINDINGS_KDE OFF) SET(KDE 0) ENDIF(KDE4_FOUND) ELSE(BINDINGS_KDE) SET(COMPATIBLE_WITH_NON_KDE OFF) ENDIF(BINDINGS_KDE) IF(NOT KDE) IF(NOT APPLE) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") ENDIF(NOT APPLE) IF(MSVC) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_EXCEPTIONS -Zc:wchar_t-") ELSE(MSVC) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common") ENDIF(MSVC) IF(NOT WIN32 AND NOT APPLE) # SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--fatal-warnings -lc -Wl,--disable-auto-import") SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--fatal-warnings -lc") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ansi") ENDIF(NOT WIN32 AND NOT APPLE) ENDIF(NOT KDE) IF(BUILD_DEBUG AND NOT MSVC) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") ENDIF(BUILD_DEBUG AND NOT MSVC) ADD_DEFINITIONS(${QT_DEFINITIONS}) # directory to install binaries SET(bin_DIR ${CMAKE_INSTALL_PREFIX}/bin) IF(WIN32) SET(bin_DIR .) ENDIF(WIN32) # shared library directory ($LIB_INSTALL_DIR) # and directory for plugins, translations, ... ($share_DIR) IF(NOT WIN32) SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib/" CACHE STRING "Where to install the library files to") ENDIF(NOT WIN32) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) IF(UNIX OR (CMAKE_CROSSCOMPILING AND NOT CROSS_CPACK)) IF(CMAKE_CROSSCOMPILING AND WIN32) SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin") MESSAGE("Enabling cross compiling for mingw32 on linux") ENDIF(CMAKE_CROSSCOMPILING AND WIN32) SET(ENGSAS_EPART_DIR "${LIB_INSTALL_DIR}/${PROJECT_NAME}" CACHE STRING "Where to install EParts to") # SET(designer_DIR "/usr/lib/qt4/plugins/designer") SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) SET(include_DIR ${CMAKE_INSTALL_PREFIX}/include/engsas) SET(find_cmake_DIR ${CMAKE_ROOT}/Modules/) SET(share_DIR ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}) SET(ENGSAS_FILE_SERVICE_PLUGIN_DIR "${ENGSAS_EPART_DIR}/efileservices") SET(ENGSAS_SPREADSHEET_PROVIDER_PLUGIN_DIR "${ENGSAS_EPART_DIR}/espreadsheetprovider") SET(ENGSAS_GRAPH_DRIVER_PLUGIN_DIR "${ENGSAS_EPART_DIR}/egraphdrivers") SET(man_DIR ${CMAKE_INSTALL_PREFIX}/share/man) SET(example_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}/examples) ELSE() SET(ENGSAS_EPART_DIR ${bin_DIR}) SET(LIB_INSTALL_DIR ${bin_DIR}) SET(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) SET(include_DIR ${bin_DIR}/include) IF(BUILD_PACKAGE) SET(find_cmake_DIR ${bin_DIR}) ELSE(BUILD_PACKAGE) SET(find_cmake_DIR ${CMAKE_ROOT}/Modules/) ENDIF(BUILD_PACKAGE) SET(share_DIR ${bin_DIR}) SET(ENGSAS_FILE_SERVICE_PLUGIN_DIR "${bin_DIR}/efileservices") SET(ENGSAS_SPREADSHEET_PROVIDER_PLUGIN_DIR "${bin_DIR}/espreadsheetprovider") SET(ENGSAS_GRAPH_DRIVER_PLUGIN_DIR "${bin_DIR}/egraphdrivers") SET(man_DIR ${bin_DIR}/man) IF(BUILD_PACKAGE) SET(example_DIR ${bin_DIR}) ELSE() SET(example_DIR ${bin_DIR}/examples) ENDIF() ENDIF() # directory to install language files SET(qm_DIR ${share_DIR}/lang) #directory to install rcc files SET(rcc_DIR ${share_DIR}/rcc) # directory to install dependency files SET(depends_DIR ${share_DIR}/depends) SET(apidocs_DIR ${share_DIR}/apidocs) SET(pkgconfig_DIR ${LIB_INSTALL_DIR}/pkgconfig/) IF(WITH_QML) SET(qml_DIR "${ENGSAS_EPART_DIR}/qml") IF(UNIX) # Used in qmldir to point to the installed libengsas libraries SET(qmldir_DIR "${LIB_INSTALL_DIR}") ELSE(UNIX) SET(qmldir_DIR "../../") ENDIF(UNIX) ENDIF(WITH_QML) IF(COMPATIBLE_WITH_NON_KDE) # change the directories to avoid conflicts with non kde version SET(LIB_INSTALL_DIR ${LIB_INSTALL_DIR}/kde) # disable all shared stuff between non kde and kde version SET(BUILD_TESTING OFF) SET(BUILD_WITH_CHARTS OFF) SET(BUILD_DEV OFF) SET(L10N_ALL OFF) SET(WITH_FILE_SERVICE_PLUGINS_ALL OFF) SET(WITH_CHARTS OFF) SET(WITH_API_DOCS OFF) ENDIF(COMPATIBLE_WITH_NON_KDE) ###################### # # internatalization # ###################### IF(L10N_ALL) SET(L10N_DE ON) SET(L10N_EN ON) SET(L10N_FR ON) ENDIF(L10N_ALL) ###################### # # EFileServicePlugins # ###################### IF(WITH_FILE_SERVICE_PLUGINS_ALL) SET(WITH_FILE_SERVICE_FILESYSTEM ON) ENDIF(WITH_FILE_SERVICE_PLUGINS_ALL) ###################### # # EGraphs # ###################### IF(WITH_GRAPHS) FIND_PACKAGE(Qgv) IF(NOT QGV_FOUND) MESSAGE("Qgv not found --> disabling EGraphs library") SET(WITH_GRAPHS OFF) ENDIF(NOT QGV_FOUND) ENDIF(WITH_GRAPHS) ###################### # # EGraphDriver # ###################### IF(WITH_GRAPH_DRIVER_ALL) IF(NOT WITH_GRAPHS) MESSAGE("EGraphs library disabled, therefore no grpah driver could be build") ELSE(NOT WITH_GRAPHS) SET(WITH_GRAPH_DRIVER_NEO4J ON) ENDIF(NOT WITH_GRAPHS) ENDIF(WITH_GRAPH_DRIVER_ALL) IF(WITH_GRAPH_DRIVER_NEO4J) FIND_PACKAGE(QJSON) IF(NOT QJSON_FOUND) MESSAGE("QJSON not found --> disabling Neo4J driver") SET(WITH_GRAPH_DRIVER_NEO4J OFF) ENDIF(NOT QJSON_FOUND) ENDIF(WITH_GRAPH_DRIVER_NEO4J) ###################### # # ESpreadsheetProvider # ###################### IF(WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL) SET(WITH_SPREADSHEET_PROVIDER_CSV ON) SET(WITH_SPREADSHEET_PROVIDER_OO ON) SET(WITH_SPREADSHEET_PROVIDER_MS ON) ENDIF(WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL) IF(WITH_SPREADSHEET_PROVIDER_OO) FIND_PACKAGE(OpenOffice) IF(NOT OPENOFFICE_FOUND) MESSAGE("OpenOffice or LibreOffice not found --> disabling SpreadsheetProviderOo") SET(WITH_SPREADSHEET_PROVIDER_OO OFF) ENDIF(NOT OPENOFFICE_FOUND) ENDIF(WITH_SPREADSHEET_PROVIDER_OO) IF(WITH_SPREADSHEET_PROVIDER_MS) IF(NOT QT_QAXCONTAINER_FOUND) SET(WITH_SPREADSHEET_PROVIDER_MS OFF) MESSAGE("QAxContainer library not found --> disabling SpreadsheetProviderMS") ENDIF(NOT QT_QAXCONTAINER_FOUND) ENDIF(WITH_SPREADSHEET_PROVIDER_MS) ###################### # # QTDECLARATIVE # ###################### IF(WITH_QML) IF(BINDINGS_QT4) IF(NOT QT_QTDECLARATIVE_FOUND) SET(WITH_QML OFF) ENDIF(NOT QT_QTDECLARATIVE_FOUND) ENDIF(BINDINGS_QT4) ENDIF(WITH_QML) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake) SET(libengsas_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/lib/core) SET(libengsas_BINARY_DIR ${CMAKE_BINARY_DIR}/src/lib/core) SET(libengsas_testing_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/lib/testing) SET(libengsas_testing_BINARY_DIR ${CMAKE_BINARY_DIR}/src/lib/testing) IF(WITH_CHARTS) SET(libengsas_charts_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/lib/charts) SET(libengsas_charts_BINARY_DIR ${CMAKE_BINARY_DIR}/src/lib/charts) ENDIF(WITH_CHARTS) IF(WITH_GRAPHS) SET(libengsas_graphs_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/lib/graphs) SET(libengsas_graphs_BINARY_DIR ${CMAKE_BINARY_DIR}/src/lib/graphs) ENDIF(WITH_GRAPHS) ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(doc) ADD_SUBDIRECTORY(examples) # printing chosen configuration MESSAGE("######################################################") MESSAGE("") MESSAGE("CONFIGURATION") MESSAGE("") MESSAGE("CMAKE_SHARED_LINKER_FLAGS: ${CMAKE_SHARED_LINKER_FLAGS}") MESSAGE("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") MESSAGE("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") MESSAGE("") MESSAGE("OPTIONS:") MESSAGE(" Name Wanted Used") MESSAGE(" BUILD_PACKAGE: ${BUILD_PACKAGE_WANTED} ${BUILD_PACKAGE}") MESSAGE(" BUILD_DEBUG: ${BUILD_DEBUG_WANTED} ${BUILD_DEBUG}") MESSAGE(" BUILD_DEV: ${BUILD_DEV_WANTED} ${BUILD_DEV}") MESSAGE(" BUILD_TESTING: ${BUILD_TESTING_WANTED} ${BUILD_TESTING}") MESSAGE(" DATABASE_TEST_HOST: ${DATABASE_TEST_HOST}") MESSAGE(" DATABASE_TEST_USER: ${DATABASE_TEST_ADMIN_USER}") MESSAGE(" DATABASE_TEST_PASSWORD: ${DATABASE_TEST_ADMIN_PASSWORD}") MESSAGE(" BINDINGS_KDE: ${BINDINGS_KDE_WANTED} ${BINDINGS_KDE}") MESSAGE(" BINDINGS_QT4: ${BINDINGS_QT4_WANTED} ${BINDINGS_QT4}") MESSAGE(" BINDINGS_QT5: ${BINDINGS_QT5_WANTED} ${BINDINGS_QT5}") MESSAGE(" COMPATIBLE_WITH_NON_KDE: ${COMPATIBLE_WITH_NON_KDE_WANTED} ${COMPATIBLE_WITH_NON_KDE}") MESSAGE(" CROSS_CPACK: ${CROSS_CPACK_WANTED} ${CROSS_CPACK}") # MESSAGE(" WITH_HANDBOOK: ${WITH_HANDBOOK_WANTED} ${WITH_HANDBOOK}") MESSAGE(" L10N_ALL: ${L10N_ALL_WANTED} ${L10N_ALL}") MESSAGE(" L10N_DE: ${L10N_DE_WANTED} ${L10N_DE}") MESSAGE(" L10N_EN: ${L10N_EN_WANTED} ${L10N_EN}") MESSAGE(" L10N_FR: ${L10N_FR_WANTED} ${L10N_FR}") MESSAGE(" WITH_FILE_SERVICE_PLUGINS_ALL: ${WITH_FILE_SERVICE_PLUGINS_ALL_WANTED} ${WITH_FILE_SERVICE_PLUGINS_ALL}") MESSAGE(" WITH_FILE_SERVICE_FILESYSTEM: ${WITH_FILE_SERVICE_FILESYSTEM_WANTED} ${WITH_FILE_SERVICE_FILESYSTEM}") MESSAGE(" WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL: ${WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL_WANTED} ${WITH_SPREADSHEET_PROVIDER_PLUGINS_ALL}") MESSAGE(" WITH_SPREADSHEET_PROVIDER_CSV: ${WITH_SPREADSHEET_PROVIDER_CSV_WANTED} ${WITH_SPREADSHEET_PROVIDER_CSV}") MESSAGE(" WITH_SPREADSHEET_PROVIDER_OO: ${WITH_SPREADSHEET_PROVIDER_OO_WANTED} ${WITH_SPREADSHEET_PROVIDER_OO}") MESSAGE(" WITH_SPREADSHEET_PROVIDER_MS: ${WITH_SPREADSHEET_PROVIDER_MS_WANTED} ${WITH_SPREADSHEET_PROVIDER_MS}") MESSAGE(" WITH_CHARTS: ${WITH_CHARTS_WANTED} ${WITH_CHARTS}") MESSAGE(" WITH_GRAPHS: ${WITH_GRAPHS_WANTED} ${WITH_GRAPHS}") MESSAGE(" WITH_GRAPH_DRIVER_ALL: ${WITH_GRAPH_DRIVER_ALL_WANTED} ${WITH_GRAPH_DRIVER_ALL}") MESSAGE(" WITH_GRAPH_DRIVER_NEO4J: ${WITH_GRAPH_DRIVER_NEO4J_WANTED} ${WITH_GRAPH_DRIVER_NEO4J}") MESSAGE(" WITH_QML: ${WITH_QML_WANTED} ${WITH_QML}") MESSAGE(" WITH_API_DOCS: ${WITH_API_DOCS_WANTED} ${WITH_API_DOCS}") MESSAGE(" WITH_EXAMPLES: ${WITH_EXAMPLES_WANTED} ${WITH_EXAMPLES}") MESSAGE("") MESSAGE("######################################################") IF(NOT BINDINGS_KDE) ########### Add uninstall target ############### CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake") ENDIF(NOT BINDINGS_KDE) string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWERED) SET(CPACK_GENERATOR "NSIS") SET(CPACK_PACKAGE_NAME ${PROJECT_NAME}) SET(CPACK_PACKAGE_VENDOR "EngSaS - Engineering Solutions and Services Langenbach") SET(CPACK_NSIS_CONTACT "info@engsas.de") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LibEngsas is a library which improves Qt a little bit and encapsulates KDE bindings if possible") SET(CPACK_PACKAGE_VERSION ${${PROJECT_NAME}_VERSION}) SET(CPACK_PACKAGE_VERSION_MAJOR ${TARGET_VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${TARGET_VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${${PROJECT_NAME}_PATCH_LEVEL}) #SET(CPACK_PACKAGE_INSTALL_DIRECTORY "DeSuTo/${${PROJECT_NAME}_VERSION}") SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME_LOWERED}) SET(CPACK_NSIS_INSTALLED_ICON_NAME "$INSTDIR/epartexe.exe") SET(CPACK_SOURCE_GENERATOR "TBZ2") # SET(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/andy/vtk/CMake-bin/CPackSourceConfig.cmake") SET(ARCHIV_NAME ${PROJECT_NAME_LOWERED}${TARGET_VERSION_MAJOR}-${TARGET_VERSION_MINOR}.${${PROJECT_NAME}_PATCH_LEVEL}) SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${ARCHIV_NAME}) SET(CPACK_SOURCE_IGNORE_FILES "build;kdev4;updatets") # add all components which should be installable via the package IF(WIN32) SET(external_DLL qtlibs) ENDIF(WIN32) SET(CPACK_COMPONENTS_ALL library efilesystemplugin applicationepartexe charts graphs neo4jdriver headerfiles devfinding devdesigner devtesting devapidocs devqml ${external_DLL} examples espreadsheetproviderms espreadsheetprovidercsv ) # License file SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt) # Pre selected installation profiles SET(CPACK_ALL_INSTALL_TYPES Typical Full Minimal) SET(CPACL_INSTALL_TYPE_TYPICAL_DISPLAY_NAME "Typical") SET(CPACL_INSTALL_TYPE_FULL_DISPLAY_NAME "Full") SET(CPACL_INSTALL_TYPE_MINIMAL_DISPLAY_NAME "Minimal") # groups for components SET(CPACK_COMPONENT_GROUP_BASE_DISPLAY_NAME "LibEngsas") SET(CPACK_COMPONENT_GROUP_BASE_DESCRIPTION "The LibEngsas core stuff") SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DISPLAY_NAME "Development") SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "All needed stuff to develop with LibEngsas") SET(CPACK_COMPONENT_GROUP_FILESERVICEPLUGINS_DISPLAY_NAME "Fileservice Plugins") SET(CPACK_COMPONENT_GROUP_FILESERVICEPLUGINS_DESCRIPTION "This components provides services to handle files") SET(CPACK_COMPONENT_GROUP_GRAPHDRIVERS_DISPLAY_NAME "Graph database Plugins") SET(CPACK_COMPONENT_GROUP_GRAPHDRIVERS_DESCRIPTION "This components provides drivers to connect to graph databases") SET(CPACK_COMPONENT_GROUP_3RDPARTYLIBS_DISPLAY_NAME "3rd Party Libraries") SET(CPACK_COMPONENT_GROUP_3RDPARTYLIBS_DESCRIPTION "3rd Party libraries which are needed to run Meganizer and or modules. They are only needed if they are not already exist in PATH") # SET(CPACK_COMPONENT_GROUP_DOC_DISPLAY_NAME "Documentations") # SET(CPACK_COMPONENT_GROUP_DOC_DESCRIPTION "Contains all types of available documentations") # the scheme of the variable names are: CPACK_COMPNONENT_%COMPONENTNAMEINUPPERCASE%_DISPLAY_NAME # where %COMPONENTNAMEINUPPERCASE% must be replaced by the upper cased name of the component # see below for example SET(CPACK_COMPONENT_QTLIBS_DISPLAY_NAME "QT") SET(CPACK_COMPONENT_QTLIBS_DESCRIPTION "Libraries which are needed, but not belonging to this project. They must not be installed, if they are already installed at path") SET(CPACK_COMPONENT_QTLIBS_GROUP "3rdPartyLibs") SET(CPACK_COMPONENT_QTLIBS_INSTALL_TYPES Typical Full) SET(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "LibEngsas Library") SET(CPACK_COMPONENT_LIBRARY_DESCRIPTION "The library itself") SET(CPACK_COMPONENT_LIBRARY_GROUP "Base") SET(CPACK_COMPONENT_LIBRARY_INSTALL_TYPES Typical Full Minimal) SET(CPACK_COMPONENT_APPLICATIONEPARTEXE_DISPLAY_NAME "EPartExe") SET(CPACK_COMPONENT_APPLICATIONEPARTEXE_DESCRIPTION "The executable to launch EParts") SET(CPACK_COMPONENT_APPLICATIONEPARTEXE_GROUP "Base") SET(CPACK_COMPONENT_APPLICATIONEPARTEXE_INSTALL_TYPES Typical Full) ########################## # # EFileServicePLugins - Group "Fileservice Plugins" # ########################## IF(WITH_FILE_SERVICE_FILESYSTEM) SET(CPACK_COMPONENT_EFILESYSTEMPLUGIN_DISPLAY_NAME "Filesystem plugin") SET(CPACK_COMPONENT_EFILESYSTEMPLUGIN_DESCRIPTION "Module to handle files on local filesystems") SET(CPACK_COMPONENT_EFILESYSTEMPLUGIN_GROUP "Fileservice Plugins") SET(CPACK_COMPONENT_EFILESYSTEMPLUGIN_INSTALL_TYPES Typical Full) SET(CPACK_COMPONENT_EFILESYSTEMPLUGIN_DEPENDS library) ENDIF(WITH_FILE_SERVICE_FILESYSTEM) ########################## # # Group "ESpreadsheet Plugins" # ########################## IF(WITH_SPREADSHEET_PROVIDER_CSV) SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERCSV_DISPLAY_NAME "CSV") SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERCSV_DESCRIPTION "Module to im- and export CSV files") SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERCSV_GROUP "Spreadsheet Plugins") SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERCSV_INSTALL_TYPES Typical Full) SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERCSV_DEPENDS library) ENDIF() IF(WITH_SPREADSHEET_PROVIDER_MS) SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERMS_DISPLAY_NAME "Excel") SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERMS_DESCRIPTION "Module to im- and export Excel files") SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERMS_GROUP "Spreadsheet Plugins") SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERMS_INSTALL_TYPES Typical Full) SET(CPACK_COMPONENT_ESPREADSHEETPROVIDERMS_DEPENDS library) ENDIF() ########################## # # libengsas-charts # ########################## SET(CPACK_COMPONENT_CHARTS_DISPLAY_NAME "LibEngsas Charts Library") SET(CPACK_COMPONENT_CHARTS_DESCRIPTION "Library module to display charts") SET(CPACK_COMPONENT_CHARTS_GROUP "Base") SET(CPACK_COMPONENT_CHARTS_INSTALL_TYPES Typical Full Minimal) SET(CPACK_COMPONENT_CHARTS_DEPENDS library) ########################## # # libengsas-graphs # ########################## SET(CPACK_COMPONENT_GRAPHS_DISPLAY_NAME "LibEngsas Graphs Library") SET(CPACK_COMPONENT_GRAPHS_DESCRIPTION "Library module to handle graph and connect to graph databases") SET(CPACK_COMPONENT_GRAPHS_GROUP "Base") SET(CPACK_COMPONENT_GRAPHS_INSTALL_TYPES Typical Full Minimal) SET(CPACK_COMPONENT_GRAPHS_DEPENDS library) ########################## # # Neo4J Driver - Group "Graph database Plugins" # ########################## IF(WITH_FILE_SERVICE_FILESYSTEM) SET(CPACK_COMPONENT_NEO4J_DISPLAY_NAME "Filesystem plugin") SET(CPACK_COMPONENT_NEO4J_DESCRIPTION "Driver to connect to Neo4J databases") SET(CPACK_COMPONENT_NEO4J_GROUP "Graph database Plugins") SET(CPACK_COMPONENT_NEO4J_INSTALL_TYPES Typical Full) SET(CPACK_COMPONENT_NEO4J_DEPENDS library graphs) ENDIF(WITH_FILE_SERVICE_FILESYSTEM) ########################## # # Development - Group "Development" # ########################## IF(BUILD_DEV) SET(CPACK_COMPONENT_DEVTESTING_DISPLAY_NAME "LibEngsas testing library") SET(CPACK_COMPONENT_DEVTESTING_DESCRIPTION "Library to build tests easier") SET(CPACK_COMPONENT_DEVTESTING_GROUP "Development") SET(CPACK_COMPONENT_DEVTESTING_INSTALL_TYPES Full) SET(CPACK_COMPONENT_DEVTESTING_DEPENEDS library) SET(CPACK_COMPONENT_DEVDESIGNER_DISPLAY_NAME "LibEngsas Designer Plugins") SET(CPACK_COMPONENT_DEVDESIGNER_DESCRIPTION "QtDesigner Plugins for Widgets provided by LibEngsas") SET(CPACK_COMPONENT_DEVDESIGNER_GROUP "Development") SET(CPACK_COMPONENT_DEVDESIGNER_INSTALL_TYPES Full) SET(CPACK_COMPONENT_DEVDESIGNER_DEPENDS library) SET(CPACK_COMPONENT_HEADERFILES_DISPLAY_NAME "Header files of LibEngsas") SET(CPACK_COMPONENT_HEADERFILES_DESCRIPTION "Contains header files to develop with LibEngsas and it's components") SET(CPACK_COMPONENT_HEADERFILES_GROUP "Development") SET(CPACK_COMPONENT_HEADERFILES_INSTALL_TYPES Full) SET(CPACK_COMPONENT_HEADERFILES_DEPENEDS library) SET(CPACK_COMPONENT_DEVFINDING_DISPLAY_NAME "Files to find LibEngsas") SET(CPACK_COMPONENT_DEVFINDING_DESCRIPTION "Files to find LibEngsas with CMake and pkgconfig") SET(CPACK_COMPONENT_DEVFINDING_GROUP "Development") SET(CPACK_COMPONENT_DEVFINDING_INSTALL_TYPES Full) SET(CPACK_COMPONENT_DEVFINDING_DEPENEDS library) IF(WITH_API_DOCS) SET(CPACK_COMPONENT_DEVAPIDOCS_DISPLAY_NAME "API documentation of LibEngsas") SET(CPACK_COMPONENT_DEVAPIDOCS_DESCRIPTION "The API documentation of LibEngsas and all packaged stuff") SET(CPACK_COMPONENT_DEVAPIDOCS_GROUP "Development") SET(CPACK_COMPONENT_DEVAPIDOCS_INSTALL_TYPES Full) ENDIF() IF(WITH_EXAMPLES) SET(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Examples using LibEngsas") SET(CPACK_COMPONENT_EXAMPLES_DESCRIPTION "Examples using LibEngsas") SET(CPACK_COMPONENT_EXAMPLES_GROUP "Development") SET(CPACK_COMPONENT_EXAMPLES_INSTALL_TYPES Full) ENDIF() IF(WITH_QML) SET(CPACK_COMPONENT_DEVQML_DISPLAY_NAME "QML API of LibEngsas") SET(CPACK_COMPONENT_DEVQML_DESCRIPTION "QML API and import libraries for LibEngsas") SET(CPACK_COMPONENT_DEVQML_GROUP "Development") SET(CPACK_COMPONENT_DEVQML_INSTALL_TYPES Full) ENDIF(WITH_QML) ENDIF(BUILD_DEV) # used by NSIS to create startmenu links to the executables # this entrys are only useful if a bin folder is used, otherwise use the empty EXECUTABLES # and fill out the NSIS_MENU_LINKS #SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "desuto" "DeSuTo") #SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "desutodaemon" "DeSuToDaemon") SET(CPACK_PACKAGE_EXECUTABLES "" "") IF(WITH_API_DOCS) SET(CPACK_NSIS_MENU_LINKS "${apidocs_DIR}/html/index.html" "API Documentation") ENDIF(WITH_API_DOCS) # This must always be last! INCLUDE(CPack)