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})