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

0001 # SPDX-FileCopyrightText: KDE Contributors
0002 # SPDX-License-Identifier: BSD-2-Clause
0003 
0004 set(KNEWSTUFFCORE_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR_KF}/KNewStuffCore")
0005 
0006 set(KNewStuffCore_SRCS
0007     author.cpp
0008     commentsmodel.cpp
0009     cache.cpp
0010     enginebase.cpp
0011     entry.cpp
0012     imageloader.cpp
0013     installation.cpp
0014     itemsmodel.cpp
0015     provider.cpp
0016     providersmodel.cpp
0017     tagsfilterchecker.cpp
0018     xmlloader.cpp
0019     errorcode.cpp
0020     resultsstream.cpp
0021     transaction.cpp
0022 
0023     # A system by which queries can be passed to the user, and responses
0024     # gathered, depending on implementation. See question.h for details.
0025     question.cpp
0026     questionmanager.cpp
0027     questionlistener.cpp
0028 
0029     ../attica/atticaprovider.cpp
0030     ../staticxml/staticxmlprovider.cpp
0031 )
0032 if(KF6Syndication_FOUND)
0033     set(KNewStuffCore_syndication_SRCS
0034         ../opds/opdsprovider.cpp
0035         )
0036 endif()
0037 
0038 add_library(knscore_jobs_static STATIC)
0039 target_sources(knscore_jobs_static PRIVATE
0040     # A set of minimal KJob based classes, designed to replace the
0041     # more powerful KIO based system in places where KIO is not available
0042     # for one reason or another.
0043     jobs/downloadjob.cpp
0044     jobs/filecopyjob.cpp
0045     jobs/filecopyworker.cpp
0046     jobs/httpjob.cpp
0047     jobs/httpworker.cpp
0048 )
0049 target_link_libraries(knscore_jobs_static PUBLIC Qt6::Network KF6::I18n KF6::CoreAddons KF6::Package)
0050 target_include_directories(knscore_jobs_static PRIVATE ${CMAKE_BINARY_DIR})
0051 # Needed to link this static lib to shared libs
0052 set_property(TARGET knscore_jobs_static PROPERTY POSITION_INDEPENDENT_CODE ON)
0053 
0054 ecm_qt_declare_logging_category(knscore_jobs_static
0055     HEADER knewstuffcore_debug.h
0056     IDENTIFIER KNEWSTUFFCORE
0057     CATEGORY_NAME kf.newstuff.core
0058     OLD_CATEGORY_NAMES org.kde.knewstuff.core
0059     DESCRIPTION "knewstuff (Core Lib)"
0060     EXPORT KNEWSTUFF
0061 )
0062 
0063 add_library(KF6NewStuffCore ${KNewStuffCore_SRCS} ${KNewStuffCore_syndication_SRCS})
0064 add_library(KF6::NewStuffCore ALIAS KF6NewStuffCore )
0065 
0066 set_target_properties(KF6NewStuffCore PROPERTIES
0067    VERSION     ${KNEWSTUFF_VERSION}
0068    SOVERSION   ${KNEWSTUFF_SOVERSION}
0069    EXPORT_NAME NewStuffCore
0070 )
0071 
0072 ecm_generate_export_header(KF6NewStuffCore
0073     EXPORT_FILE_NAME knewstuffcore_export.h
0074     BASE_NAME KNewStuffCore
0075     GROUP_BASE_NAME KF
0076     VERSION ${KF_VERSION}
0077     USE_VERSION_HEADER
0078     VERSION_BASE_NAME KNewStuff
0079     DEPRECATED_BASE_VERSION 0
0080     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
0081     DEPRECATION_VERSIONS
0082 )
0083 
0084 set(KNewStuffCore_BUILD_INCLUDE_DIRS
0085     ${KNewStuff_BINARY_DIR}
0086     ${CMAKE_CURRENT_BINARY_DIR}
0087     ${CMAKE_SOURCE_DIR}/src
0088 )
0089 
0090 target_include_directories(KF6NewStuffCore
0091     PUBLIC "$<BUILD_INTERFACE:${KNewStuffCore_BUILD_INCLUDE_DIRS}>"
0092     INTERFACE
0093         "$<INSTALL_INTERFACE:${KNEWSTUFFCORE_INSTALL_INCLUDEDIR}>"
0094         "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KNewStuff>" # module version header
0095 )
0096 
0097 target_link_libraries(KF6NewStuffCore
0098   PUBLIC
0099     KF6::Attica                # For interacting with ocs providers, public for uploaddialog slots
0100     KF6::CoreAddons
0101     Qt6::Gui                   # For QImage
0102   PRIVATE
0103     KF6::Archive               # For decompressing archives
0104     KF6::I18n                  # For translations
0105     KF6::ConfigCore
0106     KF6::Package
0107     Qt6::Xml
0108     knscore_jobs_static
0109 )
0110 
0111 if(KF6Syndication_FOUND)
0112     target_compile_definitions(KF6NewStuffCore PRIVATE -DSYNDICATION_FOUND="${KF6Syndication_FOUND}")
0113     target_link_libraries(KF6NewStuffCore
0114         PRIVATE
0115         KF6::Syndication #OPDS
0116     )
0117 endif()
0118 
0119 ecm_generate_headers(KNewStuffCore_CamelCase_HEADERS
0120   HEADER_NAMES
0121   Author
0122   Cache
0123   EngineBase
0124   Entry
0125   ErrorCode
0126   ItemsModel
0127   Provider
0128   ProvidersModel
0129   Question
0130   QuestionListener
0131   QuestionManager
0132   ResultsStream
0133   TagsFilterChecker
0134   Transaction
0135 
0136   REQUIRED_HEADERS KNewStuffCore_HEADERS
0137   OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/KNSCore
0138 )
0139 
0140 install(TARGETS KF6NewStuffCore EXPORT KF6NewStuffCoreTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
0141 
0142 install(
0143     FILES
0144         ${KNewStuffCore_CamelCase_HEADERS}
0145         ${KNewStuffCore_HEADERS}
0146         ${CMAKE_CURRENT_BINARY_DIR}/knewstuffcore_export.h
0147     DESTINATION
0148         ${KNEWSTUFFCORE_INSTALL_INCLUDEDIR}/KNSCore
0149     COMPONENT Devel
0150 )
0151 
0152 if(BUILD_QCH)
0153     ecm_add_qch(
0154         KF6NewStuffCore_QCH
0155         NAME KNewStuffCore
0156         BASE_NAME KF6NewStuffCore
0157         VERSION ${KF_VERSION}
0158         ORG_DOMAIN org.kde
0159         SOURCES ${KNewStuffCore_HEADERS}
0160         LINK_QCHS
0161             KF6Attica_QCH
0162             KF6CoreAddons_QCH
0163         INCLUDE_DIRS
0164             ${KNewStuffCore_BUILD_INCLUDE_DIRS}
0165         BLANK_MACROS
0166             KNEWSTUFFCORE_EXPORT
0167             KNEWSTUFFCORE_DEPRECATED
0168             KNEWSTUFFCORE_DEPRECATED_EXPORT
0169             "KNEWSTUFFCORE_DEPRECATED_VERSION(x, y, t)"
0170         TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0171         QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0172         COMPONENT Devel
0173     )
0174 endif()
0175