Warning, /frameworks/kcoreaddons/src/lib/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # Configure checks for the caching subdir
0002 include(CheckIncludeFiles)
0003 check_include_files("sys/types.h;sys/mman.h" HAVE_SYS_MMAN_H)
0004 configure_file(caching/config-caching.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-caching.h)
0005 
0006 include(CheckSymbolExists)
0007 check_symbol_exists("getgrouplist" "grp.h" HAVE_GETGROUPLIST)
0008 
0009 if(UNIX)
0010     function(check_dladdr) # use a function to scope the variables!
0011         set(CMAKE_REQUIRED_FLAGS ${DLADDR_LINK_FLAGS})
0012         set(CMAKE_REQUIRED_LIBRARIES ${DLADDR_LINK_LIBRARIES})
0013         check_symbol_exists("dladdr" "dlfcn.h" HAVE_DLADDR)
0014         set(HAVE_DLADDR ${HAVE_DLADDR} PARENT_SCOPE)
0015     endfunction()
0016 
0017     if(CMAKE_SYSTEM_NAME MATCHES "Linux") # on linux dladdr isn't part of libc, on freebsd and osx it is
0018         set(DLADDR_LINK_FLAGS "-D_GNU_SOURCE")
0019         set(DLADDR_LINK_LIBRARIES "dl")
0020     endif()
0021     check_dladdr()
0022 
0023     add_feature_info(dladdr ${HAVE_DLADDR} "Can resolve shared library paths and by extension libexec paths at runtime using dladdr() API")
0024 endif()
0025 
0026 set (KDE4_DEFAULT_HOME ".kde${_KDE4_DEFAULT_HOME_POSTFIX}" CACHE STRING "The default KDE home directory" )
0027 set (ACCOUNTS_SERVICE_ICON_DIR "/var/lib/AccountsService/icons" CACHE STRING "Accounts Services icon storage directory")
0028 
0029 configure_file(util/config-util.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-util.h)
0030 
0031 add_library(KF5CoreAddons)
0032 add_library(KF5::CoreAddons ALIAS KF5CoreAddons)
0033 
0034 if(NOT BUILD_SHARED_LIBS)
0035     target_compile_definitions(KF5CoreAddons PUBLIC -DKCOREADDONS_STATIC)
0036 endif()
0037 
0038 ecm_create_qm_loader(KF5CoreAddons kcoreaddons5_qt)
0039 
0040 if (FAM_FOUND)
0041     target_include_directories(KF5CoreAddons PRIVATE ${FAM_INCLUDE_DIR})
0042     target_link_libraries(KF5CoreAddons PRIVATE ${FAM_LIBRARIES})
0043 endif ()
0044 
0045 if (Inotify_FOUND)
0046     target_include_directories(KF5CoreAddons PRIVATE ${Inotify_INCLUDE_DIRS})
0047     target_link_libraries(KF5CoreAddons PRIVATE ${Inotify_LIBRARIES})
0048 endif ()
0049 
0050 if(NOT WIN32)
0051     target_sources(KF5CoreAddons PRIVATE
0052         caching/kshareddatacache.cpp
0053         caching/kshareddatacache.h
0054     )
0055 
0056     set_source_files_properties(caching/kshareddatacache.cpp
0057         PROPERTIES COMPILE_FLAGS -fexceptions)
0058 
0059     target_link_libraries(KF5CoreAddons PRIVATE Threads::Threads)
0060 else()
0061     target_sources(KF5CoreAddons PRIVATE
0062         caching/kshareddatacache_win.cpp
0063     )
0064 endif()
0065 
0066 if (WIN32)
0067     target_sources(KF5CoreAddons PRIVATE
0068         text/kmacroexpander_win.cpp
0069         util/klistopenfilesjob_win.cpp
0070         util/kprocesslist_win.cpp
0071         util/kshell_win.cpp
0072         util/kuser_win.cpp
0073     )
0074 endif ()
0075 
0076 if (UNIX)
0077     target_sources(KF5CoreAddons PRIVATE
0078         text/kmacroexpander_unix.cpp
0079         util/klistopenfilesjob_unix.cpp
0080         util/kuser_unix.cpp
0081         util/kshell_unix.cpp
0082     )
0083     if (HAVE_PROCSTAT)
0084         target_sources(KF5CoreAddons PRIVATE
0085             util/kprocesslist_unix_procstat.cpp
0086         )
0087         target_compile_definitions(KF5CoreAddons PRIVATE HAVE_PROCSTAT=1)
0088     else ()
0089         target_sources(KF5CoreAddons PRIVATE
0090             util/kprocesslist_unix.cpp
0091         )
0092     endif ()
0093 endif ()
0094 
0095 if(HAVE_QTDBUS)
0096     set(_dbus_SRCS)
0097 
0098     set_source_files_properties(io/org.freedesktop.portal.FileTransfer.xml PROPERTIES INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/io/dbustypes_p.h)
0099     qt_add_dbus_interface(_dbus_SRCS io/org.freedesktop.portal.FileTransfer.xml io/org.freedesktop.portal.FileTransfer)
0100 
0101     set_source_files_properties(io/org.kde.KIOFuse.VFS.xml PROPERTIES NO_NAMESPACE TRUE)
0102     qt_add_dbus_interface(_dbus_SRCS io/org.kde.KIOFuse.VFS.xml io/org.kde.KIOFuse.VFS)
0103 
0104     target_sources(KF5CoreAddons PRIVATE ${_dbus_SRCS})
0105     target_link_libraries(KF5CoreAddons PRIVATE Qt${QT_MAJOR_VERSION}::DBus)
0106 endif()
0107 
0108 if (TARGET UDev::UDev)
0109     target_link_libraries(KF5CoreAddons PRIVATE UDev::UDev)
0110 endif()
0111 
0112 target_sources(KF5CoreAddons PRIVATE
0113     kaboutdata.cpp
0114     kcoreaddons.cpp
0115     io/kautosavefile.cpp
0116     io/kdirwatch.cpp
0117     io/kfilesystemtype.cpp
0118     io/kmessage.cpp
0119     io/kprocess.cpp
0120     io/kbackup.cpp
0121     io/kurlmimedata.cpp
0122     io/kfileutils.cpp
0123     io/knetworkmounts.cpp
0124     jobs/kcompositejob.cpp
0125     jobs/kjob.cpp
0126     jobs/kjobtrackerinterface.cpp
0127     jobs/kjobuidelegate.cpp
0128     plugin/kpluginfactory.cpp
0129     plugin/kpluginloader.cpp
0130     plugin/kpluginmetadata.cpp
0131     plugin/kstaticpluginhelpers.cpp
0132     plugin/desktopfileparser.cpp
0133     randomness/krandom.cpp
0134     randomness/krandomsequence.cpp
0135     text/kjsonutils.cpp
0136     text/kfuzzymatcher.cpp
0137     text/kmacroexpander.cpp
0138     text/kstringhandler.cpp
0139     text/ktexttohtml.cpp
0140     util/kdelibs4migration.cpp
0141     util/kdelibs4configmigrator.cpp
0142     util/kformat.cpp
0143     util/kformatprivate.cpp
0144     util/kosrelease.cpp
0145     util/kprocesslist.cpp
0146     util/kshell.cpp
0147     util/klibexec.cpp
0148     util/ksignalhandler.cpp
0149     util/ksandbox.cpp
0150     util/kmemoryinfo.cpp
0151     util/kruntimeplatform.cpp
0152 
0153     kaboutdata.h
0154     kcoreaddons.h
0155     io/kautosavefile.h
0156     io/kdirwatch.h
0157     io/kfilesystemtype.h
0158     io/kmessage.h
0159     io/kprocess.h
0160     io/kbackup.h
0161     io/kurlmimedata.h
0162     io/kfileutils.h
0163     io/knetworkmounts.h
0164     jobs/kcompositejob.h
0165     jobs/kjob.h
0166     jobs/kjobtrackerinterface.h
0167     jobs/kjobuidelegate.h
0168     plugin/kpluginfactory.h
0169     plugin/kpluginloader.h
0170     plugin/kpluginmetadata.h
0171     plugin/kstaticpluginhelpers.h
0172     randomness/krandom.h
0173     randomness/krandomsequence.h
0174     text/kjsonutils.h
0175     text/kfuzzymatcher.h
0176     text/kmacroexpander.h
0177     text/kstringhandler.h
0178     text/ktexttohtml.h
0179     util/kdelibs4migration.h
0180     util/kdelibs4configmigrator.h
0181     util/kformat.h
0182     util/kosrelease.h
0183     util/kprocesslist.h
0184     util/kshell.h
0185     util/klibexec.h
0186     util/ksignalhandler.h
0187     util/ksandbox.h
0188     util/kmemoryinfo.h
0189     util/kruntimeplatform.h
0190 )
0191 
0192 
0193 set(kcoreaddons_INCLUDE_DIRS
0194     ${CMAKE_CURRENT_BINARY_DIR}/../.. # for kcoreaddons_version.h
0195     ${CMAKE_CURRENT_SOURCE_DIR}/caching/
0196     ${CMAKE_CURRENT_BINARY_DIR}/io/
0197     ${CMAKE_CURRENT_SOURCE_DIR}/io/
0198     ${CMAKE_CURRENT_SOURCE_DIR}/jobs/
0199     ${CMAKE_CURRENT_SOURCE_DIR}/plugin/
0200     ${CMAKE_CURRENT_SOURCE_DIR}/randomness/
0201     ${CMAKE_CURRENT_SOURCE_DIR}/text/
0202     ${CMAKE_CURRENT_SOURCE_DIR}/util/
0203 )
0204 
0205 ecm_qt_export_logging_category(
0206     IDENTIFIER KDIRWATCH
0207     CATEGORY_NAME kf.coreaddons.kdirwatch
0208     OLD_CATEGORY_NAMES kf5.kcoreaddons.kdirwatch
0209     DEFAULT_SEVERITY Warning
0210     DESCRIPTION "KDirWatch (KCoreAddons)"
0211     EXPORT KCOREADDONS
0212 )
0213 ecm_qt_export_logging_category(
0214     IDENTIFIER KABOUTDATA
0215     CATEGORY_NAME kf.coreaddons.kaboutdata
0216     OLD_CATEGORY_NAMES kf5.kcoreaddons.kaboutdata
0217     DESCRIPTION "KAboutData (KCoreAddons)"
0218     EXPORT KCOREADDONS
0219 )
0220 ecm_qt_export_logging_category(
0221     IDENTIFIER LOG_KMEMORYINFO
0222     CATEGORY_NAME kf.coreaddons.kmemoryinfo
0223     DESCRIPTION "KMemoryInfo (KCoreAddons)"
0224     EXPORT KCOREADDONS
0225 )
0226 ecm_qt_declare_logging_category(KF5CoreAddons
0227     HEADER desktopfileparser_debug.h
0228     IDENTIFIER DESKTOPPARSER
0229     CATEGORY_NAME kf.coreaddons.desktopparser
0230     OLD_CATEGORY_NAMES kf5.kcoreaddons.desktopparser
0231     DEFAULT_SEVERITY Warning
0232     DESCRIPTION "DesktopParser (KCoreAddons)"
0233     EXPORT KCOREADDONS
0234 )
0235 ecm_qt_export_logging_category(
0236     IDENTIFIER MIGRATOR
0237     CATEGORY_NAME kf.coreaddons.kdelibs4configmigrator
0238     OLD_CATEGORY_NAMES kf5.kcoreaddons.kdelibs4configmigrator
0239     DEFAULT_SEVERITY Warning
0240     DESCRIPTION "Kdelibs4ConfigMigrator (KCoreAddons)"
0241     EXPORT KCOREADDONS
0242 )
0243 
0244 ecm_qt_declare_logging_category(KF5CoreAddons
0245     HEADER kcoreaddons_debug.h
0246     IDENTIFIER KCOREADDONS_DEBUG
0247     CATEGORY_NAME kf.coreaddons
0248     OLD_CATEGORY_NAMES org.kde.kcoreaddons
0249     DESCRIPTION "kcoreaddons (kcoreaddons lib)"
0250     EXPORT KCOREADDONS
0251 )
0252 
0253 ecm_generate_export_header(KF5CoreAddons
0254     BASE_NAME KCoreAddons
0255     GROUP_BASE_NAME KF
0256     VERSION ${KF_VERSION}
0257     DEPRECATED_BASE_VERSION 0
0258     DEPRECATION_VERSIONS 4.0 5.0 5.2 5.65 5.67 5.70 5.72 5.75 5.76 5.78 5.79 5.80 5.84 5.86 5.87 5.88 5.89 5.92 5.95 5.97 5.104 5.112
0259     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
0260 )
0261 
0262 target_include_directories(KF5CoreAddons PUBLIC "$<BUILD_INTERFACE:${kcoreaddons_INCLUDE_DIRS}>")
0263 
0264 target_link_libraries(KF5CoreAddons
0265   PUBLIC
0266     Qt${QT_MAJOR_VERSION}::Core
0267 )
0268 
0269 if(WIN32)
0270     target_link_libraries(KF5CoreAddons PRIVATE netapi32 userenv psapi)
0271 endif()
0272 
0273 if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
0274     target_link_libraries(KF5CoreAddons PRIVATE kvm)
0275 endif()
0276 
0277 if (HAVE_PROCSTAT)
0278     target_link_libraries(KF5CoreAddons PRIVATE Procstat::Procstat)
0279 endif()
0280 
0281 if(HAVE_DLADDR)
0282     set_source_files_properties(SOURCE util/klibexec.cpp PROPERTIES COMPILE_FLAGS "${DLADDR_LINK_FLAGS}") # ensure _GNU_SOURCE on Linux
0283     target_link_libraries(KF5CoreAddons PRIVATE ${DLADDR_LINK_LIBRARIES})
0284 endif()
0285 
0286 target_include_directories(KF5CoreAddons INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KCoreAddons>" )
0287 
0288 target_compile_definitions(KF5CoreAddons INTERFACE "$<INSTALL_INTERFACE:KCOREADDONS_LIB>")
0289 
0290 set_target_properties(KF5CoreAddons PROPERTIES VERSION   ${KCOREADDONS_VERSION}
0291                                                SOVERSION ${KCOREADDONS_SOVERSION}
0292                                                EXPORT_NAME CoreAddons
0293 )
0294 
0295 ecm_generate_headers(KCoreAddons_HEADERS
0296     HEADER_NAMES
0297         KAboutData
0298         KCoreAddons
0299     REQUIRED_HEADERS KCoreAddons_HEADERS
0300 )
0301 ecm_generate_headers(KCoreAddons_HEADERS
0302     HEADER_NAMES KSharedDataCache
0303     RELATIVE caching
0304     REQUIRED_HEADERS KCoreAddons_HEADERS
0305 )
0306 ecm_generate_headers(KCoreAddons_HEADERS
0307     HEADER_NAMES
0308         KAutoSaveFile
0309         KDirWatch
0310         KMessage
0311         KProcess
0312         KBackup
0313         KUrlMimeData
0314         KFileSystemType
0315         KFileUtils
0316         KNetworkMounts
0317     RELATIVE io
0318     REQUIRED_HEADERS KCoreAddons_HEADERS
0319 )
0320 ecm_generate_headers(KCoreAddons_HEADERS
0321     HEADER_NAMES
0322         KCompositeJob
0323         KJob
0324         KJobTrackerInterface
0325         KJobUiDelegate
0326     RELATIVE jobs
0327     REQUIRED_HEADERS KCoreAddons_HEADERS
0328 )
0329 ecm_generate_headers(KCoreAddons_HEADERS
0330     HEADER_NAMES
0331         KExportPlugin
0332         KPluginFactory
0333         KPluginLoader
0334         KPluginMetaData
0335         KStaticPluginHelpers
0336     RELATIVE plugin
0337     REQUIRED_HEADERS KCoreAddons_HEADERS
0338 )
0339 ecm_generate_headers(KCoreAddons_HEADERS
0340     HEADER_NAMES
0341         KRandom
0342         KRandomSequence
0343     RELATIVE randomness
0344     REQUIRED_HEADERS KCoreAddons_HEADERS
0345 )
0346 ecm_generate_headers(KCoreAddons_HEADERS
0347     HEADER_NAMES
0348         KJsonUtils
0349         KFuzzyMatcher
0350         KMacroExpander
0351         KStringHandler
0352         KTextToHTML
0353         KTextToHTMLEmoticonsInterface
0354     RELATIVE text
0355     REQUIRED_HEADERS KCoreAddons_HEADERS
0356 )
0357 ecm_generate_headers(KCoreAddons_HEADERS
0358     HEADER_NAMES
0359         KFormat
0360         KOSRelease
0361         KUser
0362         KShell
0363         KProcessList
0364         KListOpenFilesJob
0365         Kdelibs4Migration
0366         Kdelibs4ConfigMigrator
0367         KLibexec
0368         KSignalHandler
0369         KRuntimePlatform
0370         KSandbox
0371         KMemoryInfo
0372     RELATIVE util
0373     REQUIRED_HEADERS KCoreAddons_HEADERS
0374 )
0375 
0376 install(TARGETS KF5CoreAddons EXPORT KF5CoreAddonsTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
0377 
0378 install(FILES
0379     ${KCoreAddons_HEADERS}
0380     ${CMAKE_CURRENT_BINARY_DIR}/kcoreaddons_export.h
0381     DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KCoreAddons COMPONENT Devel
0382 )
0383 
0384 # Includes CMake code to install open-source license texts for KAboutData.
0385 add_subdirectory(licenses)
0386 
0387 if(BUILD_QCH)
0388     ecm_add_qch(
0389         KF5CoreAddons_QCH
0390         NAME KCoreAddons
0391         BASE_NAME KF5CoreAddons
0392         VERSION ${KF_VERSION}
0393         ORG_DOMAIN org.kde
0394         SOURCES # using only public headers, to cover only public API
0395             ${KCoreAddons_HEADERS}
0396         MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
0397         LINK_QCHS
0398             Qt5Core_QCH
0399         INCLUDE_DIRS
0400             ${CMAKE_CURRENT_BINARY_DIR}
0401             ${kcoreaddons_INCLUDE_DIRS}
0402         BLANK_MACROS
0403             KCOREADDONS_EXPORT
0404             KCOREADDONS_DEPRECATED
0405             KCOREADDONS_DEPRECATED_EXPORT
0406             "KCOREADDONS_DEPRECATED_VERSION(x, y, t)"
0407         TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0408         QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0409         COMPONENT Devel
0410     )
0411 endif()
0412 
0413 include(ECMGeneratePriFile)
0414 ecm_generate_pri_file(BASE_NAME KCoreAddons LIB_NAME KF5CoreAddons DEPS "core" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF}/KCoreAddons)
0415 install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})