Warning, /frameworks/kservice/src/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 include(CheckSymbolExists) 0002 include(CheckFunctionExists) 0003 check_function_exists(mmap HAVE_MMAP) 0004 check_symbol_exists(posix_madvise "sys/mman.h" HAVE_MADVISE) 0005 configure_file(config-ksycoca.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ksycoca.h ) 0006 0007 add_library(KF5Service) 0008 add_library(KF5::Service ALIAS KF5Service) 0009 0010 set_target_properties(KF5Service PROPERTIES 0011 VERSION ${KSERVICE_VERSION} 0012 SOVERSION ${KSERVICE_SOVERSION} 0013 EXPORT_NAME Service 0014 ) 0015 0016 target_sources(KF5Service PRIVATE 0017 services/kautostart.cpp 0018 services/kapplicationtrader.cpp 0019 services/kmimetypefactory.cpp 0020 services/kmimetypetrader.cpp 0021 services/kservice.cpp 0022 services/kserviceaction.cpp 0023 services/kservicefactory.cpp 0024 services/kservicegroup.cpp 0025 services/kservicegroupfactory.cpp 0026 services/kserviceoffer.cpp 0027 services/kservicetype.cpp 0028 services/kservicetypefactory.cpp 0029 services/kservicetypeprofile.cpp 0030 services/kservicetypetrader.cpp 0031 services/ktraderparse.cpp 0032 services/ktraderparsetree.cpp 0033 services/kplugininfo.cpp 0034 sycoca/ksycoca.cpp 0035 sycoca/ksycocadevices.cpp 0036 sycoca/ksycocadict.cpp 0037 sycoca/ksycocaentry.cpp 0038 sycoca/ksycocafactory.cpp 0039 sycoca/kmemfile.cpp 0040 sycoca/kbuildmimetypefactory.cpp 0041 sycoca/kbuildservicetypefactory.cpp 0042 sycoca/kbuildservicefactory.cpp 0043 sycoca/kbuildservicegroupfactory.cpp 0044 sycoca/kbuildsycoca.cpp 0045 sycoca/kctimefactory.cpp 0046 sycoca/kmimeassociations.cpp 0047 sycoca/vfolder_menu.cpp 0048 plugin/kplugintrader.cpp 0049 0050 kservice.qrc 0051 ) 0052 0053 if(NOT EXCLUDE_DEPRECATED_BEFORE_AND_AT STREQUAL "CURRENT" AND 0054 EXCLUDE_DEPRECATED_BEFORE_AND_AT VERSION_LESS 5.89.0) 0055 target_sources(KF5Service PRIVATE kdeinit/ktoolinvocation.cpp) 0056 if (WIN32) 0057 target_sources(KF5Service PRIVATE kdeinit/ktoolinvocation_win.cpp) 0058 endif() 0059 if (UNIX) 0060 target_sources(KF5Service PRIVATE kdeinit/ktoolinvocation_x11.cpp) 0061 endif() 0062 endif() 0063 0064 if (TARGET Qt${QT_MAJOR_VERSION}::DBus) 0065 target_sources(KF5Service PRIVATE 0066 plugin/kdbusservicestarter.cpp 0067 ) 0068 endif() 0069 0070 ecm_qt_declare_logging_category(KF5Service 0071 HEADER servicesdebug.h 0072 IDENTIFIER SERVICES 0073 CATEGORY_NAME kf.service.services 0074 OLD_CATEGORY_NAMES kf5.kservice.services 0075 EXPORT KSERVICE 0076 DESCRIPTION "service (kservice lib)" 0077 ) 0078 ecm_qt_declare_logging_category(KF5Service 0079 HEADER sycocadebug.h 0080 IDENTIFIER SYCOCA 0081 CATEGORY_NAME kf.service.sycoca 0082 OLD_CATEGORY_NAMES kf5.kservice.sycoca 0083 EXPORT KSERVICE 0084 DESCRIPTION "sycoca (kservice)" 0085 ) 0086 0087 bison_target(TraderParser 0088 services/yacc.y 0089 ${CMAKE_CURRENT_BINARY_DIR}/yacc.c 0090 COMPILE_FLAGS "-p kiotrader -d" 0091 ) 0092 flex_target(TraderLexer 0093 services/lex.l 0094 ${CMAKE_CURRENT_BINARY_DIR}/lex.c 0095 COMPILE_FLAGS "-Pkiotrader -B -i" 0096 ) 0097 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/lex.c ${CMAKE_CURRENT_BINARY_DIR}/yacc.c PROPERTY SKIP_AUTOMOC ON) 0098 add_flex_bison_dependency(TraderLexer TraderParser) 0099 target_sources(KF5Service PRIVATE 0100 ${BISON_TraderParser_OUTPUTS} 0101 ${FLEX_TraderLexer_OUTPUTS} 0102 ) 0103 set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/yacc.h PROPERTY SKIP_AUTOMOC TRUE) # don't run automoc on this file 0104 0105 # kservice cannot depend on kinit (because kinit->kio->kservice), so we need a copy of org.kde.KLauncher.xml here. 0106 # And I don't want to have it here as a source file (who wants to edit dbus xml by hand), so it can be 0107 # generated from klauncher's implementation header. 0108 if (TARGET Qt${QT_MAJOR_VERSION}::DBus) 0109 set(kservice_dbus_SRCS) 0110 qt_add_dbus_interface(kservice_dbus_SRCS kdeinit/org.kde.KLauncher.xml klauncher_iface) 0111 target_sources(KF5Service PRIVATE ${kservice_dbus_SRCS}) 0112 endif() 0113 0114 if(WIN32) 0115 #unistd.h does not exist on windows 0116 target_compile_definitions(KF5Service PRIVATE YY_NO_UNISTD_H=1) 0117 endif() 0118 ecm_generate_export_header(KF5Service 0119 BASE_NAME KService 0120 GROUP_BASE_NAME KF 0121 VERSION ${KF_VERSION} 0122 DEPRECATED_BASE_VERSION 0 0123 DEPRECATION_VERSIONS 5.0 5.15 5.61 5.63 5.66 5.67 5.70 5.71 5.79 5.80 5.81 5.82 5.83 5.86 5.87 5.88 5.89 5.90 5.102 5.104 0124 EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT} 0125 ) 0126 set(kservice_includes 0127 ${CMAKE_CURRENT_BINARY_DIR}/.. # Since we publicly include kservice_version.h 0128 ${CMAKE_CURRENT_SOURCE_DIR}/services 0129 ${CMAKE_CURRENT_SOURCE_DIR}/sycoca 0130 ${CMAKE_CURRENT_SOURCE_DIR}/plugin 0131 ${CMAKE_CURRENT_SOURCE_DIR}/kdeinit 0132 ) 0133 target_include_directories(KF5Service 0134 PUBLIC 0135 "$<BUILD_INTERFACE:${kservice_includes}>" 0136 INTERFACE 0137 "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KService>" 0138 ) 0139 0140 target_link_libraries(KF5Service 0141 PRIVATE 0142 KF5::I18n 0143 Qt${QT_MAJOR_VERSION}::Xml # (for vfolder menu) QDomDocument 0144 ) 0145 0146 if(NOT EXCLUDE_DEPRECATED_BEFORE_AND_AT STREQUAL "CURRENT" AND 0147 EXCLUDE_DEPRECATED_BEFORE_AND_AT VERSION_LESS 5.94.0) 0148 target_link_libraries(KF5Service 0149 PUBLIC 0150 KF5::ConfigCore # KConfig and friends 0151 KF5::CoreAddons # KShell KPluginLoader 0152 ) 0153 else() 0154 target_link_libraries(KF5Service 0155 PUBLIC 0156 Qt${QT_MAJOR_VERSION}::Core 0157 PRIVATE 0158 KF5::ConfigCore # KConfig and friends 0159 KF5::CoreAddons # KShell KPluginLoader 0160 ) 0161 endif() 0162 0163 if (TARGET KF5::DBusAddons) 0164 target_link_libraries(KF5Service PRIVATE KF5::DBusAddons) # KDEInitInterface 0165 endif() 0166 0167 ecm_generate_headers(KService_HEADERS 0168 HEADER_NAMES 0169 KPluginTrader 0170 KDBusServiceStarter 0171 0172 RELATIVE plugin REQUIRED_HEADERS KService_HEADERS 0173 ) 0174 ecm_generate_headers(KService_HEADERS 0175 HEADER_NAMES 0176 KSycoca 0177 KSycocaEntry 0178 KSycocaType 0179 0180 RELATIVE sycoca REQUIRED_HEADERS KService_HEADERS 0181 ) 0182 ecm_generate_headers(KService_HEADERS 0183 HEADER_NAMES 0184 KToolInvocation 0185 0186 RELATIVE kdeinit REQUIRED_HEADERS KService_HEADERS 0187 ) 0188 ecm_generate_headers(KService_HEADERS 0189 HEADER_NAMES 0190 KApplicationTrader 0191 KAutostart 0192 KMimeTypeTrader 0193 KService 0194 KServiceAction 0195 KServiceGroup 0196 KServiceType 0197 KServiceTypeProfile 0198 KServiceTypeTrader 0199 KPluginInfo 0200 0201 RELATIVE services REQUIRED_HEADERS KService_HEADERS 0202 ) 0203 0204 install(FILES 0205 services/kplugininfo.desktop # TODO move to qrc too, like application.desktop? 0206 services/application.desktop # KF6: TODO: stop installing this file, it's now bundled into the qrc 0207 DESTINATION ${KDE_INSTALL_KSERVICETYPESDIR} 0208 ) 0209 0210 # Local copy for the unittests 0211 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/data/kservicetypes5) 0212 add_custom_command(TARGET KF5Service PRE_BUILD COMMAND 0213 ${CMAKE_COMMAND} -E copy 0214 ${CMAKE_CURRENT_SOURCE_DIR}/services/kplugininfo.desktop 0215 ${CMAKE_BINARY_DIR}/bin/data/kservicetypes5) # not using KDE_INSTALL_KSERVICETYPESDIR because QStandardPaths wants "data" on Windows 0216 0217 if (WIN32) 0218 install( FILES applications.menu DESTINATION ${KDE_INSTALL_DATAROOTDIR}/xdg/menus RENAME ${APPLICATIONS_MENU_NAME} ) 0219 else () 0220 install( FILES applications.menu DESTINATION ${KDE_INSTALL_SYSCONFDIR}/xdg/menus RENAME ${APPLICATIONS_MENU_NAME} ) 0221 endif () 0222 0223 # Local copy for the unittests 0224 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/data/menus) 0225 add_custom_command(TARGET KF5Service PRE_BUILD COMMAND 0226 ${CMAKE_COMMAND} -E copy 0227 ${CMAKE_CURRENT_SOURCE_DIR}/applications.menu 0228 ${CMAKE_BINARY_DIR}/bin/data/menus/${APPLICATIONS_MENU_NAME}) 0229 0230 install(TARGETS KF5Service EXPORT KF5ServiceTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS}) 0231 0232 install(FILES 0233 "${CMAKE_CURRENT_BINARY_DIR}/kservice_export.h" 0234 ${KService_HEADERS} 0235 DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KService COMPONENT Devel 0236 ) 0237 0238 ecm_qt_install_logging_categories( 0239 EXPORT KSERVICE 0240 FILE kservice.categories 0241 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 0242 ) 0243 0244 if(BUILD_QCH) 0245 ecm_add_qch( 0246 KF5Service_QCH 0247 NAME KService 0248 BASE_NAME KF5Service 0249 VERSION ${KF_VERSION} 0250 ORG_DOMAIN org.kde 0251 SOURCES # using only public headers, to cover only public API 0252 ${KService_HEADERS} 0253 MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" 0254 LINK_QCHS 0255 KF5Config_QCH 0256 KF5CoreAddons_QCH 0257 INCLUDE_DIRS 0258 ${CMAKE_CURRENT_BINARY_DIR} 0259 ${kservice_includes} 0260 BLANK_MACROS 0261 KSERVICE_EXPORT 0262 KSERVICE_DEPRECATED 0263 KSERVICE_DEPRECATED_EXPORT 0264 "KSERVICE_DEPRECATED_VERSION(x, y, t)" 0265 "KSERVICE_DEPRECATED_VERSION_BELATED(x, y, xt, yt, t)" 0266 TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} 0267 QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} 0268 COMPONENT Devel 0269 ) 0270 endif() 0271 0272 add_subdirectory(kbuildsycoca) 0273 0274 include(ECMGeneratePriFile) 0275 ecm_generate_pri_file(BASE_NAME KService LIB_NAME KF5Service DEPS "KConfigCore" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF}/KService) 0276 install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})