make PlaylistModel observe albums for changes to the cover image (needed for services...
[amarok.git] / src / CMakeLists.txt
blob3d6e9906307c43fe35d2edf24697abc4d75e8ceb
2 FIND_PATH( KONQSIDEBAR_INCLUDE_DIR konqsidebarplugin.h
3   ${KDE4_INCLUDE_DIR}
4   /usr/include
5   /usr/local/include
8 MESSAGE(STATUS "reactivate konquesidebar when it is ported")
9 #if(KONQSIDEBAR_INCLUDE_DIR)
10 #   add_subdirectory( konquisidebar ) #disabling for now
11 #else(KONQSIDEBAR_INCLUDE_DIR)
12 #    MESSAGE(STATUS "You're missing the kdebase header files")
13 #    MESSAGE(STATUS "Konqueror sidebar will not be compiled.")
14 #endif(KONQSIDEBAR_INCLUDE_DIR)
16 ADD_DEFINITIONS(${TAGLIB_CFLAGS})
18 if(MP4V2_FOUND)
19     ADD_DEFINITIONS(-DHAVE_MP4V2)
20     include_directories( ${MP4V2_INCLUDE_DIR} )
21 endif(MP4V2_FOUND)
23 if(APPLE)
24     set(mac_SRCS app_mac.cpp)
25 endif(APPLE)
27 add_subdirectory( amarokcore )
28 add_subdirectory( data )
29 add_subdirectory( images )
30 add_subdirectory( scripts )
31 add_subdirectory( themes )
32 add_subdirectory( vis )
33 add_subdirectory( metadata )
34 add_subdirectory( engine )
35 add_subdirectory( mediadevice )
36 add_subdirectory( collectionscanner )
37 add_subdirectory( collection )
38 add_subdirectory( portabledevices )
39 add_subdirectory( podcasts )
40 add_subdirectory( strigi )
41 add_subdirectory( playlistbrowser )
42 add_subdirectory( context )
43 add_subdirectory( playlistmanager )
44 #add_subdirectory( device ) #not necessary at the moment, enable again when devicemanager has been ported to Solid
46 OPTION(USE_SYSTEM_SQLITE "Use system sqlite instead of amarok's own copy" OFF)
48 if (USE_SYSTEM_SQLITE)
49     find_package(Sqlite REQUIRED)
50     set(libsqlite_SRCS )
51 else (USE_SYSTEM_SQLITE)
52     # Use our own copy
53     set(libsqlite_SRCS sqlite/sqlite3.c)
54 endif (USE_SYSTEM_SQLITE)
57 include_directories(
58     amarokcore
59     analyzers
60         context
61         context/widgets
62         configdialog
63         configdialog/dialogs
64     plugin
65     statusbar
66     mediadevice
67     portabledevices
68     servicebrowser
69     #servicebrowser/magnatunestore
70     ${CMAKE_CURRENT_SOURCE_DIR}
71     meta
72     collection
73     podcasts
74     widgets
75     playlistbrowser
76     ${CMAKE_CURRENT_BINARY_DIR} #for amarokconfig.h
77     ${KDE4_INCLUDE_DIR}
78     ${TAGLIB_INCLUDE_DIR}
79     ${QT_INCLUDES}
83 set(libamarokcore_SRCS
84     amarokcore/amarokdbushandler.cpp
85     amarokcore/crashhandler.cpp
88 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.collection.xml amarokcore/amarokdbushandler.h Amarok::DbusCollectionHandler)
89 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.mediabrowser.xml amarokcore/amarokdbushandler.h Amarok::DbusMediaBrowserHandler)
90 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.player.xml amarokcore/amarokdbushandler.h Amarok::DbusPlayerHandler)
91 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.playlist.xml amarokcore/amarokdbushandler.h Amarok::DbusPlaylistHandler)
92 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.playlistbrowse.xml amarokcore/amarokdbushandler.h Amarok::DbusPlaylistBrowserHandler)
93 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.script.xml amarokcore/amarokdbushandler.h Amarok::DbusScriptHandler)
94 qt4_add_dbus_adaptor( libamarokcore_SRCS amarokcore/org.kde.amarok.context.xml amarokcore/amarokdbushandler.h Amarok::DbusContextHandler)
96 #####################################################################
97 # PLUGIN
98 #####################################################################
99 set(libplugin_SRCS
100     plugin/plugin.cpp
101     plugin/pluginconfig.cpp
104 #####################################################################
105 # SERVICEBROWSER
106 #####################################################################
107 set(libservicebrowser_SRCS
108     servicebrowser/servicebrowser.cpp
109     servicebrowser/servicebase.cpp
110     servicebrowser/servicemetabase.cpp
111     servicebrowser/servicecollection.cpp
112     servicebrowser/servicesqlquerymaker.cpp
113     servicebrowser/servicesqlcollection.cpp
114     servicebrowser/infoparserbase.cpp
115     servicebrowser/ServiceSqlRegistry.cpp
116     servicebrowser/ServiceAlbumCoverDownloader.cpp
117     servicebrowser/ServiceInfoProxy.cpp
121 #####################################################################
122 # SCRIPTABLESERVICE
123 #####################################################################
124 set(libscriptableservice_SRCS
125     servicebrowser/scriptableservice/scriptableservicemanager.cpp
126     servicebrowser/scriptableservice/ScriptableServiceInfoParser.cpp
127     servicebrowser/scriptableservice/scriptableservice.cpp
128     servicebrowser/scriptableservice/ScriptableServiceCollection.cpp
131 #####################################################################
132 # JAMENDOSERVICE
133 #####################################################################
134 set(libjamendoservice_SRCS
135     servicebrowser/jamendo/jamendoservice.cpp
136     servicebrowser/jamendo/JamendoMeta.cpp
137     servicebrowser/jamendo/jamendodatabasehandler.cpp
138     servicebrowser/jamendo/jamendoxmlparser.cpp
139     servicebrowser/jamendo/JamendoInfoParser.cpp
142 #####################################################################
143 # MP3TUNESERVICE
144 #####################################################################
145 set(libmp3tunesservice_SRCS
146     servicebrowser/mp3tunes/mp3tunesservice.cpp
147     servicebrowser/mp3tunes/mp3tunesdatafetcher.cpp
150 qt4_add_dbus_adaptor( libscriptableservice_SRCS servicebrowser/scriptableservice/org.kde.amarok.ScriptableServiceManager.xml servicebrowser/scriptableservice/scriptableservicemanager.h ScriptableServiceManager)
152 #####################################################################
153 # CONFIGDIALOG
154 #####################################################################
155 set(libconfigdialog_SRCS
156     configdialog/ConfigDialog.cpp
157     configdialog/ConfigDialogBase.cpp
158     configdialog/dialogs/AppearanceConfig.cpp
159     configdialog/dialogs/CollectionConfig.cpp
160     configdialog/dialogs/EngineConfig.cpp
161     configdialog/dialogs/GeneralConfig.cpp
162     configdialog/dialogs/LastfmConfig.cpp
163     configdialog/dialogs/MediadeviceConfig.cpp
164     configdialog/dialogs/OsdConfig.cpp
165     configdialog/dialogs/PlaybackConfig.cpp
168 kde4_add_ui_files(libconfigdialog_SRCS
169     configdialog/dialogs/AppearanceConfig.ui
170     configdialog/dialogs/CollectionConfig.ui
171     configdialog/dialogs/GeneralConfig.ui
172     configdialog/dialogs/LastfmConfig.ui
173     configdialog/dialogs/OsdConfig.ui
174     configdialog/dialogs/PlaybackConfig.ui
177 #####################################################################
178 # MAGNATUNESTORE
179 #####################################################################
180 set(libmagnatunestore_SRCS
181     servicebrowser/magnatunestore/magnatuneinfoparser.cpp
182     servicebrowser/magnatunestore/MagnatuneStore.cpp
183     servicebrowser/magnatunestore/magnatunedownloaddialog.cpp
184     servicebrowser/magnatunestore/magnatunepurchasedialog.cpp
185     servicebrowser/magnatunestore/magnatunepurchasehandler.cpp
186     #servicebrowser/magnatunestore/magnatunetypes.cpp
187         servicebrowser/magnatunestore/MagnatuneMeta.cpp
188     servicebrowser/magnatunestore/magnatunexmlparser.cpp
189     servicebrowser/magnatunestore/magnatunedatabasehandler.cpp
190     #servicebrowser/magnatunestore/magnatuneredownloaddialog.cpp
191     #servicebrowser/magnatunestore/magnatuneredownloadhandler.cpp
192     servicebrowser/magnatunestore/magnatunedownloadinfo.cpp
193     servicebrowser/magnatunestore/magnatunealbumdownloader.cpp
196 kde4_add_ui3_files(libmagnatunestore_SRCS
197     servicebrowser/magnatunestore/magnatunedownloaddialogbase.ui
198     #servicebrowser/magnatunestore/magnatunepurchasedialogbase.ui
199     servicebrowser/magnatunestore/magnatuneredownloaddialogbase.ui
202 kde4_add_ui_files(libconfigdialog_SRCS
203     servicebrowser/magnatunestore/magnatunepurchasedialogbase.ui
206 #####################################################################
207 # COLLECTIONBROWSER
208 #####################################################################
209 set(libcollectionbrowser_SRCS
210     collectionbrowser/collectiontreeview.cpp
211     collectionbrowser/CollectionTreeItemModelBase.cpp
212     collectionbrowser/collectiontreeitemmodel.cpp
213     collectionbrowser/singlecollectiontreeitemmodel.cpp
214     collectionbrowser/collectionsortfilterproxymodel.cpp
215     collectionbrowser/collectiontreeitem.cpp
216     collectionbrowser/CollectionWidget.cpp
219 #####################################################################
220 # ANALYZERS
221 #####################################################################
222 set(libanalyzers_SRCS
223     analyzers/analyzerbase.cpp
224     analyzers/analyzerfactory.cpp
225     analyzers/baranalyzer.cpp
226     analyzers/blockanalyzer.cpp
227     analyzers/glanalyzer.cpp
228     analyzers/glanalyzer2.cpp
229     analyzers/glanalyzer3.cpp
230     analyzers/sonogram.cpp
231 #    analyzers/turbine.cpp
232 #analyzers/boomanalyzer.cpp
235 #####################################################################
236 # STATUSBAR
237 #####################################################################
238 set(libstatusbar_SRCS
239     statusbar/statusBarBase.cpp
240     statusbar/statusbar.cpp
241     statusbar/overlayWidget.cpp
242     statusbar/popupMessage.cpp
243     statusbar/progressBar.cpp
244 #    statusbar/squeezedtextlabel.cpp
245     statusbar/queueLabel.cpp
246     statusbar/selectLabel.cpp
249 #####################################################################
250 # LAST.FM
251 #####################################################################
252 set(lastfm_SRCS
253     meta/lastfm/LastFmMeta.cpp
256 #####################################################################
257 # META
258 #####################################################################
259 set(meta_SRCS
260     meta/meta.cpp
261     meta/proxy/MetaProxy.cpp
262     meta/file/File.cpp
263     meta/stream/Stream.cpp
264     meta/PlaylistFileSupport.cpp
265     meta/MetaUtility.cpp
268 #####################################################################
269 # COLLECTION
270 #####################################################################
271 set(collection_SRCS
272     collection/BlockingQuery.cpp
273     collection/Collection.cpp
274     collection/CollectionManager.cpp
275     collection/CollectionLocation.cpp
276     collection/MetaQueryBuilder.cpp
277     collection/QueryMaker.cpp
278     collection/support/MemoryQueryMaker.cpp
281 #####################################################################
282 # CONTEXT
283 #####################################################################
286 set( libcontextview_SRCS
287     context/Applet.cpp
288     context/ColumnApplet.cpp
289     context/ContextView.cpp
290     context/ContextObserver.cpp
291     context/ContextScene.cpp
292     context/ControlBox.cpp
293     context/CoverBling.cpp
294     context/DataEngineManager.cpp
295     context/LyricsManager.cpp
296     context/Svg.cpp
297     context/widgets/TextWidget.cpp
298     context/widgets/VBoxLayout.cpp
301 #####################################################################
302 # PODCASTS
303 #####################################################################
304 set(libpodcasts_SRCS
305     podcasts/PodcastCollection.cpp
306     podcasts/PodcastReader.cpp
309 #####################################################################
310 # PLAYLISTBROWSER
311 #####################################################################
312 set(libplaylistbrowser_SRCS
313     playlistbrowser/PlaylistBrowser.cpp
314     playlistbrowser/PodcastModel.cpp
317 #####################################################################
318 # QUEUEMANAGER
319 #####################################################################
320 set(libqueuemanager_SRCS
321     queuemanager/QueueManager.cpp
322     queuemanager/QueueModel.cpp
325 #####################################################################
326 # PLAYLISTMANAGER
327 #####################################################################
328 set(libplaylistmanager_SRCS
329     playlistmanager/PlaylistManager.cpp
332 #####################################################################
333 # LIBAMAROK
334 #####################################################################
335 set(amaroklib_LIB_SRCS
336     ${libmagnatunestore_SRCS}
337     #${libmp3tunesservice_SRCS}
338     ${libscriptableservice_SRCS}
339     ${libamarokcore_SRCS}
340     ${libanalyzers_SRCS}
341     ${libcontextview_SRCS}
342     ${libcollectionbrowser_SRCS}
343     ${libconfigdialog_SRCS}
344     ${libjamendoservice_SRCS}
345     ${libplugin_SRCS}
346     ${libpodcasts_SRCS}
347     ${libservicebrowser_SRCS}
348     ${libsqlite_SRCS}
349     ${libstatusbar_SRCS}
350     ${lastfm_SRCS}
351     ${meta_SRCS}
352     ${collection_SRCS}
353     ${mac_SRCS}
354     ${libplaylistbrowser_SRCS}
355     ${libqueuemanager_SRCS}
356     ${libplaylistmanager_SRCS}
357     actionclasses.cpp
358     AmarokMimeData.cpp
359     app.cpp
360     atomicstring.cpp
361     collectiondb.cpp
362     columnlist.cpp
363     coverfetcher.cpp
364     covermanager.cpp
365     cuefile.cpp
366     dbsetup.ui.h
367     deletedialog.cpp
368     deviceconfiguredialog.cpp
369     directorylist.cpp
370     dynamicmode.cpp
371     editfilterdialog.cpp
372     enginebase.cpp
373     enginecontroller.cpp
374     engineobserver.cpp
375     equalizergraph.cpp
376     equalizerpresetmanager.cpp
377     equalizersetup.cpp
378     expression.cpp
379     fht.cpp
380     filebrowser.cpp
381     hintlineedit.cpp
382     iconloader.cpp
383     k3bexporter.cpp
384     kbookmarkhandler.cpp
385     ktrm.cpp
386     lastfm.cpp
387     MainWindow.cpp
388     mediabrowser.cpp
389     MediaItem.cpp
390     medium.cpp
391     metabundle.cpp
392     metabundlesaver.cpp
393     moodbar.cpp
394     mountpointmanager.cpp
395     mydiroperator.cpp
396     osd.cpp
397     pixmapviewer.cpp
398     playlist/PlaylistHeader.cpp
399     playlist/PlaylistItem.cpp
400     playlist/PlaylistModel.cpp
401     playlist/PlaylistWidget.cpp
402     playlist/StandardTrackAdvancer.cpp
403     playlist/TrackAdvancer.cpp
404     playlist/UndoCommands.cpp
405     playlist/PlaylistGraphicsItem.cpp
406     playlist/PlaylistGraphicsView.cpp
407     playlist.cpp
408     playlistbrowser.cpp
409     playlistbrowseritem.cpp
410     playlistitem.cpp
411     playlistloader.cpp
412     playlistselection.cpp
413     pluginmanager.cpp
414     podcastsettings.cpp
415     portabledevices/SolidHandler.cpp
416     prettypopupmenu.cpp
417     querybuilder.cpp
418     queuemanager.cpp
419     refreshimages.cpp
420     scancontroller.cpp
421     scriptmanager.cpp
422     scrobbler.cpp
423     sidebar.h
424     smartplaylisteditor.cpp
425     socketserver.cpp
426     StarManager.cpp
427     statistics.cpp
428     systray.cpp
429     tagdialog.cpp
430     tagguesser.cpp
431     threadmanager.cpp
432     tooltip.cpp
433     trackpickerdialog.cpp
434     tracktooltip.cpp
435     transferdialog.cpp
436     widgets/analyzerwidget.cpp
437     widgets/progressslider.cpp
438     widgets/searchwidget.cpp
439     widgets/sidebarwidget.cpp
440     widgets/sliderwidget.cpp
441     widgets/volumewidget.cpp
442     xmlloader.cpp
443     xspfplaylist.cpp
447 set( amaroklib_DEPENDS "amarokplasma" )
449 kde4_add_kcfg_files(amaroklib_LIB_SRCS amarokcore/amarokconfig.kcfgc)
451 kde4_add_ui3_files(amaroklib_LIB_SRCS
452    dbsetup.ui
453 #   firstrunwizard.ui
454    newdynamic.ui
455    collectionbrowser/OrganizeCollectionDialog.ui
456    podcastsettingsbase.ui
457    tagdialogbase.ui
458 #   tagguesserconfigdialog.ui
459    trackpickerdialogbase.ui
462 kde4_add_ui_files(amaroklib_LIB_SRCS
463     deletedialogbase.ui
464     scriptmanagerbase.ui
465     tagguesserconfigdialog.ui
468 kde4_add_library(amaroklib SHARED ${amaroklib_LIB_SRCS})
470 target_link_libraries(amaroklib
471     ${KDE4_KUTILS_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KHTML_LIBS} ${KDE4_KNEWSTUFF_LIBS}
472     ${TAGLIB_LIBRARIES}
473     ${KDE4_KFILE_LIBS}
474     ${KDE4_KDE3SUPPORT_LIBS}
475     ${KDE4_THREADWEAVER_LIBRARIES}
476     ${QT_QTOPENGL_LIBRARY}
477     ${OPENGL_gl_LIBRARY}
478     ${OPENGL_glu_LIBRARY}
479     amarok_taglib
480     amarokplasma
483 if(NOT WIN32)
484     target_link_libraries(amaroklib dl)
485 endif(NOT WIN32)
487 if(USE_SYSTEM_SQLITE)
488     target_link_libraries(amaroklib ${SQLITE_LIBRARIES})
489 endif(USE_SYSTEM_SQLITE)
491 set_target_properties(amaroklib PROPERTIES VERSION 1.0.0 SOVERSION 1 )
492 install(TARGETS amaroklib DESTINATION ${LIB_INSTALL_DIR} )
495 #####################################################################
496 # AMAROK
497 #####################################################################
499 set(amarok_SRCS main.cpp )
501 if(Q_WS_MAC)
502     kde4_add_executable(Amarok ${amarok_SRCS})
503     target_link_libraries(Amarok ${KDE4_KDECORE_LIBS} amaroklib )
504     install(TARGETS Amarok DESTINATION ${BIN_INSTALL_DIR})
506 else(Q_WS_MAC)
508     kde4_add_executable(amarok ${amarok_SRCS})
509     target_link_libraries(amarok ${KDE4_KDECORE_LIBS} amaroklib )
510     install(TARGETS amarok DESTINATION ${BIN_INSTALL_DIR})
511 endif(Q_WS_MAC)
514 ########### install files ###############
516 install(FILES amarok.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
517 install(FILES amarok.profile.xml DESTINATION ${DATA_INSTALL_DIR}/profiles )
518 install(FILES amarokrc DESTINATION ${CONFIG_INSTALL_DIR})
519 install(FILES amarok_plugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR})
520 install(FILES amarokui.rc DESTINATION ${DATA_INSTALL_DIR}/amarok)
521 install(FILES amarok_append.desktop DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus)
523 install(FILES context/servicetypes/amarok_context_applet.desktop
524               context/servicetypes/amarok_data_engine.desktop
525               DESTINATION ${SERVICETYPES_INSTALL_DIR} )
527 kde4_install_icons( ${ICON_INSTALL_DIR} )