void-packages/srcpkgs/ffmpeg/template

243 lines
7.1 KiB
Bash

# Template file for 'ffmpeg'
# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname!
pkgname=ffmpeg
version=4.4.4
revision=10
build_style=meta
short_desc="Decoding, encoding and streaming software (transitional dummy package)"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://www.ffmpeg.org"
changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog"
distfiles="https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz"
checksum=e80b380d595c809060f66f96a5d849511ef4a76a26b76eacf5778b94c3570309
hostmakedepends="pkg-config perl"
makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel
libXext-devel libXvMC-devel libxcb-devel lame-devel libtheora-devel
libvorbis-devel x264-devel xvidcore-devel jack-devel SDL2-devel
libcdio-paranoia-devel librtmp-devel libmodplug-devel gnutls-devel
speex-devel celt-devel harfbuzz-devel libass-devel opus-devel ocl-icd-devel
libbs2b-devel libvidstab-devel vmaf-devel libbluray-devel
$(vopt_if pulseaudio pulseaudio-devel)
$(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel)
$(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel)
$(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel)
$(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel)
$(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel)
$(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel)
$(vopt_if drm libdrm-devel) libsvt-av1-devel
$(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
$(vopt_if vulkan 'vulkan-loader-devel')
$(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
# ffmpeg6 provides ffmpeg, ffprobe, ffplay, etc
depends="ffmpeg6"
build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
dav1d zimg webp sofa vulkan drm srt rist nvdec"
build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
desc_option_sofa="Enable support for AES SOFA"
desc_option_webp="Enable support for WebP"
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*)
hostmakedepends+=" nasm"
build_options_default+=" vaapi vdpau nvenc nvdec"
;;
ppc64*) build_options_default+=" vaapi vdpau";;
mips*) CFLAGS="-mnan=legacy";;
esac
_apply_patch() {
local args="$1" pname="$(basename $2)"
if [ ! -f ".${pname}_done" ]; then
patch -N $args -i $2
touch .${pname}_done
fi
}
post_patch() {
case "$XBPS_TARGET_MACHINE" in
ppc64le*) ;;
ppc*) _apply_patch -p1 ${FILESDIR}/altivec.patch ;;
esac
vsed -i libavfilter/vf_libvmaf.c -e 's!/usr/local/share/model/\(vmaf_v0.6.1\).pkl!/usr/share/vmaf/\1.json!'
}
do_configure() {
# Fix gcc on x86_64-musl only
if [ "$XBPS_TARGET_MACHINE" = "x86_64-musl" ]; then
vsed -i configure -e "s;_cflags_speed='-O3';_cflags_speed='-O2';"
fi
if [ "$CROSS_BUILD" ]; then
case "$XBPS_TARGET_MACHINE" in
arm*) _arch="arm";;
aarch64*) _arch="aarch64";;
mips*) _arch="mips";;
ppc64*) _arch="ppc64";;
ppc*) _arch="ppc";;
*) _arch="${XBPS_TARGET_MACHINE%%-musl}";;
esac
_args+=" --enable-cross-compile
--sysroot=$XBPS_CROSS_BASE
--cross-prefix=${XBPS_CROSS_TRIPLET}-
--target-os=linux --arch=${_arch}"
fi
case "$XBPS_TARGET_MACHINE" in
ppc|ppc-musl) _args+=" --disable-altivec";;
esac
if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
_args+=" --extra-libs=-latomic"
fi
./configure --prefix=/usr --disable-debug --enable-gpl --enable-gnutls \
--disable-stripping \
--enable-libcdio --enable-version3 --enable-runtime-cpudetect \
--enable-libmp3lame --enable-libvorbis --enable-libxvid \
--enable-libx264 $(vopt_enable vpx libvpx) --enable-libtheora \
--enable-shared --enable-static --enable-libxcb \
$(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \
--enable-libspeex --enable-libcelt --enable-libass \
--enable-libopus --enable-librtmp --enable-libjack \
$(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \
--disable-libopencore_amrnb --disable-libopencore_amrwb \
--disable-libopenjpeg --enable-libbluray --enable-libsvtav1 \
--enable-postproc --enable-opencl --enable-libvmaf ${_args} \
$(vopt_enable x265 libx265) \
$(vopt_enable v4l2 libv4l2) \
$(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \
--enable-libbs2b --enable-avresample --enable-libvidstab \
$(vopt_enable dav1d libdav1d) \
$(vopt_enable zimg libzimg) \
$(vopt_enable webp libwebp) \
$(vopt_enable sofa libmysofa) \
$(vopt_enable vulkan) \
$(vopt_enable drm libdrm) \
$(vopt_enable srt libsrt) \
$(vopt_enable rist librist) \
$(vopt_if nvenc '--enable-nvenc') \
$(vopt_if nvdec '--enable-nvdec')
}
do_build() {
make ${makejobs}
}
# transitional dummy package for ffmpeg6
# binaries conflict with 6
do_install() {
make DESTDIR=${DESTDIR} install
rm -rf ${DESTDIR}/usr/bin
rm -rf ${DESTDIR}/usr/share/man/man1
rm -rf ${DESTDIR}/usr/share/ffmpeg/ffprobe.xsd
rm -rf ${DESTDIR}/usr/share/ffmpeg/libvpx*ffpreset
}
libavcodec_package() {
short_desc="FFmpeg codec library"
pkg_install() {
vmove "usr/lib/libavcodec.so.*"
}
}
libavdevice_package() {
short_desc="FFmpeg device handling library"
pkg_install() {
vmove "usr/lib/libavdevice.so.*"
}
}
libavresample_package() {
short_desc="FFmpeg audio resampling library"
pkg_install() {
vmove "usr/lib/libavresample.so.*"
}
}
libavformat_package() {
short_desc="FFmpeg file format library"
pkg_install() {
vmove "usr/lib/libavformat.so.*"
}
}
libavutil_package() {
short_desc="FFmpeg utility library"
pkg_install() {
vmove "usr/lib/libavutil.so.*"
}
}
libavfilter_package() {
short_desc="FFmpeg audio/video filter library"
pkg_install() {
vmove "usr/lib/libavfilter.so.*"
}
}
libpostproc_package() {
short_desc="FFmpeg video postprocessing library"
pkg_install() {
vmove "usr/lib/libpostproc.so.*"
}
}
libswscale_package() {
short_desc="FFmpeg video scaling library"
pkg_install() {
vmove "usr/lib/libswscale.so.*"
}
}
libswresample_package() {
short_desc="FFmpeg video resampling library"
pkg_install() {
vmove "usr/lib/libswresample.so.*"
}
}
ffmpeg-devel_package() {
depends="
libavcodec>=${version}_${revision}
libavdevice>=${version}_${revision}
libavformat>=${version}_${revision}
libavutil>=${version}_${revision}
libavfilter>=${version}_${revision}
libpostproc>=${version}_${revision}
libswscale>=${version}_${revision}
libswresample>=${version}_${revision}
libavresample>=${version}_${revision}"
short_desc="Decoding, encoding and streaming software - development files"
conflicts="ffmpeg6-devel"
replaces="ffmpeg6-devel>=0"
case "$XBPS_TARGET_MACHINE" in
i686*)
# /usr/bin/strip: error: the input file '/destdir//ffmpeg-devel-4.4.4/usr/lib/libavfilter.a(vf_atadenoise.o)' has no sections
nostrip_files="/usr/lib/libavfilter.a";;
esac
pkg_install() {
vmove usr/include
vmove usr/lib/pkgconfig
vmove "usr/lib/*.a"
vmove "usr/lib/*.so"
vmove usr/share/ffmpeg/examples
vmove usr/share/man/man3
}
}
ffplay_package() {
short_desc="Simple video player using FFmpeg and SDL2 (transitional dummy package)"
build_style="meta"
depends="ffplay6"
}