# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=vlc
pkgver=2.2.6
_pkgver=${pkgver/_/-}
_ver=${_pkgver%[a-z]}
pkgrel=0
pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
triggers="vlc-libs.trigger=/usr/lib/vlc/plugins"
pkgusers="vlc"
pkggroups="vlc"
url="http://www.videolan.org/vlc/"
arch="all"
license="GPL2+"
subpackages="$pkgname-dev
	$pkgname-doc
	$pkgname-qt
	$pkgname-xorg
	$pkgname-daemon::noarch
	$pkgname-libs
	$pkgname-plugins

	$pkgname-plugins-access:plugins_access
	$pkgname-plugins-access_output:plugins_access_output
	$pkgname-plugins-audio_filter:plugins_audio_filter
	$pkgname-plugins-audio_mixer:plugins_audio_mixer
	$pkgname-plugins-audio_output:plugins_audio_output
	$pkgname-plugins-codec:plugins_codec
	$pkgname-plugins-control:plugins_control
	$pkgname-plugins-demux:plugins_demux
	$pkgname-plugins-gui:plugins_gui
	$pkgname-plugins-lua:plugins_lua
	$pkgname-plugins-meta_engine:plugins_meta_engine
	$pkgname-plugins-misc:plugins_misc
	$pkgname-plugins-mux:plugins_mux
	$pkgname-plugins-notify:plugins_notify
	$pkgname-plugins-packetizer:plugins_packetizer
	$pkgname-plugins-services_discovery:plugins_services_discovery
	$pkgname-plugins-stream_filter:plugins_stream_filter
	$pkgname-plugins-stream_out:plugins_stream_out
	$pkgname-plugins-text_renderer:plugins_text_renderer
	$pkgname-plugins-video_chroma:plugins_video_chroma
	$pkgname-plugins-video_filter:plugins_video_filter
	$pkgname-plugins-video_output:plugins_video_output
	$pkgname-plugins-visualization:plugins_visualization"
depends="ttf-dejavu $pkgname-plugins"
makedepends="
	a52dec-dev
	alsa-lib-dev
	automake
	autoconf
	avahi-dev
	libtool
	dbus-dev
	faad2-dev
	ffmpeg-dev
	flac-dev
	freetype-dev
	fribidi-dev
	gtk+-dev
	libbluray-dev>=0.2.1 libbluray-dev<20100000
	libavc1394-dev
	libcddb-dev
	libdc1394-dev>=2.1.0
	libdvbpsi-dev
	libdvdnav-dev
	libdvdread-dev
	libgcrypt-dev
	libice-dev
	libmad-dev
	libmatroska-dev
	libmpeg2-dev
	libnotify-dev
	libogg-dev
	libraw1394-dev>=2.0.1
	libshout-dev
	libsm-dev
	libtheora-dev
	libva-dev
	libvdpau-dev
	libvorbis-dev
	libx11-dev
	libxext-dev
	libxinerama-dev
	libxml2-dev
	libxpm-dev
	libxv-dev
	live-media-dev>=2012.01.26
	lua5.2-dev
	ncurses-dev
	mesa-dev
	pkgconfig
	qt5-qtbase-dev
	sdl2-dev
	speex-dev
	sysfsutils-dev
	taglib-dev
	eudev-dev
	v4l-utils-dev
	x264-dev
	xcb-util-renderutil-dev
	xcb-util-keysyms-dev
	xdg-utils
	samba-dev
	"
source="http://download.videolan.org/pub/videolan/$pkgname/${_ver}/$pkgname-$_pkgver.tar.xz
	vlc-2.2.4-gcc6_fixes-1.patch
	vlc-2.2.4-ffmpeg3-1.patch
	fix-waitpid-usage.patch
	omxil-rpi-codecs.patch
	vlc-libs.trigger"

builddir="$srcdir"/$pkgname-$_ver

prepare() {
	cd "$builddir"
	default_prepare
	sed -i -e "/^libxscreensaver_plugin_la_SOURCES/s/^/#/" \
		modules/misc/Modules.am || return 1
	NOCONFIGURE=1 ./bootstrap || return 1
}

build() {
	local _arch_opts=
	export CXXFLAGS="$CXXFLAGS -std=gnu++11"
	cd "$builddir"
	sed -e 's:/usr/share/fonts/truetype/freefont/FreeSerifBold.ttf:/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf:' \
		-i modules/text_renderer/freetype.c

	# -fpermissive is needed due to zlib 1.2.6 changing
	# void* to gzFile on gz*() functions
	export CFLAGS="$CFLAGS -D_GNU_SOURCE"
	export CXXFLAGS="$CXXFLAGS -fpermissive"

	case "$CARCH" in
	arm*) _arch_opts="--enable-omxil --enable-omxil-vout --enable-rpi-omxil" ;;
	esac

	LUA=lua5.2 \
	LUAC=luac5.2 \
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--disable-mmx \
		--disable-sse \
		--disable-nls \
		--disable-optimizations \
		--disable-rpath \
		--enable-a52 \
		--enable-avcodec \
		--enable-avformat \
		--enable-bluray \
		--enable-dbus \
		--enable-dc1394 \
		--enable-dvbpsi \
		--enable-dvdread \
		--enable-dvdnav \
		--enable-faad \
		--enable-flac \
		--enable-httpd \
		--enable-libcddb \
		--enable-libva \
		--enable-live555 \
		--enable-merge-ffmpeg \
		--enable-ncurses \
		--enable-realrtsp \
		--enable-sdl \
		--enable-shout \
		--enable-skins2 \
		--enable-speex \
		--enable-sout \
		--enable-taglib \
		--enable-theora \
		--enable-v4l2 \
		--enable-vdpau \
		--enable-vlm \
		--enable-vorbis \
		--enable-wma-fixed \
		--enable-x264 \
		--enable-xvideo \
		$_arch_opts \
		|| return 1

	make || return 1
}

package() {
	cd "$builddir"
	make DESTDIR="$pkgdir" install || return 1
	# delete cache as it's autocreated by trigger
	rm -rf "$pkgdir"/usr/lib/vlc/plugins/plugins.dat
	# delete unneeded mozilla and kde support files
	rm -rf "$pkgdir"/usr/lib/mozilla
	rm -rf "$pkgdir"/usr/share/kde4
}

plugins() {
	pkgdesc="$pkgname all plugins meta package"
	depends="$pkgname-plugins-access
		$pkgname-plugins-access_output
		$pkgname-plugins-audio_filter
		$pkgname-plugins-audio_mixer
		$pkgname-plugins-audio_output
		$pkgname-plugins-codec
		$pkgname-plugins-control
		$pkgname-plugins-demux
		$pkgname-plugins-gui
		$pkgname-plugins-lua
		$pkgname-plugins-meta_engine
		$pkgname-plugins-misc
		$pkgname-plugins-mux
		$pkgname-plugins-notify
		$pkgname-plugins-packetizer
		$pkgname-plugins-services_discovery
		$pkgname-plugins-stream_filter
		$pkgname-plugins-stream_out
		$pkgname-plugins-text_renderer
		$pkgname-plugins-video_chroma
		$pkgname-plugins-video_filter
		$pkgname-plugins-video_output
		$pkgname-plugins-visualization"
	mkdir -p "$subpkgdir"
}

_mv() {
	local dir=${1%/*}
	mkdir -p "$subpkgdir"/$dir
	mv "$1" "$subpkgdir"/$dir/
}

qt() {
	pkgdesc="Qt frontend for VLC"
	depends="vlc-xorg=$pkgver-r$pkgrel"
	cd "$pkgdir"
	# scan for elf files that directly or indirectly depends on
	# libQt* libraries
	cd "$pkgdir"
	for i in $(find . -type f ); do
		if ldd $i 2>/dev/null | grep -q "libQt"; then
			_mv "$i" || return 1
		fi
	done
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/qvlc \
		"$subpkgdir"/usr/bin/
}

xorg() {
	pkgdesc="Video LAN X.org support"
	depends="xdg-utils vlc=$pkgver-r$pkgrel"

	# scan for elf files that directly or indirectly depends on
	# libX* libraries
	cd "$pkgdir"
	for i in $(find . -type f ); do
		if ldd $i 2>/dev/null | grep -E -q "libX|x11|libxcb|libGL"; then
			echo $i | grep libavcodec_plugin.so || _mv "$i" || return 1
		fi
	done

	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/svlc \
		"$subpkgdir"/usr/bin

	mkdir -p "$subpkgdir"/usr/share/vlc
	mv "$pkgdir"/usr/share/applications \
		"$pkgdir"/usr/share/icons \
		"$subpkgdir"/usr/share/

	mv "$pkgdir"/usr/share/vlc/skins2 \
		"$subpkgdir"/usr/share/vlc
}

daemon() {
	pkgdesc="Support for running VLC as a daemon"
	install="vlc-daemon.pre-install"
	depends="vlc=$pkgver-r$pkgrel"

	mkdir -p "$subpkgdir"
	cd "$pkgdir"
	install -D -m755 ../../vlc.initd $subpkgdir/etc/init.d/vlc
	install -D -m664 ../../vlc.confd $subpkgdir/etc/conf.d/vlc
	install -d -o vlc -g vlc "$subpkgdir"/var/log/vlc
}

libs() {
	depends=
	mkdir -p "$subpkgdir"/usr/lib/vlc
	mv "$pkgdir"/usr/lib/vlc/vlc-cache-gen \
		"$subpkgdir"/usr/lib/vlc/
	default_libs
}

_mv_plugins() {
	local plugin=$1
	pkgdesc="$pkgname $plugin plugin"
	depends=
	mkdir -p "$subpkgdir"/usr/lib/vlc/plugins
	mv "$pkgdir"/usr/lib/vlc/plugins/"$plugin" \
		"$subpkgdir"/usr/lib/vlc/plugins
}

plugins_access()		{ _mv_plugins access; }
plugins_access_output()		{ _mv_plugins access_output; }
plugins_audio_filter()		{ _mv_plugins audio_filter; }
plugins_audio_mixer()		{ _mv_plugins audio_mixer; }
plugins_audio_output()		{ _mv_plugins audio_output; }
plugins_codec()			{ _mv_plugins codec; }
plugins_control()		{ _mv_plugins control; }
plugins_demux()			{ _mv_plugins demux; }
plugins_gui()			{ _mv_plugins gui; }
plugins_lua()			{ _mv_plugins lua; }
plugins_meta_engine()		{ _mv_plugins meta_engine; }
plugins_misc()			{ _mv_plugins misc; }
plugins_mux()			{ _mv_plugins mux; }
plugins_notify()		{ _mv_plugins notify; }
plugins_packetizer()		{ _mv_plugins packetizer; }
plugins_services_discovery()	{ _mv_plugins services_discovery; }
plugins_stream_filter()		{ _mv_plugins stream_filter; }
plugins_stream_out()		{ _mv_plugins stream_out; }
plugins_text_renderer()		{ _mv_plugins text_renderer; }
plugins_video_chroma()		{ _mv_plugins video_chroma; }
plugins_video_filter()		{ _mv_plugins video_filter; }
plugins_video_output()		{ _mv_plugins video_output; }
plugins_visualization()		{ _mv_plugins visualization; }

sha512sums="9aff5922eb8b3c6a24e6153c367b0170dbc67602ae3e9304f52d2da00c9081d66cc98abd722b7c95b6c7d2e6cc7c86f21f9cba42c7d4bf29ca97d0f2d3553f8d  vlc-2.2.6.tar.xz
0dffb15a320899060d2239d4bbefd7e88bedcd017348227092ed943b1104e971a5da934f0c1569773230186d4727be83f530cc0d253559a04d1f2cdef80e6043  vlc-2.2.4-gcc6_fixes-1.patch
3ac37f5d552b3f4a536ead974756ea39142bb1aebbb5fa4fd41917e3dabb5af333dea5ae028bdae8589ff3016f2d1d87ea328e63d8b795ac90c3eb11945ea87b  vlc-2.2.4-ffmpeg3-1.patch
680cfa3eed5501ba6f06c51eae508204f4c77d2bdd07eead1a3da3939b433abfe84025d133e7a1c7a869e4ffac374bd5eba2bd3dd242ec4645e1d1c6122d0ffb  fix-waitpid-usage.patch
e13e398b7bfd977f6e099bcb6cf8dc5cd5bad6dea3eff715881826246dc4329468846084aff2576de2b7fd28d3f06e7c327a6e4511a28d22e5cd198a81146c89  omxil-rpi-codecs.patch
b67b6e21e9d4027aef1006e6057f9ba8e65ce3895b08f7b911b1675cff9bc423f64ee2c187c584860e9e5d4635a30408a7781add9694d9bba753eac37f357406  vlc-libs.trigger"