Summary:	The cross-platform open-source multimedia framework, player and server
Epoch:		1
Name:		vlc
Version:	3.0.12.1
Release:	1%{?dist}
License:	GPLv2+
URL:		https://www.videolan.org
Source0:	https://code.videolan.org/videolan/vlc-3.0/-/archive/%{version}/%{name}-%version.tar.gz
%global vlc_setup vlc-3.0-3.0.12.1-170157402b9c9ee5651838499549328c6715b5fe

Patch0: Switch-to-Fedora-lua-5.1.patch
Patch1: 0001-Add-missing-include-limits-to-file-using-std.patch



BuildRequires:	desktop-file-utils
BuildRequires:	libappstream-glib
BuildRequires:	fontpackages-devel
BuildRequires:	bison
BuildRequires:	flex
BuildRequires:	gettext-devel
BuildRequires:	libtool
BuildRequires:	gcc-c++
BuildRequires:	aalib-devel
BuildRequires:	alsa-lib-devel
BuildRequires: asdcplib-devel
BuildRequires:	avahi-devel
BuildRequires:	cdparanoia-devel
BuildRequires:	libdav1d-devel
BuildRequires:	pkgconfig(dbus-1)
%{?_with_faad2:BuildRequires: faad2-devel}
BuildRequires: ffmpeg-devel >= 0.4.9-0
BuildRequires:	flac-devel
BuildRequires:	fribidi-devel
BuildRequires:	gnutls-devel >= 1.0.17
BuildRequires:	gsm-devel
BuildRequires:	hostname
BuildRequires:	jack-audio-connection-kit-devel
BuildRequires:	game-music-emu-devel
%ifarch %{arm} aarch64
BuildRequires:	pkgconfig(gstreamer-app-1.0)
BuildRequires:	pkgconfig(gstreamer-video-1.0)
%endif
BuildRequires:	libavc1394-devel
BuildRequires:	libass-devel >= 0.9.7
BuildRequires:	libcaca-devel
BuildRequires:	libcddb-devel
BuildRequires:	libcdio-devel >= 0.77-3
BuildRequires:	pkgconfig(libchromaprint)
BuildRequires:	pkgconfig(daaladec)
BuildRequires:	pkgconfig(daalaenc)
BuildRequires:	libdc1394-devel >= 2.1.0
BuildRequires:	libdv-devel
BuildRequires:	libdvdnav-devel
BuildRequires:	libebml-devel
BuildRequires:	libgcrypt-devel
BuildRequires:	libid3tag-devel
BuildRequires:	libkate-devel
BuildRequires:	libmad-devel
BuildRequires:	libmatroska-devel >= 0.7.6
BuildRequires:	libmodplug-devel
BuildRequires:	libmp4v2-devel
BuildRequires:	libmpcdec-devel
BuildRequires:	libmpg123-devel
BuildRequires:	libmtp-devel >= 1.0.0
BuildRequires:	libproxy-devel
BuildRequires:	librsvg2-devel >= 2.9.0
BuildRequires:	libssh2-devel
BuildRequires:	libsysfs-devel
BuildRequires:	libshout-devel
BuildRequires:	libtar-devel
BuildRequires:	libtheora-devel
BuildRequires:	libtiger-devel
BuildRequires:	libtiff-devel
BuildRequires:	pkgconfig(libidn)
BuildRequires:	pkgconfig(libjpeg)
BuildRequires:	pkgconfig(libudev)
BuildRequires:	pkgconfig(libvncclient)
BuildRequires:	pkgconfig(libnotify)
BuildRequires:	libupnp-devel
BuildRequires:	libv4l-devel
BuildRequires:  pkgconfig(vdpau)
BuildRequires:	pkgconfig(vorbis)
BuildRequires:	pkgconfig(vpx)
BuildRequires:	pkgconfig(libxml-2.0)
BuildRequires:	lirc-devel
BuildRequires:	pkgconfig(gl)
BuildRequires:	pkgconfig(glu)
BuildRequires:	libsamplerate-devel
BuildRequires:	libshout-devel
%if 0%{?fedora} || 0%{?rhel} > 7
BuildRequires:	compat-lua compat-lua-devel
%else
BuildRequires:	lua-devel
%endif
BuildRequires:	minizip-devel
BuildRequires:	ncurses-devel
BuildRequires:	openslp-devel
Buildrequires:	opus-devel
BuildRequires:	pcre-devel
BuildRequires:	pkgconfig(libarchive) >= 3.1.0
BuildRequires:	pkgconfig(libpulse) >= 0.9.8
BuildRequires:	pkgconfig(libsecret-1) >= 0.18
BuildRequires:	pkgconfig(microdns) >= 0.1.2
BuildRequires:	pkgconfig(protobuf-lite) >= 2.5
BuildRequires:	pkgconfig(Qt5Core) >= 5.5
BuildRequires:	pkgconfig(Qt5Gui) >= 5.5
BuildRequires:	pkgconfig(Qt5Svg) >= 5.5
BuildRequires:	pkgconfig(Qt5X11Extras) >= 5.5
BuildRequires:	pkgconfig(soxr)
BuildRequires:	pkgconfig(spatialaudio)
BuildRequires:	pkgconfig(speexdsp) >= 1.0.5
#BuildRequires:	pkgconfig(srt)
BuildRequires:	pkgconfig(wayland-client) >= 1.5.91
BuildRequires:	pkgconfig(wayland-egl)
BuildRequires:	pkgconfig(wayland-protocols)
BuildRequires:	pkgconfig(sqlite3)
BuildRequires:	pkgconfig(speex)
BuildRequires:	pkgconfig(taglib)
%{?_with_twolame:BuildRequires: pkgconfig(twolame)}
%{?_with_vcdimager:BuildRequires: vcdimager-devel >= 0.7.21}
%{?_with_x264:BuildRequires: x264-devel >= 0-0.8.20061028}
%{?_with_x265:BuildRequires: x265-devel}
%{?_with_xvidcore:BuildRequires: xvidcore-devel}
BuildRequires:	zlib-devel
BuildRequires:	zvbi-devel

# X-libs
BuildRequires:	libXt-devel
BuildRequires:	libXv-devel
BuildRequires:	libXxf86vm-devel
BuildRequires:	libX11-devel
BuildRequires:	libXext-devel
BuildRequires:	libXinerama-devel
BuildRequires:	libXpm-devel
BuildRequires:  libxcb-devel
BuildRequires:  xcb-util-devel
BuildRequires:  pkgconfig(xcb-keysyms)
BuildRequires:	xorg-x11-proto-devel

BuildRequires: qt5-qtbase-private-devel
BuildRequires:  phonon-qt5-devel
BuildRequires:  phonon-qt5-backend-gstreamer

Recommends: qt5-qtwayland%{_isa}


#Merge back jack plugin into main
Obsoletes: vlc-plugin-jack < %{version}-%{release}
Provides: vlc-plugin-jack = %{version}-%{release}

Provides: %{name}-xorg%{_isa} = %{epoch}:%{version}-%{release}
Requires: vlc-core%{_isa} = %{epoch}:%{version}-%{release}

Requires: dejavu-sans-fonts
Requires: dejavu-sans-mono-fonts
Requires: dejavu-serif-fonts

#For xdg-sreensaver
Requires: xdg-utils

Requires:       hicolor-icon-theme


%description
VLC media player is a highly portable multimedia player and multimedia framework
capable of reading most audio and video formats as well as DVDs, Audio CDs VCDs,
and various streaming protocols.
It can also be used as a media converter or a server to stream in uni-cast or 
multi-cast in IPv4 or IPv6 on networks.



%package devel
Summary:	Development files for %{name}
Requires:	%{name}-core%{_isa} = %{epoch}:%{version}-%{release}

%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.


%package core
Summary:	VLC media player core
Provides:	vlc-nox = %{epoch}:%{version}-%{release}
%{?live555_version:Requires: live555%{?_isa} = %{live555_version}}
%{?lua_version:Requires: lua(abi) = %{lua_version}}
Requires: libmicrodns%{?_isa} > 0.1.2-1
%if 0%{?fc31}
Requires: srt-libs%{?_isa} > 1.4.1-3
%endif

%description core
VLC media player core components

%package extras
Summary:	VLC media player with extras modules
Requires:	vlc-core%{_isa} = %{epoch}:%{version}-%{release}
%if 0%{?el7:1}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
%endif

%description extras
VLC media player extras modules.


%prep
%setup -q -n %{vlc_setup}
%if 0%{?fedora} || 0%{?rhel} > 7
%patch0 -p1
sed -i -e 's/luac/luac-5.1/g' configure.ac
%endif
%patch1 -p1



%build
./bootstrap

touch src/revision.txt

%configure \
	--disable-dependency-tracking		\
	--disable-optimizations			\
	--disable-silent-rules			\
        --with-default-font=%{_fontbasedir}/dejavu/DejaVuSans.ttf \
        --with-default-font-family=DejaVuSans \
        --with-default-monospace-font=%{_fontbasedir}/dejavu/DejaVuSansMono.ttf \
        --with-default-monospace-font-family=DejaVuSansMono \
	--with-kde-solid=no			\
	--with-pic				\
	--disable-rpath			\
	--with-binary-version=%{version}	\
	--enable-lua				\
%{?_with_live555:--enable-live555} 		\
%{!?_with_opencv:--disable-opencv} \
%{!?el8:--enable-sftp} \
%{?_with_vcdimager:--enable-vcdx}		\
%{?_with_aom:--enable-aom}                      \
%{!?_with_a52dec:--disable-a52}			\
%{?_with_dav1d:--enable-dav1d}                  \
%{!?_with_ffmpeg:--disable-avcodec --disable-avformat \
	--disable-swscale --disable-postproc} \
%{?_with_faad2:--enable-faad} \
%{!?_with_libmad:--disable-mad} \
%{?_with_twolame:--enable-twolame} \
%{?!_without_freeworld: --enable-realrtsp} \
	--enable-flac				\
	--enable-tremor				\
	--enable-speex				\
	--enable-theora				\
	--enable-libass				\
	--enable-shout				\
	--enable-wayland 			\
	--enable-xvideo			 	\
	--enable-svg				\
	--enable-aa				\
	--enable-caca				\
	--enable-jack				\
	--enable-pulse				\
	--enable-ncurses			\
	--enable-lirc


%if 0
# remove rpath from libtool
sed -i.rpath 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i.rpath 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
%endif

%if 1
# clean unused-direct-shlib-dependencies
sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
%endif

%make_build

%install
%make_install INSTALL="install -p" CPPROG="cp -p"
find %{buildroot} -name '*.la' -exec rm -f {} ';'
find %{buildroot} -name '*.a' -exec rm -f {} ';'

desktop-file-validate %{buildroot}%{_datadir}/applications/vlc.desktop

# Remove installed fonts for skins2
rm -rf %{buildroot}%{_datadir}/vlc/skins2/fonts

#Fix unowned directories
rm -rf %{buildroot}%{_docdir}/vlc

#Ghost the plugins cache
touch %{buildroot}%{_libdir}/vlc/plugins/plugins.dat

#Appdata
appstream-util validate-relax --nonet \
  %{buildroot}/%{_datadir}/metainfo/*.appdata.xml || :

#Fixup
rm -rf %{buildroot}/%{_datadir}/macosx

#Disable KDE4 desktop files
rm -rf  %{buildroot}%{_datadir}/kde4


%find_lang %{name}

%check
%if 0%{?el7}
. /opt/rh/devtoolset-%{dts_ver}/enable
%endif
%ifnarch %{arm}
make check
%else
make check || :
%endif


%ldconfig_scriptlets core

%post
%{?ldconfig}
if [ $1 == 1 ] ; then
  %{_libdir}/vlc/vlc-cache-gen %{_libdir}/vlc/plugins &>/dev/null
fi || :

%{_bindir}/touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
  %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
fi 
%{_bindir}/update-desktop-database %{_datadir}/applications &>/dev/null || :

%postun
%{?ldconfig}
%{_libdir}/vlc/vlc-cache-gen %{_libdir}/vlc/plugins &>/dev/null
%{_bindir}/update-desktop-database %{_datadir}/applications &>/dev/null
%{_bindir}/touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
  %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
fi || :

%posttrans core
%{_libdir}/vlc/vlc-cache-gen %{_libdir}/vlc/plugins &>/dev/null || :

%post extras
%{?ldconfig}
if [ $1 == 1 ] ; then
  %{_libdir}/vlc/vlc-cache-gen %{_libdir}/vlc/plugins &>/dev/null || :
fi

%postun extras
%{?ldconfig}
if [ $1 == 0 ] ; then
  %{_libdir}/vlc/vlc-cache-gen %{_libdir}/vlc/plugins &>/dev/null || :
fi

%preun core
if [ $1 == 0 ] ; then
  rm -f %{_libdir}/vlc/plugins*.dat
fi || :


%files
%doc AUTHORS NEWS README THANKS
%license COPYING
%{_datadir}/metainfo/vlc.appdata.xml
%{_datadir}/applications/*%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/vlc*.png
%{_datadir}/icons/hicolor/*/apps/vlc*.xpm
%{_datadir}/vlc/skins2/
%{_bindir}/qvlc
%{_bindir}/svlc
%{_libdir}/vlc/libvlc_pulse.so*
# qt in main
%{_libdir}/vlc/plugins/gui/libqt_plugin.so
# skin2 in main
%{_libdir}/vlc/plugins/gui/libskins2_plugin.so
%{?_with_projectm:
%{_libdir}/vlc/plugins/visualization/libprojectm_plugin.so
}
#jack in main
%{_libdir}/vlc/plugins/access/libaccess_jack_plugin.so
%{_libdir}/vlc/plugins/audio_output/libjack_plugin.so
#pulseaudio in main
%{_libdir}/vlc/plugins/audio_output/libpulse_plugin.so
%{_libdir}/vlc/plugins/access/libpulsesrc_plugin.so
%{_libdir}/vlc/plugins/services_discovery/libpulselist_plugin.so
%{?_with_fluidsynth:
%{_libdir}/vlc/plugins/codec/libfluidsynth_plugin.so
}

%files core -f %{name}.lang
%{_bindir}/vlc
%{_bindir}/cvlc
%{_bindir}/nvlc
%{_bindir}/rvlc
%{_bindir}/vlc-wrapper
%exclude %{_datadir}/vlc/skins2
%{_datadir}/vlc/
%{_libdir}/*.so.*
%dir %{_libdir}/vlc
%{_libdir}/vlc/lua/
%{_libdir}/vlc/libvlc_vdpau.so*
%{_libdir}/vlc/libvlc_xcb_events.so*
%exclude %{_libdir}/vlc/plugins/access/libaccess_jack_plugin.so
%{?_with_asdcp:
%exclude %{_libdir}/vlc/plugins/access/libdcp_plugin.so
}
%{?_with_vcdimager:
%exclude %{_libdir}/vlc/plugins/access/libvcd_plugin.so
%exclude %{_libdir}/vlc/plugins/access/libvcdx_plugin.so
%exclude %{_libdir}/vlc/plugins/codec/libsvcdsub_plugin.so
}
%{?_with_crystalhd:
%exclude %{_libdir}/vlc/plugins/codec/libcrystalhd_plugin.so
}
%{?_with_fluidsynth:
%exclude %{_libdir}/vlc/plugins/codec/libfluidsynth_plugin.so
}
%exclude %{_libdir}/vlc/plugins/gui/libqt_plugin.so
%exclude %{_libdir}/vlc/plugins/gui/libskins2_plugin.so
%{?_with_opencv:
%exclude %{_libdir}/vlc/plugins/video_filter/libopencv_example_plugin.so
%exclude %{_libdir}/vlc/plugins/video_filter/libopencv_wrapper_plugin.so
}
%{?_with_projectm:
%exclude %{_libdir}/vlc/plugins/visualization/libprojectm_plugin.so
}
%exclude %{_libdir}/vlc/plugins/audio_output/libjack_plugin.so
%exclude %{_libdir}/vlc/plugins/audio_output/libpulse_plugin.so
%exclude %{_libdir}/vlc/plugins/access/libpulsesrc_plugin.so
%exclude %{_libdir}/vlc/plugins/services_discovery/libpulselist_plugin.so
%ghost %{_libdir}/vlc/plugins/plugins.dat
%{_libdir}/vlc/vlc-cache-gen
%{_libdir}/vlc/plugins
%{_mandir}/man1/vlc*.1*


%files extras
%{?_with_opencv:
%{_libdir}/vlc/plugins/video_filter/libopencv_example_plugin.so
%{_libdir}/vlc/plugins/video_filter/libopencv_wrapper_plugin.so
}
%{?_with_vcdimager:
%{_libdir}/vlc/plugins/access/libvcd_plugin.so
%{_libdir}/vlc/plugins/access/libvcdx_plugin.so
%{_libdir}/vlc/plugins/codec/libsvcdsub_plugin.so
}
%{?_with_crystalhd:
%{_libdir}/vlc/plugins/codec/libcrystalhd_plugin.so
}
%{?_with_asdcp:
%{_libdir}/vlc/plugins/access/libdcp_plugin.so
}

%files devel
%dir %{_includedir}/vlc
%{_includedir}/vlc/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/vlc-plugin.pc
%{_libdir}/pkgconfig/libvlc.pc