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)