# Copyright 2021-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit flag-o-matic qt6-build DESCRIPTION="Multimedia (audio, video, radio, camera) library for the Qt6 framework" if [[ ${QT6_BUILD_TYPE} == release ]]; then KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" fi IUSE="+X alsa eglfs +ffmpeg gstreamer opengl pulseaudio qml v4l vaapi vulkan" # tst_qmediaplayerbackend hard requires qml, review in case becomes optional REQUIRED_USE=" || ( ffmpeg gstreamer ) eglfs? ( ffmpeg opengl ) vaapi? ( ffmpeg opengl ) test? ( qml ) " RDEPEND=" ~dev-qt/qtbase-${PV}:6[gui,network,opengl=,vulkan=,widgets] alsa? ( media-libs/alsa-lib ) ffmpeg? ( ~dev-qt/qtbase-${PV}:6[X=,concurrent,eglfs=] media-video/ffmpeg:=[vaapi?] X? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXrandr ) ) gstreamer? ( dev-libs/glib:2 media-libs/gst-plugins-bad:1.0 media-libs/gst-plugins-base:1.0[X=,opengl?] media-libs/gstreamer:1.0 ) opengl? ( media-libs/libglvnd ) pulseaudio? ( media-libs/libpulse ) qml? ( ~dev-qt/qtdeclarative-${PV}:6 ~dev-qt/qtquick3d-${PV}:6 ) " DEPEND=" ${RDEPEND} X? ( x11-base/xorg-proto ) v4l? ( sys-kernel/linux-headers ) vulkan? ( dev-util/vulkan-headers ) " BDEPEND="~dev-qt/qtshadertools-${PV}:6" CMAKE_SKIP_TESTS=( # unimportant and expects all backends to be available (bug #928420) tst_backends # tries to use real alsa or pulseaudio and fails in sandbox tst_qaudiosink tst_qaudiosource tst_qmediacapturesession tst_qmediaplayerbackend tst_qsoundeffect # may try to use v4l2 or hardware acceleration depending on availability tst_qscreencapture_integration tst_qscreencapturebackend tst_qvideoframebackend # fails with offscreen rendering tst_qvideoframecolormanagement tst_qwindowcapturebackend ) src_configure() { # normally passed by the build system, but needed for 32-on-64 chroots use x86 && append-cppflags -DPFFFT_SIMD_DISABLE local mycmakeargs=( $(cmake_use_find_package qml Qt6Qml) $(qt_feature alsa) $(qt_feature ffmpeg) $(qt_feature gstreamer) $(usev gstreamer $(qt_feature opengl gstreamer_gl)) $(qt_feature pulseaudio) $(qt_feature v4l linux_v4l) $(qt_feature vaapi) ) qt6-build_src_configure } src_install() { qt6-build_src_install if use test; then local delete=( # sigh "${D}${QT6_LIBDIR}"/cmake/Qt6Multimedia/Qt6MockMultimediaPlugin*.cmake "${D}${QT6_MKSPECSDIR}"/modules/qt_plugin_mockmultimediaplugin.pri "${D}${QT6_PLUGINDIR}"/multimedia/libmockmultimediaplugin.* "${D}${QT6_PLUGINDIR}"/multimedia/objects-* ) # using -f given not tracking which tests may be skipped or not rm -rf -- "${delete[@]}" || die fi }