# Maintainer: Levente Polyak # Contributor: Giovanni Scafora # Contributor: Sarah Hay # Contributor: Martin Sandsmark # ALARM: Kevin Mihelich # - enable gles2 # - disable taglib on v7 pkgbase=vlc pkgname=(vlc libvlc) _vlcver=3.0.21 # optional fixup version including hyphen _vlcfixupver= pkgver=$_vlcver${_vlcfixupver//-/.r} pkgrel=4 pkgdesc='Multi-platform MPEG, VCD/DVD, and DivX player' url=https://www.videolan.org/vlc/ arch=(x86_64) license=( GPL-2.0-or-later LGPL-2.1-or-later ) makedepends=( a52dec aalib abseil-cpp alsa-lib aom aribb24 aribb25 avahi bash cairo dav1d dbus faad2 ffmpeg4.4 # NOTE: switch to ffmpeg4.4, as ffmpeg >= 5 requires extensive changes disabling VAAPI (only supported with vlc >= 4) flac fluidsynth fontconfig freetype2 fribidi gcc-libs gdk-pixbuf2 glib2 glibc gnutls gst-plugins-base-libs gtk3 harfbuzz hicolor-icon-theme jack libarchive libass libavc1394 libbluray libcaca libdca libdc1394 libdvbpsi libdvdcss libdvdnav libdvdread libglvnd libgme libgoom2 libjpeg-turbo libkate libmad libmatroska libmicrodns libmodplug libmpcdec libmpeg2 libmtp libnotify libnfs libogg libpng libproxy libpulse librsvg libsamplerate libsecret libshout libsoxr libssh2 libtar libtheora libtiger libupnp libva libvorbis libvpx libx11 libxcb libxinerama libxml2 libxpm lirc live-media lua mesa mpg123 opus pcsclite projectm protobuf qt5-base qt5-svg qt5-x11extras sdl_image smbclient speex srt systemd-libs taglib twolame vcdimager wayland wayland-protocols x264 x265 xcb-util-keysyms xosd zlib zvbi ) options=(!emptydirs) source=( https://download.videolan.org/$pkgname/$_vlcver/$pkgname-$_vlcver$_vlcfixupver.tar.xz{,.asc} update-vlc-plugin-cache.hook taglib-2.patch ) sha512sums=('cb1af76c8056648c331d7e6e0680d161ed1849eb635987504f45eae02531e9b432651034317fa7e02b0722905dfb9f0f5dad67b5924cc62edcaf0d173ac36aee' 'SKIP' 'b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3' 'ea0d1e1dfed16dac8f9027eb55d987dee59630568b9744ceb42bfa134ea9295252d83574f3d793a76a5be3b02661c1731ed366003b6b55b2d7f02fde70586ff3') validpgpkeys=(65F7C6B4206BD057A7EB73787180713BE58D1ADC) # VideoLAN Release Signing Key prepare() { cd $pkgname-$_vlcver sed -e 's:truetype/ttf-dejavu:TTF:g' -i modules/visualization/projectm.cpp sed -e 's|-Werror-implicit-function-declaration||g' -i configure sed 's|whoami|echo builduser|g' -i configure sed 's|hostname -f|echo arch|g' -i configure local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" [[ $src = *.patch ]] || continue echo "Applying patch $src..." patch -Np1 < "../$src" done autoreconf -vf } build() { [[ $CARCH == "armv7h" ]] && taglib="--disable-taglib" || taglib="--enable-taglib" local configure_options=( --disable-chromaprint --disable-fdkaac --disable-libgcrypt --disable-libplacebo --disable-opencv --disable-rpath --disable-schroedinger --disable-update-check --enable-a52 --enable-aa --enable-alsa --enable-aom --enable-archive --enable-aribsub --enable-aribcam --enable-avahi --enable-avcodec --enable-avformat --enable-bluray --enable-caca --enable-chromecast --enable-dav1d --enable-dc1394 --enable-dca --enable-dv1394 --enable-dvbpsi --enable-dvdnav --enable-dvdread --enable-faad --enable-flac --enable-fluidsynth --enable-fontconfig --enable-freetype --enable-fribidi --enable-gles2 --enable-gnutls --enable-gme --enable-goom --enable-gst-decode --enable-harfbuzz --enable-jack --enable-jpeg --enable-kate --enable-kwallet --enable-libass --enable-libmpeg2 --enable-libtar --enable-libva --enable-libxml2 --enable-lirc --enable-live555 --enable-mad --enable-matroska --enable-mod --enable-mpc --enable-mpg123 --enable-microdns --enable-mtp --enable-ncurses --enable-nfs --enable-nls --enable-notify --enable-ogg --enable-oggspots --enable-opus --enable-png --enable-postproc --enable-projectm --enable-pulse --enable-qt --enable-realrtsp --enable-samplerate --enable-sdl-image --enable-secret --enable-sftp --enable-shout --enable-skins2 --enable-smbclient --enable-soxr --enable-speex --enable-srt --enable-svg --enable-svgdec $taglib --enable-tiger --enable-twolame --enable-upnp --enable-vdpau --enable-vlc --enable-vorbis --enable-vpx --enable-wayland --enable-x264 --enable-x265 --enable-zvbi --prefix=/usr --sysconfdir=/etc --with-kde-solid=/usr/share/solid/actions/ ) cd $pkgname-$_vlcver export CFLAGS+=" -I/usr/include/samba-4.0 -ffat-lto-objects -Wno-incompatible-pointer-types" export CPPFLAGS+=" -I/usr/include/samba-4.0" export CXXFLAGS+=" -std=c++17" export PKG_CONFIG_PATH="/usr/lib/ffmpeg4.4/pkgconfig" export LUAC=/usr/bin/luac export LUA_LIBS="$(pkg-config --libs lua)" export RCC=/usr/bin/rcc-qt5 export PKG_CONFIG_PATH="/usr/lib/ffmpeg4.4/pkgconfig/:$PKG_CONFIG_PATH" ./configure "${configure_options[@]}" # prevent excessive overlinking due to libtool sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool make } _pick() { local p="$1" f d; shift for f; do d="$srcdir/$p/${f#$pkgdir/}" mkdir -p "$(dirname "$d")" mv "$f" "$d" rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" done } package_vlc() { depends=( a52dec abseil-cpp aribb24 bash cairo dbus faad2 ffmpeg4.4 # NOTE: switch to ffmpeg4.4, as ffmpeg >= 5 requires extensive changes disabling VAAPI (only supported with vlc >= 4) fontconfig freetype2 fribidi gcc-libs gdk-pixbuf2 glib2 glibc gnutls harfbuzz hicolor-icon-theme libarchive libdca libdvbpsi libglvnd libidn libmad libmatroska libmpcdec libmpeg2 libproxy libsecret libtar libupnp libva libvlc libx11 libxcb libxinerama libxml2 libxpm lua qt5-base qt5-svg qt5-x11extras taglib wayland xcb-util-keysyms zlib ) optdepends=( 'aalib: ASCII art video output' 'alsa-lib: ALSA audio output' 'aom: AOM AV1 codec' 'aribb25: aribcam support' 'avahi: service discovery using bonjour protocol' 'dav1d: dav1d AV1 decoder' 'flac: Free Lossless Audio Codec plugin' 'fluidsynth: FluidSynth based MIDI playback plugin' 'gnu-free-fonts: subtitle font' 'gst-plugins-base-libs: for libgst plugins' 'gstreamer: for libgst plugins' 'gtk3: notification plugin' 'jack: jack audio server' 'kwallet: kwallet keystore' 'libass: Subtitle support' 'libavc1394: devices using the 1394ta AV/C' 'libbluray: Blu-Ray video input' 'libcaca: colored ASCII art video output' 'libcdio: audio CD playback' 'libdc1394: IEEE 1394 access plugin' 'libdvdcss: decoding encrypted DVDs' 'libdvdnav: DVD with navigation input module' 'libdvdread: DVD input module' 'libgme: Game Music Emu plugin' 'libgoom2: Goom visualization' 'libjpeg-turbo: JPEG support' 'libkate: Kate codec' 'libmodplug: MOD output plugin' 'libmicrodns: mDNS services discovery (chromecast etc)' 'libmtp: MTP devices discovery' 'libnfs: NFS access' 'libnotify: notification plugin' 'libogg: Ogg and OggSpots codec' 'libpng: PNG support' 'libpulse: PulseAudio audio output' 'libraw1394: IEEE 1394 access plugin' 'librsvg: SVG plugin' 'libsamplerate: audio Resampler' 'libshout: shoutcast/icecast output plugin' 'libsoxr: SoX audio Resampler' 'libssh2: sftp access' 'libtheora: theora codec' 'libtiger: Tiger rendering for Kate streams' 'libva-intel-driver: video backend intel' 'libva-vdpau-driver: vdpau backend nvidia' 'libvorbis: Vorbis decoder/encoder' 'libvpx: VP8 and VP9 codec' 'lirc: lirc control' 'live-media: streaming over RTSP' 'lua-socket: http interface' 'mpg123: mpg123 codec' 'ncurses: ncurses interface' 'opus: opus codec' 'pcsclite: aribcam support' 'projectm: ProjectM visualisation' 'protobuf: chromecast streaming' 'sdl12-compat: SDL image support' 'sdl_image: SDL image support' 'smbclient: SMB access plugin' 'speex: Speex codec' 'speexdsp: Speex codec' 'srt: SRT input/output plugin' 'systemd-libs: udev services discovery' 'ttf-dejavu: subtitle font' 'twolame: TwoLAME mpeg2 encoder plugin' 'vcdimager: navigate VCD with libvcdinfo' 'x264: H264 encoding' 'x265: HEVC/H.265 encoder' 'zvbi: VBI/Teletext/webcam/v4l2 capture/decoding' ) conflicts=(vlc-plugin) replaces=(vlc-plugin) cd $pkgname-$_vlcver make DESTDIR="$pkgdir" install ( cd "$pkgdir" _pick lib$pkgname usr/include _pick lib$pkgname usr/lib/libvlc* _pick lib$pkgname usr/lib/pkgconfig/libvlc.pc ) for res in 16 32 48 128 256; do install -Dm 644 share/icons/${res}x$res/vlc.png -t "$pkgdir/usr/share/icons/hicolor/${res}x$res/apps/" done install -Dm 644 ../update-vlc-plugin-cache.hook -t "$pkgdir/usr/share/libalpm/hooks/" } package_libvlc() { pkgdesc+=" - library" depends=( dbus gcc-libs glibc ) mv -v $pkgname/* "$pkgdir" } # vim: ts=2 sw=2 et: