Warning, /office/alkimia/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # The CMake version we require (must be first)
0002 cmake_minimum_required(VERSION 3.16.0)
0003 if(POLICY CMP0071)
0004 cmake_policy(SET CMP0071 NEW)
0005 endif()
0006
0007 project(alkimia VERSION 8.1.72)
0008
0009 find_package(ECM 0.0.11 REQUIRED NO_MODULE)
0010 list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH})
0011
0012 # adds option BUILD_WITH_QT6
0013 include(QtVersionOption OPTIONAL)
0014
0015 option(BUILD_QT4 "Build for Qt4" OFF)
0016 option(BUILD_TOOLS "Build tools" ON)
0017 option(BUILD_WITH_QTNETWORK "Build with Qt Network library for downloading" WIN32)
0018 option(BUILD_WITH_WEBKIT "Build with Qt Web Kit library" OFF)
0019 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
0020 option(ENABLE_CLIENT_PACKAGE_TEST "enable test for building a client package" OFF)
0021
0022 # No Plasma on Windows, so no applets
0023 include(CMakeDependentOption)
0024 cmake_dependent_option(BUILD_APPLETS "Build plasma applets" ON "NOT WIN32" OFF)
0025
0026 if(WIN32)
0027 set(ENABLE_FINANCEQUOTE_DEFAULT 0)
0028 else()
0029 set(ENABLE_FINANCEQUOTE_DEFAULT 1)
0030 endif()
0031 option(ENABLE_FINANCEQUOTE "Enable finance quote support (requires perl)" ENABLE_FINANCEQUOTE_DEFAULT)
0032 if(ENABLE_FINANCEQUOTE)
0033 add_definitions(-DENABLE_FINANCEQUOTE)
0034 set(PACKAGE_COMPILE_OPTIONS "-DHAVE_ALK_FINANCEQUOTE")
0035 endif()
0036
0037 if(BUILD_QT4)
0038 set(QT_MAJOR_VERSION 4)
0039 endif()
0040
0041 include(ECMAddAppIcon)
0042 include(ECMInstallIcons)
0043 include(KDEInstallDirs)
0044
0045 # provides option BUILD_TESTING
0046 include(KDECMakeSettings)
0047
0048 include(KDECompilerSettings NO_POLICY_SCOPE)
0049 include(FeatureSummary)
0050
0051 include(Macros)
0052
0053 # check for PkgConfig, Qt and MPIR/GMP
0054 find_package(PkgConfig)
0055 if(QT_MAJOR_VERSION EQUAL 4)
0056 set(QT_MAJOR_VERSION 4)
0057 set(QT_USE_LIBSPREFIX Qt${QT_MAJOR_VERSION}::)
0058 set(ALKIMIA_LIB_SUFFIX "")
0059 set(ALKIMIA_PATH_SUFFIX)
0060 set(PC_TARGET_QTPREFIX Qt)
0061 set(PC_TARGET_SUFFIX)
0062
0063 # select browser engine
0064 if(BUILD_WITH_WEBKIT)
0065 add_definitions(-DBUILD_WITH_WEBKIT)
0066 set(QT_BROWSER_COMPONENT WebKit)
0067 set(QT_BROWSER_LIB ${QT_USE_LIBSPREFIX}WebKit)
0068 feature_notes(TRUE TRUE TRUE TRUE)
0069 else()
0070 feature_notes(FALSE TRUE FALSE FALSE)
0071 endif()
0072
0073 # select network module
0074 if(BUILD_WITH_QTNETWORK)
0075 add_definitions(-DBUILD_WITH_QTNETWORK)
0076 set(QT_NETWORK_COMPONENT Network)
0077 set(KF_NETWORK_COMPONENT)
0078 set(QT_NETWORK_LIB ${QT_USE_LIBSPREFIX}Network)
0079 else()
0080 set(QT_NETWORK_COMPONENT)
0081 set(KF_NETWORK_COMPONENT KIO)
0082 set(KF_NETWORK_LIB KF${QT_MAJOR_VERSION}::${KF_NETWORK_COMPONENT})
0083 endif()
0084
0085 # select qml engine
0086 set(QT_QML_COMPONENT Declarative)
0087 set(QT_QML_LIB ${QT_USE_LIBSPREFIX}${QT_QML_COMPONENT})
0088
0089 # setup Qt components
0090 set(QT_PRIVATE_COMPONENTS Core Gui DBus ${QT_NETWORK_COMPONENT} Test ${QT_BROWSER_COMPONENT} ${QT_QML_COMPONENT})
0091 set(QT_PUBLIC_COMPONENTS)
0092 find_package(Qt${QT_MAJOR_VERSION} COMPONENTS ${QT_PRIVATE_COMPONENTS} ${QT_PUBLIC_COMPONENTS})
0093
0094 # setup KDE Frameworks components
0095 find_package(KF${QT_MAJOR_VERSION} REQUIRED)
0096 set(KF_NEWSTUFF_LIB KF${QT_MAJOR_VERSION}::NewStuff)
0097 set(QML_INSTALL_DIR ${LIB_INSTALL_DIR}/qt4/plugins/imports)
0098
0099 # install custom cmake files
0100 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/LibAlkimia${ALKIMIA_PATH_SUFFIX}-${alkimia_VERSION_MAJOR}.${alkimia_VERSION_MINOR}")
0101 install(
0102 FILES ${QT4_INSTALL_CMAKECONFIG_FILES} ${KF4_INSTALL_CMAKECONFIG_FILES}
0103 DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0104 COMPONENT Devel
0105 )
0106 else()
0107 if (NOT QT_MAJOR_VERSION)
0108 set(QT_MAJOR_VERSION 5)
0109 endif()
0110 if (${QT_MAJOR_VERSION} EQUAL 5)
0111 set(QT_MIN_VERSION 5.12.2)
0112 set(KF_MIN_VERSION 5.76)
0113 endif()
0114 set(QT_USE_LIBSPREFIX Qt${QT_MAJOR_VERSION}::)
0115 set(ALKIMIA_LIB_SUFFIX "${QT_MAJOR_VERSION}")
0116 set(ALKIMIA_PATH_SUFFIX ${QT_MAJOR_VERSION})
0117 set(PC_TARGET_QTPREFIX Qt${QT_MAJOR_VERSION})
0118 set(PC_TARGET_SUFFIX ${QT_MAJOR_VERSION})
0119
0120 # select browser engine
0121 find_package(Qt${QT_MAJOR_VERSION}WebEngineWidgets ${QT_MIN_VERSION})
0122
0123 option(BUILD_WITH_WEBENGINE "Build with Qt Web Engine (experimental)" ${Qt${QT_MAJOR_VERSION}WebEngineWidgets_FOUND})
0124 if (BUILD_WITH_WEBENGINE)
0125 add_definitions(-DBUILD_WITH_WEBENGINE)
0126 set(QT_BROWSER_COMPONENT WebEngineWidgets)
0127 feature_notes(FALSE TRUE FALSE FALSE)
0128 elseif(BUILD_WITH_WEBKIT)
0129 add_definitions(-DBUILD_WITH_WEBKIT)
0130 set(QT_BROWSER_COMPONENT WebKitWidgets)
0131 feature_notes(TRUE TRUE TRUE TRUE)
0132 else()
0133 set(QT_BROWSER_COMPONENT Widgets)
0134 feature_notes(FALSE TRUE FALSE FALSE)
0135 endif()
0136 set(QT_BROWSER_LIB ${QT_USE_LIBSPREFIX}${QT_BROWSER_COMPONENT})
0137
0138 # select network module
0139 if(BUILD_WITH_QTNETWORK)
0140 add_definitions(-DBUILD_WITH_QTNETWORK)
0141 set(QT_NETWORK_COMPONENT Network)
0142 set(KF_NETWORK_COMPONENT)
0143 set(QT_NETWORK_LIB ${QT_USE_LIBSPREFIX}${QT_NETWORK_COMPONENT})
0144 set(KF_NETWORK_LIB)
0145 else()
0146 set(QT_NETWORK_COMPONENT)
0147 set(KF_NETWORK_COMPONENT KIO)
0148 set(QT_NETWORK_LIB)
0149 set(KF_NETWORK_LIB KF${QT_MAJOR_VERSION}::KIOCore KF${QT_MAJOR_VERSION}::KIOWidgets)
0150 endif()
0151 set(QT_QML_COMPONENT Qml)
0152 set(QT_QML_LIB ${QT_USE_LIBSPREFIX}${QT_QML_COMPONENT})
0153
0154 # setup Qt components
0155 set(QT_PRIVATE_COMPONENTS Core DBus ${QT_NETWORK_COMPONENT} Test ${QT_QML_COMPONENT})
0156 set(QT_PUBLIC_COMPONENTS ${QT_BROWSER_COMPONENT})
0157 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED COMPONENTS ${QT_PRIVATE_COMPONENTS} ${QT_PUBLIC_COMPONENTS})
0158
0159 # setup KDE Frameworks components
0160 if(BUILD_APPLETS)
0161 set(PLASMA_COMPONENT Package Plasma)
0162 endif()
0163 if(QT_MAJOR_VERSION GREATER_EQUAL 6)
0164 set(KF_NEWSTUFF_COMPONENT NewStuffWidgets NewStuff)
0165 else()
0166 set(KF_NEWSTUFF_COMPONENT NewStuff)
0167 endif()
0168 set(KF_NEWSTUFF_LIB KF${QT_MAJOR_VERSION}::${KF_NEWSTUFF_COMPONENT})
0169
0170 set(KF_PUBLIC_COMPONENTS Config)
0171 set(KF_PRIVATE_COMPONENTS
0172 CoreAddons
0173 Completion
0174 I18n
0175 ${KF_NETWORK_COMPONENT}
0176 ${KF_NEWSTUFF_COMPONENT}
0177 IconThemes
0178 ${PLASMA_COMPONENT}
0179 TextWidgets
0180 XmlGui
0181 )
0182 find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS ${KF_PRIVATE_COMPONENTS} ${KF_PUBLIC_COMPONENTS})
0183
0184 macro(ecm_add_executable)
0185 add_executable(${ARGN})
0186 endmacro(ecm_add_executable)
0187
0188 if(CMAKE_COMPILER_IS_GNUCC)
0189 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
0190 endif()
0191
0192 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/LibAlkimia${ALKIMIA_PATH_SUFFIX}-${alkimia_VERSION_MAJOR}.${alkimia_VERSION_MINOR}")
0193
0194 add_definitions(
0195 -DKF_DEPRECATED_WARNINGS_SINCE=0x60000
0196 -DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x56200C
0197 -DQT_DEPRECATED_WARNINGS_SINCE=0x60000
0198 -DQT_DISABLE_DEPRECATED_BEFORE=0x50f02
0199 -DQT_NO_KEYWORDS
0200 )
0201 endif()
0202
0203 # setup common variables
0204 set(ALKIMIA_INCLUDE_SUFFIX "Qt${QT_MAJOR_VERSION}")
0205
0206 # setup components for use in cmake support files
0207 set(CMAKECONFIG_QT_COMPONENTS ${QT_PUBLIC_COMPONENTS})
0208 set(CMAKECONFIG_KF_COMPONENTS ${KF_PUBLIC_COMPONENTS})
0209
0210 # static builds need also private components
0211 if(NOT BUILD_SHARED_LIBS)
0212 list(APPEND CMAKECONFIG_QT_COMPONENTS ${QT_PRIVATE_COMPONENTS})
0213 list(APPEND CMAKECONFIG_KF_COMPONENTS ${KF_PRIVATE_COMPONENTS})
0214 endif()
0215
0216 if(NOT SHARE_INSTALL_DIR)
0217 set(SHARE_INSTALL_DIR ${DATA_INSTALL_DIR})
0218 endif()
0219
0220 set(TARGET_SUFFIX ${PC_TARGET_SUFFIX})
0221
0222 find_package(Git QUIET)
0223 set(BUILD_KEY "${PROJECT_VERSION}")
0224 if(Git_FOUND)
0225 set(GITCOMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR})
0226 execute_process(
0227 COMMAND ${GITCOMMAND} rev-parse --short HEAD
0228 OUTPUT_VARIABLE COMMIT_ID
0229 ERROR_VARIABLE ERROR
0230 RESULT_VARIABLE RESULT
0231 )
0232 if(NOT RESULT AND COMMIT_ID)
0233 string(STRIP ${COMMIT_ID} COMMIT_ID)
0234 message(STATUS "Using git commit id '${COMMIT_ID}'")
0235 string(APPEND BUILD_KEY "-${COMMIT_ID}")
0236 endif()
0237 endif()
0238 if(BUILD_WITH_WEBKIT)
0239 string(APPEND BUILD_KEY "-webkit")
0240 elseif(BUILD_WITH_WEBENGINE)
0241 string(APPEND BUILD_KEY "-webengine")
0242 endif()
0243 if(BUILD_WITH_QTNETWORK)
0244 string(APPEND BUILD_KEY "-qtnetwork")
0245 else()
0246 string(APPEND BUILD_KEY "-kionetwork")
0247 endif()
0248 if(ENABLE_FINANCEQUOTE)
0249 string(APPEND BUILD_KEY "-financequote")
0250 endif()
0251
0252 add_definitions(
0253 -DTARGET_SUFFIX=\"${TARGET_SUFFIX}\"
0254 -DKNSRC_DIR="${CMAKE_SOURCE_DIR}/src"
0255 -DBUILD_KEY="${BUILD_KEY}"
0256 )
0257
0258 # figure out which multi-precision library to use
0259 # MPIR is preferred over GMP
0260 find_package(MPIR)
0261 if(MPIR_FOUND)
0262 set(MP_INCLUDE_DIR ${MPIR_INCLUDE_DIR})
0263 set(MP_LIBRARIES ${MPIR_LIBRARIES})
0264 set(MP_HEADER mpirxx.h)
0265 set(MP_CMAKE_MODULE "MPIR")
0266 set(PC_LIB mpir)
0267 else()
0268 find_package(GMP REQUIRED)
0269 set(MP_INCLUDE_DIR ${GMP_INCLUDE_DIR})
0270 set(MP_LIBRARIES ${GMP_LIBRARIES})
0271 set(MP_HEADER gmpxx.h)
0272 set(MP_CMAKE_MODULE "GMP")
0273 set(PC_LIB gmp)
0274 endif()
0275
0276 include_directories(${MP_INCLUDE_DIR})
0277
0278 # check for Doxygen (for API documentation)
0279 find_package(Doxygen)
0280 if(DOXYGEN_FOUND)
0281 set(APIDOC_DIR ${CMAKE_CURRENT_BINARY_DIR}/apidocs)
0282
0283 make_directory("${APIDOC_DIR}")
0284 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/alkimia.doxygen.in ${CMAKE_CURRENT_BINARY_DIR}/alkimia.doxygen IMMEDIATE)
0285
0286 add_custom_target(apidoc "${DOXYGEN}" "${CMAKE_CURRENT_BINARY_DIR}/alkimia.doxygen")
0287 endif(DOXYGEN_FOUND)
0288
0289 feature_summary(WHAT ALL)
0290
0291 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
0292 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
0293 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
0294
0295 add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
0296
0297 include_directories(
0298 ${CMAKE_SOURCE_DIR}/src
0299 ${CMAKE_BINARY_DIR}/src
0300 )
0301
0302 add_subdirectory(src)
0303 add_subdirectory(qml)
0304
0305 if(BUILD_APPLETS)
0306 add_subdirectory(plasma/applets)
0307 endif()
0308
0309 if (BUILD_TESTING)
0310 add_subdirectory(autotests)
0311 add_subdirectory(tests)
0312 endif()
0313
0314 if (BUILD_TOOLS)
0315 add_subdirectory(tools)
0316 endif()
0317
0318 ki18n_install(po)