From 082716e9c937628dfcf9d51bb88c59c014e2f765 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Wed, 10 Aug 2011 16:23:32 +0100 Subject: [PATCH] Don't try to compile audio CD support if libcdio isn't installed. --- CMakeLists.txt | 6 ++++++ src/CMakeLists.txt | 24 ++++++++++++++++++------ src/config.h.in | 1 + src/core/songloader.cpp | 12 ++++++++++-- src/devices/devicemanager.cpp | 25 ++++++++++++++++++++----- 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e4ed90a09..11d4a92ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,6 +185,7 @@ option(ENABLE_LIBGPOD "iPod classic support" ON) option(ENABLE_IMOBILEDEVICE "iPod Touch, iPhone, iPad support" ON) option(ENABLE_LIBMTP "MTP support" ON) option(ENABLE_GIO "GIO backend" ON) +option(ENABLE_AUDIOCD "Audio CD support" ON) option(ENABLE_VISUALISATIONS "Use libprojectm visualisations" ON) option(BUNDLE_PROJECTM_PRESETS "Install Clementine's own copies of libprojectm presets - disable this if you want to use a system package instead" ON) option(ENABLE_SOUNDMENU "Add Clementine to the Gnome sound menu" ON) @@ -207,6 +208,10 @@ if(ENABLE_GIO AND GIO_FOUND AND NOT APPLE) set(HAVE_GIO ON) endif(ENABLE_GIO AND GIO_FOUND AND NOT APPLE) +if(ENABLE_AUDIOCD AND CDIO_FOUND) + set(HAVE_AUDIOCD ON) +endif(ENABLE_AUDIOCD AND CDIO_FOUND) + if(ENABLE_IMOBILEDEVICE AND IMOBILEDEVICE_FOUND AND PLIST_FOUND AND HAVE_LIBGPOD AND USBMUXD_FOUND) set(HAVE_IMOBILEDEVICE ON) endif(ENABLE_IMOBILEDEVICE AND IMOBILEDEVICE_FOUND AND PLIST_FOUND AND HAVE_LIBGPOD AND USBMUXD_FOUND) @@ -396,6 +401,7 @@ add_custom_target(uninstall # Show a summary of what we have enabled summary_add("Crash reporting" HAVE_BREAKPAD) summary_add("D-Bus support" HAVE_DBUS) +summary_add("Devices: Audio CD support" HAVE_AUDIOCD) summary_add("Devices: DeviceKit backend" HAVE_DEVICEKIT) summary_add("Devices: iPod classic support" HAVE_LIBGPOD) summary_add("Devices: iPod Touch, iPhone, iPad support" HAVE_IMOBILEDEVICE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8b1e920ca..b45f5d659 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -101,8 +101,6 @@ set(SOURCES covers/coversearchstatisticsdialog.cpp covers/kittenloader.cpp - devices/cddalister.cpp - devices/cddadevice.cpp devices/connecteddevice.cpp devices/devicedatabasebackend.cpp devices/devicelister.cpp @@ -327,8 +325,6 @@ set(HEADERS covers/coversearchstatisticsdialog.h covers/kittenloader.h - devices/cddalister.h - devices/cddadevice.h devices/connecteddevice.h devices/devicedatabasebackend.h devices/devicelister.h @@ -776,6 +772,15 @@ if(HAVE_GIO) list(APPEND HEADERS devices/giolister.h) endif(HAVE_GIO) +# CDIO backend and device +if(HAVE_AUDIOCD) + list(APPEND SOURCES devices/cddadevice.cpp) + list(APPEND SOURCES devices/cddalister.cpp) + + list(APPEND HEADERS devices/cddadevice.h) + list(APPEND HEADERS devices/cddalister.h) +endif(HAVE_AUDIOCD) + # libimobiledevice backend and device if(HAVE_IMOBILEDEVICE) include_directories(${IMOBILEDEVICE_INCLUDE_DIRS}) @@ -870,6 +875,10 @@ list(APPEND OTHER_SOURCES devices/afcfile.h devices/afctransfer.cpp devices/afctransfer.h + devices/cddadevice.cpp + devices/cddadevice.h + devices/cddalister.cpp + devices/cddalister.h devices/devicekitlister.h devices/devicekitlister.cpp devices/gpoddevice.cpp @@ -967,13 +976,11 @@ target_link_libraries(clementine_lib ${GSTREAMER_BASE_LIBRARIES} ${GSTREAMER_LIBRARIES} ${GSTREAMER_APP_LIBRARIES} - ${GSTREAMER_CDDA_LIBRARIES} ${GSTREAMER_TAG_LIBRARIES} ${QTSINGLEAPPLICATION_LIBRARIES} ${QTSINGLECOREAPPLICATION_LIBRARIES} ${QTIOCOMPRESSOR_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} - ${CDIO_LIBRARIES} dl z ) @@ -994,6 +1001,11 @@ if(HAVE_GIO) target_link_libraries(clementine_lib ${GIO_LIBRARIES}) endif(HAVE_GIO) +if(HAVE_AUDIOCD) + target_link_libraries(clementine_lib ${CDIO_LIBRARIES}) + target_link_libraries(clementine_lib ${GSTREAMER_CDDA_LIBRARIES}) +endif(HAVE_AUDIOCD) + if(HAVE_LIBARCHIVE) target_link_libraries(clementine_lib ${ARCHIVE_LIBRARIES}) endif(HAVE_LIBARCHIVE) diff --git a/src/config.h.in b/src/config.h.in index 8c830cbfd..373cba287 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -21,6 +21,7 @@ #define CMAKE_EXECUTABLE_SUFFIX "${CMAKE_EXECUTABLE_SUFFIX}" #cmakedefine ENABLE_VISUALISATIONS +#cmakedefine HAVE_AUDIOCD #cmakedefine HAVE_BREAKPAD #cmakedefine HAVE_DBUS #cmakedefine HAVE_DEVICEKIT diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 7fc9d0ac5..15c24ffdf 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -15,6 +15,7 @@ along with Clementine. If not, see . */ +#include "config.h" #include "songloader.h" #include "core/logging.h" #include "core/song.h" @@ -35,7 +36,10 @@ #include -#include +#ifdef HAVE_AUDIOCD +# include +#endif + QSet SongLoader::sRawUriSchemes; const int SongLoader::kDefaultTimeout = 5000; @@ -102,6 +106,7 @@ SongLoader::Result SongLoader::LoadLocalPartial(const QString& filename) { } SongLoader::Result SongLoader::LoadAudioCD() { +#ifdef HAVE_AUDIOCD // Create gstreamer cdda element GstElement* cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL); if (cdda == NULL) { @@ -176,7 +181,10 @@ SongLoader::Result SongLoader::LoadAudioCD() { gst_object_unref(GST_OBJECT(msg)); gst_object_unref(GST_OBJECT(tags)); - return Success; + return Success; +#else // HAVE_AUDIOCD + return Error; +#endif } void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album, diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index ff1958041..77a8e3925 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -27,8 +27,10 @@ #include "core/utilities.h" #include "ui/iconloader.h" -#include "cddalister.h" -#include "cddadevice.h" +#ifdef HAVE_AUDIOCD +# include "cddalister.h" +# include "cddadevice.h" +#endif #ifdef Q_OS_DARWIN # include "macdevicelister.h" @@ -186,7 +188,9 @@ DeviceManager::DeviceManager(BackgroundThread* database, connected_devices_model_ = new DeviceStateFilterModel(this); connected_devices_model_->setSourceModel(this); +#ifdef HAVE_AUDIOCD AddLister(new CddaLister); +#endif #ifdef HAVE_DEVICEKIT AddLister(new DeviceKitLister); #endif @@ -205,9 +209,12 @@ DeviceManager::DeviceManager(BackgroundThread* database, AddDeviceClass(); #endif - AddDeviceClass(); AddDeviceClass(); +#ifdef HAVE_AUDIOCD + AddDeviceClass(); +#endif + #ifdef HAVE_LIBGPOD AddDeviceClass(); #endif @@ -310,8 +317,16 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { if (!info.device_) { if (info.database_id_ == -1 && !info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { - // Don't ask user if it is a CD device - if (info.device_ && !dynamic_cast(info.device_.get())) { + + bool prompt_connect = info.device_; + + #ifdef HAVE_AUDIOCD + // Don't ask user if it is a CD device + prompt_connect = prompt_connect && + !dynamic_cast(info.device_.get()); + #endif + + if (prompt_connect) { boost::scoped_ptr dialog(new QMessageBox( QMessageBox::Information, tr("Connect device"), tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."),