diff --git a/CMakeLists.txt b/CMakeLists.txt
index 423390e6a..67b6e91ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -124,7 +124,16 @@ endif(NOT GETTEXT_XGETTEXT_EXECUTABLE)
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)
if(ENABLE_VISUALISATIONS)
- add_subdirectory(3rdparty/libprojectm)
+ # When/if upstream accepts our patches then these options can be used to link
+ # to system installed 3rdparty libraries instead.
+ option(USE_SYSTEM_PROJECTM "Don't set this option unless your system projectM library has been compiled with the Clementine patches in 3rdparty" OFF)
+ if(USE_SYSTEM_PROJECTM)
+ pkg_check_modules(LIBPROJECTM projectM)
+ else(USE_SYSTEM_PROJECTM)
+ add_subdirectory(3rdparty/libprojectm)
+ set(LIBPROJECTM_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/libprojectm)
+ set(LIBPROJECTM_LIBRARIES projectM)
+ endif(USE_SYSTEM_PROJECTM)
endif(ENABLE_VISUALISATIONS)
# Test whether libsqlite3 is available and if FTS3 is enabled in it
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f5911a830..a1005a62a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -10,11 +10,11 @@ include_directories(../3rdparty/qtsingleapplication)
include_directories(../3rdparty/qtiocompressor)
include_directories(../3rdparty/qtwin)
include_directories(../3rdparty/qxt)
-include_directories(../3rdparty/libprojectm)
-include_directories(${GLIB_INCLUDE_DIRECTORIES})
-include_directories(${LIBXML_INCLUDE_DIRECTORIES})
-include_directories(${GOBJECT_INCLUDE_DIRECTORIES})
+include_directories(${GLIB_INCLUDE_DIRS})
+include_directories(${LIBXML_INCLUDE_DIRS})
+include_directories(${GOBJECT_INCLUDE_DIRS})
+include_directories(${LIBPROJECTM_INCLUDE_DIRS})
cmake_policy(SET CMP0011 NEW)
include(../cmake/AddEngine.cmake)
@@ -530,7 +530,7 @@ target_link_libraries(clementine_lib
)
if(ENABLE_VISUALISATIONS)
- target_link_libraries(clementine_lib projectM)
+ target_link_libraries(clementine_lib ${LIBPROJECTM_LIBRARIES})
endif(ENABLE_VISUALISATIONS)
if(HAVE_LIBGPOD)
diff --git a/src/config.h.in b/src/config.h.in
index 99d534021..874c9440d 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -27,6 +27,7 @@
#cmakedefine ENABLE_VISUALISATIONS
#cmakedefine VISUALISATIONS_USE_INSTALL_PREFIX
+#cmakedefine USE_SYSTEM_PROJECTM
#cmakedefine SNOW_LEOPARD
#cmakedefine LEOPARD
diff --git a/src/visualisations/projectmpresetmodel.cpp b/src/visualisations/projectmpresetmodel.cpp
index 0dc1f88a1..74398015a 100644
--- a/src/visualisations/projectmpresetmodel.cpp
+++ b/src/visualisations/projectmpresetmodel.cpp
@@ -14,10 +14,15 @@
along with Clementine. If not, see .
*/
+#include "config.h"
#include "projectmpresetmodel.h"
#include "projectmvisualisation.h"
-#include
+#ifdef USE_SYSTEM_PROJECTM
+# include
+#else
+# include "projectM.hpp"
+#endif
#include
#include
diff --git a/src/visualisations/projectmvisualisation.cpp b/src/visualisations/projectmvisualisation.cpp
index bac3cf08f..2fdae7c37 100644
--- a/src/visualisations/projectmvisualisation.cpp
+++ b/src/visualisations/projectmvisualisation.cpp
@@ -31,7 +31,11 @@
#include
#include
-#include
+#ifdef USE_SYSTEM_PROJECTM
+# include
+#else
+# include "projectM.hpp"
+#endif
#ifdef Q_OS_MAC
# include "core/mac_startup.h"
@@ -50,7 +54,7 @@ ProjectMVisualisation::ProjectMVisualisation(QObject *parent)
{
connect(this, SIGNAL(sceneRectChanged(QRectF)), SLOT(SceneRectChanged(QRectF)));
- for (int i=0 ; i.
*/
+#include "config.h"
#include "projectmpresetmodel.h"
#include "projectmvisualisation.h"
#include "visualisationselector.h"
@@ -21,7 +22,11 @@
#include
-#include
+#ifdef USE_SYSTEM_PROJECTM
+# include
+#else
+# include "projectM.hpp"
+#endif
VisualisationSelector::VisualisationSelector(QWidget *parent)
: QDialog(parent),