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 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/
 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:  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:  fdupes
 BuildRequires:  flex
-BuildRequires:  pkgconfig(glib-2.0) >= 2.32.0
 BuildRequires:  libtool
 BuildRequires:  libtool
-BuildRequires:  pkgconfig(libxml-2.0)
-BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
 BuildRequires:  pkgconfig(dlog)
 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
 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.
 
 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}
 
 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
 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.
 
 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}
 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.
 
 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}
 
 %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
 
 %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} \
 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
 
 %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
 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
 
 %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 %{_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}
 %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
 %{_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}/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)
 %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)
 %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
 
 %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