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

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

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

proc 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) {
	arm* { setvar _arch_opts = ""--enable-omxil --enable-omxil-vout --enable-rpi-omxil"" }
	}'

	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
}

proc 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
}

proc plugins {
	setvar pkgdesc = ""$pkgname all plugins meta package""
	setvar 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
}

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

proc qt {
	setvar pkgdesc = ""Qt frontend for VLC""
	setvar 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 ) {
		if ldd $i 2>/dev/null | grep -q "libQt" {
			_mv $i || return 1
		}
	}
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/qvlc \
		"$subpkgdir"/usr/bin/
}

proc xorg {
	setvar pkgdesc = ""Video LAN X.org support""
	setvar 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 ) {
		if ldd $i 2>/dev/null | grep -E -q "libX|x11|libxcb|libGL" {
			echo $i | grep libavcodec_plugin.so || _mv $i || return 1
		}
	}

	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
}

proc daemon {
	setvar pkgdesc = ""Support for running VLC as a daemon""
	setvar install = ""vlc-daemon.pre-install""
	setvar 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
}

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

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

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

setvar 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""