summaryrefslogtreecommitdiff
path: root/media-libs/libv4l/libv4l-1.28.1.ebuild
blob: 7f11f9769139633ed3694b3aba5f8c0027ed41f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit linux-info meson-multilib systemd udev xdg

MY_P="v4l-utils-${PV}"

DESCRIPTION="v4l-utils libraries and optional utilities"
HOMEPAGE="https://git.linuxtv.org/v4l-utils.git"
SRC_URI="https://linuxtv.org/downloads/v4l-utils/${MY_P}.tar.xz"
S="${WORKDIR}/${MY_P}"
LICENSE="LGPL-2.1+"
SLOT="0/0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
IUSE="bpf doc dvb jpeg qt5 qt6 tracer +utils"

REQUIRED_USE="
	bpf? ( utils )
	qt5? ( utils )
	qt6? ( utils )
	tracer? ( utils )
"

RDEPEND="
	dvb? ( virtual/libudev[${MULTILIB_USEDEP}] )
	jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
	utils? (
		!elibc_glibc? ( sys-libs/argp-standalone )
		bpf? (
			dev-libs/libbpf:=
			virtual/libelf:=
		)
		qt6? (
			dev-qt/qtbase:6[gui,opengl,widgets,-gles2-only]
			dev-qt/qt5compat:6
			media-libs/alsa-lib
			virtual/opengl
		)
		!qt6? ( qt5? (
			dev-qt/qtcore:5
			dev-qt/qtgui:5
			dev-qt/qtopengl:5[-gles2-only(-),-gles2(-)]
			dev-qt/qtwidgets:5
			media-libs/alsa-lib
			virtual/opengl
		) )
		tracer? ( dev-libs/json-c:= )
		virtual/libudev
	)
	!<media-tv/v4l-utils-1.26
"

DEPEND="
	${RDEPEND}
"

BDEPEND="
	sys-devel/gettext
	virtual/pkgconfig
	bpf? ( sys-devel/clang:*[llvm_targets_BPF] )
	doc? ( app-text/doxygen )
	utils? (
		dev-lang/perl
		qt6? ( dev-qt/qtbase:6 )
		!qt6? ( qt5? ( dev-qt/qtcore:5 ) )
	)
"

# Not really prebuilt but BPF objects make our QA checks go crazy.
QA_PREBUILT="*/rc_keymaps/protocols/*.o"

check_llvm() {
	if [[ ${MERGE_TYPE} != binary ]] && use bpf; then
		local clang=${ac_cv_prog_CLANG:-${CLANG:-clang}}
		${clang} -target bpf -print-supported-cpus &>/dev/null ||
			die "${clang} does not support the BPF target. Please check LLVM_TARGETS."
	fi
}

pkg_pretend() {
	has_version -b sys-devel/clang && check_llvm
}

pkg_setup() {
	check_llvm
	CONFIG_CHECK="~SHMEM" linux-info_pkg_setup
}

src_prepare() {
	default
	use qt6 || sed -i "/^dep_qt6/s/'qt6/&DiSaBlEd/" meson.build || die
}

multilib_src_configure() {
	local emesonargs=(
		$(meson_native_use_feature bpf)
		-Dgconv=disabled
		$(meson_feature jpeg)
		$(meson_feature dvb libdvbv5)
		$(meson_native_use_feature tracer v4l2-tracer)
		$(meson_native_use_bool utils v4l-utils)
		-Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
		-Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
		-Dudevdir="${EPREFIX}$(get_udevdir)"
		$(meson_native_use_feature doc doxygen-doc)
		$(meson_native_use_bool doc doxygen-html)
		$(meson_native_use_bool doc doxygen-man)
	)
	if multilib_is_native_abi && { use qt6 || use qt5; }; then
		emesonargs+=(
			-Dqv4l2=enabled
			-Dqvidcap=enabled
		)
	else
		emesonargs+=(
			-Dqv4l2=disabled
			-Dqvidcap=disabled
		)
	fi
	meson_src_configure
}

multilib_src_install_all() {
	dodoc ChangeLog README.lib* TODO

	if use utils; then
		dodoc README.md
		newdoc utils/dvb/README README.dvb
		newdoc utils/libv4l2util/TODO TODO.libv4l2util
		newdoc utils/libmedia_dev/README README.libmedia_dev
		newdoc utils/v4l2-compliance/fixme.txt fixme.txt.v4l2-compliance
	fi
}

pkg_postinst() {
	xdg_pkg_postinst
	use utils && udev_reload

	if use utils && [[ -n ${REPLACING_VERSIONS} ]] && ver_test 1.20.0 -ge ${REPLACING_VERSIONS%% *}; then
		ewarn "WARNING! ir-keytable has changed significantly from version 1.20.0 so"
		ewarn "you may need to take action to avoid breakage. See"
		ewarn "https://bugs.gentoo.org/767175 for more details."
	fi
}

pkg_postrm() {
	xdg_pkg_postrm
	use utils && udev_reload
}