git: ca3f925d6eb5 - main - framework: convert bsd.gstreamer.mk to Uses/gstreamer.mk

From: Tobias C. Berner <tcberner_at_FreeBSD.org>
Date: Sat, 30 Apr 2022 08:03:45 UTC
The branch main has been updated by tcberner:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ca3f925d6eb53ff27e2a49775f6d33f52a587ae4

commit ca3f925d6eb53ff27e2a49775f6d33f52a587ae4
Author:     Tobias C. Berner <tcberner@FreeBSD.org>
AuthorDate: 2022-04-29 04:52:18 +0000
Commit:     Tobias C. Berner <tcberner@FreeBSD.org>
CommitDate: 2022-04-30 08:03:20 +0000

    framework: convert bsd.gstreamer.mk to Uses/gstreamer.mk
    
    - convert bsd.gstreamer.mk to Uses/gstreamer.mk
    - convert ports tree to make use of USES=gstreamer
    - remove duplicate dependency lines from the tree
    
    Differential Revision: https://reviews.freebsd.org/D35097
---
 CHANGES                                         |  22 +
 Mk/Uses/gstreamer.mk                            | 448 +++++++++++++++++++
 Mk/bsd.gstreamer.mk                             | 562 ------------------------
 Mk/bsd.port.mk                                  |  10 +-
 audio/exaile/Makefile                           |   4 +-
 audio/faudio/Makefile                           |   5 +-
 audio/gnome-music/Makefile                      |   4 +-
 audio/gnome-podcasts/Makefile                   |   4 +-
 audio/goobox/Makefile                           |   3 +-
 audio/gradio/Makefile                           |   4 +-
 audio/gsequencer/Makefile                       |   3 +-
 audio/gstreamer1-plugins-sndio/Makefile         |   6 +-
 audio/libcanberra/Makefile                      |   2 +-
 audio/lollypop/Makefile                         |   6 +-
 audio/moodbar/Makefile                          |   4 +-
 audio/mp3splt-gtk/Makefile                      |   3 +-
 audio/mpz/Makefile                              |   4 +-
 audio/pianod2/Makefile                          |   4 +-
 audio/pithos/Makefile                           |   4 +-
 audio/pragha/Makefile                           |   4 +-
 audio/pulseeffects/Makefile                     |   4 +-
 audio/rhythmbox/Makefile                        |   4 +-
 audio/sayonara/Makefile                         |   4 +-
 audio/shortwave/Makefile                        |   6 +-
 audio/sound-juicer/Makefile                     |   4 +-
 audio/strawberry/Makefile                       |   3 +-
 deskutils/alarm-clock-applet/Makefile           |   3 +-
 deskutils/gnome-pomodoro/Makefile               |   3 +-
 deskutils/gnome-sound-recorder/Makefile         |   4 +-
 deskutils/lumina-mediaplayer/Makefile           |   6 +-
 deskutils/solanum/Makefile                      |   4 +-
 deskutils/spice-gtk/Makefile                    |   3 +-
 deskutils/xfce4-tumbler/Makefile                |   2 +-
 devel/efl/Makefile                              |   3 +-
 devel/libspice-server/Makefile                  |   2 +-
 editors/libreoffice/Makefile                    |   2 +-
 editors/openoffice-devel/Makefile               |   2 +-
 emulators/wine-proton/Makefile                  |   4 +-
 games/eboard/Makefile                           |   3 +-
 games/lordsawar/Makefile                        |   3 +-
 games/py-pychess/Makefile                       |   3 +-
 graphics/elementary-photos/Makefile             |   3 +-
 graphics/entangle/Makefile                      |   4 +-
 graphics/evince/Makefile                        |   3 +-
 graphics/gnome-video-effects/Makefile           |   4 +-
 graphics/gthumb/Makefile                        |   2 +-
 graphics/kmscube/Makefile                       |   4 +-
 graphics/opencv/Makefile                        |   2 +-
 graphics/osg/Makefile                           |   4 +-
 graphics/osg34/Makefile                         |   3 +-
 graphics/pdfpc/Makefile                         |   3 +-
 graphics/shotwell/Makefile                      |   5 +-
 mail/py-mailnag/Makefile                        |   3 +-
 misc/copperspice-examples/Makefile              |   3 +-
 multimedia/aravis/Makefile                      |   3 +-
 multimedia/cheese/Makefile                      |   4 +-
 multimedia/clutter-gst/Makefile                 |   3 +-
 multimedia/clutter-gst3/Makefile                |   3 +-
 multimedia/elementary-videos/Makefile           |   8 +-
 multimedia/gnome-twitch/Makefile                |   6 +-
 multimedia/gst123/Makefile                      |   4 +-
 multimedia/gstreamer1-editing-services/Makefile |   4 +-
 multimedia/gstreamer1-libav/Makefile            |   3 +-
 multimedia/gstreamer1-plugins-all/Makefile      |   5 +-
 multimedia/gstreamer1-plugins-bad/Makefile      |   4 +-
 multimedia/gstreamer1-plugins-core/Makefile     |  12 +-
 multimedia/gstreamer1-plugins-gnonlin/Makefile  |   4 +-
 multimedia/gstreamer1-plugins-good/Makefile     |   3 -
 multimedia/gstreamer1-plugins-rust/Makefile     |   3 +-
 multimedia/gstreamer1-plugins-svt-av1/Makefile  |   3 +-
 multimedia/gstreamer1-plugins-svt-hevc/Makefile |   3 +-
 multimedia/gstreamer1-plugins-svt-vp9/Makefile  |   3 +-
 multimedia/gstreamer1-plugins-ugly/Makefile     |   3 -
 multimedia/gstreamer1-plugins/Makefile          |  11 +-
 multimedia/gstreamer1-plugins/Makefile.common   |  12 +-
 multimedia/gstreamer1-qt/Makefile               |   3 +-
 multimedia/gstreamer1-rtsp-server/Makefile      |   4 +-
 multimedia/gstreamer1-transcoder/Makefile       |   4 +-
 multimedia/gstreamer1-vaapi/Makefile            |   4 +-
 multimedia/gstreamer1-validate/Makefile         |   3 +-
 multimedia/gstreamermm/Makefile                 |   3 +-
 multimedia/handbrake/Makefile                   |   2 +-
 multimedia/kamoso/Makefile                      |   3 +-
 multimedia/kooha/Makefile                       |   4 +-
 multimedia/librespot/Makefile                   |   5 +-
 multimedia/neolink/Makefile                     |   3 +-
 multimedia/phonon-gstreamer/Makefile            |   3 +-
 multimedia/photofilmstrip/Makefile              |   4 +-
 multimedia/pipewire/Makefile                    |   3 +-
 multimedia/pitivi/Makefile                      |   4 +-
 multimedia/py-gstreamer1/Makefile               |   3 +-
 multimedia/qt5-multimedia/Makefile              |   3 +-
 multimedia/quodlibet/Makefile                   |   6 +-
 multimedia/snappy/Makefile                      |   3 +-
 multimedia/termplay/Makefile                    |   3 +-
 multimedia/totem/Makefile                       |   4 +-
 multimedia/webcamoid/Makefile                   |   3 +-
 multimedia/xfce4-parole/Makefile                |   8 +-
 net-im/cawbird/Makefile                         |   2 +-
 net-im/dino/Makefile                            |   3 +-
 net-im/farstream/Makefile                       |   4 +-
 net-im/fractal/Makefile                         |   4 +-
 net-im/ktp-call-ui/Makefile                     |   3 +-
 net-im/libnice/Makefile                         |   2 +-
 net-im/libpurple/Makefile                       |   5 +-
 net-im/pidgin-sipe/Makefile                     |   3 +-
 net-im/telepathy-qt/Makefile                    |   4 +-
 net/freerdp/Makefile                            |   4 +-
 net/grilo-plugins/Makefile                      |   4 +-
 net/gupnp-dlna/Makefile                         |   3 +-
 net/libdmapsharing/Makefile                     |   3 +-
 net/uget/Makefile                               |   2 +-
 security/authenticator/Makefile                 |   4 +-
 sysutils/brasero/Makefile                       |   3 +-
 sysutils/gnome-control-center/Makefile          |   3 +-
 sysutils/tracker-miners/Makefile                |   2 +-
 sysutils/xfburn/Makefile                        |   2 +-
 textproc/libextractor/Makefile                  |   2 +-
 www/qt5-webkit/Makefile                         |   5 +-
 www/webkit2-gtk3/Makefile                       |   3 +-
 x11-fm/nautilus/Makefile                        |   3 +-
 x11-fm/sushi/Makefile                           |   3 +-
 x11-toolkits/copperspice/Makefile               |   4 +-
 x11-toolkits/gstreamer1-plugins-gtk4/Makefile   |   4 +-
 x11-toolkits/gtk40/Makefile                     |   2 +-
 x11-toolkits/wxgtk30/Makefile                   |   2 +-
 x11-toolkits/wxgtk31/Makefile                   |   2 +-
 x11/cinnamon/Makefile                           |   3 +-
 x11/florence/Makefile                           |   3 +-
 x11/gnome-shell/Makefile                        |   3 +-
 x11/lumina-core/Makefile                        |   3 +-
 x11/workrave/Makefile                           |   3 +-
 x11/xpra/Makefile                               |   6 +-
 133 files changed, 677 insertions(+), 844 deletions(-)

diff --git a/CHANGES b/CHANGES
index e96e1b0d4a0d..6a40475bf8d5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,28 @@ in the release notes and/or placed into UPDATING.
 
 All ports committers are allowed to commit to this file.
 
+20220430:
+AUTHOR: tcberner@FreeBSD.org
+
+  A new USES has been added to handle dependency on gstreamer.
+
+  Instead of writing
+
+        USE_GSTREAMER1=[list of components]
+
+  you now have to write
+
+        USES=gstreamer
+        USE_GSTREAMER=[list of components]
+
+  If your port previously set just
+
+        USE_GSTREAMER=yes
+
+  this now is simply
+
+        USES=gstreamer
+
 20220415:
 AUTHOR: amdmi3@FreeBSD.org
 
diff --git a/Mk/Uses/gstreamer.mk b/Mk/Uses/gstreamer.mk
new file mode 100644
index 000000000000..066b3b895e44
--- /dev/null
+++ b/Mk/Uses/gstreamer.mk
@@ -0,0 +1,448 @@
+#
+# gstreamer.mk - Support for gstreamer-plugins-based ports.
+#
+# Usage:
+# 	USES=		gstreamer[:version]
+# 	USE_GSTREAMER=	[list of components]
+#
+# Supported versions:	1 -- default
+# #
+
+.if ! defined(_INCLUDE_USES_GSTREAMER_MK)
+_INCLUDE_USES_GSTREAMER_MK=	YES
+
+#== Argument handling
+
+# Preparations to support multiple gstreamer versions
+_GST_VER_SUPPORTED=	1
+_GST_VER_DEFAULT=	1
+_GST_VER=		#
+.  for ver in ${_GST_VER_SUPPORTED:O:u}
+.    if ${gstreamer_ARGS:M${ver}}
+.      if empty(_GST_VER)
+_GST_VER=	${ver}
+.      else
+INGORE=	Incorrect USES=gstreamer:${gstramer_ARGS} - multiple versions defined
+.      endif
+.    endif
+.  endfor
+
+.  if empty(_GST_VER)
+_GST_VER=	${_GST_VER_DEFAULT}
+.  endif
+
+#== Component setup
+
+_GST1_VERSION=		1.16.2
+_GST1_LIB_VER=		1.0
+
+_GST1_CATEGORIES=	audio comms devel ftp graphics multimedia net security \
+			sysutils www x11 x11-toolkits
+_GST1_PLUGINS_audio= 	a52dec amrnb amrwbdec bs2b cdparanoia chromaprint faac \
+			faad flac flite gme gsm jack ladspa lame lv2 modplug \
+			mpg123 musepack ogg openmpt opus pulse shout2 sidplay \
+			sndfile sndio soundtouch speex taglib twolame vorbis \
+			wavpack webrtcdsp
+_GST1_PLUGINS_comms=	spandsp
+_GST1_PLUGINS_devel=	soup
+_GST1_PLUGINS_ftp=	curl
+_GST1_PLUGINS_graphics= aalib cairo gdkpixbuf gl jpeg kms libcaca libvisual \
+			opencv openexr openjpeg png qt rsvg vulkan webp zbar
+_GST1_PLUGINS_multimedia=	aom assrender bad dash dts dv dvd dvdread \
+			editing-services gnonlin good hls kate libav libde265 \
+			mpeg2dec mpeg2enc mplex mm openh264 resindvd rtmp \
+			smoothstreaming theora ttml ugly v4l2 vpx x264 x265
+_GST1_PLUGINS_net=	libmms srtp
+_GST1_PLUGINS_security=	dtls
+_GST1_PLUGINS_sysutils=	cdio hal
+_GST1_PLUGINS_www=	neon
+_GST1_PLUGINS_x11=	x ximagesrc
+_GST1_PLUGINS_x11-toolkits=	gtk gtk4 pango
+
+# == Unversioned information
+
+# Gather all available plugins for the chosen version
+_GST_PLUGINS_BASE=	bad core good ugly libgstreamer plugins
+_GST_PLUGINS_VER:=	${_GST${_GST_VER}_CATEGORIES:S/^/\${_GST${_GST_VER}_PLUGINS_/:S/$/}/}
+
+_GST_VERSION=		${_GST${_GST_VER}_VERSION}
+
+# List of all available components
+_USE_GSTREAMER_ALL=	${_GST_PLUGINS_BASE} \
+			${_GST_PLUGINS_VER}
+
+#==  Dependency setup
+
+#==== Top-level components
+
+gst-plugins_PORT=	multimedia/gstreamer${_GST_VER}-plugins
+gst-plugins_IMPL=	# empty
+gst-plugins_SUFFIX=	#
+
+gst-bad_PORT=		multimedia/gstreamer${_GST_VER}-plugins-bad
+gst-bad_IMPL=		#
+
+gst-core_PORT=		multimedia/gstreamer${_GST_VER}-plugins-core
+gst-core_IMPL=		#
+gst-core_GST1_VERSION=	1.16
+gst-core_VERSION=	${gst-core_GST${_GST_VER}_VERSION}
+
+gst-good_PORT=		multimedia/gstreamer${_GST_VER}-plugins-good
+gst-good_IMPL=		#
+
+gst-ugly_PORT=		multimedia/gstreamer${_GST_VER}-plugins-ugly
+gst-ugly_IMPL=		#
+
+gst-libgstreamer_LIB=	libgstreamer${_GST${_GST_VER}_LIB_VER:D-${_GST${_GST_VER}_LIB_VER}}.so
+gst-libgstreamer_PORT=	multimedia/gstreamer${_GST_VER}
+
+#==== Audio Plugins Section
+
+gst-a52dec_PORT=	audio/gstreamer${_GST_VER}-plugins-a52dec
+gst-a52dec_IMPL=	ugly
+
+gst-amrnb_PORT=		audio/gstreamer${_GST_VER}-plugins-amrnb
+gst-amrnb_IMPL=		ugly
+
+gst-amrwbdec_PORT=	audio/gstreamer${_GST_VER}-plugins-amrwbdec
+gst-amrwbdec_IMPL=	ugly
+
+gst-bs2b_PORT=		audio/gstreamer${_GST_VER}-plugins-bs2b
+gst-bs2b_IMPL=		bad
+
+gst-cdparanoia_PORT=	audio/gstreamer${_GST_VER}-plugins-cdparanoia
+gst-cdparanoia_IMPL=	#
+
+gst-chromaprint_PORT=	audio/gstreamer${_GST_VER}-plugins-chromaprint
+gst-chromeprint_IMPL=	bad
+
+gst-faac_PORT=		audio/gstreamer${_GST_VER}-plugins-faac
+gst-faac_IMPL=		bad
+
+gst-faad_PORT=		audio/gstreamer${_GST_VER}-plugins-faad
+gst-faad_IMPL=		bad
+
+gst-flac_PORT=		audio/gstreamer${_GST_VER}-plugins-flac
+gst-flac_IMPL=		good
+
+gst-flite_PORT=		audio/gstreamer${_GST_VER}-plugins-flite
+gst-flite_IMPL=		bad
+
+gst-gme_PORT=		audio/gstreamer${_GST_VER}-plugins-gme
+gst-gme_IMPL=		bad
+
+gst-gsm_PORT=		audio/gstreamer${_GST_VER}-plugins-gsm
+gst-gsm_IMPL=		bad
+
+gst-hal_PORT=		sysutils/gstreamer${_GST_VER}-plugins-hal
+gst-hal_IMPL=		good
+
+gst-jack_PORT=		audio/gstreamer${_GST_VER}-plugins-jack
+gst-jack_IMPL=		good
+
+gst-ladspa_PORT=	audio/gstreamer${_GST_VER}-plugins-ladspa
+gst-ladspa_IMPL=	bad
+
+gst-lame_PORT=		audio/gstreamer${_GST_VER}-plugins-lame
+gst-lame_IMPL=		ugly
+
+gst-lv2_PORT=		audio/gstreamer${_GST_VER}-plugins-lv2
+gst-lv2_IMPL=		bad
+
+gst-modplug_PORT=	audio/gstreamer${_GST_VER}-plugins-modplug
+gst-modplug_IMPL=	bad
+
+gst-mpg123_PORT=	audio/gstreamer${_GST_VER}-plugins-mpg123
+gst-mpg123_IMPL=	ugly
+
+gst-musepack_PORT=	audio/gstreamer${_GST_VER}-plugins-musepack
+gst-musepack_IMPL=	bad
+
+gst-neon_PORT=		www/gstreamer${_GST_VER}-plugins-neon
+gst-neon_IMPL=		bad
+
+gst-ogg_PORT=		audio/gstreamer${_GST_VER}-plugins-ogg
+gst-ogg_IMPL=		#
+
+gst-opus_PORT=		audio/gstreamer${_GST_VER}-plugins-opus
+gst-opus_IMPL=		#
+
+gst-pulse_PORT=		audio/gstreamer${_GST_VER}-plugins-pulse
+gst-pulse_IMPL=		good
+
+gst-shout2_PORT=	audio/gstreamer${_GST_VER}-plugins-shout2
+gst-shout2_IMPL=	good
+
+gst-sidplay_PORT=	audio/gstreamer${_GST_VER}-plugins-sidplay
+gst-sidplay_IMPL=	ugly
+
+gst-sndio_PORT=		audio/gstreamer${_GST_VER}-plugins-sndio
+gst-sndio_IMPL=		#
+
+gst-sndfile_PORT=	audio/gstreamer${_GST_VER}-plugins-sndfile
+gst-sndfile_IMPL=	bad
+
+gst-soundtouch_PORT=	audio/gstreamer${_GST_VER}-plugins-soundtouch
+gst-soundtouch_IMPL=	bad
+
+gst-speex_PORT=		audio/gstreamer${_GST_VER}-plugins-speex
+gst-speex_IMPL=		good
+
+gst-taglib_PORT=	audio/gstreamer${_GST_VER}-plugins-taglib
+gst-taglib_IMPL=	good
+
+gst-twolame_PORT=	audio/gstreamer${_GST_VER}-plugins-twolame
+gst-twolame_IMPL=	ugly
+
+gst-vorbis_PORT=	audio/gstreamer${_GST_VER}-plugins-vorbis
+gst-vorbis_IMPL=	#
+
+gst-wavpack_PORT=	audio/gstreamer${_GST_VER}-plugins-wavpack
+gst-wavpack_IMPL=	good
+
+gst-webrtcdsp_PORT=	audio/gstreamer${_GST_VER}-plugins-webrtcdsp
+gst-webrtcdsp_IMPL=	bad
+
+#==== comms plugin section
+
+gst-spandsp_PORT=	comms/gstreamer${_GST_VER}-plugins-spandsp
+gst-spandsp_IMPL=	bad
+
+#==== devel plugin section
+
+gst-soup_PORT=		devel/gstreamer${_GST_VER}-plugins-soup
+gst-soup_IMPL=		good
+
+#==== ftp plugin section
+
+gst-curl_PORT=		ftp/gstreamer${_GST_VER}-plugins-curl
+gst-curl_IMPL=		bad
+
+#==== graphics plugin section
+
+gst-aalib_PORT=		graphics/gstreamer${_GST_VER}-plugins-aalib
+gst-aalib_IMPL=		good
+
+gst-aom_PORT=		multimedia/gstreamer${_GST_VER}-plugins-aom
+gst-aom_IMPL=		bad
+
+gst-assrender_PORT=	multimedia/gstreamer${_GST_VER}-plugins-assrender
+gst-assrender_IMPL=	bad
+
+gst-cairo_PORT=		graphics/gstreamer${_GST_VER}-plugins-cairo
+gst-cairo_IMPL=		good
+
+gst-gdkpixbuf_PORT=	graphics/gstreamer${_GST_VER}-plugins-gdkpixbuf
+gst-gdkpixbuf_IMPL=	good
+
+gst-gl_PORT=		graphics/gstreamer${_GST_VER}-plugins-gl
+gst-gl_IMPL=		bad
+
+gst-jpeg_PORT=		graphics/gstreamer${_GST_VER}-plugins-jpeg
+gst-jpeg_IMPL=		good
+
+gst-kms_PORT=		graphics/gstreamer${_GST_VER}-plugins-kms
+gst-kms_IMPL=		bad
+
+gst-libcaca_PORT=	graphics/gstreamer${_GST_VER}-plugins-libcaca
+gst-libcaca_IMPL=	good
+
+gst-libvisual_PORT=	graphics/gstreamer${_GST_VER}-plugins-libvisual
+gst-libvisual_IMPL=	#
+
+gst-opencv_PORT=	graphics/gstreamer${_GST_VER}-plugins-opencv
+gst-opencv_IMPL=	bad
+
+gst-openexr_PORT=	graphics/gstreamer${_GST_VER}-plugins-openexr
+gst-openexr_IMPL=	bad
+
+gst-openjpeg_PORT=	graphics/gstreamer${_GST_VER}-plugins-openjpeg
+gst-openjpeg_IMPL=	bad
+
+gst-openmpt_PORT=	audio/gstreamer${_GST_VER}-plugins-openmpt
+gst-openmpt_IMPL=	bad
+
+gst-png_PORT=		graphics/gstreamer${_GST_VER}-plugins-png
+gst-png_IMPL=		good
+
+gst-qt_PORT=		graphics/gstreamer${_GST_VER}-plugins-qt
+gst-qt_IMPL=		good
+
+gst-rsvg_PORT=		graphics/gstreamer${_GST_VER}-plugins-rsvg
+gst-rsvg_IMPL=		bad
+
+gst-webp_PORT=		graphics/gstreamer${_GST_VER}-plugins-webp
+gst-webp_IMPL=		bad
+
+gst-zbar_PORT=		graphics/gstreamer${_GST_VER}-plugins-zbar
+gst-zbar_IMPL=		bad
+
+#==== multimedia plugins section
+
+gst-dash_PORT=		multimedia/gstreamer${_GST_VER}-plugins-dash
+gst-dash_IMPL=		bad
+
+gst-dvdread_PORT=	multimedia/gstreamer${_GST_VER}-plugins-dvdread
+gst-dvdread_IMPL=	ugly
+
+gst-editing-services_PORT=	multimedia/gstreamer${_GST_VER}-editing-services
+gst-editing-services_SUFFIX=	#
+gst-editing-services_IMPL=	#
+
+gst-dts_PORT=		multimedia/gstreamer${_GST_VER}-plugins-dts
+gst-dts_IMPL=		bad
+
+gst-dv_PORT=		multimedia/gstreamer${_GST_VER}-plugins-dv
+gst-dv_IMPL=		good
+
+gst-dvd_PORT=		multimedia/gstreamer${_GST_VER}-plugins-dvd
+gst-dvd_IMPL=		ugly
+
+gst-gnonlin_PORT=	multimedia/gstreamer${_GST_VER}-plugins-gnonlin
+gst-gnonlin_IMPL=	good
+
+gst-hls_PORT=		multimedia/gstreamer${_GST_VER}-plugins-hls
+gst-hls_IMPL=		bad
+
+gst-kate_PORT=		multimedia/gstreamer${_GST_VER}-plugins-kate
+gst-kate_IMPL=		bad
+
+gst-libav_PORT=		multimedia/gstreamer${_GST_VER}-libav
+gst-libav_SUFFIX=	#
+gst-libav_IMPL=		#
+
+gst-libde265_PORT=	multimedia/gstreamer${_GST_VER}-plugins-libde265
+gst-libde265_IMPL=	bad
+
+gst-mm_PORT=		multimedia/gstreamermm
+gst-mm_PREFIX=		gstreamer
+gst-mm_SUFFIX=		#
+gst-mm_IMPL=		#
+gst-mm_GST1_VERSION=	1.10.0
+gst-mm_VERSION=		${gst-mm_GST${_GST_VER}_VERSION}
+
+gst-mpeg2dec_PORT=	multimedia/gstreamer${_GST_VER}-plugins-mpeg2dec
+gst-mpeg2dec_IMPL=	ugly
+
+gst-mpeg2enc_PORT=	multimedia/gstreamer${_GST_VER}-plugins-mpeg2enc
+gst-mpeg2enc_IMPL=	bad
+
+gst-mplex_PORT=		multimedia/gstreamer${_GST_VER}-plugins-mplex
+gst-mplex_IMPL=		bad
+
+gst-openh264_PORT=	multimedia/gstreamer${_GST_VER}-plugins-openh264
+gst-openh264_IMPL=	bad
+
+gst-rtmp_PORT=		multimedia/gstreamer${_GST_VER}-plugins-rtmp
+gst-rtmp_IMPL=		bad
+
+gst-smoothstreaming_PORT=	multimedia/gstreamer${_GST_VER}-plugins-smoothstreaming
+gst-smoothstreaming_IMPL=	bad
+
+gst-ttml_PORT=		multimedia/gstreamer${_GST_VER}-plugins-ttml
+gst-ttml_IMPL=		bad
+
+gst-v4l2_PORT=		multimedia/gstreamer${_GST_VER}-plugins-v4l2
+gst-v4l2_IMPL=		good
+
+# hmmm
+gst-vaapi_PORT=		multimedia/gstreamer-vaapi
+gst-vaapi_IMPL=		bad
+
+gst-vpx_PORT=		multimedia/gstreamer${_GST_VER}-plugins-vpx
+gst-vpx_IMPL=		good
+
+gst-vulkan_PORT=	graphics/gstreamer${_GST_VER}-plugins-vulkan
+gst-vulkan_IMPL=	bad
+
+gst-resindvd_PORT=	multimedia/gstreamer${_GST_VER}-plugins-resindvd
+gst-resindvd_IMPL=	bad
+
+gst-theora_PORT=	multimedia/gstreamer${_GST_VER}-plugins-theora
+gst-theora_IMPL=	#
+
+gst-x264_PORT=		multimedia/gstreamer${_GST_VER}-plugins-x264
+gst-x264_IMPL=		ugly
+
+gst-x265_PORT=		multimedia/gstreamer${_GST_VER}-plugins-x265
+gst-x265_IMPL=		bad
+
+#==== Net Plugins Section
+
+gst-libmms_PORT=	net/gstreamer${_GST_VER}-plugins-libmms
+gst-libmms_IMPL=	bad
+
+gst-srtp_PORT=		net/gstreamer${_GST_VER}-plugins-srtp
+gst-srtp_IMPL=		bad
+
+#==== security plugins section
+
+gst-dtls_PORT=		security/gstreamer${_GST_VER}-plugins-dtls
+gst-dtls_IMPL=		bad
+
+#==== sysutils plugins section
+
+gst-cdio_PORT=		sysutils/gstreamer${_GST_VER}-plugins-cdio
+gst-cdio_IMPL=		ugly
+
+#==== x11 plugins section
+
+gst-x_PORT=		x11/gstreamer${_GST_VER}-plugins-x
+gst-x_IMPL=		#
+
+gst-ximagesrc_PORT=	x11/gstreamer${_GST_VER}-plugins-ximagesrc
+gst-ximagesrc_IMPL=	good
+
+#==== x11-toolkits plugins section
+
+gst-gtk_PORT=		x11-toolkits/gstreamer${_GST_VER}-plugins-gtk
+gst-gtk_IMPL=		bad
+
+gst-gtk4_PORT=		x11-toolkits/gstreamer${_GST_VER}-plugins-gtk4
+gst-gtk4_IMPL=		good
+
+gst-pango_PORT=		x11-toolkits/gstreamer${_GST_VER}-plugins-pango
+gst-pango_IMPL=		#
+
+#== Dependency creation
+
+_GST_BR_DEPENDS=	#
+_GST_LIB_DEPENDS=	#
+
+USE_GSTREAMER?=		#
+# everything wants this
+USE_GSTREAMER+=		libgstreamer
+.  if ${PORTDIRNAME} != gstreamer${_GST_VER}-plugins
+USE_GSTREAMER+=		plugins
+.  endif
+
+# Gather all Impl values
+_GST_IMPL_LIST:=		${USE_GSTREAMER:S/^/\${gst-/:S/$/_IMPL}/}
+
+# Combine the wanted copmonents and the required implementations
+_USE_GSTREAMER=		${USE_GSTREAMER} \
+			${_GST_IMPL_LIST}
+
+.  for component in ${_USE_GSTREAMER:O:u}
+# Fill in the common default component values
+gst-${component}_VERSION?=	${_GST_VERSION}
+gst-${component}_NAME?=		${component}
+gst-${component}_PREFIX?=	gstreamer${_GST_VER}-
+gst-${component}_SUFFIX?=	plugins-
+gst-${component}_PKG?=		${gst-${component}_PREFIX}${gst-${component}_SUFFIX}${gst-${component}_NAME}
+
+.    if empty(_USE_GSTREAMER_ALL:M${component})
+IGNORE=	unknown gstreamer component '${component}' for gstreamer:${_GST_VER}
+.    endif
+.    if !empty(gst-${component}_LIB)
+_GST_LIB_DEPENDS+=	${gst-${component}_LIB}:${gst-${component}_PORT}
+.    else
+_GST_BR_DEPENDS+=	${gst-${component}_PKG}>=${gst-${component}_VERSION}:${gst-${component}_PORT}
+.    endif
+.  endfor
+
+LIB_DEPENDS+=   ${_GST_LIB_DEPENDS:O:u}
+BUILD_DEPENDS+= ${_GST_BR_DEPENDS:O:u}
+RUN_DEPENDS+=   ${_GST_BR_DEPENDS:O:u}
+
+.endif
diff --git a/Mk/bsd.gstreamer.mk b/Mk/bsd.gstreamer.mk
deleted file mode 100644
index 7e7b7d85d9e5..000000000000
--- a/Mk/bsd.gstreamer.mk
+++ /dev/null
@@ -1,562 +0,0 @@
-#-*- tab-width: 4; -*-
-# ex:ts=4
-#
-# bsd.gstreamer.mk - Support for gstreamer-plugins-based ports.
-#
-# Created by: Michael Johnson <ahze@FreeBSD.org>
-
-.if !defined(_POSTMKINCLUDED) && !defined(Gstreamer_Pre_Include)
-
-Gstreamer_Include_MAINTAINER=	multimedia@FreeBSD.org
-Gstreamer_Pre_Include=		bsd.gstreamer.mk
-
-.endif
-
-# Ports can use the following:
-#
-# For Gstreamer 1.x the same rules apply but instead of 
-#   USE_GSTREAMER=, USE_GSTREAMER1= is used.
-#
-# If you want to use USE_GSTREAMER after <bsd.port.pre.mk>
-# you must follow one of the examples listed below
-#
-#	.include <bsd.port.options.mk>
-#	.if defined(WITH_VORBIS)
-#	USE_GSTREAMER=	vorbis
-#	.endif
-#
-# or
-#       USE_GSTREAMER=	yes
-#       .include <bsd.port.options.mk>
-#       .if defined(WITH_FAAD)
-#       USE_GSTREAMER+=	faad
-#       .endif
-#	.include <bsd.port.pre.mk>
-#
-#	USE_GSTREAMER=yes will always add a dependency to
-#		gstreamer-plugins
-#
-# "Normal" dependencies and variables
-#
-
-GSTREAMER1_PORT=	${PORTSDIR}/multimedia/gstreamer1-plugins
-_GST1_LIB_BASE=		${LOCALBASE}/lib/gstreamer-${GST1_VERSION}
-GST1_VERSION=		1.4
-GST1_MINOR_VERSION=	.0
-GST1_SHLIB_VERSION=	0
-GST1_MINIMAL_VERSION=	.0
-
-# These are the current supported gstreamer-plugins modules:
-# Supported plugins by both 0.10 and 1.0.
-_GSTREAMER_PLUGINS= \
-		a52dec \
-		aalib \
-		amrnb \
-		amrwbdec \
-		cairo \
-		cdio \
-		cdparanoia \
-		dts \
-		dv \
-		faac \
-		faad \
-		flac \
-		flite \
-		gdkpixbuf \
-		gl \
-		gme \
-		gnonlin \
-		gsm \
-		jack \
-		jpeg \
-		ladspa \
-		lame \
-		libcaca \
-		libmms \
-		libvisual \
-		mpeg2dec \
-		mpeg2enc \
-		musepack \
-		neon \
-		ogg \
-		opus \
-		pango \
-		pulse \
-		resindvd \
-		shout2 \
-		sndfile \
-		sndio \
-		sidplay \
-		soundtouch \
-		soup \
-		speex \
-		taglib \
-		theora \
-		twolame \
-		v4l2 \
-		vorbis \
-		wavpack \
-		x264
-
-# plugins only in 1.0
-.if defined(USE_GSTREAMER1)
-_GSTREAMER_PLUGINS+= \
-		aom \
-		assrender \
-		bs2b \
-		chromaprint \
-		curl \
-		dash \
-		dtls \
-		dvdread \
-		editing-services \
-		gtk \
-		gtk4 \
-		hls \
-		kate \
-		kms \
-		libav \
-		libde265 \
-		lv2 \
-		mm \
-		modplug \
-		mpg123 \
-		mplex \
-		opencv \
-		openexr \
-		openh264 \
-		openjpeg \
-		openmpt \
-		png \
-		qt \
-		rsvg \
-		rtmp \
-		smoothstreaming \
-		spandsp \
-		srtp \
-		ttml \
-		vpx \
-		vulkan \
-		webp \
-		webrtcdsp \
-		x \
-		x265 \
-		ximagesrc \
-		zbar
-# vaapi
-.endif # USE_GSTREAMER1
-
-# other plugins
-_USE_GSTREAMER_ALL=	bad core good ugly yes ${_GSTREAMER_PLUGINS}
-
-#--------------------------------------------------------------------------#
-
-core_DEPENDS=	multimedia/gstreamer-plugins-core
-core_IMPL=	#
-
-yes_DEPENDS=	multimedia/gstreamer-plugins
-yes_NAME=	gstreamer-plugins
-yes_NAME10=	gstreamer1-plugins
-yes_GST_PREFIX=	# empty
-yes_IMPL=	# empty
-
-# XXX check if IMPL is correct for both 0.10 and 1.0
-
-#-- audio plugins section -------------------------------------------------#
-
-# Audio Plugins Section
-a52dec_DEPENDS=	audio/gstreamer-plugins-a52dec
-a52dec_IMPL=	ugly
-
-amrnb_DEPENDS=	audio/gstreamer-plugins-amrnb
-amrnb_IMPL=	ugly
-
-amrwbdec_DEPENDS=	audio/gstreamer-plugins-amrwbdec
-amrwbdec_IMPL=		ugly
-
-bs2b_DEPENDS=	audio/gstreamer-plugins-bs2b
-bs2b_IMPL=	bad
-
-cdparanoia_DEPENDS=	audio/gstreamer-plugins-cdparanoia
-cdparanoia_IMPL=	#
-
-chromaprint_DEPENDS=	audio/gstreamer-plugins-chromaprint
-chromeprint_IMPL=	bad
-
-faac_DEPENDS=	audio/gstreamer-plugins-faac
-faac_IMPL=	bad
-
-faad_DEPENDS=	audio/gstreamer-plugins-faad
-faad_IMPL=	bad
-
-flac_DEPENDS=	audio/gstreamer-plugins-flac
-flac_IMPL=	good
-
-flite_DEPENDS=	audio/gstreamer-plugins-flite
-flite_IMPL=	bad
-
-gme_DEPENDS=	audio/gstreamer-plugins-gme
-gme_IMPL=	bad
-
-gsm_DEPENDS=	audio/gstreamer-plugins-gsm
-gsm_IMPL=	bad
-
-hal_DEPENDS=	sysutils/gstreamer-plugins-hal
-hal_IMPL=	good
-
-jack_DEPENDS=	audio/gstreamer-plugins-jack
-jack_IMPL=	good
-
-ladspa_DEPENDS=	audio/gstreamer-plugins-ladspa
-ladspa_IMPL=	bad
-
-lame_DEPENDS=	audio/gstreamer-plugins-lame
-lame_IMPL=	ugly
-
-lv2_DEPENDS=	audio/gstreamer-plugins-lv2
-lv2_IMPL=	bad
-
-modplug_DEPENDS=	audio/gstreamer-plugins-modplug
-modplug_IMPL=		bad
-
-mpg123_DEPENDS=	audio/gstreamer-plugins-mpg123
-mpg123_IMPL=	ugly
-
-musepack_DEPENDS=	audio/gstreamer-plugins-musepack
-musepack_IMPL=		bad
-
-neon_DEPENDS=	www/gstreamer-plugins-neon
-neon_IMPL=	bad
-
-ogg_DEPENDS=	audio/gstreamer-plugins-ogg
-ogg_IMPL=	#
-
-opus_DEPENDS=	audio/gstreamer-plugins-opus
-opus_IMPL=	#
-
-pulse_DEPENDS=	audio/gstreamer-plugins-pulse
-pulse_IMPL=	good
-
-shout2_DEPENDS=	audio/gstreamer-plugins-shout2
-shout2_IMPL=	good
-
-sidplay_DEPENDS=	audio/gstreamer-plugins-sidplay
-sidplay_IMPL=		ugly
-
-sndio_DEPENDS=	audio/gstreamer-plugins-sndio
-sndio_IMPL=	#
-
-sndfile_DEPENDS=	audio/gstreamer-plugins-sndfile
-sndfile_IMPL=		bad
-
-soundtouch_DEPENDS=	audio/gstreamer-plugins-soundtouch
-soundtouch_IMPL=	bad
-
-speex_DEPENDS=	audio/gstreamer-plugins-speex
-speex_IMPL=	good
-
-taglib_DEPENDS=	audio/gstreamer-plugins-taglib
-taglib_IMPL=	good
-
-twolame_DEPENDS=	audio/gstreamer-plugins-twolame
-twolame_IMPL=		ugly
-
-vorbis_DEPENDS=	audio/gstreamer-plugins-vorbis
-vorbis_IMPL=	#
-
-wavpack_DEPENDS=	audio/gstreamer-plugins-wavpack
-wavpack_IMPL=		good
-
-webrtcdsp_DEPENDS=	audio/gstreamer-plugins-webrtcdsp
-webrtcdsp_IMPL=		bad
-
-#-- comms plugin section --------------------------------------------------#
-
-spandsp_DEPENDS=	comms/gstreamer-plugins-spandsp
-spandsp_IMPL=		bad
-
-#-- devel plugin section --------------------------------------------------#
-
-soup_DEPENDS=	devel/gstreamer-plugins-soup
-soup_IMPL=	good
-
-#-- ftp plugin section ----------------------------------------------------#
-
-curl_DEPENDS=	ftp/gstreamer-plugins-curl
-curl_IMPL=	bad
-
-#-- graphics plugin section -----------------------------------------------#
-
-aalib_DEPENDS=	graphics/gstreamer-plugins-aalib
-aalib_IMPL=	good
-
-aom_DEPENDS=	multimedia/gstreamer-plugins-aom
-aom_IMPL=	bad
-
-assrender_DEPENDS=	multimedia/gstreamer-plugins-assrender
-assrender_IMPL=		bad
-
-cairo_DEPENDS=	graphics/gstreamer-plugins-cairo
-cairo_IMPL=	good
-
-gdkpixbuf_DEPENDS=	graphics/gstreamer-plugins-gdkpixbuf
-gdkpixbuf_IMPL=		good
-
-gl_DEPENDS=	graphics/gstreamer-plugins-gl
-gl_IMPL=	bad
-
-jpeg_DEPENDS=	graphics/gstreamer-plugins-jpeg
-jpeg_IMPL=	good
-
-kms_DEPENDS=	graphics/gstreamer-plugins-kms
-kms_IMPL=	bad
-
-libcaca_DEPENDS=	graphics/gstreamer-plugins-libcaca
-libcaca_IMPL=		good
-
-libvisual_DEPENDS=	graphics/gstreamer-plugins-libvisual
-libvisual_IMPL=		#
-
-opencv_DEPENDS=	graphics/gstreamer-plugins-opencv
-opencv_IMPL=	bad
-
-openexr_DEPENDS=	graphics/gstreamer-plugins-openexr
-openexr_IMPL=		bad
-
-openjpeg_DEPENDS=	graphics/gstreamer-plugins-openjpeg
-openjpeg_IMPL=		bad
-
-openmpt_DEPENDS=	audio/gstreamer-plugins-openmpt
-openmpt_IMPL=		bad
-
-png_DEPENDS=	graphics/gstreamer-plugins-png
-png_IMPL=	good
-
-qt_DEPENDS=	graphics/gstreamer-plugins-qt
-qt_IMPL=	good
-
-rsvg_DEPENDS=	graphics/gstreamer-plugins-rsvg
-rsvg_IMPL=	bad
-
-webp_DEPENDS=	graphics/gstreamer-plugins-webp
*** 2511 LINES SKIPPED ***