Merge branch 'upstream/1.19.3' into tizen_gst_1.19.3
[platform/upstream/gstreamer.git] / packaging / gstreamer.spec
index 6b18f14..2f39ca9 100644 (file)
@@ -1,26 +1,89 @@
+%bcond_with x
+%bcond_with wayland
 %define gst_branch 1.0
+%define _lib_gstreamer_dir %{_libdir}/gstreamer-%{gst_branch}
+%define _lib_girepository %{_libdir}/girepository-%{gst_branch}
 
-Name:           gstreamer
-Version:        1.16.2
+#######################################################################
+## 'plugin' macro :
+## 'plugin' is user defined macro to build each plugin seperately
+## add define option at gbs build cmd like [ --define "plugin bad" ]
+## if not, all the source code in subprojects will be built
+#######################################################################
+
+%if 0%{?plugin:1}
+
+  %if "%{plugin}" == "core"
+    %define _name gstreamer
+    %define _core_opt ""
+  %endif
+  %if "%{plugin}" == "base" || "%{plugin}" == "good" || "%{plugin}" == "bad" || "%{plugin}" == "ugly"
+    %define _name gst-plugins-%{plugin}
+    %define _base_opt ""
+    %define _good_opt ""
+    %define _bad_opt ""
+    %define _ugly_opt ""
+  %endif
+  %if "%{plugin}" == "omx" || "%{plugin}" == "libav"
+    %define _name gst-%{plugin}
+    %define _omx_opt ""
+    %define _libav_opt ""
+  %endif
+  %if "%{plugin}" == "rs"
+    %define _name gst-rtsp-server
+    %define _rs_opt ""
+  %endif
+  %if "%{plugin}" == "es"
+    %define _name gst-editing-services
+    %define _es_opt ""
+  %endif
+
+  %define _source_path subprojects/%{_name}
+
+%else
+
+  %define plugin all
+  %define _name gstreamer
+  %define _source_path .
+
+  # plugin option prefix
+  %define _core_opt gstreamer:
+  %define _base_opt gst-plugins-base:
+  %define _good_opt gst-plugins-good:
+  %define _bad_opt gst-plugins-bad:
+  %define _ugly_opt gst-plugins-ugly:
+  %define _omx_opt gst-omx:
+  %define _libav_opt gst-libav:
+  %define _rs_opt gst-rtsp-server:
+  %define _es_opt gst-editing-services:
+
+%endif
+
+Name:           %{_name}
+Version:        1.19.3
 Release:        0
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.0+
 Group:          Multimedia/Framework
 Url:            http://gstreamer.freedesktop.org/
-Source0:        http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-%{version}.tar.xz
-Source100:      common.tar.gz
-BuildRequires:  bison
+Source0:        gstreamer-%{version}.tar.xz
+Source1001:     gstreamer.manifest
+BuildRequires:  meson >= 0.59.0
 BuildRequires:  gettext-tools
-BuildRequires:  check-devel
+BuildRequires:  pkgconfig(glib-2.0) >= 2.32.0
+
+
+%if "%{plugin}" == "all" || "%{plugin}" == "core"
+
+BuildRequires:  bison
 BuildRequires:  fdupes
 BuildRequires:  flex
-BuildRequires:  pkgconfig(glib-2.0) >= 2.32.0
 BuildRequires:  libtool
-BuildRequires:  pkgconfig(libxml-2.0)
-BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
 BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
+BuildRequires:  pkgconfig(libxml-2.0)
 
-%description
+%description -n gstreamer
 GStreamer is a streaming-media framework, based on graphs of filters
 which operate on media data. Applications using this library can do
 anything from real-time sound processing to playing videos, and just
@@ -28,14 +91,14 @@ about anything else media-related.  Its plug-in-based architecture
 means that new data types or processing capabilities can be added by
 installing new plug-ins.
 
-%package utils
+%package -n gstreamer-utils
 Summary:        Streaming-Media Framework Runtime
 Group:          Multimedia/Framework
 Provides:       gstreamer:%{_bindir}/gst-launch-%{gst_branch} = %{version}
 # Symbol for unversioned wrappers:
 Provides:       gstreamer-utils_versioned = %{version}
 
-%description utils
+%description -n gstreamer-utils
 GStreamer is a streaming-media framework, based on graphs of filters
 which operate on media data. Applications using this library can do
 anything from real-time sound processing to playing videos, and just
@@ -43,117 +106,1139 @@ about anything else media-related.  Its plug-in-based architecture
 means that new data types or processing capabilities can be added by
 installing new plug-ins.
 
-%package devel
+%package -n gstreamer-devel
 Summary:        Include Files and Libraries mandatory for Development
 Group:          Development/Libraries
 # gstreamer-utils is required for the gstreamer-provides rpm magic.
 Requires:       gstreamer-utils = %{version}
-Requires:       %{name} = %{version}
+Requires:       gstreamer = %{version}
 
-%description devel
+%description -n gstreamer-devel
 This package contains all necessary include files and libraries needed
 to develop applications that require these.
 
-%lang_package
+%else
+
+BuildRequires:  gstreamer-devel >= %{version}
+#BuildRequires:  pkgconfig(gstreamer-1.0)
+
+%if "%{plugin}" != "base"
+BuildRequires:  gst-plugins-base-devel >= %{version}
+#BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)
+%endif
+
+%endif
+
+#######################################################
+## Package info of Base Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-plugins-base
+Summary:        GStreamer Streaming-Media Framework Plug-Ins
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "base"
+
+BuildRequires:  orc >= 0.4.16
+BuildRequires:  python
+BuildRequires:  pkgconfig(alsa) >= 0.9.1
+BuildRequires:  pkgconfig(freetype2) >= 2.0.9
+BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
+BuildRequires:  pkgconfig(libdrm)
+BuildRequires:  pkgconfig(libtbm)
+BuildRequires:  pkgconfig(libxml-2.0)
+BuildRequires:  pkgconfig(ogg) >= 1.0
+BuildRequires:  pkgconfig(opus)
+BuildRequires:  pkgconfig(theoradec) >= 1.1
+BuildRequires:  pkgconfig(theoraenc) >= 1.1
+BuildRequires:  pkgconfig(vorbis) >= 1.0
+BuildRequires:  pkgconfig(vorbisenc) >= 1.0
+BuildRequires:  pkgconfig(zlib)
+%if "%{tizen_profile_name}" != "tv"
+BuildRequires:  update-desktop-files
+%endif
+%if %{with wayland}
+%if 0%{?enable_gl:1}
+BuildRequires:  pkgconfig(gles20)
+BuildRequires:  pkgconfig(wayland-egl) >= 9.0
+%endif # wayland
+%endif # gl
+%if %{with x}
+BuildRequires:  pkgconfig(dri2proto)
+BuildRequires:  pkgconfig(libdri2)
+BuildRequires:  pkgconfig(ice)
+BuildRequires:  pkgconfig(sm)
+BuildRequires:  pkgconfig(xext)
+BuildRequires:  pkgconfig(xv)
+BuildRequires:  pkgconfig(xfixes)
+%endif
+# gstreamer-utils is required for the gstreamer-provides rpm magic.
+Requires:       gstreamer >= 1.0.0
+Requires:       opus
+Supplements:    gstreamer
+
+%description -n gst-plugins-base
+GStreamer is a streaming media framework based on graphs of filters
+that operate on media data. Applications using this library can do
+anything media-related, from real-time sound processing to playing
+videos. Its plug-in-based architecture means that new data types or
+processing capabilities can be added simply by installing new plug-ins.
+
+%package -n gst-plugins-base-extension-adder
+Summary:       libgstadder.so for gst-plugins-base
+Requires:   gst-plugins-base = %{version}-%{release}
+Provides:   gst-plugins-base-profile_mobile = %{version}-%{release}
+
+%description -n gst-plugins-base-extension-adder
+Libgstadder.so for gst-plugin-base. Supplicant for gst-plugin-base.
+This is for Tizen mobile profile.
+
+%package -n gst-plugins-base-devel
+Summary:        Include files and Libraries
+Requires:       gst-plugins-base = %{version}
+
+%description -n gst-plugins-base-devel
+This package contains all necessary include files and libraries needed
+to compile and link applications that use gstreamer-plugins-base.
+
+%endif
+
+#######################################################
+## Package info of Good Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-plugins-good
+Summary:        GStreamer Streaming-Media Framework Plug-Ins
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "good"
+
+BuildRequires:  libjpeg-devel
+BuildRequires:  orc >= 0.4.16
+BuildRequires:  python
+BuildRequires:  xsltproc
+BuildRequires:  pkgconfig(bzip2)
+BuildRequires:  pkgconfig(cairo)
+BuildRequires:  pkgconfig(cairo-gobject)
+BuildRequires:  pkgconfig(gio-2.0)
+BuildRequires:  pkgconfig(libpng) >= 1.2
+BuildRequires:  pkgconfig(libpulse) >= 1.0
+BuildRequires:  pkgconfig(libsoup-2.4)
+BuildRequires:  pkgconfig(libtbm)
+BuildRequires:  pkgconfig(libxml-2.0) >= 2.4.9
+BuildRequires:  pkgconfig(vconf)
+BuildRequires:  pkgconfig(vpx)
+BuildRequires:  pkgconfig(zlib)
+%if "%{tizen_profile_name}" != "tv"
+BuildRequires:  pkgconfig(libv4l2)
+%endif
+%if %{with x}
+BuildRequires:  pkgconfig(ice)
+BuildRequires:  pkgconfig(sm)
+BuildRequires:  pkgconfig(xdamage)
+BuildRequires:  pkgconfig(xfixes)
+# used by libgstvideo4linux2.so
+BuildRequires:  pkgconfig(xv)
+%endif
+Requires:       gstreamer >= %{version}
+Requires:       gst-plugins-base >= %{version}
+
+%description -n gst-plugins-good
+GStreamer is a streaming media framework based on graphs of filters
+that operate on media data. Applications using this library can do
+anything media-related, from real-time sound processing to playing
+videos. Its plug-in-based architecture means that new data types or
+processing capabilities can be added simply by installing new plug-ins.
+
+%package -n gst-plugins-good-extra
+Summary:        Complementary plugins for gst-plugins-good
+Group:          Productivity/Multimedia/Other
+Requires:       gst-plugins-good = %{version}
+Enhances:       gst-plugins-good
+
+%description -n gst-plugins-good-extra
+This package provides complementary plugins for gst-plugins-good and
+plugins not included in official Tizen images, which may be used for development / experimental purposes.
+
+%endif
+
+#######################################################
+## Package info of Bad Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-plugins-bad
+Summary:        GStreamer Streaming-Media Framework Plug-Ins
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "bad"
+
+BuildRequires:  python
+BuildRequires:  xsltproc
+BuildRequires:  pkgconfig(gio-2.0) >= 2.25.0
+BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
+BuildRequires:  pkgconfig(libcurl) >= 7.21.0
+BuildRequires:  pkgconfig(libexif) >= 0.6.16
+BuildRequires:  pkgconfig(libsrtp2) >= 2.1.0
+BuildRequires:  pkgconfig(libusb-1.0)
+BuildRequires:  pkgconfig(nice)
+BuildRequires:  pkgconfig(openal)
+BuildRequires:  pkgconfig(openssl1.1)
+BuildRequires:  pkgconfig(opus)
+BuildRequires:  pkgconfig(orc-0.4) >= 0.4.11
+BuildRequires:  pkgconfig(sndfile) >= 1.0.16
+BuildRequires:  pkgconfig(soundtouch) > 1.4
+BuildRequires:  pkgconfig(usrsctp)
+%if %{with wayland}
+BuildRequires:  pkgconfig(libdrm)
+BuildRequires:  pkgconfig(libxml-2.0)
+BuildRequires:  pkgconfig(wayland-client) >= 1.0.0
+BuildRequires:  pkgconfig(wayland-cursor) >= 1.0.0
+BuildRequires:  pkgconfig(wayland-protocols)
+%endif
+%if %{with x}
+BuildRequires:  pkgconfig(x11)
+%endif
+Requires:       gstreamer >= %{version}
+
+%description -n gst-plugins-bad
+GStreamer is a streaming media framework based on graphs of filters
+that operate on media data. Applications using this library can do
+anything media-related,from real-time sound processing to playing
+videos. Its plug-in-based architecture means that new data types or
+processing capabilities can be added simply by installing new plug-ins.
+
+%package -n gst-plugins-bad-devel
+Summary:        GStreamer Streaming-Media Framework Plug-Ins
+Requires:       gst-plugins-bad = %{version}-%{release}
+Requires:       gst-plugins-base-devel
+
+%description -n gst-plugins-bad-devel
+GStreamer is a streaming media framework based on graphs of filters
+that operate on media data. Applications using this library can do
+anything media-related,from real-time sound processing to playing
+videos. Its plug-in-based architecture means that new data types or
+processing capabilities can be added simply by installing new plug-ins.
+
+%endif
+
+#######################################################
+## Package info of Ugly Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-plugins-ugly
+Summary:        GStreamer plugins from the "ugly" set
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "ugly"
+
+BuildRequires:  which
+BuildRequires:  pkgconfig(opencore-amrwb)
+%if "%{tizen_profile_name}" != "tv"
+BuildRequires:  pkgconfig(opencore-amrnb)
+%endif
+
+%description -n gst-plugins-ugly
+ GStreamer is a streaming media framework, based on graphs of filters
+ which operate on media data.  Applications using this library can do
+ anything from real-time sound processing to playing videos, and just
+ about anything else media-related.  Its plugin-based architecture means
+ that new data types or processing capabilities can be added simply by
+ installing new plug-ins.
+ .
+ This packages contains plugins from the "ugly" set, a set of
+ good-quality plug-ins that might pose distribution problems.
+
+%endif
+
+#######################################################
+## Package info of Omx Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-omx
+Summary:        GStreamer plug-in that allows communication with OpenMAX IL components
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "omx"
+
+BuildRequires:  which
+BuildRequires:  pkgconfig(libtbm)
+BuildRequires:  pkgconfig(mm-common)
+%if "%{target}" == "rpi"
+BuildRequires:  pkgconfig(bcm_host)
+BuildRequires:  pkgconfig(brcmegl)
+%endif
+ExclusiveArch: %arm aarch64
+
+%description -n gst-omx
+gst-openmax is a GStreamer plug-in that allows communication with OpenMAX IL components.
+Multiple OpenMAX IL implementations can be used.
+
+%endif
+
+#######################################################
+## Package info of libav Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-libav
+Summary:        Libav plugin for GStreamer
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "libav"
+
+BuildRequires:  bzip2-devel
+BuildRequires:  gettext
+BuildRequires:  which
+BuildRequires:  yasm
+BuildRequires:  pkgconfig(libavcodec)
+BuildRequires:  pkgconfig(libavfilter)
+BuildRequires:  pkgconfig(libavformat)
+BuildRequires:  pkgconfig(libavutil)
+BuildRequires:  pkgconfig(orc-0.4)
+BuildRequires:  pkgconfig(theora)
+BuildRequires:  pkgconfig(vorbis)
+BuildRequires:  pkgconfig(zlib)
+
+%description -n gst-libav
+This GStreamer plugin supports a large number of audio and video compression
+formats through the use of the libav library.  The plugin contains GStreamer
+elements for decoding 90+ formats (AVI, MPEG, OGG, Matroska, ASF, ...),
+demuxing 30+ formats and colorspace conversion.
+
+%endif
+
+%if 0
+#######################################################
+## Package info of rtsp-server Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-rtsp-server
+Summary:        Multimedia Framework Library
+Group:          System/Libraries
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "rs"
+
+Requires(post):  /sbin/ldconfig
+Requires(postun):  /sbin/ldconfig
+
+%description -n gst-rtsp-server
+This GStreamer plugin supports a large number of audio and video compression
+formats through the use of the libav library.  The plugin contains GStreamer
+elements for decoding 90+ formats (AVI, MPEG, OGG, Matroska, ASF, ...),
+demuxing 30+ formats and colorspace conversion.
+
+%package -n gst-rtsp-server-devel
+Summary:    Multimedia Framework RTSP server library (DEV)
+Group:      Development/Libraries
+Requires:   gst-rtsp-server = %{version}-%{release}
+
+%description -n gst-rtsp-server-devel
+
+%endif
+
+%endif
+
+#######################################################
+## Package info of editing-services Plugin
+#######################################################
+
+%if "%{plugin}" == "all"
+%package -n gst-editing-services
+Summary:        GStreamer Editing Service Plug-Ins
+Group:          Multimedia/Framework
+%endif
+
+%if "%{plugin}" == "all" || "%{plugin}" == "es"
+
+BuildRequires:  flex
+BuildRequires:  gobject-introspection-devel
+BuildRequires:  gtk-doc
+BuildRequires:  pkgconfig(libxml-2.0)
+Requires:       gstreamer >= 1.0.0
+Supplements:    gstreamer
+
+%description -n gst-editing-services
+This is a high-level library for facilitating the creation of audio/video
+non-linear editors.
+
+%package -n gst-editing-services-devel
+Summary:    Development files for gst-editing-services
+Requires:   gst-editing-services = %{version}-%{release}
+
+%description -n gst-editing-services-devel
+This package contains libraries and header files for
+developing applications that use %{name}
+
+%endif
+
+#######################################################
+## Prep
+#######################################################
 
 %prep
 %setup -q -n gstreamer-%{version}
-%setup -q -T -D -a 100
+cp %{SOURCE1001} ./gstreamer.manifest
+cp %{SOURCE1001} ./gst-plugins-base.manifest
+cp %{SOURCE1001} ./gst-plugins-good.manifest
+cp %{SOURCE1001} ./gst-plugins-bad.manifest
+cp %{SOURCE1001} ./gst-plugins-ugly.manifest
+cp %{SOURCE1001} ./gst-omx.manifest
+cp %{SOURCE1001} ./gst-libav.manifest
+%if 0
+cp %{SOURCE1001} ./gst-rtsp-server.manifest
+%endif
+cp %{SOURCE1001} ./gst-editing-services.manifest
+
+#######################################################
+## Build
+#######################################################
 
 %build
-# FIXME: GTKDOC_CFLAGS, GST_OBJ_CFLAGS:
-# Silently ignored compilation of uninstalled gtk-doc scanners without RPM_OPT_FLAGS.
-export V=1
-NOCONFIGURE=1 ./autogen.sh
+
+%if "%{plugin}" != "all"
+pushd %{_source_path}
+%endif
+
+mkdir -p build
 export CFLAGS="%{optflags} \
-       -DTIZEN_FEATURE_QUEUE2_MODIFICATION\
-       -DTIZEN_FEATURE_FILESINK_MODIFICATION\
-       -DTIZEN_FEATURE_MQ_MODIFICATION\
-       -DTIZEN_FEATURE_MQ_MODIFICATION_EXTRA_SIZE_TIME\
-       -DTIZEN_FEATURE_BASEPARSE_MODIFICATION\
-       -DTIZEN_FEATURE_QUEUE_MODIFICATION\
-       -DTIZEN_FEATURE_FAKESINK_MODIFICATION\
-       -DTIZEN_FEATURE_INPUT_SELECTOR_MODIFICATION\
-%if "%{tizen_profile_name}" == "tv"
-       -DTIZEN_PROFILE_TV\
-       -DTIZEN_FEATURE_TRUSTZONE\
-%endif
-       -DTIZEN_FEATURE_RTSPSRC_MODIFICATION\
-       -fno-strict-aliasing\
-       -fstack-protector-strong\
-       -Wl,-z,relro\
-       -D_FORTIFY_SOURCE=2"
-
-%configure\
-%if %{with introspection}
-        --enable-introspection\
-%endif
-        --disable-static\
-        --disable-docbook\
-        --disable-gtk-doc\
-        --enable-dlog\
-%if "%{tizen_profile_name}" == "tv"
-        --enable-tv-profile\
-%endif
-        --disable-examples\
-        --disable-tests\
-        --with-ptp-helper-permissions=none
-
-make %{?_smp_mflags}
+  -fno-strict-aliasing\
+  -fstack-protector-strong\
+  -Wl,-z,relro\
+  -D_FORTIFY_SOURCE=2"
+export CXXFLAGS+=" -Wno-error"
+export LDFLAGS+=" -pthread"
+
+meson --prefix=/usr --libdir=%{_libdir} --datadir=%{_datadir} --sysconfdir=%{_hal_sysconfdir} \
+%if "%{plugin}" == "all"
+  -Dtests=disabled \
+  -Dexamples=disabled \
+  -Dnls=disabled \
+  -Ddoc=disabled \
+  -Dgtk_doc=disabled \
+  -Dqt5=disabled \
+  -Dgst-examples=disabled \
+%endif
+%if "%{plugin}" == "all" || "%{plugin}" == "core"
+  -D %{_core_opt}bash-completion=disabled \
+  -D %{_core_opt}check=disabled \
+  -D %{_core_opt}doc=disabled \
+  -D %{_core_opt}examples=disabled \
+  -D %{_core_opt}introspection=enabled \
+  -D %{_core_opt}nls=disabled \
+  -D %{_core_opt}tests=disabled \
+  -D %{_core_opt}ptp-helper-permissions=none \
+%endif
+%if "%{plugin}" == "all" || "%{plugin}" == "base"
+  -D %{_base_opt}doc=disabled \
+  -D %{_base_opt}examples=disabled \
+  -D %{_base_opt}gl=disabled \
+  -D %{_base_opt}introspection=enabled \
+  -D %{_base_opt}nls=disabled \
+  -D %{_base_opt}tbm=true \
+  -D %{_base_opt}tests=disabled \
+  -D %{_base_opt}tools=disabled \
+  %if "%{tizen_profile_name}" == "tv"
+    -D %{_base_opt}tv-profile=true \
+  %else
+    %if 0%{?enable_gl:1}
+      -D %{_base_opt}gl=enabled \
+    %endif # gl
+  %endif # tv
+%endif # base plugin
+%if "%{plugin}" == "all" || "%{plugin}" == "good"
+  %if ! 0%{?ENABLE_AALIB}
+    -D %{_good_opt}aalib=disabled \
+  %endif
+  -D %{_good_opt}alpha=disabled \
+  -D %{_good_opt}auparse=disabled \
+  -D %{_good_opt}cutter=disabled \
+  -D %{_good_opt}dtmf=disabled \
+  -D %{_good_opt}equalizer=disabled \
+  -D %{_good_opt}flx=disabled \
+  -D %{_good_opt}goom=disabled \
+  -D %{_good_opt}goom2k1=disabled \
+  -D %{_good_opt}level=disabled \
+  -D %{_good_opt}monoscope=disabled \
+  -D %{_good_opt}multipart=disabled \
+  -D %{_good_opt}nls=disabled \
+  -D %{_good_opt}oss4=disabled \
+  -D %{_good_opt}oss=disabled \
+  -D %{_good_opt}shapewipe=disabled \
+  -D %{_good_opt}spectrum=disabled \
+  -D %{_good_opt}taglib=disabled \
+  -D %{_good_opt}tbm=true \
+  -D %{_good_opt}twolame=disabled \
+  -D %{_good_opt}v4l2-probe=true \
+  -D %{_good_opt}wavpack=disabled \
+  -D %{_good_opt}y4m=disabled \
+  %if "%{tizen_profile_name}" == "tv"
+    -D %{_good_opt}flv=disabled \
+    -D %{_good_opt}lame=disabled \
+    -D %{_good_opt}videobox=disabled \
+    -D %{_good_opt}videomixer=disabled \
+  %else
+    -D %{_good_opt}v4l2-libv4l2=enabled \
+  %endif # tv
+%endif # plugin
+%if "%{plugin}" == "all" || "%{plugin}" == "bad"
+  -D %{_bad_opt}accurip=disabled \
+  -D %{_bad_opt}adpcmdec=disabled \
+  -D %{_bad_opt}adpcmenc=disabled \
+  -D %{_bad_opt}aiff=disabled \
+  -D %{_bad_opt}asfmux=disabled \
+  -D %{_bad_opt}audiofxbad=disabled \
+  -D %{_bad_opt}audiovisualizers=disabled \
+  -D %{_bad_opt}bayer=disabled \
+  -D %{_bad_opt}bz2=disabled \
+  -D %{_bad_opt}codecalpha=disabled \
+  -D %{_bad_opt}curl=disabled \
+  -D %{_bad_opt}decklink=disabled \
+  -D %{_bad_opt}doc=disabled \
+  -D %{_bad_opt}dtls=enabled \
+  -D %{_bad_opt}dvb=disabled \
+  -D %{_bad_opt}dvbsubenc=disabled \
+  -D %{_bad_opt}dvbsuboverlay=disabled \
+  -D %{_bad_opt}dvdspu=disabled \
+  -D %{_bad_opt}examples=disabled \
+  -D %{_bad_opt}faceoverlay=disabled \
+  -D %{_bad_opt}fbdev=disabled \
+  -D %{_bad_opt}festival=disabled \
+  -D %{_bad_opt}fieldanalysis=disabled \
+  -D %{_bad_opt}freeverb=disabled \
+  -D %{_bad_opt}frei0r=disabled \
+  -D %{_bad_opt}geometrictransform=disabled \
+  -D %{_bad_opt}gl=disabled \
+  -D %{_bad_opt}gst_play_tests=false\
+  -D %{_bad_opt}inter=disabled \
+  -D %{_bad_opt}interlace=disabled \
+  -D %{_bad_opt}introspection=enabled \
+  -D %{_bad_opt}ivfparse=disabled \
+  -D %{_bad_opt}ivtc=disabled \
+  -D %{_bad_opt}jp2kdecimator=disabled \
+  -D %{_bad_opt}kms=disabled \
+  -D %{_bad_opt}librfb=disabled \
+  -D %{_bad_opt}mpegpsmux=disabled \
+  -D %{_bad_opt}mxf=disabled \
+  -D %{_bad_opt}nls=disabled \
+  -D %{_bad_opt}nvcodec=disabled \
+  -D %{_bad_opt}onvif=disabled \
+  -D %{_bad_opt}openal=enabled \
+  -D %{_bad_opt}pcapparse=disabled \
+  -D %{_bad_opt}pnm=disabled \
+  -D %{_bad_opt}rawparse=disabled \
+  -D %{_bad_opt}removesilence=disabled \
+  -D %{_bad_opt}rist=disabled \
+  -D %{_bad_opt}rtmp2=disabled \
+  -D %{_bad_opt}segmentclip=disabled \
+  -D %{_bad_opt}siren=disabled \
+  -D %{_bad_opt}smooth=disabled \
+  -D %{_bad_opt}sndfile=disabled \
+  -D %{_bad_opt}speed=disabled \
+  -D %{_bad_opt}subenc=disabled \
+  -D %{_bad_opt}switchbin=disabled \
+  -D %{_bad_opt}transcode=disabled \
+  -D %{_bad_opt}tests=disabled \
+  -D %{_bad_opt}uvch264=disabled \
+  -D %{_bad_opt}videofilters=disabled \
+  -D %{_bad_opt}videosignal=disabled \
+  -D %{_bad_opt}vmnc=disabled \
+  %if %{with wayland}
+    -D %{_bad_opt}wayland=enabled \
+  %endif
+  -D %{_bad_opt}y4m=disabled \
+  %if "%{tizen_profile_name}" == "tv"
+    -D %{_bad_opt}tv-profile=true \
+    -D %{_bad_opt}autoconvert=disabled \
+    -D %{_bad_opt}camerabin2=disabled \
+    -D %{_bad_opt}dash=disabled \
+    -D %{_bad_opt}hls=disabled \
+    -D %{_bad_opt}id3tag=disabled \
+    -D %{_bad_opt}jpegformat=disabled \
+    -D %{_bad_opt}mpegdemux=disabled \
+    -D %{_bad_opt}rtp=disabled \
+    -D %{_bad_opt}smoothstreaming=disabled \
+  %else
+    %if 0%{?enable_gl:1}
+      -D %{_bad_opt}gl=enabled \
+    %endif # gl
+  %endif # tv
+%endif # plugin
+%if "%{plugin}" == "all" || "%{plugin}" == "ugly"
+  -D %{_ugly_opt}a52dec=disabled \
+  -D %{_ugly_opt}cdio=disabled \
+  -D %{_ugly_opt}doc=disabled \
+  -D %{_ugly_opt}dvdlpcmdec=disabled \
+  -D %{_ugly_opt}dvdread=disabled \
+  -D %{_ugly_opt}dvdsub=disabled \
+  -D %{_ugly_opt}mpeg2dec=disabled \
+  -D %{_ugly_opt}nls=disabled \
+  -D %{_ugly_opt}realmedia=disabled \
+  -D %{_ugly_opt}sidplay=disabled \
+  -D %{_ugly_opt}x264=disabled \
+  -D %{_ugly_opt}xingmux=disabled \
+  %if "%{tizen_profile_name}" == "tv"
+    -D %{_ugly_opt}tv-profile=true \
+    -D %{_ugly_opt}amrnb=disabled \
+    -D %{_ugly_opt}asfdemux=disabled \
+  %endif # tv
+%endif # plugin
+%if "%{plugin}" == "all" || "%{plugin}" == "omx"
+  %if "%{target}" == "rpi"
+    -D %{_omx_opt}target=rpi \
+    -D %{_omx_opt}header_path=/opt/vc/include/interface/vmcs_host/khronos/IL \
+  %else
+    %ifarch aarch64
+      -D %{_omx_opt}target=exynos64 \
+    %else
+      -D %{_omx_opt}target=exynos \
+      -D %{_omx_opt}vp9=true \
+    %endif # arch
+  %endif # target
+%endif # plugin
+%if "%{plugin}" == "all" || "%{plugin}" == "libav"
+  %if "%{tizen_profile_name}" == "tv"
+    -D %{_libav_opt}tv-profile=true \
+  %endif # tv
+%endif # plugin
+%if "%{plugin}" == "all" || "%{plugin}" == "es"
+  -D %{_es_opt}doc=disabled \
+  -D %{_es_opt}examples=disabled \
+  -D %{_es_opt}tests=disabled \
+  -D %{_es_opt}bash-completion=disabled \
+  -D %{_es_opt}validate=disabled \
+%endif
+  build
+
+ninja -C build all %{?_smp_mflags}
+
+%if "%{plugin}" != "all"
+popd
+%endif
+
+#######################################################
+## Install
+#######################################################
 
 %install
-%make_install
-mkdir -p %{buildroot}%{_datadir}/gstreamer-%{gst_branch}/presets
-mkdir -p %{buildroot}%{_docdir}/%{name}
-%find_lang %{name}-%{gst_branch}
-mv %{name}-%{gst_branch}.lang %{name}.lang
-rm -rf %{buildroot}%{_datadir}/gtk-doc
-rm -rf %{buildroot}%{_docdir}/%{name}/manual
-rm -rf %{buildroot}%{_docdir}/%{name}/pwg
-rm -rf %{buildroot}%{_libdir}/girepository-1.0/*.typelib
+rm -rf %{buildroot}
+export DESTDIR=%{buildroot}
+ninja -C %{_source_path}/build install
 mkdir -p %{buildroot}%{_datadir}/gstreamer-%{gst_branch}/presets
-%fdupes %{buildroot}
+rm -rf %{buildroot}%{_datadir}/gstreamer-%{gst_branch}/encoding-profiles
+rm -rf %{buildroot}%{_datadir}/locale
 
-%post -p /sbin/ldconfig
+%clean
+rm -rf $RPM_BUILD_ROOT
 
+%post -p /sbin/ldconfig
 %postun -p /sbin/ldconfig
 
-%files
-%manifest %{name}.manifest
-%defattr(-, root, root)
-%license COPYING
+#######################################################
+## Packaging rpms
+#######################################################
+
+###################### gstreamer ######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "core"
 
+%files -n gstreamer
+%manifest gstreamer.manifest
+%defattr(-, root, root)
+%license subprojects/gstreamer/COPYING
 %dir %{_datadir}/gstreamer-%{gst_branch}
 %dir %{_datadir}/gstreamer-%{gst_branch}/presets
-%dir %{_libdir}/gstreamer-%{gst_branch}
-%{_libdir}/gstreamer-%{gst_branch}/*.so
+%dir %{_lib_gstreamer_dir}
+%{_lib_gstreamer_dir}/libgstcoreelements.so
+%{_lib_gstreamer_dir}/libgstcoretracers.so
 %dir %{_libexecdir}/gstreamer-%{gst_branch}
+%{_libexecdir}/gstreamer-%{gst_branch}/gst-hotdoc-plugins-scanner
 %{_libexecdir}/gstreamer-%{gst_branch}/gst-plugin-scanner
 %{_libexecdir}/gstreamer-%{gst_branch}/gst-ptp-helper
-%{_libdir}/*.so.*
-#%{_libdir}/girepository-1.0/Gst-1.0.typelib
-#%{_libdir}/girepository-1.0/GstBase-1.0.typelib
-#%{_libdir}/girepository-1.0/GstCheck-1.0.typelib
-#%{_libdir}/girepository-1.0/GstController-1.0.typelib
-#%{_libdir}/girepository-1.0/GstNet-1.0.typelib
+%exclude %{_libexecdir}/gstreamer-%{gst_branch}/gst-plugins-doc-cache-generator
+%{_libdir}/libgstbase*.so.*
+%{_libdir}/libgstcontroller*.so.*
+%{_libdir}/libgstnet*.so.*
+%{_libdir}/libgstreamer*.so.*
+%{_lib_girepository}/Gst-1.0.typelib
+%{_lib_girepository}/GstBase-1.0.typelib
+%{_lib_girepository}/GstController-1.0.typelib
+%{_lib_girepository}/GstNet-1.0.typelib
 %{_datadir}/gdb/auto-load/usr/%{_lib}/libgstreamer*-gdb.py
-%{_datadir}/gstreamer-1.0/gdb/glib_gobject_helper.py
-%{_datadir}/gstreamer-1.0/gdb/gst_gdb.py
+%{_datadir}/gstreamer-%{gst_branch}/gdb/glib_gobject_helper.py
+%{_datadir}/gstreamer-%{gst_branch}/gdb/gst_gdb.py
 
-%files utils
-%manifest %{name}.manifest
+%files -n gstreamer-utils
+%manifest gstreamer.manifest
 %defattr(-, root, root)
-%license COPYING
-%{_bindir}/*-%{gst_branch}
-%doc %{_mandir}/man?/*-%{gst_branch}.*
+%license subprojects/gstreamer/COPYING
+%{_bindir}/gst-inspect-1.0
+%{_bindir}/gst-launch-1.0
+%{_bindir}/gst-stats-1.0
+%{_bindir}/gst-typefind-1.0
+%exclude %doc %{_mandir}/man?/*-%{gst_branch}.*
 
-%files devel
-%manifest %{name}.manifest
+%files -n gstreamer-devel
+%manifest gstreamer.manifest
 %defattr(-, root, root)
-%{_datadir}/aclocal/*.m4
-%{_includedir}/*
-%{_libdir}/*.so
-%{_libdir}/pkgconfig/*.pc
-%{_datadir}/gir-1.0/*.gir
+%{_datadir}/aclocal/gst-element-check-1.0.m4
+%{_includedir}/gstreamer-%{gst_branch}/gst/*.h
+%{_includedir}/gstreamer-%{gst_branch}/gst/base/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/controller/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/net/*
+%{_libdir}/libgstbase*.so
+%{_libdir}/libgstcontroller*.so
+%{_libdir}/libgstnet*.so
+%{_libdir}/libgstreamer*.so
+%{_libdir}/pkgconfig/gstreamer-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-base-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-controller-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-net-1.0.pc
+%{_datadir}/gir-%{gst_branch}/Gst-1.0.gir
+%{_datadir}/gir-%{gst_branch}/GstBase-1.0.gir
+%{_datadir}/gir-%{gst_branch}/GstController-1.0.gir
+%{_datadir}/gir-%{gst_branch}/GstNet-1.0.gir
 
 %changelog
+
+%endif
+
+###################### gst-plugins-base ######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "base"
+
+%files -n gst-plugins-base
+%manifest gst-plugins-base.manifest
+%defattr(-, root, root)
+%license subprojects/gst-plugins-base/COPYING
+%{_lib_gstreamer_dir}/libgstalsa.so
+%{_lib_gstreamer_dir}/libgstapp.so
+%{_lib_gstreamer_dir}/libgstaudioconvert.so
+%{_lib_gstreamer_dir}/libgstaudiorate.so
+%{_lib_gstreamer_dir}/libgstaudioresample.so
+%{_lib_gstreamer_dir}/libgstaudiotestsrc.so
+%{_lib_gstreamer_dir}/libgstgio.so
+%{_lib_gstreamer_dir}/libgstogg.so
+%{_lib_gstreamer_dir}/libgstplayback.so
+%{_lib_gstreamer_dir}/libgstoverlaycomposition.so
+%{_lib_gstreamer_dir}/libgstsubparse.so
+%{_lib_gstreamer_dir}/libgsttcp.so
+%{_lib_gstreamer_dir}/libgsttheora.so
+%{_lib_gstreamer_dir}/libgsttypefindfunctions.so
+%{_lib_gstreamer_dir}/libgstvideoconvert.so
+%{_lib_gstreamer_dir}/libgstvideorate.so
+%{_lib_gstreamer_dir}/libgstvideoscale.so
+%{_lib_gstreamer_dir}/libgstvideotestsrc.so
+%{_lib_gstreamer_dir}/libgstvolume.so
+%{_lib_gstreamer_dir}/libgstvorbis.so
+%{_lib_gstreamer_dir}/libgstpbtypes.so
+%{_lib_gstreamer_dir}/libgstrawparse.so
+%{_lib_gstreamer_dir}/libgstopus.so
+%{_lib_gstreamer_dir}/libgstencoding.so
+%{_lib_gstreamer_dir}/libgstaudiomixer.so
+%{_lib_gstreamer_dir}/libgstcompositor.so
+%if %{with x}
+%{_lib_gstreamer_dir}/libgstximagesink.so
+%{_lib_gstreamer_dir}/libgstxvimagesink.so
+%endif
+%{_libdir}/libgstapp*.so.*
+%{_libdir}/libgstaudio*.so.*
+%{_libdir}/libgstallocators*.so.*
+%{_libdir}/libgstfft*.so.*
+%{_libdir}/libgstpbutils*.so.*
+%{_libdir}/libgstriff*.so.*
+%{_libdir}/libgstrtp*.so.*
+%{_libdir}/libgstrtsp*.so.*
+%{_libdir}/libgstsdp*.so.*
+%{_libdir}/libgsttag*.so.*
+%{_libdir}/libgstvideo*.so.*
+%{_lib_girepository}/GstAllocators-1.0.typelib
+%{_lib_girepository}/GstApp-1.0.typelib
+%{_lib_girepository}/GstAudio-1.0.typelib
+%{_lib_girepository}/GstPbutils-1.0.typelib
+%{_lib_girepository}/GstRtp-1.0.typelib
+%{_lib_girepository}/GstRtsp-1.0.typelib
+%{_lib_girepository}/GstSdp-1.0.typelib
+%{_lib_girepository}/GstTag-1.0.typelib
+%{_lib_girepository}/GstVideo-1.0.typelib
+%dir %{_datadir}/gst-plugins-base/
+%dir %{_datadir}/gst-plugins-base/%{gst_branch}/
+%{_datadir}/gst-plugins-base/%{gst_branch}/license-translations.dict
+
+%files -n gst-plugins-base-extension-adder
+%{_lib_gstreamer_dir}/libgstadder.so
+%license subprojects/gst-plugins-base/COPYING
+
+%files -n gst-plugins-base-devel
+%manifest gst-plugins-base.manifest
+%defattr(-, root, root)
+%{_includedir}/gstreamer-%{gst_branch}/gst/allocators/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/app/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/audio/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/fft/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/pbutils/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/riff/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/rtp/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/rtsp/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/sdp/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/tag/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/video/*
+%if "%{plugin}" == "all"
+%exclude %{_includedir}/gstreamer-%{gst_branch}/gst/audio/audio-bad-prelude.h
+%exclude %{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstnonstreamaudiodecoder.h
+%exclude %{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstplanaraudioadapter.h
+%endif
+%{_libdir}/libgstallocators*.so
+%{_libdir}/libgstapp*.so
+%{_libdir}/libgstaudio*.so
+%{_libdir}/libgstfft*.so
+%{_libdir}/libgstpbutils*.so
+%{_libdir}/libgstriff*.so
+%{_libdir}/libgstrtp*.so
+%{_libdir}/libgstrtsp*.so
+%{_libdir}/libgstsdp*.so
+%{_libdir}/libgsttag*.so
+%{_libdir}/libgstvideo*.so
+%{_libdir}/pkgconfig/gstreamer-allocators*.pc
+%{_libdir}/pkgconfig/gstreamer-app*.pc
+%{_libdir}/pkgconfig/gstreamer-audio*.pc
+%{_libdir}/pkgconfig/gstreamer-fft*.pc
+%{_libdir}/pkgconfig/gstreamer-pbutils*.pc
+%{_libdir}/pkgconfig/gstreamer-plugins-base*.pc
+%{_libdir}/pkgconfig/gstreamer-riff*.pc
+%{_libdir}/pkgconfig/gstreamer-rtp*.pc
+%{_libdir}/pkgconfig/gstreamer-rtsp*.pc
+%{_libdir}/pkgconfig/gstreamer-sdp*.pc
+%{_libdir}/pkgconfig/gstreamer-tag*.pc
+%{_libdir}/pkgconfig/gstreamer-video*.pc
+%{_datadir}/gir-%{gst_branch}/GstAllocators*.gir
+%{_datadir}/gir-%{gst_branch}/GstApp*.gir
+%{_datadir}/gir-%{gst_branch}/GstAudio*.gir
+%{_datadir}/gir-%{gst_branch}/GstPbutils*.gir
+%{_datadir}/gir-%{gst_branch}/GstRtp*.gir
+%{_datadir}/gir-%{gst_branch}/GstRtsp*.gir
+%{_datadir}/gir-%{gst_branch}/GstSdp*.gir
+%{_datadir}/gir-%{gst_branch}/GstTag*.gir
+%{_datadir}/gir-%{gst_branch}/GstVideo*.gir
+
+%endif
+
+###################### gst-plugins-good ######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "good"
+
+%files -n gst-plugins-good
+%manifest gst-plugins-good.manifest
+%defattr(-, root, root)
+%license subprojects/gst-plugins-good/COPYING
+%{_lib_gstreamer_dir}/libgstalaw.so
+%{_lib_gstreamer_dir}/libgstapetag.so
+%{_lib_gstreamer_dir}/libgstaudiofx.so
+%{_lib_gstreamer_dir}/libgstaudioparsers.so
+%{_lib_gstreamer_dir}/libgstautodetect.so
+%{_lib_gstreamer_dir}/libgstavi.so
+%{_lib_gstreamer_dir}/libgstdebug.so
+%{_lib_gstreamer_dir}/libgstdeinterlace.so
+%{_lib_gstreamer_dir}/libgsteffectv.so
+%{_lib_gstreamer_dir}/libgsticydemux.so
+%{_lib_gstreamer_dir}/libgstid3demux.so
+%{_lib_gstreamer_dir}/libgstinterleave.so
+%{_lib_gstreamer_dir}/libgstisomp4.so
+%{_lib_gstreamer_dir}/libgstjpeg.so
+%{_lib_gstreamer_dir}/libgstmatroska.so
+%{_lib_gstreamer_dir}/libgstmulaw.so
+%{_lib_gstreamer_dir}/libgstmultifile.so
+%{_lib_gstreamer_dir}/libgstnavigationtest.so
+%{_lib_gstreamer_dir}/libgstpulseaudio.so
+%{_lib_gstreamer_dir}/libgstreplaygain.so
+%{_lib_gstreamer_dir}/libgstrtp.so
+%{_lib_gstreamer_dir}/libgstrtpmanager.so
+%{_lib_gstreamer_dir}/libgstrtsp.so
+%{_lib_gstreamer_dir}/libgstsmpte.so
+%{_lib_gstreamer_dir}/libgstudp.so
+%{_lib_gstreamer_dir}/libgstvideo4linux2.so
+%{_lib_gstreamer_dir}/libgstvideocrop.so
+%{_lib_gstreamer_dir}/libgstvideofilter.so
+%{_lib_gstreamer_dir}/libgstwavenc.so
+%{_lib_gstreamer_dir}/libgstwavparse.so
+%if %{with x}
+%{_lib_gstreamer_dir}/libgstximagesrc.so
+%endif
+%{_lib_gstreamer_dir}/libgstcairo.so
+%{_lib_gstreamer_dir}/libgstsoup.so
+%{_lib_gstreamer_dir}/libgstvpx.so
+%{_lib_gstreamer_dir}/libgstimagefreeze.so
+%if "%{tizen_profile_name}" != "tv"
+%{_lib_gstreamer_dir}/libgstflv.so
+%{_lib_gstreamer_dir}/libgstvideobox.so
+%{_lib_gstreamer_dir}/libgstvideomixer.so
+%{_datadir}/gstreamer-%{gst_branch}/presets/GstQTMux.prs
+%endif
+%{_datadir}/gstreamer-%{gst_branch}/presets/GstVP8Enc.prs
+
+%files -n gst-plugins-good-extra
+%manifest gst-plugins-good.manifest
+%defattr(-, root, root)
+%license subprojects/gst-plugins-good/COPYING
+%if 0%{?ENABLE_AALIB}
+%{_lib_gstreamer_dir}/libgstaasink.so
+%endif
+%{_lib_gstreamer_dir}/libgstpng.so
+%{_lib_gstreamer_dir}/libgstimagefreeze.so
+
+%endif
+
+###################### gst-plugins-bad ######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "bad"
+
+%files -n gst-plugins-bad
+%manifest gst-plugins-bad.manifest
+%defattr(-, root, root)
+%license subprojects/gst-plugins-bad/COPYING
+%if "%{tizen_profile_name}" != "tv"
+%{_lib_gstreamer_dir}/libgstautoconvert.so
+%{_lib_gstreamer_dir}/libgstcamerabin.so
+%{_lib_gstreamer_dir}/libgstid3tag.so
+%{_lib_gstreamer_dir}/libgstjpegformat.so
+%{_lib_gstreamer_dir}/libgstmpegpsdemux.so
+%{_lib_gstreamer_dir}/libgstsmoothstreaming.so
+%{_lib_gstreamer_dir}/libgstdash.so
+%if 0%{?enable_gl:1}
+%{_lib_gstreamer_dir}/libgstopengl.so
+%endif
+%{_lib_gstreamer_dir}/libgstsoundtouch.so
+%{_libdir}/libgstadaptivedemux-%{gst_branch}.so.0*
+%{_libdir}/libgstbasecamerabinsrc-%{gst_branch}.so.0*
+%{_libdir}/libgstinsertbin-%{gst_branch}.so.0*
+%{_libdir}/libgstphotography-%{gst_branch}.so.0*
+%{_libdir}/libgsturidownloader-%{gst_branch}.so.0*
+%if 0%{?enable_gl:1}
+%{_libdir}/libgstgl-%{gst_branch}.so.0*
+%endif
+%{_libdir}/libgstisoff-%{gst_branch}.so.0*
+%endif
+%{_lib_gstreamer_dir}/libgstaes.so
+%{_lib_gstreamer_dir}/libgstgdp.so
+%{_lib_gstreamer_dir}/libgstdebugutilsbad.so
+%{_lib_gstreamer_dir}/libgstmpegtsdemux.so
+%{_lib_gstreamer_dir}/libgstmpegtsmux.so
+%{_lib_gstreamer_dir}/libgstsdpelem.so
+%{_lib_gstreamer_dir}/libgstshm.so
+%{_lib_gstreamer_dir}/libgstvideoparsersbad.so
+%{_lib_gstreamer_dir}/libgstmidi.so
+%{_lib_gstreamer_dir}/libgstopenal.so
+%{_lib_gstreamer_dir}/libgsthls.so
+%{_lib_gstreamer_dir}/libgstnetsim.so
+%{_lib_gstreamer_dir}/libgsttimecode.so
+%{_lib_gstreamer_dir}/libgstvideoframe_audiolevel.so
+%{_lib_gstreamer_dir}/libgstaudiomixmatrix.so
+%{_lib_gstreamer_dir}/libgstaudiobuffersplit.so
+%{_lib_gstreamer_dir}/libgstaudiolatency.so
+%{_lib_gstreamer_dir}/libgstipcpipeline.so
+%{_lib_gstreamer_dir}/libgstproxy.so
+%{_lib_gstreamer_dir}/libgstwebrtc.so
+%{_lib_gstreamer_dir}/libgstdtls.so
+%{_lib_gstreamer_dir}/libgstrtpmanagerbad.so
+%{_lib_gstreamer_dir}/libgstsctp.so
+%{_lib_gstreamer_dir}/libgstsrtp.so
+%{_lib_gstreamer_dir}/libgstopusparse.so
+%{_lib_gstreamer_dir}/libgstgaudieffects.so
+%{_lib_gstreamer_dir}/libgstcoloreffects.so
+%if %{with wayland}
+%{_lib_gstreamer_dir}/libgstwaylandsink.so
+%endif
+%{_libdir}/libgstbadaudio-%{gst_branch}.so.0*
+%{_libdir}/libgstcodecs-%{gst_branch}.so.0*
+%{_libdir}/libgstcodecparsers-%{gst_branch}.so.0*
+%{_libdir}/libgstmpegts-%{gst_branch}.so.0*
+%{_libdir}/libgstplay-%{gst_branch}.so.0*
+%{_libdir}/libgstplayer-%{gst_branch}.so.0*
+%{_libdir}/libgstsctp-%{gst_branch}.so.0*
+%{_libdir}/libgsttranscoder-%{gst_branch}.so.0*
+%{_libdir}/libgstwebrtc-%{gst_branch}.so.0*
+%if %{with wayland}
+%{_libdir}/libgstwayland-%{gst_branch}.so.0*
+%endif
+%exclude %{_bindir}/gst-transcoder-1.0
+%{_lib_girepository}/GstBadAudio-1.0.typelib
+%{_lib_girepository}/GstCodecs-1.0.typelib
+%{_lib_girepository}/GstInsertBin-1.0.typelib
+%{_lib_girepository}/GstMpegts-1.0.typelib
+%{_lib_girepository}/GstPlay-1.0.typelib
+%{_lib_girepository}/GstPlayer-1.0.typelib
+%{_lib_girepository}/GstTranscoder-1.0.typelib
+%{_lib_girepository}/GstWebRTC-1.0.typelib
+
+%files -n gst-plugins-bad-devel
+%manifest gst-plugins-bad.manifest
+%defattr(-, root, root)
+%{_includedir}/gstreamer-%{gst_branch}/gst/audio/audio-bad-prelude.h
+%{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstnonstreamaudiodecoder.h
+%{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstplanaraudioadapter.h
+%{_includedir}/gstreamer-%{gst_branch}/gst/basecamerabinsrc/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/codecparsers/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/insertbin/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/interfaces/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/isoff/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/mpegts/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/play/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/player/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/sctp/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/transcoder/*
+%{_includedir}/gstreamer-%{gst_branch}/gst/uridownloader/*
+%if %{with wayland}
+%{_includedir}/gstreamer-%{gst_branch}/gst/wayland/*
+%endif
+%{_includedir}/gstreamer-%{gst_branch}/gst/webrtc/*
+%if "%{tizen_profile_name}" != "tv"
+%if 0%{?enable_gl:1}
+%{_lib_gstreamer_dir}/include/gst/gl/*
+%endif
+%endif
+%{_libdir}/libgstadaptivedemux*.so
+%{_libdir}/libgstbadaudio*.so
+%{_libdir}/libgstbasecamerabinsrc*.so
+%{_libdir}/libgstcodecparsers*.so
+%{_libdir}/libgstcodecs*.so
+%{_libdir}/libgstinsertbin*.so
+%{_libdir}/libgstisoff*.so
+%{_libdir}/libgstmpegts*.so
+%{_libdir}/libgstphotography*.so
+%{_libdir}/libgstplay*.so
+%{_libdir}/libgstsctp*.so
+%{_libdir}/libgsttranscoder*.so
+%{_libdir}/libgsturidownloader*.so
+%if %{with wayland}
+%{_libdir}/libgstwayland*.so
+%endif
+%{_libdir}/libgstwebrtc*.so
+%{_libdir}/pkgconfig/gstreamer-bad-audio-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-codecparsers-1.0.pc
+%if "%{tizen_profile_name}" != "tv"
+%if 0%{?enable_gl:1}
+%{_libdir}/pkgconfig/gstreamer-gl-*.pc
+%endif
+%endif
+%{_libdir}/pkgconfig/gstreamer-insertbin-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-mpegts-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-photography-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-play-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-player-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-plugins-bad-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-sctp-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-transcoder-1.0.pc
+%if %{with wayland}
+%{_libdir}/pkgconfig/gstreamer-wayland-1.0.pc
+%endif
+%{_libdir}/pkgconfig/gstreamer-webrtc-1.0.pc
+%{_datadir}/gir-%{gst_branch}/GstBadAudio*.gir
+%{_datadir}/gir-%{gst_branch}/GstCodecs*.gir
+%{_datadir}/gir-%{gst_branch}/GstInsertBin*.gir
+%{_datadir}/gir-%{gst_branch}/GstMpegts*.gir
+%{_datadir}/gir-%{gst_branch}/GstPlay*.gir
+%{_datadir}/gir-%{gst_branch}/GstPlayer*.gir
+%{_datadir}/gir-%{gst_branch}/GstTranscoder*.gir
+%{_datadir}/gir-%{gst_branch}/GstWebRTC*.gir
+
+%endif
+
+###################### gst-plugins-ugly ######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "ugly"
+
+%files -n gst-plugins-ugly
+%manifest gst-plugins-ugly.manifest
+%defattr(-,root,root,-)
+%license subprojects/gst-plugins-ugly/COPYING
+%if "%{tizen_profile_name}" != "tv"
+%{_lib_gstreamer_dir}/libgstasf.so
+%{_lib_gstreamer_dir}/libgstamrnb.so
+%exclude %{_datadir}/gstreamer-%{gst_branch}/presets/GstAmrnbEnc.prs
+%endif
+%{_lib_gstreamer_dir}/libgstamrwbdec.so
+
+%endif
+
+########################## gst-omx ###########################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "omx"
+
+%files -n gst-omx
+%manifest gst-omx.manifest
+%defattr(-,root,root,-)
+%license subprojects/gst-omx/COPYING
+%{_libdir}/gstreamer-1.0/libgstomx.so
+
+%endif
+
+######################## gst-libav ###########################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "libav"
+
+%files -n gst-libav
+%manifest gst-libav.manifest
+%defattr(-,root,root,-)
+%license subprojects/gst-libav/COPYING
+%{_libdir}/gstreamer-1.0/libgstlibav.so
+
+%endif
+
+%if 0
+###################### gst-rtsp-server #######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "rs"
+
+%files -n gst-rtsp-server
+%manifest gst-rtsp-server.manifest
+%defattr(-,root,root,-)
+%license subprojects/gst-rtsp-server/COPYING
+%{_libdir}/libgstrtspserver*.so.*
+%{_libdir}/gstreamer-1.0/libgstrtspclientsink.so
+
+%files -n gst-rtsp-server-devel
+%defattr(-,root,root,-)
+%{_libdir}/libgstrtspserver*.so
+%{_includedir}/gstreamer-1.0/gst/rtsp-server/rtsp-*.h
+%{_includedir}/gstreamer-1.0/gst/rtsp-server/gstwfd*.h
+%{_libdir}/pkgconfig/libgstrtspserver*
+
+%endif
+
+%endif
+
+###################### gst-editing-services #######################
+
+%if "%{plugin}" == "all" || "%{plugin}" == "es"
+
+%files -n gst-editing-services
+%manifest gst-editing-services.manifest
+%defattr(-,root,root,-)
+%license subprojects/gst-editing-services/COPYING
+%{_libdir}/libges*.so.*
+%{_libdir}/gstreamer-1.0/libgstges.so
+%{_libdir}/gstreamer-1.0/libgstnle.so
+%{_libdir}/girepository-1.0/GES-1.0.typelib
+%exclude %{_libdir}/gst-validate-launcher/python/launcher/apps/geslaunch.py
+%exclude %{_datadir}/gstreamer-%{gst_branch}/validate/scenarios/ges-edit-clip-while-paused.scenario
+%{_bindir}/ges*-%{gst_branch}
+
+%files -n gst-editing-services-devel
+%{_libdir}/libges*.so
+%{_includedir}/gstreamer-1.0/ges/*
+%{_libdir}/pkgconfig/gst-editing-services-1.0.pc
+%{_datadir}/gir-1.0/GES-1.0.gir
+
+%endif