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)