git: c3570df406b9 - main - graphics/frei0r*: Update to 2.3.0 [1]

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Sun, 18 Jun 2023 19:05:16 UTC
The branch main has been updated by jhale:

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

commit c3570df406b90a78b22972f24146ca662dd8cd75
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-06-18 18:23:21 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-06-18 19:04:46 +0000

    graphics/frei0r*: Update to 2.3.0 [1]
    
    Split cairo-dependent plugins out into graphics/frei0r-plugins-cairo.
    
    Shift pkg-plist and several variables out into the slave ports for
    easier maintainence, including PORTREVISION to facilitate usage of
    PORTREVISION bump scripts.
    
    Convert "extra" patches into regular patches for easier future
    maintainence.
    
    Ensure optional plugins are the same version as the frei0r base.
    
    https://github.com/dyne/frei0r/releases/tag/v2.3.0
    
    PR:             272045 [1]
    Reported by:    Olivier Duchateau <duchateau.olivier@gmail.com> [1]
---
 graphics/Makefile                                  |   1 +
 graphics/frei0r-plugins-cairo/Makefile             |  11 ++
 graphics/frei0r-plugins-cairo/pkg-plist            |   4 +
 graphics/frei0r-plugins-gavl/Makefile              |   8 +-
 graphics/frei0r-plugins-gavl/pkg-plist             |   3 +
 graphics/frei0r-plugins-opencv/Makefile            |   8 +-
 graphics/frei0r-plugins-opencv/pkg-plist           |   2 +
 graphics/frei0r-plugins/Makefile                   |  32 +++---
 graphics/frei0r/Makefile                           |  80 +++++--------
 graphics/frei0r/distinfo                           |   6 +-
 graphics/frei0r/files/extra-patch-CMakeLists.txt   |  17 ---
 graphics/frei0r/files/extra-patch-frei0r-plugins   | 125 ---------------------
 graphics/frei0r/files/patch-CMakeLists.txt         |  59 ++++++++++
 .../frei0r/files/patch-src_filter_CMakeLists.txt   |  17 +++
 .../frei0r/files/patch-src_mixer2_CMakeLists.txt   |  17 +++
 graphics/frei0r/pkg-plist                          |  21 +++-
 graphics/frei0r/version.mk                         |   1 +
 17 files changed, 197 insertions(+), 215 deletions(-)

diff --git a/graphics/Makefile b/graphics/Makefile
index 9e36f44bc112..632281b66b59 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -225,6 +225,7 @@
     SUBDIR += freetype-gl
     SUBDIR += frei0r
     SUBDIR += frei0r-plugins
+    SUBDIR += frei0r-plugins-cairo
     SUBDIR += frei0r-plugins-gavl
     SUBDIR += frei0r-plugins-opencv
     SUBDIR += frogr
diff --git a/graphics/frei0r-plugins-cairo/Makefile b/graphics/frei0r-plugins-cairo/Makefile
new file mode 100644
index 000000000000..65bd9970e6f8
--- /dev/null
+++ b/graphics/frei0r-plugins-cairo/Makefile
@@ -0,0 +1,11 @@
+PORTREVISION=	0
+PKGNAMESUFFIX=	-plugins-${SLAVE_PORT:tl}
+
+COMMENT=	Frei0r ${SLAVE_PORT} plugins
+
+MASTERDIR=	${.CURDIR}/../frei0r
+PLIST=		${.CURDIR}/pkg-plist
+
+SLAVE_PORT=	cairo
+
+.include "${MASTERDIR}/Makefile"
diff --git a/graphics/frei0r-plugins-cairo/pkg-plist b/graphics/frei0r-plugins-cairo/pkg-plist
new file mode 100644
index 000000000000..01c4f99c20e5
--- /dev/null
+++ b/graphics/frei0r-plugins-cairo/pkg-plist
@@ -0,0 +1,4 @@
+lib/frei0r-1/cairoaffineblend.so
+lib/frei0r-1/cairoblend.so
+lib/frei0r-1/cairogradient.so
+lib/frei0r-1/cairoimagegrid.so
diff --git a/graphics/frei0r-plugins-gavl/Makefile b/graphics/frei0r-plugins-gavl/Makefile
index b009ba744839..84128a9dc03a 100644
--- a/graphics/frei0r-plugins-gavl/Makefile
+++ b/graphics/frei0r-plugins-gavl/Makefile
@@ -1,5 +1,11 @@
+PORTREVISION=	0
+PKGNAMESUFFIX=	-plugins-${SLAVE_PORT:tl}
+
+COMMENT=	Frei0r ${SLAVE_PORT} plugins
+
 MASTERDIR=	${.CURDIR}/../frei0r
+PLIST=		${.CURDIR}/pkg-plist
 
-BUILDING_FREI0R_GAVL=	yes
+SLAVE_PORT=	gavl
 
 .include "${MASTERDIR}/Makefile"
diff --git a/graphics/frei0r-plugins-gavl/pkg-plist b/graphics/frei0r-plugins-gavl/pkg-plist
new file mode 100644
index 000000000000..f2f1824adc27
--- /dev/null
+++ b/graphics/frei0r-plugins-gavl/pkg-plist
@@ -0,0 +1,3 @@
+lib/frei0r-1/rgbparade.so
+lib/frei0r-1/scale0tilt.so
+lib/frei0r-1/vectorscope.so
diff --git a/graphics/frei0r-plugins-opencv/Makefile b/graphics/frei0r-plugins-opencv/Makefile
index 294f6d059a5b..2de52ca243eb 100644
--- a/graphics/frei0r-plugins-opencv/Makefile
+++ b/graphics/frei0r-plugins-opencv/Makefile
@@ -1,5 +1,11 @@
+PORTREVISION=	0
+PKGNAMESUFFIX=	-plugins-${SLAVE_PORT:tl}
+
+COMMENT=	Frei0r ${SLAVE_PORT} plugins
+
 MASTERDIR=	${.CURDIR}/../frei0r
+PLIST=		${.CURDIR}/pkg-plist
 
-BUILDING_FREI0R_OPENCV=	yes
+SLAVE_PORT=	OpenCV
 
 .include "${MASTERDIR}/Makefile"
diff --git a/graphics/frei0r-plugins-opencv/pkg-plist b/graphics/frei0r-plugins-opencv/pkg-plist
new file mode 100644
index 000000000000..fb51e8282601
--- /dev/null
+++ b/graphics/frei0r-plugins-opencv/pkg-plist
@@ -0,0 +1,2 @@
+lib/frei0r-1/facebl0r.so
+lib/frei0r-1/facedetect.so
diff --git a/graphics/frei0r-plugins/Makefile b/graphics/frei0r-plugins/Makefile
index 405bae34924d..c145afd91b07 100644
--- a/graphics/frei0r-plugins/Makefile
+++ b/graphics/frei0r-plugins/Makefile
@@ -1,23 +1,27 @@
+PORTNAME=	frei0r
+PORTVERSION=	${FREI0R_VERSION}
+CATEGORIES=	graphics
 PKGNAMESUFFIX=	-plugins
 
-COMMENT=	Frei0r meta-port
+MAINTAINER=	jhale@FreeBSD.org
+COMMENT=	The "meta-port" for frei0r and additional plugins
+WWW=		https://frei0r.dyne.org/
 
-RUN_DEPENDS=	${LOCALBASE}/include/frei0r.h:graphics/frei0r
+RUN_DEPENDS=	frei0r>=${FREI0R_VERSION}:graphics/frei0r
 
-USES=	metaport
+USES=		metaport
 
-MASTERDIR=	${.CURDIR}/../frei0r
-PLIST=		${WRKDIR}/PLIST
+DESCR=		${.CURDIR}/../frei0r/pkg-descr
 
-BUILDING_FREI0R_METAPORT=	yes
+OPTIONS_DEFINE=		CAIRO GAVL OPENCV
+OPTIONS_DEFAULT=	CAIRO GAVL OPENCV
 
-OPTIONS_DEFINE=	GAVL OPENCV
-OPTIONS_DEFAULT=	GAVL OPENCV
-GAVL_DESC=	Install gavl plugins
-GAVL_RUN_DEPENDS=	${LOCALBASE}/lib/frei0r-1/rgbparade.so:graphics/frei0r-plugins-gavl
-OPENCV_DESC=	Install OpenCV plugins
-OPENCV_RUN_DEPENDS=	${LOCALBASE}/lib/frei0r-1/facedetect.so:graphics/frei0r-plugins-opencv
-
-.include "${MASTERDIR}/Makefile"
+CAIRO_DESC=		Install cairo plugins
+CAIRO_RUN_DEPENDS=	frei0r-plugins-cairo>=${FREI0R_VERSION}:graphics/frei0r-plugins-cairo
+GAVL_DESC=		Install gavl plugins
+GAVL_RUN_DEPENDS=	frei0r-plugins-gavl>=${FREI0R_VERSION}:graphics/frei0r-plugins-gavl
+OPENCV_DESC=		Install OpenCV plugins
+OPENCV_RUN_DEPENDS=	frei0r-plugins-opencv>=${FREI0R_VERSION}:graphics/frei0r-plugins-opencv
 
+.include "${.CURDIR}/../frei0r/version.mk"
 .include <bsd.port.mk>
diff --git a/graphics/frei0r/Makefile b/graphics/frei0r/Makefile
index 5fb844e6ed12..2a5cace02dc4 100644
--- a/graphics/frei0r/Makefile
+++ b/graphics/frei0r/Makefile
@@ -1,68 +1,50 @@
 PORTNAME=	frei0r
-PORTVERSION=	1.8.0
-DISTVERSIONPREFIX=	plugins-
-PORTREVISION?=	1
+DISTVERSIONPREFIX=	v
+DISTVERSION=	${FREI0R_VERSION}
+PORTREVISION?=	0
 CATEGORIES=	graphics
-MASTER_SITES?=	https://files.dyne.org/frei0r/releases/
 
 MAINTAINER=	jhale@FreeBSD.org
 COMMENT?=	Minimalistic plugin API for video effects
 WWW=		https://frei0r.dyne.org/
 
-.if !defined(BUILDING_FREI0R_METAPORT)
-
 LICENSE=	GPLv2+
-LICENSE_FILE=	${WRKSRC}/COPYING.txt
+LICENSE_FILE=	${WRKSRC}/COPYING
 
 USES=		cmake compiler:c++11-lang pkgconfig
+USE_GITHUB=	yes
+GH_ACCOUNT=	dyne
 
-.if defined(BUILDING_FREI0R_OPENCV) && defined(BUILDING_FREI0R_GAVL)
-IGNORE=		cannot build OpenCV and gavl plugins simultaneously
-.endif
-
-.if defined(BUILDING_FREI0R_OPENCV) || defined(BUILDING_FREI0R_GAVL)
-EXTRA_PATCHES=	${PATCHDIR}/extra-patch-frei0r-plugins
-
-USES+=		localbase
-.endif
-
-.if defined(BUILDING_FREI0R_OPENCV)
-PORTREVISION=	0
-COMMENT=	Frei0r OpenCV plugins
-PKGNAMESUFFIX=	-plugins-opencv
-LIB_DEPENDS+=	libopencv_core.so:graphics/opencv \
-		libopencv_video.so:graphics/opencv
-FREI0R_PLUGINS=	facebl0r facedetect
-
-CMAKE_ARGS+=	-DWITHOUT_OPENCV:BOOL=OFF \
-		-DWITHOUT_GAVL:BOOL=ON
-.elif defined(BUILDING_FREI0R_GAVL)
-PORTREVISION=	0
-COMMENT=	Frei0r gavl plugins
-PKGNAMESUFFIX=	-plugins-gavl
-LIB_DEPENDS+=	libgavl.so:multimedia/gavl
-FREI0R_PLUGINS=	rgbparade scale0tilt vectorscope
-
-CMAKE_ARGS+=	-DWITHOUT_OPENCV:BOOL=ON \
-		-DWITHOUT_GAVL:BOOL=OFF
-.else
-EXTRA_PATCHES=	${PATCHDIR}/extra-patch-CMakeLists.txt
-
+.if defined(SLAVE_PORT)
+RUN_DEPENDS=	frei0r>=${FREI0R_VERSION}:graphics/frei0r
+.  if ${SLAVE_PORT:tl} == "cairo"
 USES+=		gnome
-USE_GNOME=	cairo
+USE_GNOME+=	cairo
 
-CMAKE_ARGS+=	-DWITHOUT_OPENCV:BOOL=ON \
-		-DWITHOUT_GAVL:BOOL=ON
+CMAKE_ON=	WITHOUT_GAVL \
+		WITHOUT_OPENCV
+CMAKE_OFF=	WITHOUT_CAIRO
+.  elif ${SLAVE_PORT:tl} == "gavl"
+LIB_DEPENDS+=	libgavl.so:multimedia/gavl
 
-.endif # !defined(BUILDING_FREI0R_OPENCV) && !defined(BUILDING_FREI0R_GAVL)
+CMAKE_ON=	WITHOUT_CAIRO \
+		WITHOUT_OPENCV
+CMAKE_OFF=	WITHOUT_GAVL
+.  elif ${SLAVE_PORT:tl} == "opencv"
+LIB_DEPENDS+=	libopencv_core.so:graphics/opencv
 
-.if defined(FREI0R_PLUGINS)
-PLIST=		${WRKSRC}/PLIST
-. for FILE in ${FREI0R_PLUGINS}
-PLIST_FILES+=	lib/frei0r-1/${FILE}.so
-. endfor
+CMAKE_ON=	WITHOUT_CAIRO \
+		WITHOUT_GAVL
+CMAKE_OFF=	WITHOUT_OPENCV
+.  endif
+.else
+CMAKE_ON=	WITHOUT_CAIRO \
+		WITHOUT_GAVL \
+		WITHOUT_OPENCV
+CMAKE_OFF=	BUILD_EXTRA_PLUGINS
 .endif
 
+.include "version.mk"
 .include <bsd.port.pre.mk>
 
 .if ${CHOSEN_COMPILER_TYPE} == gcc
@@ -73,5 +55,3 @@ CXXFLAGS+=	-Wno-error
 .endif
 
 .include <bsd.port.post.mk>
-
-.endif # !defined(BUILDING_FREI0R_METAPORT)
diff --git a/graphics/frei0r/distinfo b/graphics/frei0r/distinfo
index 789329ccf23b..d9e0340ee5d5 100644
--- a/graphics/frei0r/distinfo
+++ b/graphics/frei0r/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1648552795
-SHA256 (frei0r-plugins-1.8.0.tar.gz) = 45a28655caf057227b442b800ca3899e93490515c81e212d219fdf4a7613f5c4
-SIZE (frei0r-plugins-1.8.0.tar.gz) = 823119
+TIMESTAMP = 1685672354
+SHA256 (dyne-frei0r-v2.3.0_GH0.tar.gz) = 00aa65a887445c806b2a467abc3ccc4b0855f7eaf38ed2011a1ff41e74844fa0
+SIZE (dyne-frei0r-v2.3.0_GH0.tar.gz) = 820018
diff --git a/graphics/frei0r/files/extra-patch-CMakeLists.txt b/graphics/frei0r/files/extra-patch-CMakeLists.txt
deleted file mode 100644
index a4a5ffa466eb..000000000000
--- a/graphics/frei0r/files/extra-patch-CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
---- CMakeLists.txt.orig	2019-12-06 16:20:37 UTC
-+++ CMakeLists.txt
-@@ -41,7 +41,7 @@ INCLUDE( cmake/modules/TargetDistclean.cmake OPTIONAL)
- # See this thread for a ridiculous discussion about the simple question how to install a header file with CMake: http://www.cmake.org/pipermail/cmake/2009-October/032874.html
- install (DIRECTORY include DESTINATION . FILES_MATCHING PATTERN "frei0r.h" PATTERN "msvc" EXCLUDE)
- 
--add_subdirectory (doc)
-+#add_subdirectory (doc)
- add_subdirectory (src)
- 
- # Generate frei0r.pc and install it.
-@@ -50,4 +50,4 @@ set (exec_prefix "${CMAKE_INSTALL_PREFIX}")
- set (libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
- set (includedir "${CMAKE_INSTALL_PREFIX}/include")
- configure_file ("frei0r.pc.in" "frei0r.pc" @ONLY)
--install (FILES "${CMAKE_CURRENT_BINARY_DIR}/frei0r.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-+install (FILES "${CMAKE_CURRENT_BINARY_DIR}/frei0r.pc" DESTINATION libdata/pkgconfig)
diff --git a/graphics/frei0r/files/extra-patch-frei0r-plugins b/graphics/frei0r/files/extra-patch-frei0r-plugins
deleted file mode 100644
index 1d739356d309..000000000000
--- a/graphics/frei0r/files/extra-patch-frei0r-plugins
+++ /dev/null
@@ -1,125 +0,0 @@
---- CMakeLists.txt.orig	2020-12-09 06:02:41 UTC
-+++ CMakeLists.txt
-@@ -11,8 +11,6 @@ if (NOT WITHOUT_OPENCV)
-   find_package (OpenCV)
- endif ()
- 
--find_package (Cairo)
--
- include(FindPkgConfig)
- option (WITHOUT_GAVL "Disable plugins dependent upon gavl" OFF)
- if (PKG_CONFIG_FOUND AND NOT WITHOUT_GAVL)
-@@ -38,16 +36,8 @@ set (FREI0R_1_1_DEF "${CMAKE_SOURCE_DIR}/msvc/frei0r_1
- # --- custom targets: ---
- INCLUDE( cmake/modules/TargetDistclean.cmake OPTIONAL)
- 
--# See this thread for a ridiculous discussion about the simple question how to install a header file with CMake: http://www.cmake.org/pipermail/cmake/2009-October/032874.html
--install (DIRECTORY include DESTINATION . FILES_MATCHING PATTERN "frei0r.h" PATTERN "msvc" EXCLUDE)
-+add_subdirectory (src/filter)
- 
--add_subdirectory (doc)
--add_subdirectory (src)
--
--# Generate frei0r.pc and install it.
- set (prefix "${CMAKE_INSTALL_PREFIX}")
- set (exec_prefix "${CMAKE_INSTALL_PREFIX}")
- set (libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
--set (includedir "${CMAKE_INSTALL_PREFIX}/include")
--configure_file ("frei0r.pc.in" "frei0r.pc" @ONLY)
--install (FILES "${CMAKE_CURRENT_BINARY_DIR}/frei0r.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
---- src/filter/CMakeLists.txt.orig	2020-12-09 06:02:41 UTC
-+++ src/filter/CMakeLists.txt
-@@ -8,93 +8,3 @@ if (${OpenCV_FOUND})
-     add_subdirectory (facebl0r)
-     add_subdirectory (facedetect)
- endif (${OpenCV_FOUND})
--
--if (${Cairo_FOUND})
--  add_subdirectory (cairoimagegrid)
--  add_subdirectory (cairogradient)
--endif (${Cairo_FOUND})
--
--add_subdirectory (3dflippo)
--add_subdirectory (aech0r)
--add_subdirectory (alpha0ps)
--add_subdirectory (balanc0r)
--add_subdirectory (baltan)
--add_subdirectory (bluescreen0r)
--add_subdirectory (bgsubtract0r)
--add_subdirectory (blur)
--add_subdirectory (brightness)
--add_subdirectory (bw0r)
--add_subdirectory (cartoon)
--add_subdirectory (cluster)
--add_subdirectory (colgate)
--add_subdirectory (coloradj)
--add_subdirectory (colordistance)
--add_subdirectory (colorize)
--add_subdirectory (colorhalftone)
--add_subdirectory (colortap)
--add_subdirectory (contrast0r)
--add_subdirectory (c0rners)
--add_subdirectory (curves)
--add_subdirectory (d90stairsteppingfix)
--add_subdirectory (defish0r)
--add_subdirectory (delay0r)
--add_subdirectory (delaygrab)
--add_subdirectory (denoise)
--add_subdirectory (distort0r)
--add_subdirectory (dither)
--add_subdirectory (edgeglow)
--add_subdirectory (elastic_scale)
--add_subdirectory (emboss)
--add_subdirectory (equaliz0r)
--add_subdirectory (flippo)
--add_subdirectory (gamma)
--add_subdirectory (glow)
--add_subdirectory (glitch0r)
--#add_subdirectory (host_param_test)
--add_subdirectory (hueshift0r)
--add_subdirectory (invert0r)
--add_subdirectory (keyspillm0pup)
--add_subdirectory (lenscorrection)
--add_subdirectory (letterb0xed)
--add_subdirectory (levels)
--add_subdirectory (lightgraffiti)
--add_subdirectory (luminance)
--add_subdirectory (mask0mate)
--add_subdirectory (medians)
--if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
--  # clang 3.1 on OSX fails to compile this one
--  add_subdirectory (measure)
--endif ()
--add_subdirectory (ndvi)
--add_subdirectory (nervous)
--add_subdirectory (normaliz0r)
--add_subdirectory (nosync0r)
--add_subdirectory (perspective)
--add_subdirectory (pixeliz0r)
--add_subdirectory (posterize)
--add_subdirectory (premultiply)
--add_subdirectory (primaries)
--add_subdirectory (RGB)
--add_subdirectory (rgbnoise)
--add_subdirectory (rgbsplit0r)
--add_subdirectory (saturat0r)
--add_subdirectory (scanline0r)
--add_subdirectory (select0r)
--add_subdirectory (sharpness)
--add_subdirectory (sigmoidaltransfer)
--add_subdirectory (sobel)
--add_subdirectory (softglow)
--add_subdirectory (sopsat)
--add_subdirectory (spillsupress)
--add_subdirectory (squareblur)
--add_subdirectory (tehroxx0r)
--add_subdirectory (three_point_balance)
--add_subdirectory (threelay0r)
--add_subdirectory (threshold0r)
--add_subdirectory (timeout)
--add_subdirectory (tint0r)
--add_subdirectory (transparency)
--add_subdirectory (tutorial)
--add_subdirectory (twolay0r)
--add_subdirectory (vertigo)
--add_subdirectory (vignette)
diff --git a/graphics/frei0r/files/patch-CMakeLists.txt b/graphics/frei0r/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..40d194744292
--- /dev/null
+++ b/graphics/frei0r/files/patch-CMakeLists.txt
@@ -0,0 +1,59 @@
+- Fix VERSION.
+- Make plugins dependent upon cairo optional.
+- Add logic so slave ports can build without installing base files or plugins.
+
+--- CMakeLists.txt.orig	2023-05-17 21:20:20 UTC
++++ CMakeLists.txt
+@@ -3,16 +3,21 @@ project (frei0r)
+ list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+ 
+ project (frei0r)
+-set (VERSION 1.8)
++set (VERSION 2.3)
+ 
+ include(GNUInstallDirs)
+ 
++option (BUILD_EXTRA_PLUGINS "Build plugins with optional dependencies" ON)
++
+ option (WITHOUT_OPENCV "Disable plugins dependent upon OpenCV" OFF)
+ if (NOT WITHOUT_OPENCV)
+   find_package (OpenCV)
+ endif ()
+ 
+-find_package (Cairo)
++option (WITHOUT_CAIRO "Disable plugins dependent upon cairo" OFF)
++if (NOT WITHOUT_CAIRO)
++  find_package (Cairo)
++endif ()
+ 
+ include(FindPkgConfig)
+ option (WITHOUT_GAVL "Disable plugins dependent upon gavl" OFF)
+@@ -35,16 +40,22 @@ INCLUDE( cmake/modules/TargetDistclean.cmake OPTIONAL)
+ # --- custom targets: ---
+ INCLUDE( cmake/modules/TargetDistclean.cmake OPTIONAL)
+ 
+-# See this thread for a ridiculous discussion about the simple question how to install a header file with CMake: http://www.cmake.org/pipermail/cmake/2009-October/032874.html
+-install (DIRECTORY include DESTINATION . FILES_MATCHING PATTERN "frei0r.h" PATTERN "msvc" EXCLUDE)
++if (NOT BUILD_EXTRA_PLUGINS)
++  # See this thread for a ridiculous discussion about the simple question how to install a header file with CMake: http://www.cmake.org/pipermail/cmake/2009-October/032874.html
++  install (DIRECTORY include DESTINATION . FILES_MATCHING PATTERN "frei0r.h" PATTERN "msvc" EXCLUDE)
+ 
+-add_subdirectory (doc)
+-add_subdirectory (src)
++  add_subdirectory (src)
++else ()
++  add_subdirectory (src/filter)
++  add_subdirectory (src/mixer2)
++endif ()
+ 
+ # Generate frei0r.pc and install it.
+ set (prefix "${CMAKE_INSTALL_PREFIX}")
+ set (exec_prefix "${CMAKE_INSTALL_PREFIX}")
+ set (libdir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ set (includedir "${CMAKE_INSTALL_PREFIX}/include")
+-configure_file ("frei0r.pc.in" "frei0r.pc" @ONLY)
+-install (FILES "${CMAKE_CURRENT_BINARY_DIR}/frei0r.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
++if (NOT BUILD_EXTRA_PLUGINS)
++  configure_file ("frei0r.pc.in" "frei0r.pc" @ONLY)
++  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/frei0r.pc" DESTINATION "libdata/pkgconfig")
++endif ()
diff --git a/graphics/frei0r/files/patch-src_filter_CMakeLists.txt b/graphics/frei0r/files/patch-src_filter_CMakeLists.txt
new file mode 100644
index 000000000000..b3cbcd82e5d9
--- /dev/null
+++ b/graphics/frei0r/files/patch-src_filter_CMakeLists.txt
@@ -0,0 +1,17 @@
+- Add logic so slave ports can build without installing base plugins.
+
+--- src/filter/CMakeLists.txt.orig	2023-01-14 18:22:37 UTC
++++ src/filter/CMakeLists.txt
+@@ -14,6 +14,7 @@ endif (${Cairo_FOUND})
+   add_subdirectory (cairogradient)
+ endif (${Cairo_FOUND})
+ 
++if (NOT BUILD_EXTRA_PLUGINS)
+ add_subdirectory (3dflippo)
+ add_subdirectory (aech0r)
+ add_subdirectory (alpha0ps)
+@@ -96,3 +97,4 @@ add_subdirectory (vignette)
+ add_subdirectory (twolay0r)
+ add_subdirectory (vertigo)
+ add_subdirectory (vignette)
++endif ()
diff --git a/graphics/frei0r/files/patch-src_mixer2_CMakeLists.txt b/graphics/frei0r/files/patch-src_mixer2_CMakeLists.txt
new file mode 100644
index 000000000000..d4e8f4cb0a0a
--- /dev/null
+++ b/graphics/frei0r/files/patch-src_mixer2_CMakeLists.txt
@@ -0,0 +1,17 @@
+- Add logic so slave ports can build without installing base plugins.
+
+--- src/mixer2/CMakeLists.txt.orig	2023-01-14 18:47:26 UTC
++++ src/mixer2/CMakeLists.txt
+@@ -3,6 +3,7 @@ endif (${Cairo_FOUND})
+ add_subdirectory (cairoblend)
+ endif (${Cairo_FOUND})
+ 
++if (NOT BUILD_EXTRA_PLUGINS)
+ add_subdirectory (addition)
+ add_subdirectory (addition_alpha)
+ add_subdirectory (alphaatop)
+@@ -34,3 +35,4 @@ add_subdirectory (sleid0r)
+ add_subdirectory (value)
+ add_subdirectory (xfade0r)
+ add_subdirectory (sleid0r)
++endif ()
diff --git a/graphics/frei0r/pkg-plist b/graphics/frei0r/pkg-plist
index 6528c2259601..9a7ca8b08a94 100644
--- a/graphics/frei0r/pkg-plist
+++ b/graphics/frei0r/pkg-plist
@@ -26,10 +26,6 @@ lib/frei0r-1/brightness.so
 lib/frei0r-1/burn.so
 lib/frei0r-1/bw0r.so
 lib/frei0r-1/c0rners.so
-lib/frei0r-1/cairoaffineblend.so
-lib/frei0r-1/cairoblend.so
-lib/frei0r-1/cairogradient.so
-lib/frei0r-1/cairoimagegrid.so
 lib/frei0r-1/cartoon.so
 lib/frei0r-1/cluster.so
 lib/frei0r-1/colgate.so
@@ -89,6 +85,7 @@ lib/frei0r-1/overlay.so
 lib/frei0r-1/partik0l.so
 lib/frei0r-1/perspective.so
 lib/frei0r-1/pixeliz0r.so
+lib/frei0r-1/pixs0r.so
 lib/frei0r-1/plasma.so
 lib/frei0r-1/posterize.so
 lib/frei0r-1/pr0be.so
@@ -104,6 +101,22 @@ lib/frei0r-1/screen.so
 lib/frei0r-1/select0r.so
 lib/frei0r-1/sharpness.so
 lib/frei0r-1/sigmoidaltransfer.so
+lib/frei0r-1/sleid0r_push-down.so
+lib/frei0r-1/sleid0r_push-left.so
+lib/frei0r-1/sleid0r_push-right.so
+lib/frei0r-1/sleid0r_push-up.so
+lib/frei0r-1/sleid0r_slide-down.so
+lib/frei0r-1/sleid0r_slide-left.so
+lib/frei0r-1/sleid0r_slide-right.so
+lib/frei0r-1/sleid0r_slide-up.so
+lib/frei0r-1/sleid0r_wipe-barn-door-h.so
+lib/frei0r-1/sleid0r_wipe-barn-door-v.so
+lib/frei0r-1/sleid0r_wipe-circle.so
+lib/frei0r-1/sleid0r_wipe-down.so
+lib/frei0r-1/sleid0r_wipe-left.so
+lib/frei0r-1/sleid0r_wipe-rect.so
+lib/frei0r-1/sleid0r_wipe-right.so
+lib/frei0r-1/sleid0r_wipe-up.so
 lib/frei0r-1/sobel.so
 lib/frei0r-1/softglow.so
 lib/frei0r-1/softlight.so
diff --git a/graphics/frei0r/version.mk b/graphics/frei0r/version.mk
new file mode 100644
index 000000000000..876251b358be
--- /dev/null
+++ b/graphics/frei0r/version.mk
@@ -0,0 +1 @@
+FREI0R_VERSION=	2.3.0