Warning, /utilities/kcalc/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 3.16)
0002 
0003 # KDE Application Version, managed by release script
0004 set (RELEASE_SERVICE_VERSION_MAJOR "24")
0005 set (RELEASE_SERVICE_VERSION_MINOR "01")
0006 set (RELEASE_SERVICE_VERSION_MICRO "95")
0007 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0008 project(kcalc VERSION ${RELEASE_SERVICE_VERSION})
0009 
0010 set(QT_MIN_VERSION "6.5.0")
0011 set(KF_MIN_VERSION "5.240.0")
0012 
0013 find_package (ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
0014 set (CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0015 
0016 include(KDEInstallDirs)
0017 include(KDECompilerSettings NO_POLICY_SCOPE)
0018 include(KDECMakeSettings)
0019 include(ECMMarkAsTest)
0020 include(FeatureSummary)
0021 include(ECMAddAppIcon)
0022 include(ECMSetupVersion)
0023 include(KDEGitCommitHooks)
0024 include(KDEClangFormat)
0025 include(ECMDeprecationSettings)
0026 
0027 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
0028 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0029 
0030 ## Generate header with version number
0031 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX KCALC
0032                   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kcalc_version.h"
0033 )
0034 
0035 find_package (Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
0036     Core
0037     Widgets
0038 )
0039 find_package(Qt6Core5Compat)
0040 
0041 find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS
0042     CoreAddons
0043     Crash
0044     Config
0045     ConfigWidgets
0046     GuiAddons
0047     I18n
0048     Notifications
0049     XmlGui
0050 )
0051 
0052 find_package(KF6DocTools ${KF_MIN_VERSION})
0053 set_package_properties(KF6DocTools PROPERTIES DESCRIPTION
0054     "Tools to generate documentation"
0055     TYPE OPTIONAL
0056 )
0057 
0058 set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" ${CMAKE_SOURCE_DIR}/cmake/modules)
0059 
0060 find_package(GMP)
0061 set_package_properties(GMP PROPERTIES
0062     DESCRIPTION "The GNU Multiple Precision Arithmetic Library"
0063     URL "https://gmplib.org/"
0064     TYPE REQUIRED
0065     PURPOSE "Required for building KCalc."
0066 )
0067 
0068 find_package(MPFR)
0069 set_package_properties(MPFR PROPERTIES
0070     DESCRIPTION "The GNU Multiple Precision Floating-Point Reliable Library"
0071     URL "https://www.mpfr.org/"
0072     TYPE REQUIRED
0073     PURPOSE "Required for building KCalc."
0074 )
0075 
0076 include(CheckTypeSize)
0077 include(CheckIncludeFiles)
0078 
0079 check_include_files(ieeefp.h     HAVE_IEEEFP_H)
0080 check_type_size("signed long"    SIZEOF_SIGNED_LONG)
0081 check_type_size("unsigned long"  SIZEOF_UNSIGNED_LONG)
0082 
0083 configure_file(config-kcalc.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-kcalc.h )
0084 ecm_set_disabled_deprecation_versions(QT 6.6  KF 5.250.0)
0085 
0086 add_subdirectory(knumber)
0087 add_executable(kcalc)
0088 
0089 target_sources(kcalc PRIVATE
0090    kcalc.cpp 
0091    bitbutton.cpp
0092    kcalc_bitset.cpp
0093    kcalc_button.cpp 
0094    kcalc_const_button.cpp 
0095    kcalc_const_menu.cpp 
0096    kcalc_core.cpp 
0097    kcalcdisplay.cpp 
0098    kcalc_statusbar.cpp
0099    stats.cpp 
0100    kcalchistory.cpp
0101    stats.cpp
0102    kcalc_const_menu.h
0103    kcalc_core.h
0104    kcalc_bitset.h
0105    bitbutton.h
0106    kcalc.h
0107    kcalc_button.h
0108    stats.h
0109    kcalc_const_button.h
0110    kcalc_statusbar.h
0111    kcalcdisplay.h
0112    kcalchistory.h
0113    kcalc.qrc )
0114 
0115 
0116 ki18n_wrap_ui(kcalc
0117    kcalc.ui
0118    constants.ui
0119    colors.ui
0120    fonts.ui
0121    general.ui)
0122 
0123 kconfig_add_kcfg_files(kcalc kcalc_settings.kcfgc )
0124 
0125 # Sets the icon on Windows and OSX
0126 file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*.png")
0127 ecm_add_app_icon(kcalc ICONS ${ICONS_SRCS})
0128 
0129 # Conditionally install icons for Linux as they may not be provided by the user theme
0130 option(INSTALL_ICONS "Install icons" OFF)
0131 if (INSTALL_ICONS)
0132     include(ECMInstallIcons)
0133     ecm_install_icons( ICONS ${ICONS_SRCS} DESTINATION ${KDE_INSTALL_ICONDIR} )
0134 endif()
0135 
0136 
0137 target_link_libraries(kcalc
0138     Qt6::Core
0139     Qt6::Widgets
0140     KF6::CoreAddons
0141     KF6::ConfigWidgets
0142     KF6::GuiAddons
0143     KF6::I18n
0144     KF6::Notifications
0145     KF6::XmlGui
0146     KF6::Crash
0147     knumber
0148 )
0149 
0150 set_target_properties(kcalc PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/MacOSXBundleInfo.plist.in)
0151 
0152 install(TARGETS kcalc  ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
0153 
0154 ########### install files ###############
0155 
0156 install( PROGRAMS org.kde.kcalc.desktop  DESTINATION ${KDE_INSTALL_APPDIR})
0157 install( FILES org.kde.kcalc.appdata.xml   DESTINATION ${KDE_INSTALL_METAINFODIR})
0158 install( FILES kcalc.kcfg  DESTINATION ${KDE_INSTALL_KCFGDIR})
0159 install( FILES kcalcrc.upd  DESTINATION ${KDE_INSTALL_DATADIR}/kconf_update)
0160 install( DIRECTORY DESTINATION "${KDE_INSTALL_FULL_DATAROOTDIR}/kglobalaccel" )
0161 install(
0162     CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink \"${KDE_INSTALL_FULL_APPDIR}/org.kde.kcalc.desktop\" \"\$ENV{DESTDIR}${KDE_INSTALL_FULL_DATAROOTDIR}/kglobalaccel/org.kde.kcalc.desktop\")"
0163 )
0164 
0165 ki18n_install(po)
0166 if (KF6DocTools_FOUND)
0167     kdoctools_install(po)
0168     add_subdirectory(doc)
0169 endif()
0170 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0171 
0172 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)