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

0001 # SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0002 #
0003 # SPDX-License-Identifier: LGPL-3.0-or-later
0004 
0005 include_directories(${elisa_BINARY_DIR})
0006 
0007 set(elisaLib_SOURCES
0008     mediaplaylist.cpp
0009     mediaplaylistproxymodel.cpp
0010     progressindicator.cpp
0011     databaseinterface.cpp
0012     datatypes.cpp
0013     musiclistenersmanager.cpp
0014     managemediaplayercontrol.cpp
0015     manageheaderbar.cpp
0016     manageaudioplayer.cpp
0017     trackslistener.cpp
0018     elisaapplication.cpp
0019     modeldataloader.cpp
0020     elisautils.cpp
0021     abstractfile/abstractfilelistener.cpp
0022     abstractfile/abstractfilelisting.cpp
0023     filescanner.cpp
0024     filewriter.cpp
0025     viewmanager.cpp
0026     powermanagementinterface.cpp
0027     file/filelistener.cpp
0028     file/localfilelisting.cpp
0029     models/datamodel.cpp
0030     models/abstractmediaproxymodel.cpp
0031     models/gridviewproxymodel.cpp
0032     models/trackmetadatamodel.cpp
0033     models/editabletrackmetadatamodel.cpp
0034     models/trackcontextmetadatamodel.cpp
0035     models/viewsmodel.cpp
0036     models/viewsproxymodel.cpp
0037     models/lyricsmodel.cpp
0038     viewslistdata.cpp
0039     viewconfigurationdata.cpp
0040     localFileConfiguration/elisaconfigurationdialog.cpp
0041 )
0042 
0043 ecm_qt_declare_logging_category(elisaLib_SOURCES
0044     HEADER "indexersManager.h"
0045     IDENTIFIER "orgKdeElisaIndexersManager"
0046     CATEGORY_NAME "org.kde.elisa.indexers.manager"
0047     DEFAULT_SEVERITY Info
0048     )
0049 
0050 ecm_qt_declare_logging_category(elisaLib_SOURCES
0051     HEADER "databaseLogging.h"
0052     IDENTIFIER "orgKdeElisaDatabase"
0053     CATEGORY_NAME "org.kde.elisa.database"
0054     DEFAULT_SEVERITY Info
0055     )
0056 
0057 ecm_qt_declare_logging_category(elisaLib_SOURCES
0058     HEADER "abstractfile/indexercommon.h"
0059     IDENTIFIER "orgKdeElisaIndexer"
0060     CATEGORY_NAME "org.kde.elisa.indexer"
0061     DEFAULT_SEVERITY Info
0062     )
0063 
0064 ecm_qt_declare_logging_category(elisaLib_SOURCES
0065     HEADER "models/modelLogging.h"
0066     IDENTIFIER "orgKdeElisaModel"
0067     CATEGORY_NAME "org.kde.elisa.model"
0068     DEFAULT_SEVERITY Info
0069     )
0070 
0071 ecm_qt_declare_logging_category(elisaLib_SOURCES
0072     HEADER "playListLogging.h"
0073     IDENTIFIER "orgKdeElisaPlayList"
0074     CATEGORY_NAME "org.kde.elisa.playlist"
0075     DEFAULT_SEVERITY Info
0076     )
0077 
0078 ecm_qt_declare_logging_category(elisaLib_SOURCES
0079     HEADER "viewsLogging.h"
0080     IDENTIFIER "orgKdeElisaViews"
0081     CATEGORY_NAME "org.kde.elisa.views"
0082     DEFAULT_SEVERITY Info
0083     )
0084 
0085 ecm_qt_declare_logging_category(elisaLib_SOURCES
0086     HEADER "playerLogging.h"
0087     IDENTIFIER "orgKdeElisaPlayer"
0088     CATEGORY_NAME "org.kde.elisa.player"
0089     DEFAULT_SEVERITY Info
0090     )
0091 
0092 ecm_qt_declare_logging_category(elisaLib_SOURCES
0093     HEADER "powerManagementLogging.h"
0094     IDENTIFIER "orgKdeElisaPowerManagement"
0095     CATEGORY_NAME "org.kde.elisa.powermanagement"
0096     DEFAULT_SEVERITY Info
0097     )
0098 
0099 if (LIBVLC_FOUND)
0100     ecm_qt_declare_logging_category(elisaLib_SOURCES
0101         HEADER "vlcLogging.h"
0102         IDENTIFIER "orgKdeElisaPlayerVlc"
0103         CATEGORY_NAME "org.kde.elisa.player.vlc"
0104         DEFAULT_SEVERITY Info
0105         )
0106 
0107     set(elisaLib_SOURCES
0108         ${elisaLib_SOURCES}
0109         audiowrapper_libvlc.cpp
0110         )
0111 else()
0112     ecm_qt_declare_logging_category(elisaLib_SOURCES
0113         HEADER "qtMultimediaLogging.h"
0114         IDENTIFIER "orgKdeElisaPlayerQtMultimedia"
0115         CATEGORY_NAME "org.kde.elisa.player.qtMultimedia"
0116         DEFAULT_SEVERITY Info
0117         )
0118 
0119     set(elisaLib_SOURCES
0120         ${elisaLib_SOURCES}
0121         audiowrapper_qtmultimedia.cpp
0122         )
0123 endif()
0124 
0125 if (ANDROID)
0126     ecm_qt_declare_logging_category(elisaLib_SOURCES
0127         HEADER "android/androidcommon.h"
0128         IDENTIFIER "orgKdeElisaAndroid"
0129         CATEGORY_NAME "org.kde.elisa.android"
0130         DEFAULT_SEVERITY Info
0131         )
0132 
0133     set(elisaLib_SOURCES
0134         ${elisaLib_SOURCES}
0135         android/androidmusiclistener.cpp
0136         android/androidfilelisting.cpp
0137         )
0138 endif()
0139 
0140 if (KF6KIO_FOUND)
0141     set(elisaLib_SOURCES
0142         ${elisaLib_SOURCES}
0143         models/filebrowsermodel.cpp
0144         models/filebrowserproxymodel.cpp
0145         )
0146 endif()
0147 
0148 if (Qt6DBus_FOUND)
0149     set(elisaLib_SOURCES
0150         ${elisaLib_SOURCES}
0151         mpris2/mpris2.cpp
0152         mpris2/mediaplayer2.cpp
0153         mpris2/mediaplayer2player.cpp
0154         )
0155 endif()
0156 
0157 if (UPNPQT_FOUND)
0158     set(elisaLib_SOURCES
0159         ${elisaLib_SOURCES}
0160         upnp/upnpcontrolcontentdirectory.cpp
0161         upnp/upnpcontentdirectorymodel.cpp
0162         upnp/upnpcontrolconnectionmanager.cpp
0163         upnp/upnpcontrolmediaserver.cpp
0164         upnp/didlparser.cpp
0165         upnp/upnplistener.cpp
0166         upnp/upnpdiscoverallmusic.cpp
0167         )
0168 endif()
0169 
0170 kconfig_add_kcfg_files(elisaLib_SOURCES ../src/elisa_settings.kcfgc GENERATE_MOC )
0171 set(elisaLib_SOURCES
0172     ${elisaLib_SOURCES}
0173     ../src/elisa_core.kcfg
0174     )
0175 
0176 add_library(elisaLib ${elisaLib_SOURCES})
0177 target_link_libraries(elisaLib
0178     LINK_PUBLIC
0179     Qt::Multimedia
0180     LINK_PRIVATE
0181     Qt::Core Qt::Sql Qt::Widgets Qt::Concurrent Qt::Qml
0182     KF6::I18n KF6::CoreAddons
0183     KF6::ConfigCore KF6::ConfigGui
0184     KF6::ColorScheme)
0185 
0186 if (KF6FileMetaData_FOUND)
0187     target_link_libraries(elisaLib
0188         LINK_PRIVATE
0189         KF6::FileMetaData
0190         )
0191 endif()
0192 
0193 if (KF6KIO_FOUND)
0194     target_link_libraries(elisaLib
0195         LINK_PUBLIC
0196         KF6::KIOCore KF6::KIOFileWidgets KF6::KIOWidgets
0197         )
0198 endif()
0199 
0200 if (KF6XmlGui_FOUND)
0201     target_link_libraries(elisaLib
0202         LINK_PUBLIC
0203         KF6::XmlGui
0204         )
0205 endif()
0206 
0207 if (KF6ConfigWidgets_FOUND)
0208     target_link_libraries(elisaLib
0209         LINK_PUBLIC
0210         KF6::ConfigWidgets
0211         )
0212 endif()
0213 
0214 if (Qt6DBus_FOUND)
0215     target_link_libraries(elisaLib
0216         LINK_PUBLIC
0217         Qt::DBus
0218         )
0219 
0220     if (KF6DBusAddons_FOUND)
0221         target_link_libraries(elisaLib
0222             LINK_PUBLIC
0223             KF6::DBusAddons
0224             )
0225     endif()
0226 endif()
0227 
0228 if (LIBVLC_FOUND)
0229     target_include_directories(elisaLib
0230         PRIVATE
0231         ${LIBVLC_INCLUDE_DIR}
0232         )
0233 
0234     target_link_libraries(elisaLib
0235         LINK_PRIVATE
0236         ${LIBVLC_LIBRARY}
0237         )
0238 endif()
0239 
0240 if (ANDROID)
0241     target_link_libraries(elisaLib
0242         LINK_PUBLIC
0243         Qt::AndroidExtras
0244         )
0245 endif()
0246 
0247 generate_export_header(elisaLib BASE_NAME ElisaLib EXPORT_FILE_NAME elisaLib_export.h)
0248 
0249 set_target_properties(elisaLib PROPERTIES
0250     VERSION 0.1
0251     SOVERSION 0
0252     EXPORT_NAME ElisaLib
0253     )
0254 
0255 if (NOT APPLE AND NOT WIN32)
0256     install(TARGETS elisaLib
0257         LIBRARY DESTINATION ${KDE_INSTALL_FULL_LIBDIR}/elisa NAMELINK_SKIP
0258         RUNTIME DESTINATION ${KDE_INSTALL_FULL_LIBDIR}/elisa
0259         BUNDLE DESTINATION ${KDE_INSTALL_FULL_LIBDIR}/elisa
0260         )
0261 else()
0262     install(TARGETS elisaLib ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0263 endif()
0264 
0265 set(elisaqmlplugin_SOURCES
0266     elisaqmlplugin.cpp
0267     elisautils.cpp
0268     colorschemepreviewimageprovider.cpp
0269 )
0270 
0271 if (KF6FileMetaData_FOUND)
0272     set(elisaqmlplugin_SOURCES
0273         ${elisaqmlplugin_SOURCES}
0274         embeddedcoverageimageprovider.cpp
0275     )
0276 endif()
0277 
0278 add_library(elisaqmlplugin SHARED ${elisaqmlplugin_SOURCES})
0279 target_link_libraries(elisaqmlplugin
0280     LINK_PRIVATE
0281     Qt::Quick Qt::Widgets
0282     KF6::ConfigCore KF6::ConfigGui
0283     elisaLib
0284     )
0285 
0286 if (KF6FileMetaData_FOUND)
0287     target_link_libraries(elisaqmlplugin
0288         LINK_PRIVATE
0289         KF6::FileMetaData
0290         )
0291 endif()
0292 
0293 set_target_properties(elisaqmlplugin PROPERTIES
0294     LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/org/kde/elisa
0295     )
0296 
0297 if (NOT APPLE AND NOT WIN32)
0298     set_target_properties(elisaqmlplugin PROPERTIES
0299         INSTALL_RPATH "${KDE_INSTALL_FULL_LIBDIR}/elisa;${CMAKE_INSTALL_RPATH}"
0300         )
0301 endif()
0302 
0303 install(TARGETS elisaqmlplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/elisa/)
0304 
0305 install(FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/elisa)
0306 
0307 add_custom_target(copy)
0308 add_custom_target(copy2)
0309 
0310 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/org/kde/elisa)
0311 
0312 add_custom_command(TARGET copy PRE_BUILD
0313     COMMAND ${CMAKE_COMMAND} -E
0314     copy ${CMAKE_CURRENT_SOURCE_DIR}/qmldir ${CMAKE_BINARY_DIR}/bin/org/kde/elisa
0315     )
0316 
0317 add_custom_command(TARGET copy2 PRE_BUILD
0318     COMMAND ${CMAKE_COMMAND} -E
0319     copy ${CMAKE_CURRENT_SOURCE_DIR}/plugins.qmltypes ${CMAKE_BINARY_DIR}/bin/org/kde/elisa/
0320     )
0321 
0322 add_dependencies(elisaqmlplugin copy copy2)
0323 
0324 ecm_generate_qmltypes(org.kde.elisa 1.0
0325                       DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/elisa)
0326 
0327 if (Qt6Quick_FOUND AND Qt6Widgets_FOUND)
0328 
0329     set(elisa_SOURCES
0330         main.cpp
0331 
0332         windows/WindowsTheme.qml
0333         windows/PlatformIntegration.qml
0334 
0335         android/PlatformIntegration.qml
0336 
0337         qml/ElisaMainWindow.qml
0338         qml/ApplicationMenu.qml
0339         qml/NativeGlobalMenu.qml
0340         qml/NativeTrayMenu.qml
0341         qml/NativeMenuItemFromAction.qml
0342         qml/BaseTheme.qml
0343         qml/Theme.qml
0344         qml/PlatformIntegration.qml
0345         qml/LabelWithToolTip.qml
0346 
0347         qml/RatingStar.qml
0348         qml/TrackImportNotification.qml
0349         qml/ImageWithFallback.qml
0350 
0351         qml/HeaderBar.qml
0352         qml/NavigationActionBar.qml
0353         qml/SortMenu.qml
0354         qml/MediaPlayerControl.qml
0355         qml/ContextView.qml
0356         qml/ContentView.qml
0357         qml/ViewSelector.qml
0358         qml/AbstractDataView.qml
0359         qml/DataGridView.qml
0360         qml/DataListView.qml
0361         qml/DurationSlider.qml
0362         qml/VolumeSlider.qml
0363 
0364         qml/MediaPlayListView.qml
0365         qml/PlayListEntry.qml
0366         qml/SimplePlayListView.qml
0367         qml/BasicPlayListAlbumHeader.qml
0368 
0369         qml/MediaTrackMetadataDelegate.qml
0370         qml/MediaTrackMetadataForm.qml
0371         qml/TracksDiscHeader.qml
0372         qml/MediaTrackMetadataView.qml
0373         qml/GridBrowserDelegate.qml
0374         qml/ListBrowserDelegate.qml
0375         qml/FlatButtonWithToolTip.qml
0376         qml/HeaderFooterToolbar.qml
0377 
0378         qml/SettingsForm.qml
0379         qml/ElisaConfigurationDialog.qml
0380 
0381         qml/mobile/MobileFooterBar.qml
0382         qml/mobile/MobileMediaTrackMetadataView.qml
0383         qml/mobile/MobileMinimizedPlayerControl.qml
0384         qml/mobile/MobilePlayListDelegate.qml
0385         qml/mobile/MobileSettingsPage.qml
0386         qml/mobile/MobileSidebar.qml
0387         qml/mobile/MobileTrackPlayer.qml
0388         qml/mobile/MobileVolumeButton.qml
0389     )
0390 
0391     qt_add_resources(elisa_SOURCES resources.qrc)
0392     set_property(SOURCE qrc_resources.cpp PROPERTY SKIP_AUTOMOC ON)
0393 
0394     set(elisa_ICONS_PNG
0395         ../icons/128-apps-elisa.png
0396         ../icons/64-apps-elisa.png
0397         ../icons/48-apps-elisa.png
0398         ../icons/32-apps-elisa.png
0399         ../icons/22-apps-elisa.png
0400         ../icons/16-apps-elisa.png
0401         )
0402 
0403     # add icons to application sources, to have them bundled
0404     ecm_add_app_icon(elisa_SOURCES ICONS ${elisa_ICONS_PNG})
0405 
0406     add_executable(elisa ${elisa_SOURCES})
0407 
0408     target_include_directories(elisa PRIVATE ${KDSoap_INCLUDE_DIRS})
0409 
0410     target_link_libraries(elisa
0411         LINK_PRIVATE
0412         elisaLib
0413         Qt::Widgets Qt::QuickControls2
0414         KF6::I18n KF6::CoreAddons KF6::ConfigCore KF6::ConfigGui
0415         KF6::IconThemes
0416         )
0417 
0418     if (ANDROID)
0419         target_link_libraries(elisa
0420             PRIVATE
0421             Qt::AndroidExtras Qt::Svg Qt::Sql Qt::Concurrent KF6::Kirigami
0422         )
0423     endif()
0424 
0425     if (KF6Crash_FOUND)
0426         target_link_libraries(elisa
0427             LINK_PRIVATE
0428             KF6::Crash
0429             )
0430     endif()
0431 
0432     if (NOT APPLE AND NOT WIN32)
0433         set_target_properties(elisa PROPERTIES
0434             INSTALL_RPATH "${KDE_INSTALL_FULL_LIBDIR}/elisa;${CMAKE_INSTALL_RPATH}"
0435             )
0436     endif()
0437 
0438     install(TARGETS elisa ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0439 endif()
0440 
0441 set(elisaImport_SOURCES
0442     elisaimport.cpp
0443     elisaimportapplication.cpp
0444     )
0445 
0446 add_executable(elisaImport ${elisaImport_SOURCES})
0447 
0448 target_link_libraries(elisaImport
0449     LINK_PRIVATE
0450     KF6::ConfigCore KF6::ConfigGui
0451     elisaLib
0452     )
0453 
0454 if (KF6FileMetaData_FOUND)
0455     target_link_libraries(elisaImport
0456         LINK_PRIVATE
0457         KF6::FileMetaData
0458         )
0459 endif()
0460 
0461 set(QML_IMPORT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "qml import path" FORCE)
0462 
0463 if (ANDROID)
0464     kirigami_package_breeze_icons(ICONS
0465         elisa
0466         open-menu-symbolic
0467         system-search
0468         overflow-menu
0469         draw-arrow-down
0470         draw-arrow-up
0471         media-playback-pause
0472         media-playback-start
0473         dialog-close
0474         arrow-down
0475         view-media-playlist
0476         view-media-artist
0477         view-right-close
0478         view-refresh
0479         view-media-track
0480         view-media-album-cover
0481         view-media-lyrics
0482         view-media-playcount
0483         view-media-genre
0484         dialog-ok-apply
0485         dialog-cancel
0486         help-about
0487         list-add
0488         view-more-symbolic
0489         edit-redo
0490         media-track-show-active
0491         document-save
0492         document-open
0493         document-edit
0494         document-open-folder
0495         edit-clear-all
0496         edit-clear
0497         media-skip-forward
0498         media-skip-backward
0499         media-playlist-shuffle
0500         media-playlist-normal
0501         media-playlist-play
0502         media-repeat-none
0503         media-repeat-single
0504         media-repeat-all
0505         media-default-album
0506         player-volume-muted
0507         player-volume
0508         delete
0509         go-next
0510         go-previous
0511         search
0512         error
0513         documentinfo
0514         folder
0515         radio
0516         rating-unrated
0517         rating
0518         media-playback-playing
0519         media-playback-paused
0520         settings-configure
0521     )
0522 endif()