diff --git a/dist/macdeploy.py b/dist/macdeploy.py
index 5d83c2e4b..b83a8c381 100755
--- a/dist/macdeploy.py
+++ b/dist/macdeploy.py
@@ -15,6 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with Clementine. If not, see .
+from distutils import spawn
import logging
import os
import re
@@ -31,7 +32,7 @@ FRAMEWORK_SEARCH_PATH=[
os.path.join(os.environ['HOME'], 'Library/Frameworks')
]
-LIBRARY_SEARCH_PATH=['/target/lib', '/usr/local/lib', '/sw/lib']
+LIBRARY_SEARCH_PATH=['/target', '/target/lib', '/usr/local/lib', '/sw/lib']
GSTREAMER_PLUGINS=[
@@ -107,15 +108,18 @@ QT_PLUGINS = [
'imageformats/libqmng.dylib',
'imageformats/libqsvg.dylib',
]
-QT_PLUGINS_SEARCH_PATH=[
+QT_PLUGINS_SEARCH_PATH = [
'/target/plugins',
'/usr/local/Trolltech/Qt-4.7.0/plugins',
'/Developer/Applications/Qt/plugins',
]
-GIO_MODULES_SEARCH_PATH=[
- '/target/lib/gio/modules',
-]
+GIO_MODULES_SEARCH_PATH = ['/target/lib/gio/modules',]
+
+INSTALL_NAME_TOOL_APPLE = 'install_name_tool'
+INSTALL_NAME_TOOL_CROSS = 'x86_64-apple-darwin-%s' % INSTALL_NAME_TOOL_APPLE
+INSTALL_NAME_TOOL = INSTALL_NAME_TOOL_CROSS if spawn.find_executable(
+ INSTALL_NAME_TOOL_CROSS) else INSTALL_NAME_TOOL_APPLE
class Error(Exception):
@@ -277,7 +281,7 @@ def FixBinary(path):
def CopyLibrary(path):
new_path = os.path.join(frameworks_dir, os.path.basename(path))
- args = ['ditto', '--arch=x86_64', path, new_path]
+ args = ['cp', path, new_path]
commands.append(args)
LOGGER.info("Copying library '%s'", path)
return new_path
@@ -286,7 +290,7 @@ def CopyPlugin(path, subdir):
new_path = os.path.join(plugins_dir, subdir, os.path.basename(path))
args = ['mkdir', '-p', os.path.dirname(new_path)]
commands.append(args)
- args = ['ditto', '--arch=x86_64', path, new_path]
+ args = ['cp', path, new_path]
commands.append(args)
LOGGER.info("Copying plugin '%s'", path)
return new_path
@@ -310,7 +314,7 @@ def CopyFramework(src_binary):
dest_binary = os.path.join(dest_dir, name)
commands.append(['mkdir', '-p', dest_dir])
- commands.append(['ditto', '--arch=x86_64', src_binary, dest_binary])
+ commands.append(['cp', src_binary, dest_binary])
# Copy special files from various places:
# QtCore has Resources/qt_menu.nib (copy to app's Resources)
@@ -334,34 +338,39 @@ def CopyFramework(src_binary):
# Create symlinks in the Framework to make it look like
# https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html
- commands.append(['ln', '-sfh',
- 'Versions/Current/%s' % name,
- os.path.join(dest_base, name)])
- commands.append(['ln', '-sfh',
- 'Versions/Current/Resources',
- os.path.join(dest_base, 'Resources')])
- commands.append(['ln', '-sfh',
- version,
- os.path.join(dest_base, 'Versions/Current')])
+ commands.append([
+ 'ln', '-sf', 'Versions/Current/%s' % name, os.path.join(dest_base, name)
+ ])
+ commands.append([
+ 'ln', '-sf', 'Versions/Current/Resources',
+ os.path.join(dest_base, 'Resources')
+ ])
+ commands.append(
+ ['ln', '-sf', version, os.path.join(dest_base, 'Versions/Current')])
return dest_binary
+
def FixId(path, library_name):
id = '@executable_path/../Frameworks/%s' % library_name
- args = ['install_name_tool', '-id', id, path]
+ args = [INSTALL_NAME_TOOL, '-id', id, path]
commands.append(args)
+
def FixLibraryId(path):
library_name = os.path.basename(path)
FixId(path, library_name)
+
def FixFrameworkId(path, id):
FixId(path, id)
+
def FixInstallPath(library_path, library, new_path):
- args = ['install_name_tool', '-change', library_path, new_path, library]
+ args = [INSTALL_NAME_TOOL, '-change', library_path, new_path, library]
commands.append(args)
+
def FindSystemLibrary(library_name):
for path in ['/lib', '/usr/lib']:
full_path = os.path.join(path, library_name)
diff --git a/ext/clementine-spotifyblob/CMakeLists.txt b/ext/clementine-spotifyblob/CMakeLists.txt
index 1771c34ae..ca332dca1 100644
--- a/ext/clementine-spotifyblob/CMakeLists.txt
+++ b/ext/clementine-spotifyblob/CMakeLists.txt
@@ -53,7 +53,7 @@ target_link_libraries(clementine-spotifyblob
if(APPLE)
target_link_libraries(clementine-spotifyblob
- /System/Library/Frameworks/Foundation.framework
+ "-framework Foundation"
)
endif(APPLE)
diff --git a/ext/clementine-tagreader/CMakeLists.txt b/ext/clementine-tagreader/CMakeLists.txt
index 816e7edbc..d846efecd 100644
--- a/ext/clementine-tagreader/CMakeLists.txt
+++ b/ext/clementine-tagreader/CMakeLists.txt
@@ -31,6 +31,7 @@ target_link_libraries(clementine-tagreader
libclementine-tagreader
${QT_QTCORE_LIBRARY}
${QT_QTNETWORK_LIBRARY}
+ z
)
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
@@ -41,7 +42,7 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
if(APPLE)
target_link_libraries(clementine-tagreader
- /System/Library/Frameworks/Foundation.framework
+ "-framework Foundation"
)
endif(APPLE)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 713a19a7f..27ff5d1b6 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -853,7 +853,6 @@ optional_source(APPLE
core/macfslistener.mm
core/macglobalshortcutbackend.mm
core/mac_startup.mm
- devices/macdevicelister.mm
engines/osxdevicefinder.cpp
networkremote/bonjour.mm
ui/globalshortcutgrabber.mm
@@ -863,10 +862,18 @@ optional_source(APPLE
HEADERS
core/macfslistener.h
core/macglobalshortcutbackend.h
- devices/macdevicelister.h
ui/macsystemtrayicon.h
)
+if(APPLE)
+ optional_source(HAVE_LIBMTP
+ SOURCES
+ devices/macdevicelister.mm
+ HEADERS
+ devices/macdevicelister.h
+ )
+endif()
+
# Platform specific - Windows
optional_source(WIN32
SOURCES
@@ -1313,13 +1320,13 @@ endif()
if (APPLE)
target_link_libraries(clementine_lib
- /System/Library/Frameworks/AppKit.framework
- /System/Library/Frameworks/Carbon.framework
- /System/Library/Frameworks/CoreAudio.framework
- /System/Library/Frameworks/DiskArbitration.framework
- /System/Library/Frameworks/Foundation.framework
- /System/Library/Frameworks/IOKit.framework
- /System/Library/Frameworks/ScriptingBridge.framework
+ "-framework AppKit"
+ "-framework Carbon"
+ "-framework CoreAudio"
+ "-framework DiskArbitration"
+ "-framework Foundation"
+ "-framework IOKit"
+ "-framework ScriptingBridge"
)
target_link_libraries(clementine_lib ${SPMEDIAKEYTAP_LIBRARIES})
if (HAVE_SPARKLE)
diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp
index 32ba33657..4ad840a09 100644
--- a/src/devices/devicemanager.cpp
+++ b/src/devices/devicemanager.cpp
@@ -29,10 +29,6 @@
#include
#include "config.h"
-#include "devicedatabasebackend.h"
-#include "devicekitlister.h"
-#include "devicestatefiltermodel.h"
-#include "filesystemdevice.h"
#include "core/application.h"
#include "core/concurrentrun.h"
#include "core/database.h"
@@ -40,14 +36,18 @@
#include "core/musicstorage.h"
#include "core/taskmanager.h"
#include "core/utilities.h"
+#include "devicedatabasebackend.h"
+#include "devicekitlister.h"
+#include "devicestatefiltermodel.h"
+#include "filesystemdevice.h"
#include "ui/iconloader.h"
#ifdef HAVE_AUDIOCD
-#include "cddalister.h"
#include "cddadevice.h"
+#include "cddalister.h"
#endif
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_DARWIN) and defined(HAVE_LIBMTP)
#include "macdevicelister.h"
#endif
#ifdef HAVE_LIBGPOD
@@ -169,7 +169,8 @@ DeviceManager::DeviceInfo::BestBackend() const {
DeviceManager::DeviceManager(Application* app, QObject* parent)
: QAbstractListModel(parent),
app_(app),
- not_connected_overlay_(IconLoader::Load("edit-delete", IconLoader::Base)) {
+ not_connected_overlay_(
+ IconLoader::Load("edit-delete", IconLoader::Base)) {
thread_pool_.setMaxThreadCount(1);
connect(app_->task_manager(), SIGNAL(TasksChanged()), SLOT(TasksChanged()));
@@ -200,7 +201,7 @@ DeviceManager::DeviceManager(Application* app, QObject* parent)
#ifdef HAVE_GIO
AddLister(new GioLister);
#endif
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_DARWIN) and defined(HAVE_LIBMTP)
AddLister(new MacDeviceLister);
#endif
@@ -322,8 +323,7 @@ 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_)) {
-
+ info.BestBackend()->unique_id_)) {
if (info.BestBackend()->lister_->AskForScan(
info.BestBackend()->unique_id_)) {
std::unique_ptr dialog(new QMessageBox(
@@ -629,8 +629,8 @@ std::shared_ptr DeviceManager::Connect(int row) {
return ret;
}
-std::shared_ptr DeviceManager::GetConnectedDevice(int row)
- const {
+std::shared_ptr DeviceManager::GetConnectedDevice(
+ int row) const {
return devices_[row].device_;
}
diff --git a/src/internet/podcasts/podcastbackend.cpp b/src/internet/podcasts/podcastbackend.cpp
index c37bb701c..e43c603d4 100644
--- a/src/internet/podcasts/podcastbackend.cpp
+++ b/src/internet/podcasts/podcastbackend.cpp
@@ -229,7 +229,7 @@ PodcastEpisodeList PodcastBackend::GetEpisodes(int podcast_id) {
" FROM podcast_episodes"
" WHERE podcast_id = :id"
" ORDER BY publication_date DESC");
- q.bindValue(":db", podcast_id);
+ q.bindValue(":id", podcast_id);
q.exec();
if (db_->CheckErrors(q)) return ret;
@@ -252,7 +252,7 @@ PodcastEpisode PodcastBackend::GetEpisodeById(int id) {
q.prepare("SELECT ROWID, " + PodcastEpisode::kColumnSpec +
" FROM podcast_episodes"
" WHERE ROWID = :id");
- q.bindValue(":db", id);
+ q.bindValue(":id", id);
q.exec();
if (!db_->CheckErrors(q) && q.next()) {
ret.InitFromQuery(q);