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)