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 "04")
0006 set (RELEASE_SERVICE_VERSION_MICRO "70")
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 include(ECMAddTests)
0027 
0028 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
0029 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0030 
0031 ## Generate header with version number
0032 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX KCALC
0033                   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kcalc_version.h"
0034 )
0035 
0036 find_package (Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
0037     Core
0038     Widgets
0039 )
0040 find_package(Qt6Core5Compat)
0041 
0042 find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS
0043     CoreAddons
0044     Crash
0045     Config
0046     ConfigWidgets
0047     GuiAddons
0048     I18n
0049     Notifications
0050     XmlGui
0051 )
0052 
0053 find_package(KF6DocTools ${KF_MIN_VERSION})
0054 set_package_properties(KF6DocTools PROPERTIES DESCRIPTION
0055     "Tools to generate documentation"
0056     TYPE OPTIONAL
0057 )
0058 
0059 set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" ${CMAKE_SOURCE_DIR}/cmake/modules)
0060 
0061 find_package(GMP)
0062 set_package_properties(GMP PROPERTIES
0063     DESCRIPTION "The GNU Multiple Precision Arithmetic Library"
0064     URL "https://gmplib.org/"
0065     TYPE REQUIRED
0066     PURPOSE "Required for building KCalc."
0067 )
0068 
0069 find_package(MPFR)
0070 set_package_properties(MPFR PROPERTIES
0071     DESCRIPTION "The GNU Multiple Precision Floating-Point Reliable Library"
0072     URL "https://www.mpfr.org/"
0073     TYPE REQUIRED
0074     PURPOSE "Required for building KCalc."
0075 )
0076 
0077 include(CheckTypeSize)
0078 include(CheckIncludeFiles)
0079 
0080 check_include_files(ieeefp.h     HAVE_IEEEFP_H)
0081 check_type_size("signed long"    SIZEOF_SIGNED_LONG)
0082 check_type_size("unsigned long"  SIZEOF_UNSIGNED_LONG)
0083 
0084 configure_file(config-kcalc.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-kcalc.h )
0085 ecm_set_disabled_deprecation_versions(QT 6.6  KF 5.250.0)
0086 
0087 add_subdirectory(knumber)
0088 add_executable(kcalc)
0089 
0090 target_sources(kcalc PRIVATE
0091    kcalc.cpp 
0092    bitbutton.cpp
0093    kcalc_bitset.cpp
0094    kcalc_button.cpp 
0095    kcalc_const_button.cpp 
0096    kcalc_const_menu.cpp 
0097    kcalc_core.cpp
0098    kcalc_core_p.cpp
0099    kcalc_input_display.cpp
0100    kcalc_display_frame.cpp
0101    kcalc_parser.cpp
0102    kcalc_token.cpp
0103    kcalcdisplay.cpp 
0104    kcalc_statusbar.cpp
0105    stats.cpp 
0106    kcalchistory.cpp
0107    stats.cpp
0108    kcalc_const_menu.h
0109    kcalc_core.h
0110    kcalc_core_p.h
0111    kcalc_bitset.h
0112    bitbutton.h
0113    kcalc.h
0114    kcalc_button.h
0115    stats.h
0116    kcalc_const_button.h
0117    kcalc_statusbar.h
0118    kcalc_input_display.h
0119    kcalc_display_frame.h
0120    kcalc_parser.h
0121    kcalc_token.h
0122    kcalc_priority_levels_p.h
0123    kcalcdisplay.h
0124    kcalchistory.h
0125    kcalc.qrc )
0126 
0127 
0128 ki18n_wrap_ui(kcalc
0129    kcalc.ui
0130    constants.ui
0131    colors.ui
0132    fonts.ui
0133    general.ui)
0134 
0135 kconfig_add_kcfg_files(kcalc kcalc_settings.kcfgc )
0136 
0137 # Sets the icon on Windows and OSX
0138 file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*.png")
0139 ecm_add_app_icon(kcalc ICONS ${ICONS_SRCS})
0140 
0141 # Conditionally install icons for Linux as they may not be provided by the user theme
0142 option(INSTALL_ICONS "Install icons" OFF)
0143 if (INSTALL_ICONS)
0144     include(ECMInstallIcons)
0145     ecm_install_icons( ICONS ${ICONS_SRCS} DESTINATION ${KDE_INSTALL_ICONDIR} )
0146 endif()
0147 
0148 
0149 target_link_libraries(kcalc
0150     Qt6::Core
0151     Qt6::Widgets
0152     KF6::CoreAddons
0153     KF6::ConfigWidgets
0154     KF6::GuiAddons
0155     KF6::I18n
0156     KF6::Notifications
0157     KF6::XmlGui
0158     KF6::Crash
0159     knumber
0160 )
0161 
0162 set_target_properties(kcalc PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/MacOSXBundleInfo.plist.in)
0163 
0164 install(TARGETS kcalc  ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
0165 
0166 ########### install files ###############
0167 
0168 install( PROGRAMS org.kde.kcalc.desktop  DESTINATION ${KDE_INSTALL_APPDIR})
0169 install( FILES org.kde.kcalc.appdata.xml   DESTINATION ${KDE_INSTALL_METAINFODIR})
0170 install( FILES kcalc.kcfg  DESTINATION ${KDE_INSTALL_KCFGDIR})
0171 install( FILES kcalcrc.upd  DESTINATION ${KDE_INSTALL_DATADIR}/kconf_update)
0172 install( DIRECTORY DESTINATION "${KDE_INSTALL_FULL_DATAROOTDIR}/kglobalaccel" )
0173 install(
0174     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\")"
0175 )
0176 
0177 if(BUILD_TESTING)
0178    add_subdirectory( autotests )
0179 endif()
0180 
0181 ki18n_install(po)
0182 if (KF6DocTools_FOUND)
0183     kdoctools_install(po)
0184     add_subdirectory(doc)
0185 endif()
0186 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0187 
0188 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)