Improve CMake files (#460)

This commit is contained in:
Jonas Kvinge
2020-06-17 22:56:20 +02:00
committed by GitHub
parent 64f0313d3c
commit 3b58c02db0
16 changed files with 419 additions and 301 deletions

View File

@@ -4,61 +4,6 @@ if(HAVE_TRANSLATIONS)
include(../cmake/Translations.cmake)
endif(HAVE_TRANSLATIONS)
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_SOURCE_DIR}/ext/libstrawberry-common)
include_directories(${CMAKE_SOURCE_DIR}/ext/libstrawberry-tagreader)
include_directories(${CMAKE_BINARY_DIR}/ext/libstrawberry-tagreader)
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${GLIBCONFIG_INCLUDE_DIRS})
include_directories(${GLIB_INCLUDE_DIRS})
include_directories(${GOBJECT_INCLUDE_DIRS})
include_directories(${GNUTLS_INCLUDE_DIR})
if (X11_FOUND)
include_directories(${X11_INCLUDE_DIR})
endif(X11_FOUND)
if(HAVE_GSTREAMER)
link_directories(${GSTREAMER_LIBRARY_DIRS})
include_directories(${GSTREAMER_INCLUDE_DIRS})
link_directories(${GSTREAMER_BASE_LIBRARY_DIRS})
include_directories(${GSTREAMER_BASE_INCLUDE_DIRS})
link_directories(${GSTREAMER_APP_LIBRARY_DIRS})
include_directories(${GSTREAMER_APP_INCLUDE_DIRS})
link_directories(${GSTREAMER_AUDIO_LIBRARY_DIRS})
include_directories(${GSTREAMER_AUDIO_INCLUDE_DIRS})
link_directories(${GSTREAMER_TAG_LIBRARY_DIRS})
include_directories(${GSTREAMER_TAG_INCLUDE_DIRS})
link_directories(${GSTREAMER_PBUTILS_LIBRARY_DIRS})
include_directories(${GSTREAMER_PBUTILS_INCLUDE_DIRS})
endif(HAVE_GSTREAMER)
if(HAVE_CHROMAPRINT)
link_directories(${CHROMAPRINT_LIBRARY_DIRS})
include_directories(${CHROMAPRINT_INCLUDE_DIRS})
endif(HAVE_CHROMAPRINT)
if(HAVE_AUDIOCD)
link_directories(${LIBCDIO_LIBRARY_DIRS})
include_directories(${LIBCDIO_INCLUDE_DIRS})
endif(HAVE_AUDIOCD)
link_directories(${TAGLIB_LIBRARY_DIRS})
include_directories(${TAGLIB_INCLUDE_DIRS})
link_directories(${SINGLEAPPLICATION_LIBRARY_DIRS})
link_directories(${SINGLECOREAPPLICATION_LIBRARY_DIRS})
include_directories(${SINGLEAPPLICATION_INCLUDE_DIRS})
include_directories(${SINGLECOREAPPLICATION_INCLUDE_DIRS})
if(HAVE_LIBMTP)
link_directories(${LIBMTP_LIBRARY_DIRS})
include_directories(${LIBMTP_INCLUDE_DIRS})
endif(HAVE_LIBMTP)
set(SOURCES
core/mainwindow.cpp
core/application.cpp
@@ -729,7 +674,6 @@ optional_source(UNIX
# Libgpod device backend
optional_source(HAVE_LIBGPOD
INCLUDE_DIRECTORIES ${LIBGPOD_INCLUDE_DIRS}
SOURCES
device/gpoddevice.cpp
device/gpodloader.cpp
@@ -740,17 +684,12 @@ optional_source(HAVE_LIBGPOD
# GIO device backend
optional_source(HAVE_GIO
INCLUDE_DIRECTORIES ${GIO_INCLUDE_DIRS}
SOURCES device/giolister.cpp
HEADERS device/giolister.h
)
# imobiledevice backend and device
optional_source(HAVE_IMOBILEDEVICE
INCLUDE_DIRECTORIES
${LIBIMOBILEDEVICE_INCLUDE_DIRS}
${LIBPLIST_INCLUDE_DIRS}
${LIBPLISTPP_INCLUDE_DIRS}
SOURCES
device/afcdevice.cpp
device/afcfile.cpp
@@ -766,7 +705,6 @@ optional_source(HAVE_IMOBILEDEVICE
# mtp device
optional_source(HAVE_LIBMTP
INCLUDE_DIRECTORIES ${LIBMTP_INCLUDE_DIRS}
SOURCES
device/mtpconnection.cpp
device/mtpdevice.cpp
@@ -778,8 +716,6 @@ optional_source(HAVE_LIBMTP
# Pulse audio integration
optional_source(HAVE_LIBPULSE
INCLUDE_DIRECTORIES
${LIBPULSE_INCLUDE_DIRS}
SOURCES
engine/pulsedevicefinder.cpp
)
@@ -822,24 +758,23 @@ UI
# CDIO backend and device
if(HAVE_GSTREAMER)
optional_source(HAVE_CHROMAPRINT
SOURCES
musicbrainz/chromaprinter.cpp
musicbrainz/tagfetcher.cpp
HEADERS
musicbrainz/tagfetcher.h
)
optional_source(HAVE_AUDIOCD
SOURCES
device/cddadevice.cpp
device/cddalister.cpp
device/cddasongloader.cpp
HEADERS
device/cddadevice.h
device/cddalister.h
device/cddasongloader.h
UI
)
optional_source(HAVE_CHROMAPRINT
SOURCES
musicbrainz/chromaprinter.cpp
musicbrainz/tagfetcher.cpp
HEADERS
musicbrainz/tagfetcher.h
)
optional_source(HAVE_AUDIOCD
SOURCES
device/cddadevice.cpp
device/cddalister.cpp
device/cddasongloader.cpp
HEADERS
device/cddadevice.h
device/cddalister.h
device/cddasongloader.h
)
endif()
# Platform specific - macOS
@@ -981,6 +916,81 @@ if(HAVE_TRANSLATIONS)
endif(HAVE_TRANSLATIONS)
link_directories(
${Boost_LIBRARY_DIRS}
${GLIB_LIBRARY_DIRS}
${GOBJECT_LIBRARY_DIRS}
${GNUTLS_LIBRARY_DIRS}
${SQLITE_LIBRARY_DIRS}
${TAGLIB_LIBRARY_DIRS}
${QT_LIBRARY_DIRS}
${SINGLEAPPLICATION_LIBRARY_DIRS}
${SINGLECOREAPPLICATION_LIBRARY_DIRS}
)
if(HAVE_ALSA)
link_directories(${ALSA_LIBRARY_DIRS})
endif(HAVE_ALSA)
if(HAVE_LIBPULSE)
link_directories(${LIBPULSE_LIBRARY_DIRS})
endif()
if(HAVE_GSTREAMER)
link_directories(
${GSTREAMER_LIBRARY_DIRS}
${GSTREAMER_BASE_LIBRARY_DIRS}
${GSTREAMER_APP_LIBRARY_DIRS}
${GSTREAMER_AUDIO_LIBRARY_DIRS}
${GSTREAMER_TAG_LIBRARY_DIRS}
${GSTREAMER_PBUTILS_LIBRARY_DIRS}
)
endif(HAVE_GSTREAMER)
if(HAVE_XINE)
link_directories(${LIBXINE_LIBRARY_DIRS})
endif()
if(HAVE_VLC)
link_directories(${LIBVLC_LIBRARY_DIRS})
endif()
if(HAVE_CHROMAPRINT)
link_directories(${CHROMAPRINT_LIBRARY_DIRS})
endif(HAVE_CHROMAPRINT)
if(X11_FOUND)
link_directories(${X11_LIBRARY_DIRS})
endif(X11_FOUND)
if(XCB_FOUND)
link_directories(${XCB_LIBRARY_DIRS})
endif(XCB_FOUND)
if(HAVE_GIO)
link_directories(${GIO_LIBRARY_DIRS})
endif(HAVE_GIO)
if(HAVE_AUDIOCD)
link_directories(${LIBCDIO_LIBRARY_DIRS})
endif(HAVE_AUDIOCD)
if(HAVE_LIBGPOD)
link_directories(${LIBGPOD_LIBRARIES})
endif(HAVE_LIBGPOD)
if(HAVE_LIBMTP)
link_directories(${LIBMTP_LIBRARY_DIRS})
endif(HAVE_LIBMTP)
if(HAVE_IMOBILEDEVICE)
link_directories(
${LIBUSBMUXD_LIBRARY_DIRS}
${LIBPLIST_LIBRARY_DIRS}
${LIBIMOBILEDEVICE_LIBRARY_DIRS}
)
endif(HAVE_IMOBILEDEVICE)
add_library(strawberry_lib STATIC
${SOURCES}
${MOC}
@@ -991,82 +1001,133 @@ add_library(strawberry_lib STATIC
${OTHER_UIC_SOURCES}
)
target_link_libraries(strawberry_lib
libstrawberry-common
libstrawberry-tagreader
${CMAKE_THREAD_LIBS_INIT}
${GLIB_LIBRARIES}
${GIO_LIBRARIES}
${GOBJECT_LIBRARIES}
${GNUTLS_LIBRARIES}
${QT_LIBRARIES}
${SQLITE_LIBRARIES}
${TAGLIB_LIBRARIES}
${SINGLEAPPLICATION_LIBRARIES}
${SINGLECOREAPPLICATION_LIBRARIES}
z
target_include_directories(strawberry_lib PUBLIC
${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/ext/libstrawberry-common
${CMAKE_SOURCE_DIR}/ext/libstrawberry-tagreader
${CMAKE_BINARY_DIR}/ext/libstrawberry-tagreader
${Boost_INCLUDE_DIRS}
${GLIB_INCLUDE_DIRS}
${GOBJECT_INCLUDE_DIRS}
${GNUTLS_INCLUDE_DIRS}
${SQLITE_INCLUDE_DIRS}
${TAGLIB_INCLUDE_DIRS}
${QT_INCLUDE_DIRS}
${SINGLEAPPLICATION_INCLUDE_DIRS}
${SINGLECOREAPPLICATION_INCLUDE_DIRS}
)
if(X11_FOUND)
target_link_libraries(strawberry_lib ${X11_LIBRARIES})
endif(X11_FOUND)
if(XCB_FOUND)
target_link_libraries(strawberry_lib ${XCB_LIBRARIES})
endif(XCB_FOUND)
target_link_libraries(strawberry_lib PUBLIC
${CMAKE_THREAD_LIBS_INIT}
${GLIB_LIBRARIES}
${GOBJECT_LIBRARIES}
${GNUTLS_LIBRARIES}
${SQLITE_LIBRARIES}
${TAGLIB_LIBRARIES}
${QT_LIBRARIES}
${SINGLEAPPLICATION_LIBRARIES}
${SINGLECOREAPPLICATION_LIBRARIES}
libstrawberry-common
libstrawberry-tagreader
)
if(HAVE_ALSA)
target_link_libraries(strawberry_lib ${ALSA_LIBRARIES})
target_include_directories(strawberry_lib PRIVATE ${ALSA_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${ALSA_LIBRARIES})
endif(HAVE_ALSA)
if(HAVE_GSTREAMER)
target_link_libraries(strawberry_lib ${GSTREAMER_LIBRARIES} ${GSTREAMER_BASE_LIBRARIES} ${GSTREAMER_AUDIO_LIBRARIES} ${GSTREAMER_APP_LIBRARIES} ${GSTREAMER_TAG_LIBRARIES} ${GSTREAMER_PBUTILS_LIBRARIES})
if(HAVE_LIBPULSE)
target_include_directories(strawberry_lib PRIVATE ${LIBPULSE_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBPULSE_LIBRARIES})
endif()
if(HAVE_CHROMAPRINT)
target_link_libraries(strawberry_lib ${CHROMAPRINT_LIBRARIES})
if(HAVE_GSTREAMER)
target_include_directories(strawberry_lib PRIVATE
${GSTREAMER_INCLUDE_DIRS}
${GSTREAMER_BASE_INCLUDE_DIRS}
${GSTREAMER_APP_INCLUDE_DIRS}
${GSTREAMER_AUDIO_INCLUDE_DIRS}
${GSTREAMER_TAG_INCLUDE_DIRS}
${GSTREAMER_PBUTILS_INCLUDE_DIRS}
)
target_link_libraries(strawberry_lib PRIVATE
${GSTREAMER_LIBRARIES}
${GSTREAMER_BASE_LIBRARIES}
${GSTREAMER_AUDIO_LIBRARIES}
${GSTREAMER_APP_LIBRARIES}
${GSTREAMER_TAG_LIBRARIES}
${GSTREAMER_PBUTILS_LIBRARIES}
)
endif(HAVE_GSTREAMER)
if(HAVE_MOODBAR)
target_link_libraries(strawberry_lib PRIVATE gstmoodbar)
endif()
if(HAVE_XINE)
target_link_libraries(strawberry_lib ${LIBXINE_LIBRARIES})
target_include_directories(strawberry_lib PRIVATE ${LIBXINE_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBXINE_LIBRARIES})
endif()
if(HAVE_VLC)
target_link_libraries(strawberry_lib ${LIBVLC_LIBRARIES})
target_include_directories(strawberry_lib PRIVATE ${LIBVLC_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBVLC_LIBRARIES})
endif()
if(HAVE_LIBGPOD)
target_link_libraries(strawberry_lib ${LIBGPOD_LIBRARIES})
endif(HAVE_LIBGPOD)
if(HAVE_CHROMAPRINT)
target_include_directories(strawberry_lib PRIVATE ${CHROMAPRINT_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${CHROMAPRINT_LIBRARIES})
endif(HAVE_CHROMAPRINT)
if(X11_FOUND)
target_include_directories(strawberry_lib PRIVATE ${X11_INCLUDE_DIR})
target_link_libraries(strawberry_lib PRIVATE ${X11_LIBRARIES})
endif(X11_FOUND)
if(XCB_FOUND)
target_include_directories(strawberry_lib PRIVATE ${XCB_INCLUDE_DIR})
target_link_libraries(strawberry_lib PRIVATE ${XCB_LIBRARIES})
endif(XCB_FOUND)
if(HAVE_GIO)
target_link_libraries(strawberry_lib ${GIO_LIBRARIES})
target_include_directories(strawberry_lib PRIVATE ${GIO_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${GIO_LIBRARIES})
endif(HAVE_GIO)
if(HAVE_AUDIOCD)
target_link_libraries(strawberry_lib ${LIBCDIO_LIBRARIES})
target_include_directories(strawberry_lib PRIVATE ${LIBCDIO_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBCDIO_LIBRARIES})
endif(HAVE_AUDIOCD)
if(HAVE_IMOBILEDEVICE)
target_link_libraries(strawberry_lib ${LIBIMOBILEDEVICE_LIBRARIES} ${LIBPLIST_LIBRARIES} ${LIBUSBMUXD_LIBRARIES})
link_directories(${LIBIMOBILEDEVICE_LIBRARY_DIRS})
link_directories(${LIBUSBMUXD_LIBRARY_DIRS})
endif(HAVE_IMOBILEDEVICE)
if(HAVE_LIBGPOD)
target_include_directories(strawberry_lib PRIVATE ${LIBGPOD_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBGPOD_LIBRARIES})
endif(HAVE_LIBGPOD)
if(HAVE_LIBMTP)
target_link_libraries(strawberry_lib ${LIBMTP_LIBRARIES})
target_include_directories(strawberry_lib PRIVATE ${LIBMTP_INCLUDE_DIRS})
target_link_libraries(strawberry_lib PRIVATE ${LIBMTP_LIBRARIES})
endif(HAVE_LIBMTP)
if(HAVE_LIBPULSE)
target_link_libraries(strawberry_lib ${LIBPULSE_LIBRARIES})
endif()
if(HAVE_IMOBILEDEVICE)
target_include_directories(strawberry_lib PRIVATE
${LIBUSBMUXD_INCLUDE_DIRS}
${LIBPLIST_INCLUDE_DIRS}
${LIBIMOBILEDEVICE_INCLUDE_DIRS}
)
target_link_libraries(strawberry_lib PRIVATE
${LIBUSBMUXD_LIBRARIES}
${LIBPLIST_LIBRARIES}
${LIBIMOBILEDEVICE_LIBRARIES}
)
endif(HAVE_IMOBILEDEVICE)
if(HAVE_MOODBAR)
target_link_libraries(strawberry_lib gstmoodbar)
endif()
if (APPLE)
target_link_libraries(strawberry_lib
if(APPLE)
target_link_libraries(strawberry_lib PRIVATE
"-framework AppKit"
"-framework Carbon"
"-framework CoreAudio"
@@ -1075,41 +1136,40 @@ if (APPLE)
"-framework IOKit"
"-framework ScriptingBridge"
)
if(HAVE_SPARKLE)
target_include_directories(strawberry_lib PRIVATE ${SPARKLE}/Headers)
target_link_libraries(strawberry_lib PRIVATE ${SPARKLE})
endif(HAVE_SPARKLE)
endif(APPLE)
if (HAVE_SPARKLE)
include_directories(${SPARKLE}/Headers)
target_link_libraries(strawberry_lib ${SPARKLE})
endif (HAVE_SPARKLE)
endif (APPLE)
if(WIN32)
target_link_libraries(strawberry_lib PRIVATE dsound)
endif(WIN32)
if (WIN32)
target_link_libraries(strawberry_lib dsound)
endif (WIN32)
if (UNIX AND NOT APPLE)
if(UNIX AND NOT APPLE)
# Hack: the Gold linker pays attention to the order that libraries are specified on the link line.
# -lX11 and -ldl are provided earlier in the link command but they're actually used by libraries that appear after them, so they end up getting ignored.
# This appends them to the very end of the link line, ensuring they're always used.
find_package(X11)
if (FREEBSD)
target_link_libraries(strawberry_lib ${X11_X11_LIB})
else ()
target_link_libraries(strawberry_lib ${X11_X11_LIB} ${CMAKE_DL_LIBS})
endif ()
endif ()
if(FREEBSD)
target_link_libraries(strawberry_lib PRIVATE ${X11_X11_LIB})
else()
target_link_libraries(strawberry_lib PRIVATE ${X11_X11_LIB} ${CMAKE_DL_LIBS})
endif()
endif()
if (NOT USE_SYSTEM_SINGLEAPPLICATION)
if(NOT USE_SYSTEM_SINGLEAPPLICATION)
add_dependencies(strawberry_lib ${SINGLEAPPLICATION_LIBRARIES} ${SINGLECOREAPPLICATION_LIBRARIES})
endif ()
endif()
###############################################################################
set(EXECUTABLE_OUTPUT_PATH ..)
# Show the console window in debug mode on Windows
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ENABLE_WIN32_CONSOLE)
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ENABLE_WIN32_CONSOLE)
set(STRAWBERRY-WIN32-FLAG WIN32)
endif (NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ENABLE_WIN32_CONSOLE)
endif(NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ENABLE_WIN32_CONSOLE)
# Resource file for windows
if(WIN32)
@@ -1125,18 +1185,18 @@ add_executable(strawberry
)
if(FREEBSD)
target_link_libraries(strawberry execinfo)
target_link_libraries(strawberry PRIVATE execinfo)
endif()
target_link_libraries(strawberry strawberry_lib)
target_link_libraries(strawberry PRIVATE strawberry_lib)
# macdeploy.py relies on the blob being built first.
add_dependencies(strawberry strawberry-tagreader)
if (NOT APPLE)
if(NOT APPLE)
install(TARGETS strawberry RUNTIME DESTINATION bin)
endif()
if (APPLE)
if(APPLE)
set_target_properties(strawberry PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/../dist/macos/Info.plist")
endif (APPLE)

View File

@@ -98,9 +98,8 @@ class OSD : public QObject {
private slots:
#ifdef HAVE_DBUS
void CallFinished(QDBusPendingCallWatcher *watcher);
#else
void CallFinished();
#endif
void CallFinished();
void AlbumCoverLoaded(const Song &song, const QUrl &cover_url, const QImage &image);
private:

View File

@@ -184,6 +184,6 @@ void OSD::CallFinished(QDBusPendingCallWatcher *watcher) {
last_notification_time_ = QDateTime::currentDateTime();
}
}
#else
void OSD::CallFinished() {}
#endif
void OSD::CallFinished() {}