summaryrefslogtreecommitdiff
path: root/media-libs/libavif/libavif-1.2.0.ebuild
blob: bc7c387cb9a0c076ac6ba827bb1d63f032ece44d (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
# Copyright 2020-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake-multilib gnome2-utils

ARGPARSE_COMMIT="ee74d1b53bd680748af14e737378de57e2a0a954"
DESCRIPTION="Library for encoding and decoding .avif files"
HOMEPAGE="https://github.com/AOMediaCodec/libavif"
SRC_URI="
	https://github.com/AOMediaCodec/libavif/archive/v${PV}.tar.gz
		-> ${P}.tar.gz
	extras? (
		https://github.com/kmurray/libargparse/archive/${ARGPARSE_COMMIT}.tar.gz
			-> libargparse-${ARGPARSE_COMMIT}.tar.gz
	)
"

LICENSE="
	BSD-2
	extras? ( MIT )
"
# See bug #822336 re subslot
SLOT="0/16.1.1"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc64 ~riscv ~sparc ~x86"
IUSE="+aom dav1d examples extras gdk-pixbuf rav1e svt-av1 libyuv test"
RESTRICT="!test? ( test )"
REQUIRED_USE="|| ( aom dav1d )"

DEPEND="
	media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}]
	media-libs/libpng:=[${MULTILIB_USEDEP}]
	aom? ( >=media-libs/libaom-3.3.0:=[${MULTILIB_USEDEP}] )
	dav1d? ( >=media-libs/dav1d-1.0.0:=[${MULTILIB_USEDEP}] )
	extras? (
		test? (
			dev-cpp/gtest
			media-gfx/imagemagick[lcms]
		)
	)
	gdk-pixbuf? (
		dev-libs/glib:2[${MULTILIB_USEDEP}]
		x11-libs/gdk-pixbuf:2[${MULTILIB_USEDEP}]
	)
	rav1e? ( >=media-video/rav1e-0.5.1:=[capi] )
	svt-av1? ( >=media-libs/svt-av1-0.9.1:= )
	libyuv? ( media-libs/libyuv:= )
"
RDEPEND="
	${DEPEND}
"
BDEPEND="
	virtual/pkgconfig
"

src_prepare() {
	cmake_src_prepare

	# Bug: https://bugs.gentoo.org/951614
	if use extras; then
		mv "${WORKDIR}/libargparse-${ARGPARSE_COMMIT}" "${S}/ext/libargparse" ||
			die "mv failed"
	fi
}

multilib_src_configure() {
	local mycmakeargs=(
		-DBUILD_SHARED_LIBS=ON
		-DAVIF_CODEC_LIBGAV1=OFF

		# Use system libraries.
		-DAVIF_CODEC_AOM=$(usex aom SYSTEM OFF)
		-DAVIF_CODEC_DAV1D=$(usex dav1d SYSTEM OFF)
		-DAVIF_ZLIBPNG=SYSTEM
		-DAVIF_JPEG=SYSTEM

		-DAVIF_BUILD_GDK_PIXBUF=$(usex gdk-pixbuf ON OFF)

		-DAVIF_ENABLE_WERROR=OFF
	)

	if multilib_is_native_abi; then
		mycmakeargs+=(
			-DAVIF_CODEC_RAV1E=$(usex rav1e SYSTEM OFF)
			-DAVIF_CODEC_SVT=$(usex svt-av1 SYSTEM OFF)
			-DAVIF_LIBYUV=$(usex libyuv SYSTEM OFF)

			-DAVIF_BUILD_EXAMPLES=$(usex examples ON OFF)
			-DAVIF_BUILD_APPS=$(usex extras ON OFF)
			-DAVIF_BUILD_TESTS=$(usex test ON OFF)
			-DAVIF_GTEST=$(usex extras $(usex test SYSTEM OFF) OFF)
		)
	else
		mycmakeargs+=(
			-DAVIF_CODEC_RAV1E=OFF
			-DAVIF_CODEC_SVT=OFF
			-DAVIF_LIBYUV=OFF

			-DAVIF_BUILD_EXAMPLES=OFF
			-DAVIF_BUILD_APPS=OFF
			-DAVIF_BUILD_TESTS=OFF
			-DAVIF_GTEST=OFF
		)

		if ! use aom ; then
			if use rav1e || use svt-av1 ; then
				ewarn "libavif on ${MULTILIB_ABI_FLAG} will work in read-only mode."
				ewarn "Support for rav1e and/or svt-av1 is is not available on ${MULTILIB_ABI_FLAG}"
				ewarn "Enable aom flag for full support on ${MULTILIB_ABI_FLAG}"
			fi
		fi
	fi

	cmake_src_configure
}

pkg_postinst() {
	if ! use aom && ! use rav1e && ! use svt-av1 ; then
		ewarn "No AV1 encoder is set,"
		ewarn "libavif will work in read-only mode."
		ewarn "Enable aom, rav1e or svt-av1 flag if you want to save .AVIF files."
	fi

	use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
}

pkg_postrm() {
	use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
}