Warning, /multimedia/libkcddb/libkcddb/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 add_definitions(-DTRANSLATION_DOMAIN="libkcddb")
0002 
0003 set(KCDDB_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR}/KCddb${QT_MAJOR_VERSION}")
0004 if (KF_MAJOR_VERSION STREQUAL "5")
0005     set(KCDDB_CMAKECONFIG_NAME "KF5Cddb")
0006 else()
0007     set(KCDDB_CMAKECONFIG_NAME "KCddb6")
0008 endif()
0009 
0010 ecm_setup_version(${libkcddb_VERSION}
0011     VARIABLE_PREFIX KCDDB
0012     VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kcddb_version.h"
0013     PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/${KCDDB_CMAKECONFIG_NAME}ConfigVersion.cmake"
0014     SOVERSION 5
0015 )
0016 
0017 add_library(KCddb SHARED)
0018 if (KF_MAJOR_VERSION STREQUAL "5")
0019     add_library(KF5::Cddb ALIAS KCddb)
0020 else()
0021     add_library(KCddb6 ALIAS KCddb)
0022 endif()
0023 
0024 if (KF_MAJOR_VERSION STREQUAL "5")
0025     set_target_properties(KCddb PROPERTIES
0026         VERSION     ${KCDDB_VERSION}
0027         SOVERSION   ${KCDDB_SOVERSION}
0028         OUTPUT_NAME KF${KF_MAJOR_VERSION}Cddb
0029         EXPORT_NAME Cddb
0030     )
0031 else()
0032     set_target_properties(KCddb PROPERTIES
0033         VERSION     ${KCDDB_VERSION}
0034         SOVERSION   ${KCDDB_SOVERSION}
0035         OUTPUT_NAME KCddb6
0036         EXPORT_NAME KCddb6
0037     )
0038 endif()
0039 
0040 
0041 if(MUSICBRAINZ5_FOUND)
0042     set(musicbrainz_sources
0043        musicbrainz/musicbrainzlookup.cpp
0044        musicbrainz/asyncmusicbrainzlookup.cpp musicbrainz/asyncmusicbrainzlookup.h)
0045 
0046     if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel"))
0047         set(enable_exceptions -EHsc)
0048     elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
0049         set(enable_exceptions "-fexceptions -UQT_NO_EXCEPTIONS")
0050     elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
0051         set(enable_exceptions -fexceptions)
0052     endif()
0053 
0054     set_source_files_properties(${musicbrainz_sources} PROPERTIES COMPILE_FLAGS ${enable_exceptions})
0055 endif()
0056 
0057 kconfig_add_kcfg_files(KCddb configbase.kcfgc)
0058 
0059 ecm_qt_declare_logging_category(KCddb
0060     HEADER logging.h
0061     IDENTIFIER LIBKCDDB
0062     CATEGORY_NAME "libkcddb"
0063     DESCRIPTION "libkcddb"
0064     EXPORT KCDDB
0065 )
0066 
0067 target_sources(KCddb PRIVATE
0068     cache.cpp cache.h
0069     cdinfo.cpp cdinfo.h
0070     config.cpp config.h
0071     client.cpp client.h
0072     kcddb.cpp kcddb.h
0073     cddb.cpp
0074     lookup.cpp
0075     cddbplookup.cpp cddbplookup.h
0076     synccddbplookup.cpp synccddbplookup.h
0077     asynccddbplookup.cpp asynccddbplookup.h
0078     httplookup.cpp httplookup.h
0079     synchttplookup.cpp
0080     asynchttplookup.cpp asynchttplookup.h
0081     submit.cpp
0082     sites.cpp sites.h
0083     httpsubmit.cpp
0084     asynchttpsubmit.cpp asynchttpsubmit.h
0085     synchttpsubmit.cpp
0086     categories.cpp categories.h
0087     genres.cpp genres.h
0088     ${musicbrainz_sources}
0089 )
0090 
0091 target_link_libraries(KCddb
0092     PUBLIC
0093         KF${KF_MAJOR_VERSION}::ConfigGui
0094     PRIVATE
0095         KF${KF_MAJOR_VERSION}::I18n
0096         KF${KF_MAJOR_VERSION}::KIOCore
0097         Qt${QT_MAJOR_VERSION}::Network
0098 )
0099 
0100 if (TARGET Qt6::Core5Compat)
0101     target_link_libraries(KCddb PRIVATE Qt6::Core5Compat)
0102 endif()
0103 
0104 if(MUSICBRAINZ5_FOUND)
0105     target_link_libraries(KCddb PRIVATE musicbrainz)
0106 endif()
0107 
0108 if (QT_MAJOR_VERSION STREQUAL "5")
0109     set(_generate_export_header_version_args)
0110 else()
0111     # For Qt6/KF6 world transitively include the version header
0112     if(ECM_VERSION VERSION_LESS "5.106")
0113         set(include_version_header_code "#include <kcddb_version.h>\n")
0114         set(_generate_export_header_version_args CUSTOM_CONTENT_FROM_VARIABLE include_version_header_code)
0115     else()
0116         set(_generate_export_header_version_args USE_VERSION_HEADER)
0117     endif()
0118 endif()
0119 
0120 ecm_generate_export_header(KCddb
0121     BASE_NAME KCddb
0122     VERSION ${KCDDB_VERSION}
0123     DEPRECATED_BASE_VERSION 5.0.0
0124     DEPRECATION_VERSIONS 5.1
0125     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
0126     ${_generate_export_header_version_args}
0127 )
0128 
0129 target_include_directories(KCddb
0130     PUBLIC
0131         "$<INSTALL_INTERFACE:${KCDDB_INSTALL_INCLUDEDIR}>"
0132 )
0133 
0134 ecm_generate_headers(KCddb_CamelCase_HEADERS
0135     HEADER_NAMES
0136         Categories
0137         CDInfo
0138         Client
0139         Genres
0140         Config
0141         KCDDB
0142     PREFIX KCDDB
0143     REQUIRED_HEADERS KCddb_HEADERS
0144 )
0145 
0146 if (KF_MAJOR_VERSION STREQUAL "6")
0147     install(TARGETS KCddb EXPORT KCddbTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0148 else()
0149     install(TARGETS KCddb EXPORT KCddbTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
0150 endif()
0151 
0152 install(FILES
0153     ${CMAKE_CURRENT_BINARY_DIR}/kcddb_export.h
0154     ${CMAKE_CURRENT_BINARY_DIR}/configbase.h
0155     ${KCddb_HEADERS}
0156     DESTINATION ${KCDDB_INSTALL_INCLUDEDIR}/kcddb # C++ namespace prefix
0157     COMPONENT Devel
0158 )
0159 
0160 install(FILES
0161     ${KCddb_CamelCase_HEADERS}
0162     DESTINATION ${KCDDB_INSTALL_INCLUDEDIR}/KCDDB # C++ namespace prefix
0163     COMPONENT Devel
0164 )
0165 
0166 install(FILES
0167     "${CMAKE_CURRENT_BINARY_DIR}/kcddb_version.h"
0168     DESTINATION "${KCDDB_INSTALL_INCLUDEDIR}"
0169     COMPONENT Devel
0170 )
0171 
0172 if (KF_MAJOR_VERSION STREQUAL "5")
0173     set(KCDDB_INCLUDE_DESTINATION "${KDE_INSTALL_INCLUDEDIR_KF}/KCddb")
0174 else()
0175     set(KCDDB_INCLUDE_DESTINATION "${KDE_INSTALL_INCLUDEDIR}/KCddb6")
0176 endif()
0177 # provide compat headers for old broken include path prefix KCddb/
0178 if(NOT EXCLUDE_DEPRECATED_BEFORE_AND_AT STREQUAL "CURRENT" AND
0179    EXCLUDE_DEPRECATED_BEFORE_AND_AT VERSION_LESS 5.1.0)
0180     function(generate_compat_headers)
0181         foreach(_classnameentry ${ARGV})
0182             string(REPLACE "," ";" _classnames ${_classnameentry})
0183             list(GET _classnames 0 classname)
0184             list(GET _classnames -1 newclassname) # last is either second or the only one
0185 
0186             string(TOLOWER ${classname} classname_lc)
0187             string(TOLOWER ${newclassname} newclassname_lc)
0188             set(NEWHEADER_NAME "${newclassname_lc}.h")
0189             # normal header
0190             set(compat_header "${CMAKE_CURRENT_BINARY_DIR}/compat/${classname_lc}.h")
0191             set(NEW_INCLUDE "kcddb/${NEWHEADER_NAME}")
0192             configure_file(compatheader.h.in ${compat_header} @ONLY)
0193             install(FILES ${compat_header}
0194                 DESTINATION ${KCDDB_INCLUDE_DESTINATION}
0195                 COMPONENT Devel
0196             )
0197             # CamelCase header
0198             set(compat_header "${CMAKE_CURRENT_BINARY_DIR}/compat/${classname}")
0199             set(NEW_INCLUDE "KCDDB/${newclassname}")
0200             configure_file(compatheader.h.in ${compat_header} @ONLY)
0201             install(FILES ${compat_header}
0202                 DESTINATION ${KCDDB_INCLUDE_DESTINATION}
0203                 COMPONENT Devel
0204             )
0205         endforeach()
0206     endfunction()
0207 
0208     generate_compat_headers(
0209         Categories
0210         Cdinfo,CDInfo
0211         Client
0212         Genres
0213         KcddbConfig,Config
0214         Kcddb,KCDDB
0215     )
0216 endif()
0217 
0218 install(FILES libkcddb5.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
0219 
0220 ecm_qt_install_logging_categories(
0221     EXPORT KCDDB
0222     FILE libkcddb.categories
0223     DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0224 )
0225 
0226 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/${KCDDB_CMAKECONFIG_NAME}")
0227 configure_package_config_file(
0228     "${CMAKE_CURRENT_SOURCE_DIR}/${KCDDB_CMAKECONFIG_NAME}Config.cmake.in"
0229     "${CMAKE_CURRENT_BINARY_DIR}/${KCDDB_CMAKECONFIG_NAME}Config.cmake"
0230     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0231 )
0232 
0233 install(FILES
0234     "${CMAKE_CURRENT_BINARY_DIR}/${KCDDB_CMAKECONFIG_NAME}Config.cmake"
0235     "${CMAKE_CURRENT_BINARY_DIR}/${KCDDB_CMAKECONFIG_NAME}ConfigVersion.cmake"
0236     DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0237     COMPONENT Devel
0238 )
0239 
0240 if (KF_MAJOR_VERSION STREQUAL "6")
0241     install(EXPORT KCddbTargets
0242         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0243         FILE ${KCDDB_CMAKECONFIG_NAME}Targets.cmake
0244         COMPONENT Devel
0245     )
0246 else()
0247     install(EXPORT KCddbTargets
0248         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0249         FILE ${KCDDB_CMAKECONFIG_NAME}Targets.cmake
0250         NAMESPACE KF5::
0251         COMPONENT Devel
0252     )
0253 endif()
0254 
0255 include(ECMGeneratePriFile)
0256 if (KF_MAJOR_VERSION STREQUAL "5")
0257     set(KCDDB_LIB_NAME KF${KF_MAJOR_VERSION}Cddb)
0258 else()
0259     set(KCDDB_LIB_NAME libKCddb6)
0260 endif()
0261 ecm_generate_pri_file(
0262     BASE_NAME KCddb
0263     LIB_NAME ${KCDDB_LIB_NAME}
0264     DEPS "KConfigGui"
0265     FILENAME_VAR PRI_FILENAME
0266     INCLUDE_INSTALL_DIR ${KCDDB_INSTALL_INCLUDEDIR}
0267 )
0268 install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})