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.2) 0008 0009 option(BUILD_QT4 "Build for Qt4" OFF) 0010 option(BUILD_DOXYGEN_DOCS "Build api docs" ON) 0011 option(BUILD_TOOLS "Build tools" ON) 0012 option(BUILD_WITH_QTNETWORK "Build with Qt Network library for downloading" WIN32) 0013 option(BUILD_WITH_WEBKIT "Build with Qt Web Kit library" OFF) 0014 option(BUILD_SHARED_LIBS "Build shared libraries" ON) 0015 option(ENABLE_CLIENT_PACKAGE_TEST "enable test for building a client package" OFF) 0016 0017 # No Plasma on Windows, so no applets 0018 include(CMakeDependentOption) 0019 cmake_dependent_option(BUILD_APPLETS "Build plasma applets" ON "NOT WIN32" OFF) 0020 0021 if(WIN32) 0022 set(ENABLE_FINANCEQUOTE_DEFAULT 0) 0023 else() 0024 set(ENABLE_FINANCEQUOTE_DEFAULT 1) 0025 endif() 0026 option(ENABLE_FINANCEQUOTE "Enable finance quote support (requires perl)" ENABLE_FINANCEQUOTE_DEFAULT) 0027 if(ENABLE_FINANCEQUOTE) 0028 add_definitions(-DENABLE_FINANCEQUOTE) 0029 set(PACKAGE_COMPILE_OPTIONS "-DHAVE_ALK_FINANCEQUOTE") 0030 endif() 0031 0032 find_package(ECM 0.0.11 REQUIRED NO_MODULE) 0033 0034 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) 0035 include(Macros) 0036 0037 include(ECMAddAppIcon) 0038 include(ECMInstallIcons) 0039 include(KDEInstallDirs) 0040 # disable KDE provided appstreamtest which does not have required DESTDIR support 0041 set(KDE_SKIP_TEST_SETTINGS TRUE) 0042 if(NOT BUILD_QT4) 0043 option(BUILD_TESTING "Build the testing tree." ON) 0044 if(BUILD_TESTING) 0045 enable_testing() 0046 endif() 0047 endif() 0048 include(KDECMakeSettings) 0049 include(KDECompilerSettings NO_POLICY_SCOPE) 0050 include(FeatureSummary) 0051 0052 # check for PkgConfig, Qt and MPIR/GMP 0053 find_package(PkgConfig) 0054 if(BUILD_QT4) 0055 set(QT_USE_LIBSPREFIX Qt4::Qt) 0056 set(ALKIMIA_LIB_SUFFIX "") 0057 set(ALKIMIA_INCLUDE_SUFFIX "Qt4") 0058 set(ALKIMIA_PATH_SUFFIX) 0059 set(PC_TARGET_QTPREFIX Qt) 0060 set(PC_TARGET_SUFFIX) 0061 0062 if(BUILD_WITH_WEBKIT) 0063 add_definitions(-DBUILD_WITH_WEBKIT) 0064 set(QT_BROWSER_COMPONENT QtWebKit) 0065 set(QT_BROWSER_LIB ${QT_USE_LIBSPREFIX}WebKit) 0066 feature_notes(TRUE TRUE TRUE TRUE) 0067 else() 0068 feature_notes(FALSE TRUE FALSE FALSE) 0069 endif() 0070 0071 if(BUILD_WITH_QTNETWORK) 0072 add_definitions(-DBUILD_WITH_QTNETWORK) 0073 set(QT_NETWORK_COMPONENT QtNetwork) 0074 set(QT_NETWORK_LIB ${QT_USE_LIBSPREFIX}Network) 0075 else() 0076 set(QT_NETWORK_COMPONENT) 0077 endif() 0078 0079 find_package(Qt4 REQUIRED COMPONENTS QtCore QtGui QtDBus ${QT_NETWORK_COMPONENT} QtTest ${QT_BROWSER_COMPONENT} QtDeclarative) 0080 set(_kde4_uninstall_rule_created 1) 0081 find_package(KDE4 REQUIRED) 0082 if(NOT BUILD_WITH_QTNETWORK) 0083 set(KDE_NETWORK_LIBS ${KDE4_KIO_LIBS}) 0084 endif() 0085 include(KDE4Defaults) 0086 include_directories(${KDE4_INCLUDES}) 0087 macro(ki18n_wrap_ui) 0088 kde4_add_ui_files(${ARGN}) 0089 endmacro(ki18n_wrap_ui) 0090 macro(kconfig_add_kcfg_files) 0091 kde4_add_kcfg_files(${ARGN}) 0092 endmacro(kconfig_add_kcfg_files) 0093 macro(ecm_add_executable) 0094 kde4_add_executable(${ARGN}) 0095 endmacro(ecm_add_executable) 0096 0097 macro(ecm_mark_nongui_executable) 0098 foreach(_target ${ARGN}) 0099 set_target_properties(${_target} 0100 PROPERTIES 0101 WIN32_EXECUTABLE FALSE 0102 MACOSX_BUNDLE FALSE 0103 ) 0104 endforeach() 0105 endmacro(ecm_mark_nongui_executable) 0106 0107 macro(ecm_install_icons) 0108 kde4_install_icons(${ICON_INSTALL_DIR}) 0109 endmacro() 0110 0111 add_definitions(-DQStringLiteral=QLatin1String) 0112 if(NOT SHARE_INSTALL_DIR) 0113 set(SHARE_INSTALL_DIR ${DATA_INSTALL_DIR}) 0114 endif() 0115 else() 0116 set(QT_USE_LIBSPREFIX Qt5::) 0117 set(ALKIMIA_LIB_SUFFIX "5") 0118 set(ALKIMIA_INCLUDE_SUFFIX "Qt5") 0119 set(ALKIMIA_PATH_SUFFIX 5) 0120 set(PC_TARGET_QTPREFIX Qt5) 0121 set(PC_TARGET_SUFFIX 5) 0122 0123 find_package(Qt5WebEngineWidgets 5.9.3) 0124 0125 option(BUILD_WITH_WEBENGINE "Build with Qt Web Engine (experimental)" ${Qt5WebEngineWidgets_FOUND}) 0126 if (BUILD_WITH_WEBENGINE) 0127 add_definitions(-DBUILD_WITH_WEBENGINE) 0128 set(QT_BROWSER_COMPONENT WebEngineWidgets) 0129 feature_notes(FALSE TRUE FALSE FALSE) 0130 elseif(BUILD_WITH_WEBKIT) 0131 add_definitions(-DBUILD_WITH_WEBKIT) 0132 set(QT_BROWSER_COMPONENT WebKitWidgets) 0133 feature_notes(TRUE TRUE TRUE TRUE) 0134 else() 0135 set(QT_BROWSER_COMPONENT Widgets) 0136 feature_notes(FALSE TRUE FALSE FALSE) 0137 endif() 0138 set(QT_BROWSER_LIB ${QT_USE_LIBSPREFIX}${QT_BROWSER_COMPONENT}) 0139 if(BUILD_WITH_QTNETWORK) 0140 add_definitions(-DBUILD_WITH_QTNETWORK) 0141 set(QT_NETWORK_COMPONENT Network) 0142 set(KDE_NETWORK_COMPONENT) 0143 set(KDE_NETWORK_LIBS) 0144 else() 0145 set(QT_NETWORK_COMPONENT) 0146 set(KDE_NETWORK_COMPONENT KIO) 0147 set(KDE_NETWORK_LIBS KF5::KIOCore KF5::KIOWidgets) 0148 endif() 0149 set(QT_NETWORK_LIB ${QT_USE_LIBSPREFIX}${QT_NETWORK_COMPONENT}) 0150 0151 find_package(Qt5 REQUIRED COMPONENTS 0152 Core 0153 ${QT_NETWORK_COMPONENT} 0154 Test 0155 ${QT_BROWSER_COMPONENT} 0156 Qml 0157 ) 0158 0159 if(BUILD_APPLETS) 0160 set(PLASMA_COMPONENT Package Plasma) 0161 endif() 0162 0163 # search packages used by KDE 0164 find_package(KF5 REQUIRED COMPONENTS 0165 Config 0166 CoreAddons 0167 Completion 0168 I18n 0169 ${PLASMA_COMPONENT} 0170 NewStuff 0171 ${KDE_NETWORK_COMPONENT} 0172 IconThemes 0173 TextWidgets 0174 XmlGui 0175 OPTIONAL_COMPONENTS ${OPT_KF5_COMPONENTS} 0176 ) 0177 0178 macro(ecm_add_executable) 0179 add_executable(${ARGN}) 0180 endmacro(ecm_add_executable) 0181 if(CMAKE_COMPILER_IS_GNUCC) 0182 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") 0183 endif() 0184 endif() 0185 0186 set(TARGET_SUFFIX ${PC_TARGET_SUFFIX}) 0187 add_definitions(-DTARGET_SUFFIX=\"${TARGET_SUFFIX}\") 0188 0189 # figure out which multi-precision library to use 0190 # MPIR is preferred over GMP 0191 find_package(MPIR) 0192 if(MPIR_FOUND) 0193 set(MP_INCLUDE_DIR ${MPIR_INCLUDE_DIR}) 0194 set(MP_LIBRARIES ${MPIR_LIBRARIES}) 0195 set(MP_HEADER mpirxx.h) 0196 set(MP_CMAKE_MODULE "MPIR") 0197 set(PC_LIB mpir) 0198 else() 0199 find_package(GMP REQUIRED) 0200 set(MP_INCLUDE_DIR ${GMP_INCLUDE_DIR}) 0201 set(MP_LIBRARIES ${GMP_LIBRARIES}) 0202 set(MP_HEADER gmpxx.h) 0203 set(MP_CMAKE_MODULE "GMP") 0204 set(PC_LIB gmp) 0205 endif() 0206 0207 include_directories(${MP_INCLUDE_DIR}) 0208 0209 # check for Doxygen (for API documentation) 0210 find_package(Doxygen) 0211 if(DOXYGEN_FOUND) 0212 set(APIDOC_DIR ${CMAKE_CURRENT_BINARY_DIR}/apidocs) 0213 0214 make_directory("${APIDOC_DIR}") 0215 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/alkimia.doxygen.in ${CMAKE_CURRENT_BINARY_DIR}/alkimia.doxygen IMMEDIATE) 0216 0217 add_custom_target(apidoc "${DOXYGEN}" "${CMAKE_CURRENT_BINARY_DIR}/alkimia.doxygen") 0218 endif(DOXYGEN_FOUND) 0219 0220 set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/LibAlkimia${ALKIMIA_PATH_SUFFIX}-${alkimia_VERSION_MAJOR}.${alkimia_VERSION_MINOR}") 0221 0222 feature_summary(WHAT ALL) 0223 0224 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) 0225 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) 0226 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) 0227 0228 add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) 0229 include_directories( 0230 ${CMAKE_SOURCE_DIR}/src 0231 ${CMAKE_BINARY_DIR}/src 0232 ${MP_INCLUDE_DIR} 0233 ) 0234 0235 add_subdirectory(src) 0236 add_subdirectory(qml) 0237 if(BUILD_APPLETS) 0238 if(BUILD_QT4) 0239 add_subdirectory(plasma/applets/onlinequote) 0240 else() 0241 add_subdirectory(plasma/applets/ForeignCurrencies) 0242 endif() 0243 endif() 0244 if (KDE4_BUILD_TESTS OR BUILD_TESTING) 0245 add_subdirectory(autotests) 0246 add_subdirectory(tests) 0247 endif() 0248 if (BUILD_TOOLS) 0249 add_subdirectory(tools) 0250 endif() 0251 0252 ki18n_install(po)