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

0001 cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
0002 
0003 # KDE Application Version, managed by KDE release team automatically
0004 # https://community.kde.org/Guidelines_and_HOWTOs/Application_Versioning
0005 set (RELEASE_SERVICE_VERSION_MAJOR "23")
0006 set (RELEASE_SERVICE_VERSION_MINOR "04")
0007 set (RELEASE_SERVICE_VERSION_MICRO "1")
0008 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0009 
0010 project(juk VERSION ${RELEASE_SERVICE_VERSION})
0011 
0012 set(QT_MIN_VERSION "5.15.2")
0013 set(KF5_MIN_VERSION "5.90.0")
0014 set(KDE_COMPILERSETTINGS_LEVEL "5.84.0")
0015 
0016 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
0017 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH})
0018 
0019 include(CMakePushCheckState)
0020 include(CheckIncludeFileCXX)
0021 include(KDEInstallDirs)
0022 include(KDECompilerSettings NO_POLICY_SCOPE)
0023 include(KDECMakeSettings NO_POLICY_SCOPE)
0024 include(FeatureSummary)
0025 include(ECMInstallIcons)
0026 include(ECMAddAppIcon)
0027 include(ECMQtDeclareLoggingCategory)
0028 
0029 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED COMPONENTS Concurrent Gui Svg Network Test Widgets)
0030 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
0031     CoreAddons
0032     Completion
0033     Config
0034     Crash
0035     GlobalAccel
0036     I18n
0037     IconThemes
0038     DBusAddons
0039     DocTools
0040     KIO
0041     JobWidgets
0042     Notifications
0043     TextWidgets
0044     XmlGui
0045     Wallet
0046     WidgetsAddons
0047     WindowSystem
0048 )
0049 find_package(Phonon4Qt${QT_MAJOR_VERSION} 4.6.60 REQUIRED NO_MODULE)
0050 
0051 find_package(Taglib 1.6 REQUIRED)
0052 
0053 include_directories(${CMAKE_BINARY_DIR} ${PHONON_INCLUDES})
0054 
0055 add_subdirectory( doc )
0056 add_subdirectory( tests )
0057 add_subdirectory( pics )
0058 
0059 #set_package_properties(FEATURE PROPERTIES DESCRIPTION "A library for developing MusicBrainz enabled tagging applications" URL "https://wiki.musicbrainz.org/History:libtunepimp" TYPE OPTIONAL PURPOSE "Provides MusicBrainz tagging in Juk.")
0060 
0061 # TODO: tunepimp is fully unsupported, replace this when tunepimp is replaced
0062 # with whatever is actually current this decade.
0063 set(HAVE_TUNEPIMP 0)
0064 
0065 ########### next target ###############
0066 
0067 add_definitions(-DQT_STL -DQT_NO_URL_CAST_FROM_STRING)
0068 
0069 configure_file (config-juk.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-juk.h )
0070 
0071 set(juk_SRCS
0072    advancedsearchdialog.cpp
0073    slider.cpp
0074    svghandler.cpp
0075    volumepopupbutton.cpp
0076    actioncollection.cpp
0077    cache.cpp
0078    categoryreaderinterface.cpp
0079    collectionlist.cpp
0080    coverdialog.cpp
0081    covericonview.cpp
0082    coverinfo.cpp
0083    covermanager.cpp
0084    coverproxy.cpp
0085    dbuscollectionproxy.cpp
0086    deletedialog.cpp
0087    directorylist.cpp
0088    directoryloader.cpp
0089    dynamicplaylist.cpp
0090    exampleoptions.cpp
0091    folderplaylist.cpp
0092    filehandle.cpp
0093    filerenamer.cpp
0094    filerenameroptions.cpp
0095    filerenamerconfigdlg.cpp
0096    webimagefetcher.cpp
0097    historyplaylist.cpp
0098    iconsupport.cpp
0099    juk.cpp
0100    juktag.cpp
0101    keydialog.cpp
0102    lyricswidget.cpp
0103    main.cpp
0104    mediafiles.cpp
0105    mpris2/mediaplayer2.cpp
0106    mpris2/mediaplayer2player.cpp
0107    mpris2/mpris2.cpp
0108    nowplaying.cpp
0109    playermanager.cpp
0110    playlist.cpp
0111    playlistbox.cpp
0112    playlistcollection.cpp
0113    playlistinterface.cpp
0114    playlistitem.cpp
0115    playlistsearch.cpp
0116    playlistsharedsettings.cpp
0117    playlistsplitter.cpp
0118    scrobbler.cpp
0119    scrobbleconfigdlg.cpp
0120    searchplaylist.cpp
0121    searchwidget.cpp
0122    slideraction.cpp
0123    statuslabel.cpp
0124    stringshare.cpp
0125    systemtray.cpp
0126    tageditor.cpp
0127    tagguesser.cpp
0128    tagguesserconfigdlg.cpp
0129    tagrenameroptions.cpp
0130    tagtransactionmanager.cpp
0131    treeviewitemplaylist.cpp
0132    upcomingplaylist.cpp
0133    viewmode.cpp )
0134 
0135 ecm_qt_declare_logging_category(juk_SRCS HEADER juk_debug.h
0136                                 IDENTIFIER JUK_LOG CATEGORY_NAME org.kde.juk)
0137 
0138 qt_add_dbus_adaptor( juk_SRCS org.kde.juk.collection.xml
0139     dbuscollectionproxy.h DBusCollectionProxy )
0140 qt_add_dbus_adaptor( juk_SRCS org.kde.juk.player.xml playermanager.h PlayerManager)
0141 qt_add_dbus_adaptor( juk_SRCS org.kde.juk.search.xml searchwidget.h SearchWidget)
0142 
0143 
0144 ki18n_wrap_ui(juk_SRCS
0145     filerenamerbase.ui
0146     filerenameroptionsbase.ui
0147     directorylistbase.ui
0148     tagguesserconfigdlgwidget.ui
0149     exampleoptionsbase.ui
0150     coverdialogbase.ui
0151     deletedialogbase.ui
0152     tageditor.ui
0153 )
0154 
0155 file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/*-apps-juk.png")
0156 ecm_add_app_icon(juk_SRCS ICONS ${ICONS_SRCS})
0157 add_executable(juk ${juk_SRCS})
0158 
0159 kde_target_enable_exceptions(juk PRIVATE)
0160 target_compile_definitions(juk PRIVATE QT_USE_QSTRINGBUILDER)
0161 set_target_properties(juk PROPERTIES
0162     CXX_STANDARD 17
0163     CXX_STANDARD_REQUIRED ON
0164     )
0165 
0166 if(NOT MSVC AND NOT ( WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" ) )
0167     set( LIBMATH m )
0168 endif()
0169 
0170 target_link_libraries(juk ${LIBMATH}
0171     Qt::Concurrent
0172     Qt::Gui
0173     Qt::Svg
0174     Qt::Widgets
0175     Qt::Network
0176     KF5::ConfigCore
0177     KF5::CoreAddons
0178     KF5::Completion
0179     KF5::Crash
0180     KF5::DBusAddons
0181     KF5::GlobalAccel
0182     KF5::KIOCore
0183     KF5::KIOWidgets
0184     KF5::KIOFileWidgets
0185     KF5::JobWidgets
0186     KF5::Notifications
0187     KF5::I18n
0188     KF5::IconThemes
0189     KF5::TextWidgets
0190     KF5::XmlGui
0191     KF5::WindowSystem
0192     KF5::WidgetsAddons
0193     KF5::Wallet
0194     Phonon::phonon4qt${QT_MAJOR_VERSION}
0195     Taglib::Taglib
0196 )
0197 
0198 if(TUNEPIMP_FOUND)
0199     target_link_libraries(juk ${TUNEPIMP_LIBRARIES})
0200 endif(TUNEPIMP_FOUND)
0201 
0202 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0203 
0204 install(TARGETS juk  ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
0205 
0206 ########### install files ###############
0207 
0208 install( PROGRAMS org.kde.juk.desktop  DESTINATION  ${KDE_INSTALL_APPDIR} )
0209 install( FILES jukui.rc jukui-rtl.rc  DESTINATION  ${KDE_INSTALL_KXMLGUI5DIR}/juk )
0210 install(
0211     FILES juk.notifyrc
0212     DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}
0213 )
0214 
0215 install( FILES org.kde.juk.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
0216 install( PROGRAMS jukservicemenu.desktop  DESTINATION ${KDE_INSTALL_DATADIR}/kio/servicemenus )
0217 install( FILES org.kde.juk.collection.xml org.kde.juk.player.xml org.kde.juk.search.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} )
0218 
0219 ki18n_install(po)
0220 kdoctools_install(po)
0221 
0222 ecm_install_icons(ICONS
0223     128-apps-juk.png
0224     16-apps-juk.png
0225     32-apps-juk.png
0226     48-apps-juk.png
0227     64-apps-juk.png
0228     DESTINATION ${KDE_INSTALL_ICONDIR}
0229     THEME hicolor
0230 )