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)