git: d41fe7db0ace - main - x11/contour: add port: Modern C++ terminal emulator

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Thu, 05 Jun 2025 12:19:52 UTC
The branch main has been updated by tagattie:

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

commit d41fe7db0acefd28b075ba82f2f12fc6394ca062
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-06-05 12:17:58 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-06-05 12:19:37 +0000

    x11/contour: add port: Modern C++ terminal emulator
    
    Contour is modern, fast, and designed for everyday use. It's not just
    a terminal emulator, but a powerhouse of features tailored for those
    who seek efficiency and control. With GPU-accelerated rendering and
    high-DPI support, experience the smoothest and most responsive
    terminal emulator like never before.
    
    WWW: https://contour-terminal.org/
---
 x11/Makefile                                       |  1 +
 x11/contour/Makefile                               | 68 ++++++++++++++++++++++
 x11/contour/distinfo                               |  3 +
 .../files/extra-patch-src_crispy_read__selector.h  | 11 ++++
 x11/contour/pkg-descr                              |  5 ++
 x11/contour/pkg-plist                              | 14 +++++
 6 files changed, 102 insertions(+)

diff --git a/x11/Makefile b/x11/Makefile
index b47f8ef9a44b..2885e267cc0b 100644
--- a/x11/Makefile
+++ b/x11/Makefile
@@ -51,6 +51,7 @@
     SUBDIR += clipman
     SUBDIR += compton-conf
     SUBDIR += conlecterm
+    SUBDIR += contour
     SUBDIR += controllermap
     SUBDIR += cool-retro-term
     SUBDIR += coreterminal
diff --git a/x11/contour/Makefile b/x11/contour/Makefile
new file mode 100644
index 000000000000..b4be1bc56c65
--- /dev/null
+++ b/x11/contour/Makefile
@@ -0,0 +1,68 @@
+PORTNAME=	contour
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.6.1.7494
+CATEGORIES=	x11
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Modern C++ terminal emulator
+WWW=		https://contour-terminal.org/
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE.txt
+
+BUILD_DEPENDS=	${LOCALBASE}/lib/cmake/boxed-cpp/boxed-cpp-config.cmake:devel/boxed-cpp \
+		${LOCALBASE}/lib/cmake/Catch2/Catch2Config.cmake:devel/catch2 \
+		${LOCALBASE}/lib/cmake/reflection-cpp/reflection-cpp-config.cmake:devel/reflection-cpp \
+		${LOCALBASE}/share/cmake/Microsoft.GSL/Microsoft.GSLConfig.cmake:devel/microsoft-gsl \
+		${LOCALBASE}/lib/cmake/range-v3/range-v3-config.cmake:devel/range-v3
+LIB_DEPENDS=	libunicode.so:devel/libunicode-contour \
+		libyaml-cpp.so:devel/yaml-cpp \
+		libfreetype.so:print/freetype2 \
+		libharfbuzz.so:print/harfbuzz \
+		libssh2.so:security/libssh2 \
+		libfontconfig.so:x11-fonts/fontconfig
+
+USES=		cmake:testing desktop-file-utils gl pkgconfig qt:6 xorg
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	contour-terminal
+
+USE_XORG=	xcb
+USE_GL=		gl opengl
+USE_QT=		5compat base declarative multimedia tools:build
+
+CMAKE_ON=	CONTOUR_TESTING \
+		CONTOUR_INSTALL_TOOLS
+
+PORTDOCS=	README.md SECURITY.md TODO.md
+
+OPTIONS_DEFINE=	DOCS
+
+.include <bsd.port.options.mk>
+
+.if ${OPSYS} == FreeBSD && ${ARCH} == i386
+EXTRA_PATCHES=	${PATCHDIR}/extra-patch-src_crispy_read__selector.h
+.endif
+
+# FreeBSD 13 does not have tic in base, so we need one from ports
+.if ${OPSYS} == FreeBSD && ${OSREL:R} == 13
+BUILD_DEPENDS+=	tic:devel/ncurses
+.endif
+
+post-install:
+	@${RM} -r ${STAGEDIR}${DATADIR}
+	@${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d \
+		${STAGEDIR}${PREFIX}/share/fish/vendor_completions.d \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions
+	${INSTALL_DATA} ${WRKSRC}/src/contour/shell-integration/shell-integration.bash \
+		${STAGEDIR}${PREFIX}/etc/bash_completion.d/${PORTNAME}
+	${INSTALL_DATA} ${WRKSRC}/src/contour/shell-integration/shell-integration.fish \
+		${STAGEDIR}${PREFIX}/share/fish/vendor_completions.d/${PORTNAME}.fish
+	${INSTALL_DATA} ${WRKSRC}/src/contour/shell-integration/shell-integration.zsh \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions/_${PORTNAME}
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/x11/contour/distinfo b/x11/contour/distinfo
new file mode 100644
index 000000000000..839d444335a7
--- /dev/null
+++ b/x11/contour/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1748848147
+SHA256 (contour-terminal-contour-v0.6.1.7494_GH0.tar.gz) = 15090a08cf05124bf05074130cc6460d1d34c6d80f1058c63202effa032b8f6f
+SIZE (contour-terminal-contour-v0.6.1.7494_GH0.tar.gz) = 10329146
diff --git a/x11/contour/files/extra-patch-src_crispy_read__selector.h b/x11/contour/files/extra-patch-src_crispy_read__selector.h
new file mode 100644
index 000000000000..0246b1b3aae2
--- /dev/null
+++ b/x11/contour/files/extra-patch-src_crispy_read__selector.h
@@ -0,0 +1,11 @@
+--- src/crispy/read_selector.h.orig	2025-06-02 12:31:49 UTC
++++ src/crispy/read_selector.h
+@@ -108,7 +108,7 @@ class posix_read_selector
+         if (timeout.has_value())
+         {
+             tv = std::make_unique<timeval>(
+-                timeval { .tv_sec = timeout->count() / 1000,
++                timeval { .tv_sec = static_cast<int>(timeout->count() / 1000),
+                           .tv_usec = static_cast<int>((timeout->count() % 1000) * 1000) });
+         }
+ 
diff --git a/x11/contour/pkg-descr b/x11/contour/pkg-descr
new file mode 100644
index 000000000000..9da3cf788e9c
--- /dev/null
+++ b/x11/contour/pkg-descr
@@ -0,0 +1,5 @@
+Contour is modern, fast, and designed for everyday use. It's not just
+a terminal emulator, but a powerhouse of features tailored for those
+who seek efficiency and control. With GPU-accelerated rendering and
+high-DPI support, experience the smoothest and most responsive
+terminal emulator like never before.
diff --git a/x11/contour/pkg-plist b/x11/contour/pkg-plist
new file mode 100644
index 000000000000..967fd3b4b228
--- /dev/null
+++ b/x11/contour/pkg-plist
@@ -0,0 +1,14 @@
+bin/contour
+etc/bash_completion.d/contour
+share/applications/org.contourterminal.Contour.desktop
+share/fish/vendor_completions.d/contour.fish
+share/icons/hicolor/128x128/apps/org.contourterminal.Contour.png
+share/icons/hicolor/256x256/apps/org.contourterminal.Contour.png
+share/icons/hicolor/32x32/apps/org.contourterminal.Contour.png
+share/icons/hicolor/512x512/apps/org.contourterminal.Contour.png
+share/icons/hicolor/64x64/apps/org.contourterminal.Contour.png
+share/kservices5/ServiceMenus/org.contourterminal.Contour.OpenHere.desktop
+share/kservices5/ServiceMenus/org.contourterminal.Contour.RunIn.desktop
+share/metainfo/org.contourterminal.Contour.metainfo.xml
+share/terminfo/c/contour
+share/zsh/site-functions/_contour