Warning, /office/skrooge/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 #***************************************************************************
0002 #* SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr
0003 #* SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr
0004 #* SPDX-License-Identifier: GPL-3.0-or-later
0005 #***************************************************************************
0006 MESSAGE( STATUS "..:: CMAKE ROOT ::..")
0007 CMAKE_MINIMUM_REQUIRED(VERSION 3.16.0)
0008 PROJECT(skrooge)
0009 
0010 
0011 SET (QT_MIN_VERSION "5.12.0")
0012 #SET (QT_MIN_VERSION "5.15.0")
0013 
0014 # QT6 MIGRATION
0015 #add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050F00)
0016 
0017 OPTION(SKG_BUILD_TEST "Build the test" ON)
0018 OPTION(SKG_DESIGNER   "Build designer library" ON)
0019 OPTION(SKG_WEBENGINE  "Build Skrooge with WebEngine (can not be used with SKG_WEBKIT)" ON)
0020 OPTION(SKG_WEBKIT  "Build Skrooge with WebKit (can not be used with SKG_WEBENGINE)" OFF)
0021 OPTION(SKG_DBUS  "Build with DBUS" ON)
0022 IF(WIN32)
0023     SET(SKG_WEBENGINE OFF)
0024     SET(SKG_WEBKIT OFF)
0025     SET(SKG_DESIGNER OFF)
0026     SET(SKG_KF_5102 OFF)
0027 ENDIF(WIN32)
0028 
0029 IF(POLICY CMP0063)
0030   CMAKE_POLICY(SET CMP0063 NEW)
0031 ENDIF(POLICY CMP0063)
0032  
0033 FIND_PACKAGE(ECM 1.7.0 REQUIRED NO_MODULE)
0034 SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${skrooge_SOURCE_DIR}/cmake/modules)
0035 INCLUDE(ECMInstallIcons)
0036 INCLUDE(KDEInstallDirs)
0037 INCLUDE(KDECompilerSettings)
0038 INCLUDE(KDECMakeSettings)
0039 INCLUDE(FeatureSummary)
0040 INCLUDE(CheckCXXCompilerFlag)
0041 INCLUDE(GenerateExportHeader)
0042 INCLUDE(ECMSetupVersion)
0043 INCLUDE(ECMGenerateHeaders)
0044 INCLUDE(CMakePackageConfigHelpers)
0045 INCLUDE(KDEFrameworkCompilerSettings)
0046 
0047 FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} REQUIRED Core Widgets Script Sql Test PrintSupport Svg Xml Concurrent Qml QuickWidgets)
0048 
0049 IF(SKG_WEBENGINE)
0050     FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} REQUIRED WebEngineWidgets)
0051     IF(SKG_WEBKIT)
0052         MESSAGE( FATAL_ERROR "You can not use both SKG_WEBENGINE and SKG_WEBKIT. You have to enable one and disable the other." )
0053     ENDIF(SKG_WEBKIT)
0054 ENDIF(SKG_WEBENGINE)
0055 IF(SKG_WEBKIT)
0056     FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} REQUIRED WebKitWidgets)
0057 ENDIF(SKG_WEBKIT)
0058 
0059 IF(SKG_DBUS)
0060     MESSAGE( STATUS "     DBUS enabled")
0061     FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} REQUIRED DBus)
0062 ELSE(SKG_DBUS)
0063     MESSAGE( STATUS "     DBUS disabled")
0064 ENDIF(SKG_DBUS)
0065 
0066 IF(SKG_DESIGNER)
0067   FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} REQUIRED Designer )
0068   FIND_PACKAGE(KF5 5.0.0 REQUIRED COMPONENTS
0069     DesignerPlugin        # Tier 3
0070   )  
0071 ELSE(SKG_DESIGNER)
0072   SET(SKG_BUILD_TEST OFF)
0073 ENDIF(SKG_DESIGNER)
0074 
0075 FIND_PACKAGE(Grantlee5 0.5 REQUIRED)
0076 
0077 FIND_PACKAGE(KF5 5.86.0 REQUIRED COMPONENTS
0078   Archive               # Tier 1
0079   Config                # Tier 1
0080   CoreAddons            # Tier 1
0081   I18n                  # Tier 1
0082   ItemViews             # Tier 1
0083   WidgetsAddons         # Tier 1
0084   WindowSystem          # Tier 1
0085   Completion            # Tier 2
0086   JobWidgets            # Tier 2
0087   ConfigWidgets         # Tier 3
0088   IconThemes            # Tier 3
0089   KIO                   # Tier 3
0090   NewStuffCore          # Tier 3
0091   NewStuff              # Tier 3
0092   NewStuffQuick         # Tier 3
0093   Parts                 # Tier 3
0094   Wallet                # Tier 3
0095   XmlGui                # Tier 3
0096 )
0097 
0098 FIND_PACKAGE(KF5DocTools)
0099 
0100 FIND_PACKAGE(PkgConfig REQUIRED)
0101 PKG_CHECK_MODULES(SQLCIPHER REQUIRED sqlcipher)
0102 MESSAGE( STATUS "     Mode SQLCIPHER enabled")
0103 MESSAGE( STATUS "     SQLCIPHER INCLUDE   :  " ${SQLCIPHER_INCLUDE_DIRS})
0104 SET(SQLITE_LIBRARIES ${SQLCIPHER_LIBRARIES})
0105 SET(SQLITE_INCLUDE_DIR ${SQLCIPHER_INCLUDE_DIRS})
0106 link_directories(${SQLCIPHER_LIBRARY_DIRS})
0107 
0108 SET_PACKAGE_PROPERTIES(Sqlcipher PROPERTIES DESCRIPTION "Support for encryption"
0109                        URL "https://www.zetetic.net/sqlcipher/"
0110                        TYPE REQUIRED)
0111 
0112 SET(GRANTLEE_VERSION ${Grantlee5_VERSION_MAJOR}.${Grantlee5_VERSION_MINOR}.${Grantlee5_VERSION_PATCH})
0113 MESSAGE( STATUS "     GRANTLEE VERSION    : " ${GRANTLEE_VERSION})
0114 
0115 SET(SKG_VERSION "2.32.0")
0116 SET(SKG_BETA "BETA")
0117 SET(SOVERSION 2)
0118 
0119 IF (CMAKE_BUILD_TYPE)
0120 ELSE (CMAKE_BUILD_TYPE)
0121         SET(CMAKE_BUILD_TYPE profile)
0122 #"release": optimized for speed, no debug symbols or debug messages
0123 #"relwithdebinfo": optimized for speed, debug symbols for backtraces
0124 #"debug": optimized, but debuggable
0125 #"debugfull": no optimizations, full debug support
0126 #"profile": adds coverage flags to debugfull
0127 #"none": the build flags are manually set using the CMAKE_CXX_FLAGS option.
0128 ENDIF (CMAKE_BUILD_TYPE)
0129 
0130 FIND_PROGRAM(SKG_BASH bash)
0131 MARK_AS_ADVANCED(SKG_BASH)
0132 
0133 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
0134 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
0135 MESSAGE( STATUS "     QT                  : " ${Qt5_VERSION} )
0136 MESSAGE( STATUS "     KF5                 : " ${KF5_VERSION} )
0137 MESSAGE( STATUS "     PROJECT_SOURCE_DIR  : " ${PROJECT_SOURCE_DIR} )
0138 MESSAGE( STATUS "     PROJECT_BINARY_DIR  : " ${PROJECT_BINARY_DIR} )
0139 MESSAGE( STATUS "     CMAKE_BUILD_TYPE    : " ${CMAKE_BUILD_TYPE} )
0140 MESSAGE( STATUS "     CMAKE_MODULE_PATH   : " ${CMAKE_MODULE_PATH} )
0141 MESSAGE( STATUS "     CMAKE_INSTALL_PREFIX: " ${CMAKE_INSTALL_PREFIX} )
0142 MESSAGE( STATUS "     SKG_BUILD_TEST      : " ${SKG_BUILD_TEST} )
0143 MESSAGE( STATUS "     SKG_DESIGNER        : " ${SKG_DESIGNER} )
0144 MESSAGE( STATUS "     SKG_WEBENGINE       : " ${SKG_WEBENGINE} )
0145 MESSAGE( STATUS "     SKG_WEBKIT          : " ${SKG_WEBKIT} )
0146 MESSAGE( STATUS "     SKG_DBUS            : " ${SKG_DBUS} )
0147 MESSAGE( STATUS "     KDE_INSTALL_QTPLUGINDIR : " ${KDE_INSTALL_QTPLUGINDIR})
0148 
0149 #IF(CMAKE_BUILD_TYPE MATCHES "profile")
0150 #  MESSAGE( STATUS "     TRACES              : All traces activated")
0151   #add_definitions(-DSKGFULLTRACES)
0152 #ELSE(CMAKE_BUILD_TYPE MATCHES "profile")
0153 #  IF(CMAKE_BUILD_TYPE MATCHES "debug" OR SKG_BETA MATCHES "BETA")
0154     MESSAGE( STATUS "     TRACES              : Some traces activated")
0155 #  ELSE(CMAKE_BUILD_TYPE MATCHES "debug" OR SKG_BETA MATCHES "BETA")
0156 #    MESSAGE( STATUS "     TRACES              : All traces disabled")
0157 #    add_definitions(-DSKGNOTRACES)
0158 #  ENDIF(CMAKE_BUILD_TYPE MATCHES "debug" OR SKG_BETA MATCHES "BETA")
0159 #ENDIF(CMAKE_BUILD_TYPE MATCHES "profile")
0160 
0161 # FIX: Qt was built with -reduce-relocations
0162 IF(Qt5_POSITION_INDEPENDENT_CODE)
0163   SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
0164 ENDIF(Qt5_POSITION_INDEPENDENT_CODE)
0165 
0166 ADD_DEFINITIONS(-DSKGVERSION=${SKG_VERSION}${SKG_BETA})
0167 REMOVE_DEFINITIONS(-DQT_NO_CAST_FROM_ASCII)
0168 
0169 #Correction bug 207249 vvvv
0170 IF(CMAKE_COMPILER_IS_GNUCXX)
0171     CHECK_CXX_COMPILER_FLAG("-Wlogical-op" WLOGICALOP)
0172     IF(WLOGICALOP)
0173         ADD_COMPILE_OPTIONS(-Wlogical-op)
0174     ENDIF(WLOGICALOP)
0175     
0176     CHECK_CXX_COMPILER_FLAG("-Wnoexcept" WNOEXCEPT)
0177     IF(WNOEXCEPT)
0178         ADD_COMPILE_OPTIONS(-Wnoexcept)
0179     ENDIF(WNOEXCEPT)    
0180 
0181     ADD_COMPILE_OPTIONS(-std=c++0x -pedantic -Wall -Wextra -Wno-variadic-macros -Wparentheses -Wmissing-braces -Wcast-align -Wcast-qual -Wformat=2 -Winit-self -Wmissing-include-dirs -Woverloaded-virtual -Wsign-promo -Wstrict-null-sentinel -Wundef -Wno-unused)
0182     #  ADD_COMPILE_OPTIONS(-Wstrict-overflow=5  -Wshadow  -Wctor-dtor-privacy  -Wshadow -Wold-style-cast -Wswitch-default -Wredundant-decls)
0183 ENDIF(CMAKE_COMPILER_IS_GNUCXX)
0184 #Correction bug 207249 ^^^^
0185 
0186 #Default installation path
0187 SET(CMAKE_INSTALL_PREFIX ${BUILD_DIR})
0188 
0189 IF(KF5_VERSION VERSION_GREATER_EQUAL 5.100.0)
0190     MESSAGE( STATUS "     KF5 >= 5.100.0")
0191     ADD_DEFINITIONS(-DSKG_KF_5102=ON)
0192 ENDIF()
0193 
0194 # Win32 specific configuration
0195 IF(WIN32)
0196     ADD_DEFINITIONS(-DSKG_PLATFORM_WIN32)
0197     IF(CMAKE_COMPILER_IS_GNUCXX)
0198         SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-runtime-pseudo-reloc -Wl,--export-all-symbols" CACHE STRING "" FORCE)
0199     ENDIF(CMAKE_COMPILER_IS_GNUCXX)
0200     
0201     IF (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
0202         ADD_DEFINITIONS( -DQT_DEBUG )
0203     ENDIF (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)    
0204 ELSE(WIN32)
0205 #To solve Bug 209912:"ldd -u <library>""
0206 #does not work on MACOS, must be done manually          SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed" CACHE STRING "" FORCE)
0207 ENDIF(WIN32)
0208 MESSAGE(STATUS "     CMAKE_SHARED_LINKER_FLAGS : ${CMAKE_SHARED_LINKER_FLAGS}")
0209 
0210 #ADD_SUBDIRECTORY
0211 ADD_SUBDIRECTORY(skgsqlcipher)
0212 ADD_SUBDIRECTORY(skgbasemodeler)
0213 ADD_SUBDIRECTORY(skgbankmodeler)
0214 ADD_SUBDIRECTORY(skgbasegui)
0215 ADD_SUBDIRECTORY(skgbankgui)
0216 
0217 IF(SKG_DESIGNER)
0218     ADD_SUBDIRECTORY(skgbaseguidesigner)
0219     ADD_SUBDIRECTORY(skgbankguidesigner)    
0220 ENDIF(SKG_DESIGNER)
0221 
0222 ADD_SUBDIRECTORY(plugins)
0223 ADD_SUBDIRECTORY(images)
0224 
0225 IF(SKG_BUILD_TEST AND NOT WIN32)
0226     ADD_SUBDIRECTORY(tests)
0227 ENDIF(SKG_BUILD_TEST AND NOT WIN32)
0228 
0229 IF(KF5DocTools_FOUND)
0230   ADD_SUBDIRECTORY(doc)
0231 ENDIF(KF5DocTools_FOUND)
0232 
0233 #Main application
0234 ADD_SUBDIRECTORY(skrooge)
0235 ADD_SUBDIRECTORY(skroogeconvert)
0236 
0237 # ADD_SUBDIRECTORY(skrooge-companion)
0238 
0239 #DOXYGEN
0240 ADD_CUSTOM_TARGET(apidox "doxygen" "${PROJECT_SOURCE_DIR}/Doxyfile")
0241 
0242 #ASTYLE
0243 CONFIGURE_FILE(scripts/astyle.sh.in scripts/astyle.sh @ONLY)
0244 ADD_CUSTOM_TARGET(astyle "scripts/astyle.sh")
0245 
0246 #GENERATE SPLASH SCREEN
0247 CONFIGURE_FILE(scripts/generateSplash.sh.in scripts/generateSplash.sh @ONLY)
0248 ADD_CUSTOM_TARGET(splash "scripts/generateSplash.sh")
0249 
0250 #STATIC CODE CHECKS
0251 CONFIGURE_FILE(scripts/codecheck.sh.in scripts/codecheck.sh @ONLY)
0252 ADD_CUSTOM_TARGET(codecheck "scripts/codecheck.sh")
0253 
0254 #FULL
0255 CONFIGURE_FILE(scripts/full.sh scripts/full.sh @ONLY)
0256 
0257 #PO files
0258 FIND_PACKAGE(KF5I18n CONFIG REQUIRED)
0259 KI18N_INSTALL(po)
0260 
0261 FIND_PACKAGE(KF5DocTools CONFIG)
0262 IF(KF5DocTools_FOUND)
0263     KDOCTOOLS_INSTALL(po)
0264 ENDIF()
0265   
0266 FEATURE_SUMMARY(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)