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)