chore: baseline usable version
This commit is contained in:
77
cmake/QEmbyPackaging.cmake
Normal file
77
cmake/QEmbyPackaging.cmake
Normal file
@@ -0,0 +1,77 @@
|
||||
include_guard(GLOBAL)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(_qemby_runtime_install_dir "${CMAKE_INSTALL_BINDIR}")
|
||||
if(QEMBY_RUNTIME_LIB_SUBDIR)
|
||||
set(_qemby_runtime_install_dir
|
||||
"${CMAKE_INSTALL_LIBDIR}/${QEMBY_RUNTIME_LIB_SUBDIR}")
|
||||
endif()
|
||||
|
||||
foreach(_qemby_runtime_target IN ITEMS qEmbyApp qEmbyCore QWKCore QWKWidgets)
|
||||
if(TARGET "${_qemby_runtime_target}")
|
||||
set_target_properties("${_qemby_runtime_target}" PROPERTIES
|
||||
INSTALL_RPATH "$ORIGIN"
|
||||
)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(_qemby_qwk_install_targets)
|
||||
foreach(_qemby_qwk_target IN ITEMS QWKCore QWKWidgets)
|
||||
if(TARGET "${_qemby_qwk_target}")
|
||||
list(APPEND _qemby_qwk_install_targets "${_qemby_qwk_target}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(_qemby_qwk_install_targets)
|
||||
install(TARGETS ${_qemby_qwk_install_targets}
|
||||
LIBRARY DESTINATION "${_qemby_runtime_install_dir}"
|
||||
RUNTIME DESTINATION "${_qemby_runtime_install_dir}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(QEMBY_RUNTIME_LIB_SUBDIR)
|
||||
set(_qemby_launcher_exec
|
||||
"${CMAKE_INSTALL_LIBDIR}/${QEMBY_RUNTIME_LIB_SUBDIR}/qEmbyApp")
|
||||
else()
|
||||
set(_qemby_launcher_exec "${CMAKE_INSTALL_BINDIR}/qEmbyApp")
|
||||
endif()
|
||||
|
||||
set(_qemby_launcher "${CMAKE_CURRENT_BINARY_DIR}/qemby")
|
||||
file(WRITE "${_qemby_launcher}"
|
||||
"#!/bin/sh\n"
|
||||
"prefix_dir=$(CDPATH= cd -- \"$(dirname -- \"$0\")/..\" && pwd)\n"
|
||||
"exec \"$prefix_dir/${_qemby_launcher_exec}\" \"$@\"\n"
|
||||
)
|
||||
install(PROGRAMS "${_qemby_launcher}"
|
||||
DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
)
|
||||
|
||||
set(_qemby_desktop_file "${CMAKE_CURRENT_BINARY_DIR}/qemby.desktop")
|
||||
file(WRITE "${_qemby_desktop_file}"
|
||||
"[Desktop Entry]\n"
|
||||
"Type=Application\n"
|
||||
"Name=qEmby\n"
|
||||
"Comment=Desktop client for Emby and Jellyfin media servers\n"
|
||||
"Exec=qemby\n"
|
||||
"Icon=qemby\n"
|
||||
"Terminal=false\n"
|
||||
"Categories=AudioVideo;Video;Player;\n"
|
||||
)
|
||||
install(FILES "${_qemby_desktop_file}"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/applications"
|
||||
)
|
||||
|
||||
install(FILES "${CMAKE_SOURCE_DIR}/src/qEmbyApp/resources/svg/qemby_logo.svg"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps"
|
||||
RENAME qemby.svg
|
||||
)
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
|
||||
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
|
||||
set(CPACK_PACKAGE_VENDOR "qEmby")
|
||||
|
||||
include(CPack)
|
||||
68
cmake/QEmbyPlatformDeps.cmake
Normal file
68
cmake/QEmbyPlatformDeps.cmake
Normal file
@@ -0,0 +1,68 @@
|
||||
include_guard(GLOBAL)
|
||||
|
||||
function(qemby_append_default_qt_prefixes)
|
||||
set(_qemby_qt_prefixes)
|
||||
|
||||
if(QEMBY_QT_ROOT)
|
||||
list(APPEND _qemby_qt_prefixes
|
||||
"${QEMBY_QT_ROOT}"
|
||||
"${QEMBY_QT_ROOT}/lib/cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{QTDIR} AND NOT "$ENV{QTDIR}" STREQUAL "")
|
||||
list(APPEND _qemby_qt_prefixes
|
||||
"$ENV{QTDIR}"
|
||||
"$ENV{QTDIR}/lib/cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
list(APPEND _qemby_qt_prefixes
|
||||
"E:/Qt6/6.9.2/msvc2022_64"
|
||||
"E:/Qt6/6.9.2/msvc2022_64/lib/cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
foreach(_qemby_qt_prefix IN LISTS _qemby_qt_prefixes)
|
||||
if(EXISTS "${_qemby_qt_prefix}")
|
||||
list(APPEND CMAKE_PREFIX_PATH "${_qemby_qt_prefix}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(CMAKE_PREFIX_PATH)
|
||||
list(REMOVE_DUPLICATES CMAKE_PREFIX_PATH)
|
||||
endif()
|
||||
|
||||
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(qemby_link_libmpv target)
|
||||
if(NOT TARGET "${target}")
|
||||
message(FATAL_ERROR "qemby_link_libmpv: target '${target}' does not exist")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(_qemby_mpv_root "${CMAKE_SOURCE_DIR}/libs/libmpv")
|
||||
set(_qemby_mpv_include_dir "${_qemby_mpv_root}/include")
|
||||
|
||||
find_library(MPV_LIBRARY
|
||||
NAMES mpv libmpv mpv-2 libmpv-2
|
||||
PATHS "${_qemby_mpv_root}/lib"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
if(NOT MPV_LIBRARY OR NOT EXISTS "${_qemby_mpv_include_dir}/mpv/client.h")
|
||||
message(FATAL_ERROR
|
||||
"Could not find bundled libmpv. Place the libmpv SDK under libs/libmpv.")
|
||||
endif()
|
||||
|
||||
target_include_directories("${target}" PRIVATE "${_qemby_mpv_include_dir}")
|
||||
target_link_libraries("${target}" PRIVATE "${MPV_LIBRARY}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(MPV REQUIRED IMPORTED_TARGET mpv)
|
||||
target_link_libraries("${target}" PRIVATE PkgConfig::MPV)
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user