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)