mirror of
https://github.com/HenkKalkwater/harbour-sailfin.git
synced 2025-04-13 15:52:40 +00:00
This also adds the constructor to the plugin class, as it should now be called to register the qml types. Dynamic linking mostly has its problem on Sailfish OS, as it creates larger binaries and RPMs. Since this is the only application consuming it, I see no benefit in using it.
170 lines
5.5 KiB
CMake
170 lines
5.5 KiB
CMake
project(jellyfin-qt VERSION 0.1.0)
|
|
find_package(Qt5 5.6 COMPONENTS Multimedia Network Qml WebSockets REQUIRED)
|
|
|
|
if (FREEDESKTOP_INTEGRATION)
|
|
find_package(Qt5 5.6 COMPONENTS DBus REQUIRED)
|
|
endif()
|
|
|
|
if (USE_MLITE)
|
|
find_package(mlite5 REQUIRED)
|
|
endif()
|
|
|
|
include(GNUInstallDirs)
|
|
include(GeneratedSources.cmake)
|
|
|
|
set(JellyfinQt_SOURCES
|
|
src/model/controllablesession.cpp
|
|
src/model/deviceprofile.cpp
|
|
src/model/item.cpp
|
|
src/model/player.cpp
|
|
src/model/playbackmanager.cpp
|
|
src/model/playbackreporter.cpp
|
|
src/model/playlist.cpp
|
|
src/model/remotejellyfinplayback.cpp
|
|
src/model/shuffle.cpp
|
|
src/model/user.cpp
|
|
|
|
src/support/jsonconv.cpp
|
|
src/support/loader.cpp
|
|
src/support/parseexception.cpp
|
|
src/viewmodel/item.cpp
|
|
src/viewmodel/itemmodel.cpp
|
|
src/viewmodel/loader.cpp
|
|
src/viewmodel/mediastream.cpp
|
|
src/viewmodel/modelstatus.cpp
|
|
src/viewmodel/playbackmanager.cpp
|
|
src/viewmodel/playlist.cpp
|
|
src/viewmodel/remotedevice.cpp
|
|
src/viewmodel/settings.cpp
|
|
src/viewmodel/userdata.cpp
|
|
src/viewmodel/usermodel.cpp
|
|
src/viewmodel/user.cpp
|
|
src/apiclient.cpp
|
|
src/apimodel.cpp
|
|
src/credentialmanager.cpp
|
|
src/eventbus.cpp
|
|
src/jellyfin.cpp
|
|
src/jsonhelper.cpp
|
|
src/qobjectsettingswrapper.cpp
|
|
src/serverdiscoverymodel.cpp
|
|
src/websocket.cpp)
|
|
|
|
list(APPEND JellyfinQt_SOURCES ${openapi_SOURCES})
|
|
|
|
set(JellyfinQt_HEADERS
|
|
include/JellyfinQt/model/controllablesession.h
|
|
include/JellyfinQt/model/deviceprofile.h
|
|
include/JellyfinQt/model/item.h
|
|
include/JellyfinQt/model/player.h
|
|
include/JellyfinQt/model/playbackmanager.h
|
|
include/JellyfinQt/model/playbackreporter.h
|
|
include/JellyfinQt/model/playlist.h
|
|
include/JellyfinQt/model/remotejellyfinplayback.h
|
|
include/JellyfinQt/model/shuffle.h
|
|
include/JellyfinQt/model/user.h
|
|
include/JellyfinQt/support/jsonconv.h
|
|
include/JellyfinQt/support/jsonconvimpl.h
|
|
include/JellyfinQt/support/loader.h
|
|
include/JellyfinQt/support/parseexception.h
|
|
include/JellyfinQt/viewmodel/item.h
|
|
include/JellyfinQt/viewmodel/itemmodel.h
|
|
include/JellyfinQt/viewmodel/loader.h
|
|
include/JellyfinQt/viewmodel/mediastream.h
|
|
include/JellyfinQt/viewmodel/modelstatus.h
|
|
include/JellyfinQt/viewmodel/propertyhelper.h
|
|
include/JellyfinQt/viewmodel/playbackmanager.h
|
|
include/JellyfinQt/viewmodel/platformmediacontrol.h
|
|
include/JellyfinQt/viewmodel/playlist.h
|
|
include/JellyfinQt/viewmodel/remotedevice.h
|
|
include/JellyfinQt/viewmodel/settings.h
|
|
include/JellyfinQt/viewmodel/userdata.h
|
|
include/JellyfinQt/viewmodel/usermodel.h
|
|
include/JellyfinQt/viewmodel/user.h
|
|
include/JellyfinQt/viewmodel/utils.h
|
|
include/JellyfinQt/apiclient.h
|
|
include/JellyfinQt/apimodel.h
|
|
include/JellyfinQt/credentialmanager.h
|
|
include/JellyfinQt/eventbus.h
|
|
include/JellyfinQt/jellyfin.h
|
|
include/JellyfinQt/jsonhelper.h
|
|
include/JellyfinQt/qobjectsettingswrapper.h
|
|
include/JellyfinQt/serverdiscoverymodel.h
|
|
include/JellyfinQt/websocket.h)
|
|
|
|
if (FREEDESKTOP_INTEGRATION)
|
|
list(APPEND JellyfinQt_SOURCES
|
|
src/platform/freedesktop/mediaplayer2.cpp
|
|
src/platform/freedesktop/mediaplayer2player.cpp
|
|
src/viewmodel/platformmediacontrol_freedesktop.cpp)
|
|
list(APPEND JellyfinQt_HEADERS
|
|
include/JellyfinQt/platform/freedesktop/mediaplayer2.h
|
|
include/JellyfinQt/platform/freedesktop/mediaplayer2player.h)
|
|
else()
|
|
list(APPEND JellyfinQt_SOURCES
|
|
src/viewmodel/platformmediacontrol_stub.cpp)
|
|
endif()
|
|
|
|
list(APPEND JellyfinQt_HEADERS ${openapi_HEADERS})
|
|
|
|
add_definitions(-DSAILFIN_VERSION=\"${SAILFIN_VERSION}\")
|
|
|
|
if (PLATFORM_SAILFISHOS)
|
|
add_definitions(-DPLATFORM_SAILFISHOS=1)
|
|
endif()
|
|
|
|
|
|
|
|
add_library(JellyfinQt STATIC ${JellyfinQt_SOURCES} ${JellyfinQt_HEADERS} qmldir JellyfinQt.qmltypes)
|
|
|
|
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
|
|
if(BUILD_PRECOMPILED_HEADERS)
|
|
target_precompile_headers(JellyfinQt PRIVATE ${JellyfinQt_HEADERS})
|
|
endif()
|
|
endif()
|
|
|
|
target_include_directories(JellyfinQt PUBLIC "include")
|
|
target_link_libraries(JellyfinQt PUBLIC Qt5::Core Qt5::Multimedia Qt5::Network Qt5::Qml Qt5::WebSockets)
|
|
|
|
if (FREEDESKTOP_INTEGRATION)
|
|
target_link_libraries(JellyfinQt PUBLIC Qt5::DBus)
|
|
endif()
|
|
|
|
if (USE_MLITE)
|
|
add_definitions(-DUSE_MLITE)
|
|
target_link_libraries(JellyfinQt PUBLIC mlite5::mlite5)
|
|
endif()
|
|
|
|
set_target_properties(JellyfinQt PROPERTIES CXX_VISIBILITY_PRESET default)
|
|
install(TARGETS JellyfinQt
|
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
|
|
|
add_custom_target(qmltypes
|
|
COMMAND qmlplugindump -nonrelocatable nl.netsoj.chris.Jellyfin 1.0 > $$PWD/JellyfinQt.qmltypes)
|
|
|
|
add_custom_command(
|
|
TARGET JellyfinQt
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${CMAKE_CURRENT_LIST_DIR}/qmldir
|
|
$<TARGET_FILE_DIR:JellyfinQt>/qmldir
|
|
)
|
|
|
|
add_custom_command(
|
|
TARGET JellyfinQt
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${CMAKE_CURRENT_LIST_DIR}/JellyfinQt.qmltypes
|
|
$<TARGET_FILE_DIR:JellyfinQt>/JellyfinQt.qmltypes
|
|
)
|
|
|
|
|
|
set(QML_IMPORT_PATH $<TARGET_FILE_DIR:JellyfinQt> CACHE PATH "")
|
|
# install(FILES $<TARGET_FILE_DIR:JellyfinQt>/qmldir DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
|
|
export(TARGETS JellyfinQt FILE JellyfinQtConfig.cmake)
|