Warning, /graphics/digikam/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 #
0002 # SPDX-FileCopyrightText: 2010-2024, Gilles Caulier, <caulier dot gilles at gmail dot com>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005 #
0006
0007 set(CMAKE_MIN_VERSION "3.16")
0008
0009 cmake_minimum_required(VERSION ${CMAKE_MIN_VERSION})
0010
0011 message(STATUS "CMake version: ${CMAKE_VERSION}")
0012
0013 # ==============================================================================
0014 # Information to update before to release this package.
0015
0016 # digiKam version
0017 set(DIGIKAM_MAJOR_VERSION "8")
0018 set(DIGIKAM_MINOR_VERSION "3")
0019 set(DIGIKAM_PATCH_VERSION "0")
0020
0021 # Suffix to add at end of version string. Usual values are:
0022 # "-git" : alpha code unstable from git. Do not use in production
0023 # "-beta1" : beta1 release.
0024 # "-beta2" : beta2 release.
0025 # "-beta3" : beta3 release.
0026 # "-rc" : release candidate.
0027 # "" : final release. Can be used in production.
0028 set(DIGIKAM_SUFFIX_VERSION "")
0029
0030 # ==============================================================================
0031 # Set env. variables accordingly.
0032
0033 # NOTE: This string is used to set libdigikamcore and libdigikamdatabase SO version ID
0034 set(DIGIKAM_VERSION_SHORT
0035 "${DIGIKAM_MAJOR_VERSION}.${DIGIKAM_MINOR_VERSION}.${DIGIKAM_PATCH_VERSION}"
0036 )
0037
0038 set(DIGIKAM_VERSION_STRING
0039 "${DIGIKAM_VERSION_SHORT}${DIGIKAM_SUFFIX_VERSION}"
0040 )
0041
0042 # Core Database XML version
0043 # We must set this variable here at top level because it is used in both
0044 # libs/database/core and data/database
0045 # Version history:
0046 # 1 : Original database XML file, published in production.
0047 # 2 : 08-08-2014 : Fix Images.names field size (see bug #327646).
0048 # 3 : 05/11/2015 : Add Face DB schema.
0049 set(DBCORECONFIG_XML_VERSION "3")
0050
0051 # ==============================================================================
0052
0053 project(digikam
0054 VERSION ${DIGIKAM_VERSION_SHORT}
0055 LANGUAGES CXX C)
0056
0057 # Settings from ECM
0058 set(CMAKE_CXX_STANDARD 17)
0059 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0060 set(CMAKE_CXX_EXTENSIONS OFF)
0061
0062 message(STATUS "----------------------------------------------------------------------------------")
0063 message(STATUS "Starting CMake configuration for ${PROJECT_NAME}")
0064 message(STATUS "")
0065 message(STATUS "Target Build Type: ${CMAKE_BUILD_TYPE}")
0066
0067 # Extra check to detect Qt core with minimal version before to continue.
0068
0069 set(QT5_MIN_VERSION "5.14.0")
0070 set(QT6_MIN_VERSION "6.5.0")
0071 set(CMAKE_MODULE_PATH
0072 ${CMAKE_SOURCE_DIR}/core/cmake/modules
0073 ${CMAKE_SOURCE_DIR}/core/cmake/macros
0074 ${CMAKE_SOURCE_DIR}/core/cmake/rules
0075 )
0076
0077 # Must be done before ECM checks.
0078
0079 include(RulesFindQtCore)
0080
0081 if(Qt6_FOUND)
0082 set(ECM_MIN_VERSION "5.240.0")
0083 else()
0084 set(ECM_MIN_VERSION "5.55.0")
0085 endif()
0086
0087 ### ECM setup #########################################################################################################
0088
0089 find_package(ECM ${ECM_MIN_VERSION} CONFIG REQUIRED)
0090 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
0091 ${ECM_MODULE_PATH}
0092 )
0093
0094 # KDE Framework macros
0095 include(KDEInstallDirs)
0096 include(KDECMakeSettings)
0097 include(KDECompilerSettings NO_POLICY_SCOPE)
0098 remove_definitions(-DQT_NO_FOREACH)
0099
0100 # ECM macros
0101 include(ECMSetupVersion)
0102 include(ECMOptionalAddSubdirectory)
0103 include(ECMMarkNonGuiExecutable)
0104 include(ECMGenerateHeaders)
0105 include(ECMGeneratePriFile)
0106 include(ECMInstallIcons)
0107 include(ECMAddAppIcon)
0108 include(ECMPoQmTools)
0109 include(ECMAddTests)
0110 include(ECMMarkAsTest)
0111
0112 # Cmake macros
0113 include(CMakePackageConfigHelpers)
0114 include(GenerateExportHeader)
0115 include(CheckFunctionExists)
0116 include(FeatureSummary)
0117
0118 # Local macros
0119 include(MacroUtils)
0120 include(MacroCompiler)
0121 include(MacroOpenCV)
0122 include(MacroJPEG)
0123 include(MacroBoolTo01)
0124
0125 #######################################################################################################################
0126
0127 APPLY_COMMON_POLICIES()
0128
0129 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
0130 set(CMAKE_AUTOMOC ON)
0131 #set(CMAKE_AUTOUIC ON)
0132 #set(CMAKE_AUTORCC ON)
0133
0134 if(MSVC)
0135 set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
0136 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-")
0137 endif()
0138
0139 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
0140 set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER "Generated")
0141
0142 ### COMPILATION OPTIONS MANAGEMENT ####################################################################################
0143
0144 option(DIGIKAMSC_COMPILE_PO "Build translations files (default=ON)" ON)
0145 option(DIGIKAMSC_COMPILE_DIGIKAM "Build digiKam core (default=ON)" ON)
0146
0147 #######################################################################################################################
0148
0149 if(DIGIKAMSC_COMPILE_PO AND NOT MSVC)
0150 set_property(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS 1)
0151 endif()
0152
0153 if(BUILD_TESTING)
0154 include(CTest)
0155 endif()
0156
0157 ######################################################################################################################
0158
0159 message(STATUS "----------------------------------------------------------------------------------")
0160 message(STATUS "Top level compilation configuration for ${PROJECT_NAME}")
0161 message(STATUS "")
0162
0163 if(DIGIKAMSC_COMPILE_DIGIKAM)
0164 if(NOT EXISTS ${CMAKE_SOURCE_DIR}/core)
0165 message(STATUS "${PROJECT_NAME} will be compiled....................... NO (source code not available)")
0166 set (DIGIKAMSC_COMPILE_DIGIKAM OFF)
0167 else()
0168 message(STATUS "${PROJECT_NAME} will be compiled....................... YES")
0169 endif()
0170 else()
0171 message(STATUS "${PROJECT_NAME} will be compiled....................... NO")
0172 endif()
0173
0174 if(DIGIKAMSC_COMPILE_PO)
0175 message(STATUS "Translations will be compiled.................. YES")
0176 else()
0177 message(STATUS "Translations will be compiled.................. NO")
0178 endif()
0179
0180 if(BUILD_TESTING)
0181 message(STATUS "Tests code will be compiled.................... YES")
0182 else()
0183 message(STATUS "Tests code will be compiled.................... NO")
0184 endif()
0185
0186 ######################################################################################################################
0187
0188 if(DIGIKAMSC_COMPILE_DIGIKAM)
0189 add_subdirectory(core)
0190 endif()
0191
0192 if(DIGIKAMSC_COMPILE_PO)
0193 find_package(Gettext REQUIRED)
0194 find_package(KF${QT_VERSION_MAJOR}I18n NO_MODULE)
0195 ki18n_install(po)
0196 endif()
0197
0198 if(BUILD_TESTING)
0199
0200 # Some unit tests require data from the external "Digikam Test Data" git repository.
0201 # https://invent.kde.org/graphics/digikam-test-data
0202 #
0203 # Developers may choose to obtain the data using the "download-repos" script prior to running cmake.
0204 # For CI runners to run tests, the following custom target serves to perform the download automatically.
0205 # If the directory "test-data" has already been created, the target becomes a "no-op".
0206 #
0207 add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/test-data
0208 COMMENT "Checkout unit-test data repository. Please wait..."
0209 COMMAND git
0210 ARGS clone https://invent.kde.org/graphics/digikam-test-data.git ${CMAKE_SOURCE_DIR}/test-data)
0211 add_custom_target(test-data ALL DEPENDS ${CMAKE_SOURCE_DIR}/test-data)
0212
0213 endif()