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(ACCOUNTS_SERVICE_ICON_DIR "/var/lib/AccountsService/icons" CACHE STRING "Accounts Services icon storage directory")
0027 
0028 configure_file(util/config-util.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-util.h)
0029 
0030 add_library(KF6CoreAddons)
0031 add_library(KF6::CoreAddons ALIAS KF6CoreAddons)
0032 
0033 set_target_properties(KF6CoreAddons PROPERTIES
0034     VERSION     ${KCOREADDONS_VERSION}
0035     SOVERSION   ${KCOREADDONS_SOVERSION}
0036     EXPORT_NAME CoreAddons
0037 )
0038 
0039 if(NOT BUILD_SHARED_LIBS)
0040     target_compile_definitions(KF6CoreAddons PUBLIC -DKCOREADDONS_STATIC)
0041 endif()
0042 
0043 ecm_create_qm_loader(KF6CoreAddons kcoreaddons6_qt)
0044 
0045 if (Inotify_FOUND)
0046     target_include_directories(KF6CoreAddons PRIVATE ${Inotify_INCLUDE_DIRS})
0047     target_link_libraries(KF6CoreAddons PRIVATE ${Inotify_LIBRARIES})
0048 endif ()
0049 
0050 if(NOT WIN32)
0051     target_sources(KF6CoreAddons PRIVATE
0052         caching/kshareddatacache.cpp
0053         caching/kshareddatacache.h
0054         caching/ksdclock.cpp
0055         caching/ksdcmemory.cpp
0056     )
0057 
0058     set_source_files_properties(caching/kshareddatacache.cpp
0059         PROPERTIES COMPILE_FLAGS -fexceptions)
0060 
0061     target_link_libraries(KF6CoreAddons PRIVATE Threads::Threads)
0062 else()
0063     target_sources(KF6CoreAddons PRIVATE
0064         caching/kshareddatacache_win.cpp
0065     )
0066 endif()
0067 
0068 if (WIN32)
0069     target_sources(KF6CoreAddons PRIVATE
0070         text/kmacroexpander_win.cpp
0071         util/klistopenfilesjob_win.cpp
0072         util/kprocesslist_win.cpp
0073         util/kshell_win.cpp
0074         util/kuser_win.cpp
0075     )
0076 endif ()
0077 
0078 if (UNIX)
0079     target_sources(KF6CoreAddons PRIVATE
0080         text/kmacroexpander_unix.cpp
0081         util/klistopenfilesjob_unix.cpp
0082         util/kuser_unix.cpp
0083         util/kshell_unix.cpp
0084     )
0085     if (HAVE_PROCSTAT)
0086         target_sources(KF6CoreAddons PRIVATE
0087             util/kprocesslist_unix_procstat.cpp
0088         )
0089         target_compile_definitions(KF6CoreAddons PRIVATE HAVE_PROCSTAT=1)
0090     else ()
0091         target_sources(KF6CoreAddons PRIVATE
0092             util/kprocesslist_unix.cpp
0093         )
0094     endif ()
0095 endif ()
0096 
0097 if(HAVE_QTDBUS)
0098     set(_dbus_SRCS)
0099 
0100     set_source_files_properties(io/org.freedesktop.portal.FileTransfer.xml PROPERTIES INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/io/dbustypes_p.h)
0101     qt_add_dbus_interface(_dbus_SRCS io/org.freedesktop.portal.FileTransfer.xml io/org.freedesktop.portal.FileTransfer)
0102 
0103     set_source_files_properties(io/org.kde.KIOFuse.VFS.xml PROPERTIES NO_NAMESPACE TRUE)
0104     qt_add_dbus_interface(_dbus_SRCS io/org.kde.KIOFuse.VFS.xml io/org.kde.KIOFuse.VFS)
0105 
0106     target_sources(KF6CoreAddons PRIVATE ${_dbus_SRCS})
0107     target_link_libraries(KF6CoreAddons PRIVATE Qt6::DBus)
0108 endif()
0109 
0110 if (TARGET UDev::UDev)
0111     target_link_libraries(KF6CoreAddons PRIVATE UDev::UDev)
0112 endif()
0113 
0114 target_sources(KF6CoreAddons PRIVATE
0115     kaboutdata.cpp
0116     kcoreaddons.cpp
0117     io/kautosavefile.cpp
0118     io/kdirwatch.cpp
0119     io/kfilesystemtype.cpp
0120     io/kprocess.cpp
0121     io/kbackup.cpp
0122     io/kurlmimedata.cpp
0123     io/kfileutils.cpp
0124     io/knetworkmounts.cpp
0125     jobs/kcompositejob.cpp
0126     jobs/kjob.cpp
0127     jobs/kjobtrackerinterface.cpp
0128     jobs/kjobuidelegate.cpp
0129     plugin/kpluginfactory.cpp
0130     plugin/kpluginmetadata.cpp
0131     plugin/kstaticpluginhelpers.cpp
0132     randomness/krandom.cpp
0133     text/kemoticonsparser.cpp
0134     text/kjsonutils.cpp
0135     text/kfuzzymatcher.cpp
0136     text/kmacroexpander.cpp
0137     text/kstringhandler.cpp
0138     text/ktexttohtml.cpp
0139     util/kformat.cpp
0140     util/kformatprivate.cpp
0141     util/kosrelease.cpp
0142     util/kprocesslist.cpp
0143     util/kshell.cpp
0144     util/klibexec.cpp
0145     util/ksignalhandler.cpp
0146     util/ksandbox.cpp
0147     util/kmemoryinfo.cpp
0148     util/kruntimeplatform.cpp
0149 
0150     kaboutdata.h
0151     kcoreaddons.h
0152     io/kautosavefile.h
0153     io/kdirwatch.h
0154     io/kfilesystemtype.h
0155     io/kprocess.h
0156     io/kbackup.h
0157     io/kurlmimedata.h
0158     io/kfileutils.h
0159     io/knetworkmounts.h
0160     jobs/kcompositejob.h
0161     jobs/kjob.h
0162     jobs/kjobtrackerinterface.h
0163     jobs/kjobuidelegate.h
0164     plugin/kpluginfactory.h
0165     plugin/kpluginmetadata.h
0166     randomness/krandom.h
0167     text/kjsonutils.h
0168     text/kfuzzymatcher.h
0169     text/kmacroexpander.h
0170     text/kstringhandler.h
0171     text/ktexttohtml.h
0172     util/kformat.h
0173     util/kosrelease.h
0174     util/kprocesslist.h
0175     util/kshell.h
0176     util/klibexec.h
0177     util/ksignalhandler.h
0178     util/ksandbox.h
0179     util/kmemoryinfo.h
0180     util/kruntimeplatform.h
0181 )
0182 
0183 if (ENABLE_PCH)
0184     target_precompile_headers(KF6CoreAddons PRIVATE
0185         <QObject>
0186         <QLoggingCategory>
0187         <QString>
0188     )
0189 endif()
0190 
0191 
0192 set(kcoreaddons_INCLUDE_DIRS
0193     ${CMAKE_CURRENT_SOURCE_DIR}/caching/
0194     ${CMAKE_CURRENT_BINARY_DIR}/io/
0195     ${CMAKE_CURRENT_SOURCE_DIR}/io/
0196     ${CMAKE_CURRENT_SOURCE_DIR}/jobs/
0197     ${CMAKE_CURRENT_SOURCE_DIR}/plugin/
0198     ${CMAKE_CURRENT_SOURCE_DIR}/randomness/
0199     ${CMAKE_CURRENT_SOURCE_DIR}/text/
0200     ${CMAKE_CURRENT_SOURCE_DIR}/util/
0201 )
0202 
0203 ecm_qt_export_logging_category(
0204     IDENTIFIER KDIRWATCH
0205     CATEGORY_NAME kf.coreaddons.kdirwatch
0206     OLD_CATEGORY_NAMES kf5.kcoreaddons.kdirwatch
0207     DEFAULT_SEVERITY Warning
0208     DESCRIPTION "KDirWatch (KCoreAddons)"
0209     EXPORT KCOREADDONS
0210 )
0211 ecm_qt_export_logging_category(
0212     IDENTIFIER KABOUTDATA
0213     CATEGORY_NAME kf.coreaddons.kaboutdata
0214     OLD_CATEGORY_NAMES kf5.kcoreaddons.kaboutdata
0215     DESCRIPTION "KAboutData (KCoreAddons)"
0216     EXPORT KCOREADDONS
0217 )
0218 ecm_qt_export_logging_category(
0219     IDENTIFIER LOG_KMEMORYINFO
0220     CATEGORY_NAME kf.coreaddons.kmemoryinfo
0221     DESCRIPTION "KMemoryInfo (KCoreAddons)"
0222     EXPORT KCOREADDONS
0223 )
0224 
0225 ecm_qt_declare_logging_category(KF6CoreAddons
0226     HEADER kcoreaddons_debug.h
0227     IDENTIFIER KCOREADDONS_DEBUG
0228     CATEGORY_NAME kf.coreaddons
0229     OLD_CATEGORY_NAMES org.kde.kcoreaddons
0230     DESCRIPTION "kcoreaddons (kcoreaddons lib)"
0231     EXPORT KCOREADDONS
0232 )
0233 
0234 ecm_generate_export_header(KF6CoreAddons
0235     BASE_NAME KCoreAddons
0236     GROUP_BASE_NAME KF
0237     VERSION ${KF_VERSION}
0238     USE_VERSION_HEADER
0239     DEPRECATED_BASE_VERSION 0
0240     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
0241 )
0242 
0243 target_include_directories(KF6CoreAddons PUBLIC "$<BUILD_INTERFACE:${kcoreaddons_INCLUDE_DIRS}>")
0244 
0245 target_link_libraries(KF6CoreAddons
0246   PUBLIC
0247     Qt6::Core
0248 )
0249 
0250 if(WIN32)
0251     target_link_libraries(KF6CoreAddons PRIVATE netapi32 userenv psapi)
0252 endif()
0253 
0254 if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
0255     target_link_libraries(KF6CoreAddons PRIVATE kvm)
0256 endif()
0257 
0258 if (HAVE_PROCSTAT)
0259     target_link_libraries(KF6CoreAddons PRIVATE Procstat::Procstat)
0260 endif()
0261 
0262 if(HAVE_DLADDR)
0263     set_source_files_properties(SOURCE util/klibexec.cpp PROPERTIES COMPILE_FLAGS "${DLADDR_LINK_FLAGS}") # ensure _GNU_SOURCE on Linux
0264     target_link_libraries(KF6CoreAddons PRIVATE ${DLADDR_LINK_LIBRARIES})
0265 endif()
0266 
0267 target_include_directories(KF6CoreAddons INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KCoreAddons>")
0268 
0269 target_compile_definitions(KF6CoreAddons INTERFACE "$<INSTALL_INTERFACE:KCOREADDONS_LIB>")
0270 
0271 ecm_generate_headers(KCoreAddons_HEADERS
0272     HEADER_NAMES
0273         KAboutData,KAboutPerson,KAboutLicense,KAboutComponent
0274         KCoreAddons
0275     REQUIRED_HEADERS KCoreAddons_HEADERS
0276 )
0277 ecm_generate_headers(KCoreAddons_HEADERS
0278     HEADER_NAMES KSharedDataCache
0279     RELATIVE caching
0280     REQUIRED_HEADERS KCoreAddons_HEADERS
0281 )
0282 ecm_generate_headers(KCoreAddons_HEADERS
0283     HEADER_NAMES
0284         KAutoSaveFile
0285         KDirWatch
0286         KProcess
0287         KBackup
0288         KUrlMimeData
0289         KFileSystemType
0290         KFileUtils
0291         KNetworkMounts
0292     RELATIVE io
0293     REQUIRED_HEADERS KCoreAddons_HEADERS
0294 )
0295 ecm_generate_headers(KCoreAddons_HEADERS
0296     HEADER_NAMES
0297         KCompositeJob
0298         KJob
0299         KJobTrackerInterface
0300         KJobUiDelegate
0301     RELATIVE jobs
0302     REQUIRED_HEADERS KCoreAddons_HEADERS
0303 )
0304 ecm_generate_headers(KCoreAddons_HEADERS
0305     HEADER_NAMES
0306         KPluginFactory
0307         KPluginMetaData
0308     RELATIVE plugin
0309     REQUIRED_HEADERS KCoreAddons_HEADERS
0310 )
0311 ecm_generate_headers(KCoreAddons_HEADERS
0312     HEADER_NAMES
0313         KRandom
0314     RELATIVE randomness
0315     REQUIRED_HEADERS KCoreAddons_HEADERS
0316 )
0317 ecm_generate_headers(KCoreAddons_HEADERS
0318     HEADER_NAMES
0319         KJsonUtils
0320         KFuzzyMatcher
0321         KMacroExpander
0322         KStringHandler
0323         KTextToHTML
0324     RELATIVE text
0325     REQUIRED_HEADERS KCoreAddons_HEADERS
0326 )
0327 ecm_generate_headers(KCoreAddons_HEADERS
0328     HEADER_NAMES
0329         KFormat
0330         KOSRelease
0331         KUser
0332         KShell
0333         KProcessList
0334         KListOpenFilesJob
0335         KLibexec
0336         KSignalHandler
0337         KRuntimePlatform
0338         KSandbox
0339         KMemoryInfo
0340     RELATIVE util
0341     REQUIRED_HEADERS KCoreAddons_HEADERS
0342 )
0343 
0344 install(TARGETS KF6CoreAddons EXPORT KF6CoreAddonsTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
0345 
0346 install(FILES
0347     ${KCoreAddons_HEADERS}
0348     ${CMAKE_CURRENT_BINARY_DIR}/kcoreaddons_export.h
0349     DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KCoreAddons COMPONENT Devel
0350 )
0351 install(FILES plugin/kpluginmetadata.schema.json DESTINATION ${KDE_INSTALL_DATADIR}/kf6/jsonschema COMPONENT Devel)
0352 
0353 # Includes CMake code to install open-source license texts for KAboutData.
0354 add_subdirectory(licenses)
0355 
0356 if(BUILD_QCH)
0357     ecm_add_qch(
0358         KF6CoreAddons_QCH
0359         NAME KCoreAddons
0360         BASE_NAME KF6CoreAddons
0361         VERSION ${KF_VERSION}
0362         ORG_DOMAIN org.kde
0363         SOURCES # using only public headers, to cover only public API
0364             ${KCoreAddons_HEADERS}
0365         MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
0366         LINK_QCHS
0367             Qt6Core_QCH
0368         INCLUDE_DIRS
0369             ${CMAKE_CURRENT_BINARY_DIR}
0370             ${kcoreaddons_INCLUDE_DIRS}
0371         BLANK_MACROS
0372             KCOREADDONS_EXPORT
0373             KCOREADDONS_DEPRECATED
0374             KCOREADDONS_DEPRECATED_EXPORT
0375             "KCOREADDONS_DEPRECATED_VERSION(x, y, t)"
0376         TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0377         QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0378         COMPONENT Devel
0379     )
0380 endif()