Christoph Reiter aa5852e6c4 pathtools: expose sanitise_path() again
this doesn't really work if the private headers aren't included since the
prototype is missing then
2023-10-30 21:01:44 +01:00

239 lines
8.3 KiB
Bash

# Maintainer: Alexey Pavlov <Alexpux@gmail.com>
# Contributor: Zach Bacon <11doctorwhocanada@gmail.com>
# Contributor: wirx6 <wirx654@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>
_realname=ffmpeg
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=6.0
pkgrel=9
pkgdesc="Complete solution to record, convert and stream audio and video (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://ffmpeg.org/"
license=('spdx:GPL-3.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-aom"
"${MINGW_PACKAGE_PREFIX}-bzip2"
"${MINGW_PACKAGE_PREFIX}-frei0r-plugins"
"${MINGW_PACKAGE_PREFIX}-fribidi"
"${MINGW_PACKAGE_PREFIX}-fontconfig"
"${MINGW_PACKAGE_PREFIX}-dav1d"
"${MINGW_PACKAGE_PREFIX}-gmp"
"${MINGW_PACKAGE_PREFIX}-gnutls"
"${MINGW_PACKAGE_PREFIX}-gsm"
"${MINGW_PACKAGE_PREFIX}-lame"
"${MINGW_PACKAGE_PREFIX}-libass"
"${MINGW_PACKAGE_PREFIX}-libbluray"
"${MINGW_PACKAGE_PREFIX}-libcaca"
"${MINGW_PACKAGE_PREFIX}-libexif"
"${MINGW_PACKAGE_PREFIX}-libgme"
"${MINGW_PACKAGE_PREFIX}-libiconv"
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-aarch64* ]] || echo "${MINGW_PACKAGE_PREFIX}-libmfx")
"${MINGW_PACKAGE_PREFIX}-libmodplug"
"${MINGW_PACKAGE_PREFIX}-libssh"
"${MINGW_PACKAGE_PREFIX}-libplacebo"
"${MINGW_PACKAGE_PREFIX}-librsvg"
"${MINGW_PACKAGE_PREFIX}-libsoxr"
"${MINGW_PACKAGE_PREFIX}-libtheora"
"${MINGW_PACKAGE_PREFIX}-libvorbis"
"${MINGW_PACKAGE_PREFIX}-libvpx"
"${MINGW_PACKAGE_PREFIX}-libwebp"
"${MINGW_PACKAGE_PREFIX}-libxml2"
"${MINGW_PACKAGE_PREFIX}-openal"
"${MINGW_PACKAGE_PREFIX}-opencore-amr"
"${MINGW_PACKAGE_PREFIX}-openjpeg2"
"${MINGW_PACKAGE_PREFIX}-opus"
"${MINGW_PACKAGE_PREFIX}-rav1e"
"${MINGW_PACKAGE_PREFIX}-rtmpdump"
"${MINGW_PACKAGE_PREFIX}-SDL2"
"${MINGW_PACKAGE_PREFIX}-speex"
"${MINGW_PACKAGE_PREFIX}-srt"
$([[ "${CARCH}" == "i686" ]] || echo "${MINGW_PACKAGE_PREFIX}-svt-av1")
"${MINGW_PACKAGE_PREFIX}-vid.stab"
"${MINGW_PACKAGE_PREFIX}-vulkan"
"${MINGW_PACKAGE_PREFIX}-libx264"
"${MINGW_PACKAGE_PREFIX}-x265"
"${MINGW_PACKAGE_PREFIX}-xvidcore"
"${MINGW_PACKAGE_PREFIX}-zimg"
"${MINGW_PACKAGE_PREFIX}-zlib")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-autotools"
"${MINGW_PACKAGE_PREFIX}-pkgconf"
"${MINGW_PACKAGE_PREFIX}-dlfcn"
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-aarch64* ]] || echo "${MINGW_PACKAGE_PREFIX}-amf-headers")
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-aarch64* ]] || echo "${MINGW_PACKAGE_PREFIX}-ffnvcodec-headers")
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-aarch64* ]] || echo "${MINGW_PACKAGE_PREFIX}-nasm"))
source=(https://ffmpeg.org/releases/${_realname}-${pkgver}.tar.xz{,.asc}
"pathtools.c"
"pathtools.h"
"0005-Win32-Add-path-relocation-to-frei0r-plugins-search.patch"
"0002-gcc-12.patch"
"0001-lavu-vulkan-fix-handle-type-for-32-bit-targets.patch"
https://github.com/FFmpeg/FFmpeg/commit/f9620d74cd49c35223304ba41e28be6144e45783.patch
https://github.com/FFmpeg/FFmpeg/commit/03823ac0c6a38bd6ba972539e3203a592579792f.patch
https://github.com/FFmpeg/FFmpeg/commit/d2b46c1ef768bc31ba9180f6d469d5b8be677500.patch
https://github.com/FFmpeg/FFmpeg/commit/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch)
validpgpkeys=('FCF986EA15E6E293A5644F10B4322F04D67658D8')
sha256sums=('57be87c22d9b49c112b6d24bc67d42508660e6b718b3db89c44e47e289137082'
'SKIP'
'ebf471173f5ee9c4416c10a78760cea8afaf1a4a6e653977321e8547ce7bf3c0'
'1585ef1b61cf53a2ca27049c11d49e0834683dfda798f03547761375df482a90'
'58f91fde8be7fa093b13275c37b0276de08537449749599e5a50f4f9c8b20926'
'84b9fcaa188eef15201a105a44c53d647e4fb800a5032336e0948d6bed2cbc1b'
'bbc7e7b91886a8ac037d8e70692186ee4b48c37b4f1d82b81af8a54463b24803'
'17df7ec458c7c04f365b3a00328abb3a7cf7f9a7ba9cecf0e492be116d7e6277'
'2d90ce59ca85ef42e02b0e707080a6b1447783c035f48a7103d71c4d691a4dcf'
'24cbefad7b2ce3b813ef36a36b984e631c579d43b4107baf5d198fb9da23412b'
'8fad5f253bcda7a17523dbfcbfcfd60b3db23783dcdb65998005cddc7c7776c3')
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
for _fname in "$@"
do
msg2 "Applying ${_fname}"
patch -Nbp1 -i "${srcdir}"/${_fname}
done
}
prepare() {
test ! -d "${startdir}/../mingw-w64-pathtools" || {
cmp "${startdir}/../mingw-w64-pathtools/pathtools.c" "${srcdir}/pathtools.c" &&
cmp "${startdir}/../mingw-w64-pathtools/pathtools.h" "${srcdir}/pathtools.h"
} || exit 1
cd "${srcdir}/${_realname}-${pkgver}"
cp -fHv "${srcdir}"/pathtools.[ch] libavfilter/
apply_patch_with_msg \
0005-Win32-Add-path-relocation-to-frei0r-plugins-search.patch \
0002-gcc-12.patch
# https://trac.ffmpeg.org/ticket/9983
# https://ffmpeg.org/pipermail/ffmpeg-devel/2023-March/307142.html
apply_patch_with_msg 0001-lavu-vulkan-fix-handle-type-for-32-bit-targets.patch
apply_patch_with_msg \
f9620d74cd49c35223304ba41e28be6144e45783.patch \
03823ac0c6a38bd6ba972539e3203a592579792f.patch \
d2b46c1ef768bc31ba9180f6d469d5b8be677500.patch
# https://github.com/msys2/MINGW-packages/issues/17946
apply_patch_with_msg effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch
}
build() {
local -a common_config
common_config+=(
--disable-debug
--disable-stripping
--disable-doc
--enable-dxva2
--enable-d3d11va
--enable-fontconfig
--enable-frei0r
--enable-gmp
--enable-gnutls
--enable-gpl
--enable-iconv
--enable-libaom
--enable-libass
--enable-libbluray
--enable-libcaca
--enable-libdav1d
--enable-libfreetype
--enable-libfribidi
--enable-libgme
--enable-libgsm
--enable-libmodplug
--enable-libmp3lame
--enable-libopencore_amrnb
--enable-libopencore_amrwb
--enable-libopenjpeg
--enable-libopus
--enable-libplacebo
--enable-librsvg
--enable-librtmp
--enable-libssh
--enable-libsoxr
--enable-libspeex
--enable-libsrt
--enable-libtheora
--enable-libvidstab
--enable-libvorbis
--enable-libx264
--enable-libx265
--enable-libxvid
--enable-libvpx
--enable-libwebp
--enable-libxml2
--enable-libzimg
--enable-openal
--enable-pic
--enable-postproc
--enable-runtime-cpudetect
--enable-swresample
--enable-version3
--enable-vulkan
--enable-zlib
--enable-librav1e
)
if [[ "${CARCH}" != "i686" ]]; then
common_config+=(
--enable-libsvtav1
)
fi
if [[ "${MINGW_PACKAGE_PREFIX}" != *clang-aarch64* ]]; then
common_config+=(
--enable-libmfx
--enable-amf
--enable-nvenc
)
fi
for _variant in -static -shared; do
[[ -d "${srcdir}/build-${MSYSTEM}${_variant}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}${_variant}"
mkdir -p "${srcdir}/build-${MSYSTEM}${_variant}" && cd "${srcdir}/build-${MSYSTEM}${_variant}"
if [[ ${_variant} == -static ]]; then
ENABLE_VARIANT="--enable-static --pkg-config-flags=--static"
else
ENABLE_VARIANT=--enable-shared
fi
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--target-os=mingw32 \
--arch=${CARCH%%-*} \
--cc=${CC} \
--cxx=${CXX} \
"${common_config[@]}" \
--logfile=config.log \
${ENABLE_VARIANT}
make
done
}
check() {
for _variant in -static -shared; do
cd "${srcdir}/build-${MSYSTEM}${_variant}"
# workaround for conflict with SDL main(), use it if you have SDL installed
# make check CC_C="-c -Umain"
make check || true
done
}
package() {
for _variant in -static -shared; do
cd "${srcdir}/build-${MSYSTEM}${_variant}"
make DESTDIR="${pkgdir}" install
done
rm -f ${pkgdir}/${MINGW_PREFIX}/lib/*.def
rm -f ${pkgdir}/${MINGW_PREFIX}/bin/*.lib
local PREFIX_DEPS=$(cygpath -am ${MINGW_PREFIX})
find ${pkgdir}${MINGW_PREFIX}/lib/pkgconfig -name *.pc -exec sed -i -e"s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" {} \;
}