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)