Warning, /graphics/digikam/core/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # 0002 # SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com> 0003 # SPDX-FileCopyrightText: 2015 by Veaceslav Munteanu, <veaceslav dot munteanu90 at gmail dot com> 0004 # SPDX-FileCopyrightText: 2015 by Mohamed_Anwer, <m_dot_anwer at gmx dot com> 0005 # 0006 # SPDX-License-Identifier: BSD-3-Clause 0007 # 0008 0009 # NOTE: Look rules extension scripts located at core/cmake/rules/ 0010 0011 APPLY_COMMON_POLICIES() 0012 0013 # ============================================================================== 0014 0015 message(STATUS "----------------------------------------------------------------------------------") 0016 message(STATUS "Check dependencies for ${PROJECT_NAME} version ${DIGIKAM_VERSION_STRING}") 0017 message(STATUS "") 0018 0019 set(KF${QT_VERSION_MAJOR}_MIN_VERSION "5.95.0") 0020 set(EXIV2_MIN_VERSION "0.27.1") 0021 set(OPENCV_MIN_VERSION "3.3.0") 0022 set(LENSFUN_MIN_VERSION "0.2.6.0") # For Lens auto-correction plugin 0023 set(KSANE_MIN_VERSION "21.12.0") # For digital scanner support. 0024 set(CALENDAR_MIN_VERSION "5.89.0") # Calendar Core dependency for plugin. 0025 set(AKONADI_MIN_VERSION "5.19.0") # Akonadi Contact dependency. 0026 0027 cmake_minimum_required(VERSION ${CMAKE_MIN_VERSION}) 0028 0029 # ============================================================================== 0030 0031 include(RulesOptionDefinitions) 0032 0033 ############## Find Packages ################### 0034 0035 # Now detect the whole Qt6 or Qt5 framework. 0036 0037 include(RulesQtFramework) 0038 0039 # KDE frameworks dependencies 0040 0041 include(RulesKDEFramework) 0042 0043 # ============================================================================== 0044 # Dependencies Rules 0045 0046 # mandatory 0047 0048 include(RulesLibJpeg) 0049 0050 find_package(TIFF) 0051 find_package(PNG) 0052 find_package(Boost) 0053 find_package(LCMS2) 0054 find_package(EXPAT) # For DNGWriter: XMP SDK need Expat library to compile. 0055 find_package(Threads) # For DNGWriter and LibRaw which needs native threads support. 0056 find_package(Libheif) # For HEIF support. 0057 0058 if(HEIF_FOUND) 0059 0060 find_package(X265) # For HEIF encoding support. 0061 0062 if(NOT X265_FOUND) 0063 0064 set(X265_LIBRARIES "") 0065 0066 endif() 0067 0068 endif() 0069 0070 # -- Exiv2 checks and adjustements --------------------------------------------- 0071 0072 include(RulesLibExiv2) 0073 0074 # -- OpenCV checks and adjustements -------------------------------------------- 0075 0076 include(RulesLibOpenCV) 0077 0078 # -- optionals ----------------------------------------------------------------- 0079 0080 find_package(FLEX) # For Panorama tool. 0081 find_package(BISON) # For Panorama tool. 0082 0083 find_package(LibXslt) # For HTMLGallery tool. 0084 find_package(LibXml2) # For HTMLGallery tool. 0085 0086 if(ENABLE_GEOLOCATION) 0087 0088 set(MARBLE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/utilities/geolocation/marble 0089 ${CMAKE_CURRENT_SOURCE_DIR}/utilities/geolocation/marble/geodata/data 0090 ) 0091 0092 else() 0093 0094 set(MARBLE_INCLUDE_DIR "") 0095 0096 endif() 0097 0098 find_package(PkgConfig) 0099 find_package(Jasper) # For JPEG 2000 support. 0100 find_package(Eigen3) # For Refocus tool. 0101 0102 # -- ImageMagick checks and adjustements -------------------------------------- 0103 0104 include(RulesLibMagick) 0105 0106 # -- X11 checks and adjustements ---------------------------------------------- 0107 0108 include(RulesX11) 0109 0110 # -- OpenGL checks and adjustments -------------------------------------------- 0111 0112 include(RulesLibOpenGL) 0113 0114 # -- Media player dependencies checks and adjustments--------------------------- 0115 0116 include(RulesFFmpeg) 0117 include(RulesMediaPlayer) 0118 0119 # -- Print Install Paths from ECM --------------------------------------------- 0120 0121 include(RulesInstallPaths) 0122 0123 # -- Windows compilation and linking adjustements ----------------------------- 0124 0125 include(RulesWindows) 0126 0127 # -- MacOS compilation and linking adjustements ----------------------------- 0128 0129 include(RulesMacOS) 0130 0131 # -- To link under Solaris (see bug #274484) ---------------------------------- 0132 0133 if(NOT WIN32) 0134 0135 find_library(MATH_LIBRARY m) 0136 0137 endif() 0138 0139 if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) 0140 0141 find_library(KVM_LIBRARY kvm) 0142 0143 endif() 0144 0145 # ============================================================================== 0146 # More Optional Dependencies and Rules 0147 0148 find_package(Doxygen) 0149 find_package(GLIB2) 0150 0151 if(BUILD_WITH_CCACHE) 0152 0153 message(STATUS "Looking for ccache...") 0154 find_program(CCACHE_FOUND ccache) 0155 message(STATUS "ccache program found: ${CCACHE_FOUND}...") 0156 0157 endif() 0158 0159 # -- Check libgphoto2 library for camera devices support ----------------------- 0160 0161 include(RulesLibgphoto2) 0162 0163 # -- Check LensFun library for Lens auto-correction tool ----------------------- 0164 0165 include(RulesLiblensfun) 0166 0167 # -- Check dependencies for Panorama tool -------------------------------------- 0168 0169 if(FLEX_FOUND AND BISON_FOUND AND KF${QT_VERSION_MAJOR}ThreadWeaver_FOUND) 0170 0171 set(HAVE_PANORAMA 1) 0172 0173 else() 0174 0175 set(HAVE_PANORAMA 0) 0176 0177 endif() 0178 0179 # -- Check dependencies for HTMLGallery tool ----------------------------------- 0180 0181 if(LibXml2_FOUND AND LibXslt_FOUND) 0182 0183 set(HAVE_HTMLGALLERY 1) 0184 0185 else() 0186 0187 set(HAVE_HTMLGALLERY 0) 0188 0189 endif() 0190 0191 # -- Check dependencies for libraw --------------------------------------------- 0192 0193 include(RulesLibraw) 0194 0195 # -- Debug Symbols rules under MacOS ------------------------------------------- 0196 0197 MACOS_DEBUG_POLICIES() 0198 0199 # -- Compilation options definitions ------------------------------------------- 0200 0201 message(STATUS "--------------------------------------------------") 0202 message(STATUS "") 0203 0204 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}Sane_FOUND HAVE_KSANE) 0205 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}FileMetaData_FOUND HAVE_KFILEMETADATA) 0206 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}CalendarCore_FOUND HAVE_KCALENDAR) 0207 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}Notifications_FOUND HAVE_KNOTIFICATIONS) 0208 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}NotifyConfig_FOUND HAVE_KNOTIFYCONFIG) 0209 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}KIO_FOUND HAVE_KIO) 0210 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}IconThemes_FOUND HAVE_KICONTHEMES) 0211 MACRO_BOOL_TO_01(KF${QT_VERSION_MAJOR}Sonnet_FOUND HAVE_SONNET) 0212 MACRO_BOOL_TO_01(LensFun_FOUND HAVE_LENSFUN) 0213 MACRO_BOOL_TO_01(Gphoto2_FOUND HAVE_GPHOTO2) 0214 MACRO_BOOL_TO_01(Jasper_FOUND HAVE_JASPER) 0215 MACRO_BOOL_TO_01(Eigen3_FOUND HAVE_EIGEN3) 0216 MACRO_BOOL_TO_01(ENABLE_GEOLOCATION HAVE_GEOLOCATION) 0217 MACRO_BOOL_TO_01(ENABLE_AKONADICONTACTSUPPORT HAVE_AKONADICONTACT) 0218 MACRO_BOOL_TO_01(ENABLE_MYSQLSUPPORT HAVE_MYSQLSUPPORT) 0219 MACRO_BOOL_TO_01(ENABLE_INTERNALMYSQL HAVE_INTERNALMYSQL) 0220 MACRO_BOOL_TO_01(ENABLE_MEDIAPLAYER HAVE_MEDIAPLAYER) 0221 MACRO_BOOL_TO_01(ENABLE_QTMULTIMEDIA HAVE_QTMULTIMEDIA) 0222 MACRO_BOOL_TO_01(ENABLE_DBUS HAVE_DBUS) 0223 MACRO_BOOL_TO_01(ENABLE_APPSTYLES HAVE_APPSTYLE_SUPPORT) 0224 MACRO_BOOL_TO_01(ENABLE_QWEBENGINE HAVE_QWEBENGINE) 0225 MACRO_BOOL_TO_01(ENABLE_DRMINGW HAVE_DRMINGW) 0226 MACRO_BOOL_TO_01(ImageMagick_FOUND HAVE_IMAGE_MAGICK) 0227 MACRO_BOOL_TO_01(HEIF_FOUND HAVE_HEIF) 0228 MACRO_BOOL_TO_01(X265_FOUND HAVE_X265) 0229 MACRO_BOOL_TO_01(Qt5XmlPatterns_FOUND HAVE_QTXMLPATTERNS) 0230 MACRO_BOOL_TO_01(CCACHE_FOUND HAVE_CCACHE) 0231 0232 # Set config files accordingly with optional dependencies 0233 0234 configure_file(app/utils/digikam_config.h.cmake.in 0235 ${CMAKE_CURRENT_BINARY_DIR}/app/utils/digikam_config.h) 0236 0237 # ============================================================================== 0238 # Log messages 0239 0240 message(STATUS "") 0241 message(STATUS "----------------------------------------------------------------------------------") 0242 message(STATUS " digiKam ${DIGIKAM_VERSION_STRING} dependencies results <https://www.digikam.org>") 0243 message(STATUS "") 0244 0245 PRINT_COMPONENT_COMPILE_STATUS("MySQL Database Support" ENABLE_MYSQLSUPPORT) 0246 PRINT_COMPONENT_COMPILE_STATUS("MySQL Internal Support" ENABLE_INTERNALMYSQL) 0247 PRINT_COMPONENT_COMPILE_STATUS("Showfoto Support" ENABLE_SHOWFOTO) 0248 PRINT_COMPONENT_COMPILE_STATUS("DBUS Support" ENABLE_DBUS) 0249 PRINT_COMPONENT_COMPILE_STATUS("App. Style Support" ENABLE_APPSTYLES) 0250 PRINT_COMPONENT_COMPILE_STATUS("QWebEngine Support" ENABLE_QWEBENGINE) 0251 PRINT_COMPONENT_COMPILE_STATUS("Geolocation Support" ENABLE_GEOLOCATION) 0252 PRINT_COMPONENT_COMPILE_STATUS("Media Player Support" ENABLE_MEDIAPLAYER) 0253 PRINT_COMPONENT_COMPILE_STATUS("QtMultimedia Support" ENABLE_QTMULTIMEDIA) 0254 0255 # ============================================================================== 0256 0257 PRINT_LIBRARY_STATUS("libboostgraph" "https://github.com/boostorg/boost" "(version >= 1.43.0)" Boost_FOUND) 0258 0259 if(LibExiv2_FOUND) 0260 0261 PRINT_LIBRARY_STATUS("LibExiv2" "https://github.com/Exiv2/exiv2" "(version >= ${EXIV2_MIN_VERSION}" LibExiv2_FOUND) 0262 0263 else() 0264 0265 PRINT_LIBRARY_STATUS("libexiv2" "https://github.com/Exiv2/exiv2" "(version >= ${EXIV2_MIN_VERSION}" exiv2_FOUND) 0266 0267 endif() 0268 0269 PRINT_LIBRARY_STATUS("libexpat" "https://libexpat.github.io" "(version >= 2.0.0)" EXPAT_FOUND) 0270 PRINT_LIBRARY_STATUS("libjpeg" "https://github.com/libjpeg-turbo/libjpeg-turbo" "(version >= 6b)" JPEG_FOUND) 0271 PRINT_LIBRARY_STATUS("libkde" "https://invent.kde.org/frameworks/" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" KF${QT_VERSION_MAJOR}_FOUND) 0272 PRINT_LIBRARY_STATUS("liblcms" "https://github.com/mm2/Little-CMS" "(version >= 2.0.0)" LCMS2_FOUND) 0273 PRINT_LIBRARY_STATUS("libopencv" "https://github.com/opencv/opencv" "(version >= ${OPENCV_MIN_VERSION})" OpenCV_FOUND) 0274 PRINT_LIBRARY_STATUS("libpng" "https://libpng.sourceforge.io/" "(version >= 1.2.7)" PNG_FOUND) 0275 PRINT_LIBRARY_STATUS("libpthread" "https://www.gnu.org/software/hurd/libpthread.html" "(version >= 2.0.0)" CMAKE_USE_PTHREADS_INIT OR CMAKE_USE_WIN32_THREADS_INIT) 0276 PRINT_LIBRARY_STATUS("libqt" "https://code.qt.io/cgit/qt/qtbase.git/" "(version >= ${QT_MIN_VERSION})" Qt${QT_VERSION_MAJOR}_FOUND) 0277 PRINT_LIBRARY_STATUS("libtiff" "https://gitlab.com/libtiff/libtiff/" "(version >= 3.8.2)" TIFF_FOUND) 0278 0279 # ============================================================================== 0280 0281 PRINT_OPTIONAL_LIBRARY_STATUS("bison" "https://www.gnu.org/software/bison/bison.html" "(version >= 2.5.0)" "digiKam will be compiled without Panorama support." BISON_FOUND) 0282 PRINT_OPTIONAL_LIBRARY_STATUS("doxygen" "https://github.com/doxygen/doxygen" "(version >= 1.8.0)" "digiKam will be compiled without API documentation building support." Doxygen_FOUND) 0283 PRINT_OPTIONAL_LIBRARY_STATUS("ccache" "https://ccache.dev" "(version >= 3.0.0)" "digiKam will be compiled without CCACHE build support." HAVE_CCACHE) 0284 PRINT_OPTIONAL_LIBRARY_STATUS("flex" "https://github.com/westes/flex" "(version >= 2.5.0)" "digiKam will be compiled without Panorama support." FLEX_FOUND) 0285 PRINT_OPTIONAL_LIBRARY_STATUS("libakonadicontact" "https://invent.kde.org/pim/akonadi-contacts" "(version >= ${AKONADI_MIN_VERSION})" "digiKam will be compiled without KDE desktop address book support." KPim${QT_VERSION_MAJOR}AkonadiContact_FOUND) 0286 PRINT_OPTIONAL_LIBRARY_STATUS("libimagemagick" "https://github.com/ImageMagick/ImageMagick.git" "(version >= 6.7.0)" "digiKam will be compiled without ImageMagick codecs." HAVE_IMAGE_MAGICK) 0287 PRINT_OPTIONAL_LIBRARY_STATUS("libeigen3" "https://github.com/eigenteam/eigen-git-mirror" "(version >= 3.0.0)" "digiKam will be compiled without Refocus tool support." Eigen3_FOUND) 0288 PRINT_OPTIONAL_LIBRARY_STATUS("libgphoto2" "https://github.com/gphoto/libgphoto2" "(version >= 2.4.0)" "digiKam will be compiled without GPhoto2 camera drivers support." Gphoto2_FOUND) 0289 PRINT_OPTIONAL_LIBRARY_STATUS("libjasper" "https://github.com/mdadams/jasper" "(version >= 1.7.0)" "digiKam will be compiled without JPEG2000 support." Jasper_FOUND) 0290 PRINT_OPTIONAL_LIBRARY_STATUS("libkcalendarcore" "https://invent.kde.org/frameworks/kcalendarcore" "(version >= ${CALENDAR_MIN_VERSION})" "digiKam will be compiled without advanced calendar support." KF${QT_VERSION_MAJOR}CalendarCore_FOUND) 0291 PRINT_OPTIONAL_LIBRARY_STATUS("libkfilemetadata" "https://invent.kde.org/frameworks/kfilemetadata" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without KDE desktop file metadata support." KF${QT_VERSION_MAJOR}FileMetaData_FOUND) 0292 PRINT_OPTIONAL_LIBRARY_STATUS("libkiconthemes" "https://invent.kde.org/frameworks/kiconthemes" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without KDE desktop icon themes support." KF${QT_VERSION_MAJOR}IconThemes_FOUND) 0293 PRINT_OPTIONAL_LIBRARY_STATUS("libkio" "https://invent.kde.org/frameworks/kio" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without KDE desktop integration support." KF${QT_VERSION_MAJOR}KIO_FOUND) 0294 PRINT_OPTIONAL_LIBRARY_STATUS("libknotifications" "https://invent.kde.org/frameworks/knotifyconfig" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without KDE desktop notifications support." KF${QT_VERSION_MAJOR}Notifications_FOUND) 0295 PRINT_OPTIONAL_LIBRARY_STATUS("libknotifyconfig" "https://invent.kde.org/frameworks/knotifications" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without KDE desktop notify configuration support." KF${QT_VERSION_MAJOR}NotifyConfig_FOUND) 0296 PRINT_OPTIONAL_LIBRARY_STATUS("libsonnet" "https://invent.kde.org/frameworks/sonnet" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without spell-checking support." KF${QT_VERSION_MAJOR}Sonnet_FOUND) 0297 PRINT_OPTIONAL_LIBRARY_STATUS("libksane" "https://invent.kde.org/graphics/libksane" "(version >= ${KSANE_MIN_VERSION})" "digiKam will be compiled without flat scanners support." KF${QT_VERSION_MAJOR}Sane_FOUND) 0298 PRINT_OPTIONAL_LIBRARY_STATUS("liblensfun" "https://github.com/lensfun/lensfun" "(version >= 0.2.6)" "digiKam will be compiled without Lens Auto Correction tool support." LensFun_FOUND) 0299 PRINT_OPTIONAL_LIBRARY_STATUS("libglib2" "https://developer.gnome.org/glib/" "(version >= 2.0.0)" "digiKam will be compiled without Contents Aware Resizer tool support." GLIB2_FOUND) 0300 0301 PRINT_OPTIONAL_LIBRARY_STATUS("libthreadweaver" "https://invent.kde.org/frameworks/threadweaver" "(version >= ${KF${QT_VERSION_MAJOR}_MIN_VERSION})" "digiKam will be compiled without Panorama support." KF${QT_VERSION_MAJOR}ThreadWeaver_FOUND) 0302 PRINT_OPTIONAL_LIBRARY_STATUS("libxml2" "https://gitlab.gnome.org/GNOME/libxml2/" "(version >= 2.7.0)" "digiKam will be compiled without HTMLGallery support." LibXml2_FOUND) 0303 PRINT_OPTIONAL_LIBRARY_STATUS("libxslt" "https://gitlab.gnome.org/GNOME/libxslt" "(version >= 1.1.0)" "digiKam will be compiled without HTMLGallery support." LibXslt_FOUND) 0304 PRINT_OPTIONAL_LIBRARY_STATUS("libheif" "https://github.com/strukturag/libheif" "(version >= 1.6.0)" "digiKam will be compiled without HEIF support." HEIF_FOUND) 0305 PRINT_OPTIONAL_LIBRARY_STATUS("libx265" "https://github.com/videolan/x265.git" "(version >= 2.2)" "digiKam will be compiled without HEIF encoding support." X265_FOUND) 0306 PRINT_OPTIONAL_LIBRARY_STATUS("OpenGL" "https://gitlab.freedesktop.org/mesa/mesa/" "(version >= 11.0.0)" "digiKam will be compiled without OpenGL support." HAVE_OPENGL) 0307 0308 if(NOT Qt6_FOUND) 0309 0310 # NOTE: This module have been removed with Qt6. 0311 0312 PRINT_OPTIONAL_LIBRARY_STATUS("libqtxmlpatterns" "https://code.qt.io/cgit/qt/qtxmlpatterns.git/" "(version >= ${QT_MIN_VERSION})" "digiKam will be compiled without Rajce tool support." HAVE_QTXMLPATTERNS) 0313 0314 endif() 0315 0316 # ============================================================================== 0317 0318 if(Boost_FOUND AND 0319 (LibExiv2_FOUND OR exiv2_FOUND) AND 0320 EXPAT_FOUND AND 0321 JPEG_FOUND AND 0322 KF${QT_VERSION_MAJOR}_FOUND AND 0323 LCMS2_FOUND AND 0324 OpenCV_FOUND AND 0325 PNG_FOUND AND 0326 Qt${QT_VERSION_MAJOR}_FOUND AND 0327 TIFF_FOUND AND 0328 Threads_FOUND AND 0329 (Qt${QT_VERSION_MAJOR}Test_FOUND OR NOT BUILD_TESTING) AND 0330 (CMAKE_USE_PTHREADS_INIT OR CMAKE_USE_WIN32_THREADS_INIT) 0331 ) 0332 0333 message(STATUS " digiKam can be compiled.................. YES") 0334 set(DIGIKAM_CAN_BE_COMPILED true) 0335 0336 else() 0337 0338 message(FATAL_ERROR " digiKam will be compiled.................. NO (Check dependencies at https://www.digikam.org/api/index.html#depscomplink)") 0339 set(DIGIKAM_CAN_BE_COMPILED false) 0340 0341 endif() 0342 0343 message(STATUS "----------------------------------------------------------------------------------") 0344 message(STATUS "") 0345 0346 if(DIGIKAM_CAN_BE_COMPILED) 0347 0348 include(MacroGitHeader) 0349 GIT_HEADER() 0350 0351 include(MacroBuildDateHeader) 0352 BUILD_DATE_HEADER() 0353 0354 # ========================================================================== 0355 # To prevent warnings from M$ compiler 0356 0357 if(WIN32 AND MSVC) 0358 0359 add_definitions(-D_CRT_SECURE_NO_WARNINGS) 0360 add_definitions(-D_ATL_SECURE_NO_WARNINGS) 0361 add_definitions(-D_AFX_SECURE_NO_WARNINGS) 0362 0363 endif() 0364 0365 # ========================================================================== 0366 # To use ccache with compiler 0367 0368 if(HAVE_CCACHE) 0369 0370 message(STATUS "Using ccache to speed-up compilations..... YES") 0371 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) 0372 set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) 0373 0374 else() 0375 0376 message(STATUS "Using ccache to speed-up compilations..... NO") 0377 0378 endif() 0379 0380 # ========================================================================== 0381 # Definitions rules 0382 0383 # TODO: revise dropped compiler flags accordingly with patched source code which fix compilation 0384 0385 # Remove GCC flags which generate a lots of compilation warnings 0386 REMOVE_GCC_COMPILER_WARNINGS("-Wsuggest-override") 0387 REMOVE_GCC_COMPILER_WARNINGS("-Wcast-align") 0388 REMOVE_GCC_COMPILER_WARNINGS("-Wzero-as-null-pointer-constant") 0389 REMOVE_GCC_COMPILER_WARNINGS("-pedantic") 0390 0391 # Remove deprecated-copy GCC warnings which generate a lots of compilation warnings 0392 DISABLE_GCC_COMPILER_WARNINGS("8.99.99" "-Wno-deprecated-copy") 0393 0394 # Remove inconsistent-missing-override Clang warnings which generate a lots of compilation warnings 0395 DISABLE_CLANG_COMPILER_WARNINGS("7.99.99" "-Wno-inconsistent-missing-override") 0396 0397 if(MINGW) 0398 # Remove ATTRIBUTES GCC flag which generate a lots of compilation warnings with KF${QT_VERSION_MAJOR} frameworks 0399 REMOVE_GCC_COMPILER_WARNINGS("-Wattributes") 0400 endif() 0401 0402 include(MacroSanitizers) 0403 ENABLE_COMPILER_SANITIZERS() 0404 0405 # translations catalog 0406 add_definitions(-DTRANSLATION_DOMAIN=\"digikam\") 0407 0408 # NOTE: with libpgf 6.11.24 OpenMP is not very well supported. We disable 0409 # it to be safe. See B.K.O #273765 for details. 0410 add_definitions(-DLIBPGF_DISABLE_OPENMP) 0411 0412 # For C++17 and later compatibility LCMS2 must not use register keyword. 0413 add_definitions(-DCMS_NO_REGISTER_KEYWORD=1) 0414 0415 # Enable C++ Exceptions support, require by Greycstoration algorithm 0416 # (CImg.h) and PGF codec 0417 kde_enable_exceptions() 0418 0419 # Enforce modern Qt code 0420 add_definitions(-DQT_DEPRECATED_WARNINGS 0421 -DQT_USE_QSTRINGBUILDER 0422 -DQT_NO_CAST_TO_ASCII 0423 -DQT_NO_CAST_FROM_ASCII 0424 -DQT_NO_CAST_FROM_BYTEARRAY 0425 -DQT_NO_URL_CAST_FROM_STRING 0426 -DQT_STRICT_ITERATORS 0427 -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT 0428 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 0429 -DQT_DISABLE_DEPRECATED_BEFORE=0x050E00 0430 -DQT_NO_KEYWORDS 0431 # -DQT_NO_FOREACH 0432 ) 0433 0434 # ========================================================================== 0435 # Includes rules 0436 0437 # Recursively get all directories which contain header files 0438 # NOTE: Do not parse more than expected root directories to prevent broken 0439 # compilation under Windows as include path length is limited in opposite of POSIX systems. 0440 0441 set(DK_INCLUDES_ALL "") 0442 0443 HEADER_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libs DK_LOCAL_INCLUDES_RAW) 0444 0445 # This macro will set all paths which do not contain libjpeg-, QtAVPlayer, and qtmm. 0446 # We will add later the directory we need 0447 0448 foreach(var ${DK_LOCAL_INCLUDES_RAW}) 0449 0450 # Filter internal 3rd party library paths to not share with the rest of codes 0451 0452 string(REGEX MATCH "libjpeg/" _item_libjpeg ${var}) 0453 string(REGEX MATCH "webservices/o2/" _item_libo2 ${var}) 0454 string(REGEX MATCH "extra/dng_sdk" _item_libdng ${var}) 0455 string(REGEX MATCH "extra/md5" _item_libmd5 ${var}) 0456 string(REGEX MATCH "extra/xmp_sdk" _item_libxmp ${var}) 0457 string(REGEX MATCH "pgfutils/libpgf" _item_libpgf ${var}) 0458 string(REGEX MATCH "rawengine/libraw/" _item_libraw ${var}) 0459 string(REGEX MATCH "/QtAVPlayer" _item_qtavplayer ${var}) 0460 string(REGEX MATCH "/qtmm" _item_qtmm ${var}) 0461 0462 if( 0463 _item_libjpeg STREQUAL "" AND 0464 _item_libo2 STREQUAL "" AND 0465 _item_libdng STREQUAL "" AND 0466 _item_libmd5 STREQUAL "" AND 0467 _item_libxmp STREQUAL "" AND 0468 _item_libpgf STREQUAL "" AND 0469 _item_libraw STREQUAL "" AND 0470 _item_qtavplayer STREQUAL "" AND 0471 _item_qtmm STREQUAL "" 0472 ) 0473 0474 list(APPEND DK_LOCAL_INCLUDES ${var}) 0475 0476 endif() 0477 0478 endforeach() 0479 0480 set(DK_LOCAL_INCLUDES ${DK_LOCAL_INCLUDES} 0481 ${CMAKE_CURRENT_SOURCE_DIR}/libs/jpegutils/${DIGIKAM_LIBJPEG_DIR} 0482 ) 0483 0484 # for config headers digikam_version.h digikam_gitversion.h digikam_config.h 0485 # digikam_dbconfig.h digikam_opencv.h digikam_export.h 0486 0487 set(DK_LOCAL_INCLUDES ${DK_LOCAL_INCLUDES} 0488 ${CMAKE_CURRENT_SOURCE_DIR}/app/utils 0489 ${CMAKE_CURRENT_BINARY_DIR}/app/utils 0490 ) 0491 0492 # ========================================================================== 0493 # Common targets parts 0494 0495 add_subdirectory(data) 0496 add_subdirectory(libs) 0497 add_subdirectory(utilities) 0498 add_subdirectory(app) 0499 add_subdirectory(dplugins) 0500 0501 if(ENABLE_SHOWFOTO) 0502 add_subdirectory(showfoto) 0503 endif() 0504 0505 if(BUILD_TESTING) 0506 add_subdirectory(tests) 0507 endif() 0508 0509 endif() 0510 0511 # ============================================================================== 0512 # API documentation generation 0513 0514 include(RulesDoxygen)