Warning, /graphics/gwenview/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required (VERSION 3.16 FATAL_ERROR)
0002 
0003 # KDE Application Version, managed by release script
0004 set (RELEASE_SERVICE_VERSION_MAJOR "24")
0005 set (RELEASE_SERVICE_VERSION_MINOR "04")
0006 set (RELEASE_SERVICE_VERSION_MICRO "70")
0007 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0008 
0009 project(gwenview VERSION ${RELEASE_SERVICE_VERSION})
0010 
0011 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake )
0012 
0013 set (QT_MIN_VERSION "6.6.0")
0014 set (KF_MIN_VERSION "5.240.0")
0015 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
0016 
0017 
0018 find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
0019 
0020 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
0021 
0022 include(KDEInstallDirs)
0023 include(KDECMakeSettings)
0024 include(KDECompilerSettings NO_POLICY_SCOPE)
0025 include(ECMOptionalAddSubdirectory)
0026 include(ECMInstallIcons)
0027 include(ECMSetupVersion)
0028 include(ECMMarkNonGuiExecutable)
0029 include(ECMGenerateHeaders)
0030 include(ECMAddAppIcon)
0031 include(GenerateExportHeader)
0032 include(FeatureSummary)
0033 include(ECMQtDeclareLoggingCategory)
0034 include(ECMDeprecationSettings)
0035 ## Generate header with version number
0036 ecm_setup_version(${RELEASE_SERVICE_VERSION}
0037                   VARIABLE_PREFIX GWENVIEW
0038                   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/lib/gwenview_version.h"
0039 )
0040 
0041 ## CMake options
0042 set(GWENVIEW_SEMANTICINFO_BACKEND_NONE OFF)
0043 set(GWENVIEW_SEMANTICINFO_BACKEND_FAKE OFF)
0044 set(GWENVIEW_SEMANTICINFO_BACKEND_BALOO OFF)
0045 
0046 set(GWENVIEW_SEMANTICINFO_BACKEND "Baloo" CACHE STRING "Semantic info backend for Gwenview (Baloo/Fake/None)")
0047 
0048 # Init GWENVIEW_SEMANTICINFO_BACKEND_* vars
0049 if(GWENVIEW_SEMANTICINFO_BACKEND STREQUAL "None")
0050     set(GWENVIEW_SEMANTICINFO_BACKEND_NONE ON)
0051 elseif(GWENVIEW_SEMANTICINFO_BACKEND STREQUAL "Fake")
0052     set(GWENVIEW_SEMANTICINFO_BACKEND_FAKE ON)
0053 else()
0054     set(GWENVIEW_SEMANTICINFO_BACKEND_BALOO ON)
0055 endif()
0056 
0057 if (APPLE OR NOT UNIX)
0058     set(GWENVIEW_NO_WAYLAND_GESTURES ON)
0059 endif()
0060 
0061 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED Core Widgets Concurrent Svg PrintSupport)
0062 find_package(Qt6DBus ${QT_MIN_VERSION} CONFIG QUIET)
0063 if (QT_MAJOR_VERSION STREQUAL "6")
0064     find_package(Qt6SvgWidgets)
0065     find_package(Qt6OpenGLWidgets)
0066 endif()
0067 
0068 
0069 
0070 if(NOT GWENVIEW_NO_WAYLAND_GESTURES)
0071     find_package(WaylandProtocols REQUIRED)
0072     if (QT_MAJOR_VERSION EQUAL "5")
0073         find_package(QtWaylandScanner REQUIRED)
0074     endif()
0075     find_package(Wayland 1.9 REQUIRED Client)
0076     find_package(Qt6 REQUIRED COMPONENTS WaylandClient)
0077 endif()
0078 
0079 set(HAVE_QTDBUS ${Qt6DBus_FOUND})
0080 
0081 find_package(Phonon4Qt6 4.6.60 NO_MODULE REQUIRED)
0082 include_directories(BEFORE SYSTEM ${PHONON_INCLUDES})
0083 add_definitions(-DPHONON_LIB_SONAME=\"${PHONON_LIB_SONAME}\")
0084 
0085 find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS
0086     KIO
0087     ItemModels
0088     I18n
0089     Parts
0090     WindowSystem
0091     IconThemes
0092     Notifications
0093     GuiAddons
0094     WidgetsAddons
0095 )
0096 find_package(KF6 ${KF_MIN_VERSION} OPTIONAL_COMPONENTS
0097     DocTools
0098     Purpose
0099 )
0100 set(HAVE_PURPOSE ${KF6Purpose_FOUND})
0101 
0102 if(QT_MAJOR_VERSION STREQUAL "6")
0103     set(KActivitiesPackageName PlasmaActivities)
0104 else()
0105     set(KActivitiesPackageName KF5Activities)
0106 endif()
0107 find_package(${KActivitiesPackageName})
0108 set(HAVE_KACTIVITIES ${${KActivitiesPackageName}_FOUND})
0109 
0110 ecm_set_disabled_deprecation_versions(QT 5.14.0 KF 5.99.0
0111     )
0112 
0113 add_definitions(-DQT_NO_FOREACH)
0114 
0115 ## Dependencies
0116 find_package(JPEG)
0117 set_package_properties(JPEG PROPERTIES URL "http://libjpeg.sourceforge.net/" DESCRIPTION "JPEG image manipulation support" TYPE REQUIRED)
0118 
0119 find_package(PNG)
0120 set_package_properties(PNG PROPERTIES URL "http://www.libpng.org" DESCRIPTION "PNG image manipulation support" TYPE REQUIRED)
0121 
0122 find_package(LibExiv2)
0123 set_package_properties(LibExiv2 PROPERTIES URL "https://www.exiv2.org" DESCRIPTION "image metadata support" TYPE REQUIRED)
0124 
0125 find_package(CFitsio)
0126 set_package_properties(CFitsio PROPERTIES URL "https://heasarc.gsfc.nasa.gov/fitsio/fitsio.html" DESCRIPTION "FITS format support" TYPE OPTIONAL)
0127 if(CFITSIO_FOUND)
0128     set(HAVE_FITS true)
0129 endif()
0130 
0131 find_package(TIFF)
0132 set_package_properties(TIFF PROPERTIES DESCRIPTION "Library for reading TIFF files"
0133                        URL "http://www.libtiff.org/"
0134                        TYPE OPTIONAL
0135                        PURPOSE "Disable uninteresting log messages from libtiff by default"
0136                        )
0137 if (TIFF_FOUND)
0138     set(HAVE_TIFF true)
0139 endif()
0140 
0141 find_package(LCMS2)
0142 set_package_properties(LCMS2 PROPERTIES URL "http://www.littlecms.com" DESCRIPTION "Color management engine" TYPE REQUIRED)
0143 
0144 if (GWENVIEW_SEMANTICINFO_BACKEND_BALOO)
0145     find_package(KF6Baloo 5.1.90)
0146     set_package_properties(KF6Baloo PROPERTIES URL "https://commits.kde.org/baloo" DESCRIPTION "Desktop-wide semantic information support" TYPE OPTIONAL)
0147     if (NOT KF6Baloo_FOUND)
0148         message (STATUS "You have selected Baloo for semantic backend, but required version was not found. Overriding the backend to None")
0149         unset(GWENVIEW_SEMANTICINFO_BACKEND_BALOO)
0150         set(GWENVIEW_SEMANTICINFO_BACKEND_NONE ON)
0151     endif ()
0152 endif ()
0153 
0154 if(QT_MAJOR_VERSION STREQUAL "6")
0155     set(KDcrawPackageName KDcrawQt6)
0156 else()
0157     set(KDcrawPackageName KF5KDcraw)
0158 endif()
0159 find_package(${KDcrawPackageName})
0160 if (${KDcrawPackageName}_FOUND)
0161    add_definitions(-DKDCRAW_FOUND)
0162 endif()
0163 set_package_properties(${KDcrawPackageName} PROPERTIES
0164     URL "https://commits.kde.org/libkdcraw"
0165     DESCRIPTION "C++ interface around LibRaw library used to decode RAW picture files"
0166     TYPE OPTIONAL
0167 )
0168 
0169 option(WITHOUT_X11 "Build without X11 integration (disables finding X11)" OFF)
0170 if(NOT WITHOUT_X11)
0171     find_package(X11)
0172     if(X11_FOUND)
0173         if (QT_MAJOR_VERSION STREQUAL "5")
0174             find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED X11Extras)
0175         endif()
0176         # we need to add qt6 lib when we found x11
0177         set(HAVE_X11 TRUE)
0178     endif()
0179 endif()
0180 
0181 if (QT_MAJOR_VERSION STREQUAL "5")
0182     find_package(kImageAnnotator)
0183     set_package_properties(kImageAnnotator PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED)
0184     if(kImageAnnotator_FOUND)
0185         set(KIMAGEANNOTATOR_FOUND 1)
0186         find_package(kColorPicker REQUIRED)
0187         if(NOT kImageAnnotator_VERSION VERSION_LESS 0.5.0)
0188             set(KIMAGEANNOTATOR_CAN_LOAD_TRANSLATIONS 1)
0189         endif()
0190     endif()
0191 endif()
0192 
0193 configure_file(config-gwenview.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-gwenview.h)
0194 include_directories(${CMAKE_CURRENT_BINARY_DIR})
0195 
0196 add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
0197 
0198 function(JoinListAsString VALUES GLUE OUTPUT)
0199     string(REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}")
0200     set(${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
0201 endfunction()
0202 
0203 set(CMAKE_CXX_STANDARD 14)
0204 set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
0205 
0206 set(IMAGE_MIME_TYPES_LIST
0207     image/avif
0208     image/gif
0209     image/heif
0210     image/jpeg
0211     image/jxl
0212     image/png
0213     image/bmp
0214     image/x-eps
0215     image/x-icns
0216     image/x-ico
0217     image/x-portable-bitmap
0218     image/x-portable-graymap
0219     image/x-portable-pixmap
0220     image/x-xbitmap
0221     image/x-xpixmap
0222     image/tiff
0223     image/x-psd
0224     image/x-webp
0225     image/webp
0226     image/x-tga
0227     image/x-xcf
0228     application/x-krita
0229 )
0230 if (KF6KDcraw_FOUND)
0231     list(APPEND IMAGE_MIME_TYPES_LIST
0232         image/x-kde-raw
0233         image/x-canon-cr2
0234         image/x-canon-crw
0235         image/x-kodak-dcr
0236         image/x-adobe-dng
0237         image/x-kodak-k25
0238         image/x-kodak-kdc
0239         image/x-minolta-mrw
0240         image/x-nikon-nef
0241         image/x-olympus-orf
0242         image/x-pentax-pef
0243         image/x-fuji-raf
0244         image/x-panasonic-rw
0245         image/x-sony-sr2
0246         image/x-sony-srf
0247         image/x-sigma-x3f
0248         image/x-sony-arw
0249         image/x-panasonic-rw2
0250     )
0251 endif()
0252 JoinListAsString("${IMAGE_MIME_TYPES_LIST}" ";" IMAGE_MIME_TYPES)
0253 
0254 ## dirs to build
0255 add_subdirectory(lib)
0256 add_subdirectory(app)
0257 add_subdirectory(importer)
0258 add_subdirectory(part)
0259 add_subdirectory(tests)
0260 add_subdirectory(icons)
0261 add_subdirectory(images)
0262 add_subdirectory(cursors)
0263 add_subdirectory(color-schemes)
0264 add_subdirectory(doc)
0265 ecm_qt_install_logging_categories(EXPORT GWENVIEW FILE gwenview.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
0266 
0267 ki18n_install(po)
0268 if(KF6DocTools_FOUND)
0269     kdoctools_install(po)
0270 endif()
0271 
0272 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0273 
0274 include(KDEClangFormat)
0275 # add clang-format target
0276 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
0277 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0278 
0279 include(KDEGitCommitHooks)
0280 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)