summaryrefslogtreecommitdiff
path: root/x11-servers
diff options
context:
space:
mode:
Diffstat (limited to 'x11-servers')
-rw-r--r--x11-servers/Makefile4
-rw-r--r--x11-servers/xlibre-ephyr/Makefile25
-rw-r--r--x11-servers/xlibre-ephyr/pkg-descr3
-rw-r--r--x11-servers/xlibre-nest/Makefile19
-rw-r--r--x11-servers/xlibre-nest/pkg-descr1
-rw-r--r--x11-servers/xlibre-server/Makefile54
-rw-r--r--x11-servers/xlibre-server/Makefile.common90
-rw-r--r--x11-servers/xlibre-server/Makefile.version4
-rw-r--r--x11-servers/xlibre-server/distinfo3
-rw-r--r--x11-servers/xlibre-server/files/20-evdev-kbd.conf6
-rw-r--r--x11-servers/xlibre-server/files/patch-config_udev.c56
-rw-r--r--x11-servers/xlibre-server/files/patch-hw_xfree86_compat_ones.c15
-rw-r--r--x11-servers/xlibre-server/files/patch-hw_xfree86_meson.build11
-rw-r--r--x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_arm_video.c11
-rw-r--r--x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c55
-rw-r--r--x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_meson.build10
-rw-r--r--x11-servers/xlibre-server/files/patch-hw_xfree86_xorg-wrapper.c23
-rw-r--r--x11-servers/xlibre-server/files/patch-meson.build11
-rw-r--r--x11-servers/xlibre-server/files/patch-os-utils.c18
-rw-r--r--x11-servers/xlibre-server/files/pkg-message.in35
-rw-r--r--x11-servers/xlibre-server/pkg-descr3
-rw-r--r--x11-servers/xlibre-server/pkg-plist174
-rw-r--r--x11-servers/xlibre-vfb/Makefile15
-rw-r--r--x11-servers/xlibre-vfb/pkg-descr1
24 files changed, 647 insertions, 0 deletions
diff --git a/x11-servers/Makefile b/x11-servers/Makefile
index 996f9657edd6..5062b1a90ec7 100644
--- a/x11-servers/Makefile
+++ b/x11-servers/Makefile
@@ -4,6 +4,10 @@
SUBDIR += x2vnc
SUBDIR += x2x
SUBDIR += xarcan
+ SUBDIR += xlibre-ephyr
+ SUBDIR += xlibre-nest
+ SUBDIR += xlibre-server
+ SUBDIR += xlibre-vfb
SUBDIR += xorg-server
SUBDIR += xwayland
diff --git a/x11-servers/xlibre-ephyr/Makefile b/x11-servers/xlibre-ephyr/Makefile
new file mode 100644
index 000000000000..949a278a6b74
--- /dev/null
+++ b/x11-servers/xlibre-ephyr/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= xlibre-ephyr
+PORTVERSION= ${XLIBRE_VER}
+CATEGORIES= x11-servers
+
+MAINTAINER= b-aazbsd@proton.me
+COMMENT= Xlibre Xephyr server
+WWW= https://github.com/X11Libre/xserver/
+
+LICENSE= MIT
+
+CONFLICTS_INSTALL= xephyr
+
+USES+= xlibre-cat:server
+USE_XORG+=xcb
+
+MESON_ARGS+= -Dglamor=true
+LIB_DEPENDS+= libepoxy.so:graphics/libepoxy
+
+LIB_DEPENDS+= libxcb-render-util.so:x11/xcb-util-renderutil \
+ libxcb-image.so:x11/xcb-util-image \
+ libxcb-icccm.so:x11/xcb-util-wm \
+ libxcb-keysyms.so:x11/xcb-util-keysyms \
+ libxcb-util.so:x11/xcb-util
+
+.include "../xlibre-server/Makefile.common"
diff --git a/x11-servers/xlibre-ephyr/pkg-descr b/x11-servers/xlibre-ephyr/pkg-descr
new file mode 100644
index 000000000000..29bfa7d93fb0
--- /dev/null
+++ b/x11-servers/xlibre-ephyr/pkg-descr
@@ -0,0 +1,3 @@
+Xephyr is a kdrive server that outputs to a window on a pre-existing
+'host' X display. Think Xnest but with support for modern extensions
+like composite, damage and randr.
diff --git a/x11-servers/xlibre-nest/Makefile b/x11-servers/xlibre-nest/Makefile
new file mode 100644
index 000000000000..0701580ed906
--- /dev/null
+++ b/x11-servers/xlibre-nest/Makefile
@@ -0,0 +1,19 @@
+PORTNAME= xlibre-nest
+PORTVERSION= ${XLIBRE_VER}
+CATEGORIES= x11-servers
+
+MAINTAINER= b-aazbsd@proton.me
+COMMENT= Xlibre Xnest server
+WWW= https://github.com/X11Libre/xserver/
+
+LICENSE= MIT
+
+CONFLICTS_INSTALL= xorg-nestserver
+
+USES= xlibre-cat:server
+USE_XORG+=xcb
+
+LIB_DEPENDS+= libxcb-util.so:x11/xcb-util \
+ libxcb-icccm.so:x11/xcb-util-wm
+
+.include "../xlibre-server/Makefile.common"
diff --git a/x11-servers/xlibre-nest/pkg-descr b/x11-servers/xlibre-nest/pkg-descr
new file mode 100644
index 000000000000..5b039cfeaf1a
--- /dev/null
+++ b/x11-servers/xlibre-nest/pkg-descr
@@ -0,0 +1 @@
+This package contains Xnest, a nesting X Server that displays on an X Server.
diff --git a/x11-servers/xlibre-server/Makefile b/x11-servers/xlibre-server/Makefile
new file mode 100644
index 000000000000..829d8dacc862
--- /dev/null
+++ b/x11-servers/xlibre-server/Makefile
@@ -0,0 +1,54 @@
+PORTNAME= xlibre-server
+PORTVERSION= ${XLIBRE_VER}
+CATEGORIES= x11-servers
+
+MAINTAINER= b-aazbsd@proton.me
+COMMENT= Xlibre X server
+WWW= https://github.com/X11Libre/xserver/
+
+LICENSE= MIT
+
+CONFLICTS= xorg-server
+
+USES+= xlibre-cat:server
+
+OPTIONS_SUB= YES
+OPTIONS_DEFINE= UDEV SUID
+OPTIONS_DEFAULT=UDEV SUID
+
+UDEV_DESC= Enable udev (For libinput & autoconfiguration/hotplug).
+UDEV_MESON_ON= -Dudev=true -Dudev_kms=true
+UDEV_MESON_OFF= -Dudev=false -Dudev_kms=false
+UDEV_LIB_DEPENDS= libudev.so:devel/libudev-devd
+
+SUID_DESC= Enable the setuid binary (For starting X as a normal user).
+SUID_MESON_ON= -Dsuid_wrapper=true
+SUID_MESON_OFF= -Dsuid_wrapper=false
+
+LIB_DEPENDS+= libxcvt.so:x11/libxcvt \
+ libdrm.so:graphics/libdrm \
+ libepoxy.so:graphics/libepoxy \
+ libepoll-shim.so:devel/libepoll-shim
+
+MESON_ARGS+= -Dlog_dir=/var/log \
+ -Ddrm=true
+
+PLIST_SUB+= FONTPATHD="${FONTPATHD:S,^${PREFIX}/,,}"
+
+USE_XORG+= pciaccess
+
+USE_GL+= gbm
+
+.include "../xlibre-server/Makefile.common"
+
+OLDMODULEDIR= /lib/xorg/modules
+post-install:
+ @${MKDIR} ${STAGEDIR}${PREFIX}/etc/X11/xorg.conf.d
+ @${MKDIR} ${STAGEDIR}${PREFIX}${OLDMODULEDIR}/extensions
+ @${MKDIR} ${STAGEDIR}${PREFIX}${OLDMODULEDIR}/drivers
+ @${MKDIR} ${STAGEDIR}${PREFIX}${OLDMODULEDIR}/input
+ @${MKDIR} ${STAGEDIR}${FONTPATHD}
+ @${MKDIR} ${STAGEDIR}${PREFIX}/share/X11/xorg.conf.d
+ @${INSTALL_DATA} ${FILESDIR}/20-evdev-kbd.conf \
+ ${STAGEDIR}${PREFIX}/share/X11/xorg.conf.d
+.include <bsd.port.post.mk>
diff --git a/x11-servers/xlibre-server/Makefile.common b/x11-servers/xlibre-server/Makefile.common
new file mode 100644
index 000000000000..60f301137b51
--- /dev/null
+++ b/x11-servers/xlibre-server/Makefile.common
@@ -0,0 +1,90 @@
+_XMASTERDIR_REL=../xlibre-server/
+XMASTERDIR= ${_XMASTERDIR_REL:tA}
+PATCHDIR?= ${XMASTERDIR}/files
+DISTINFO_FILE?= ${XMASTERDIR}/distinfo
+
+.include "${XMASTERDIR}/Makefile.version"
+
+
+USES+= gl compiler:c11 meson pkgconfig tar:xz xorg
+USE_GL+= gl
+USE_XORG+= pixman xau xdmcp xfont2 xkbfile xorgproto xshmfence xtrans
+
+OPTIONS_DEFINE+=LIBUNWIND
+OPTIONS_DEFAULT+=LIBUNWIND
+LIBUNWIND_DESC= Enable libunwind for better stack traces in case of an error.
+
+SERVERS= xorg xnest xephyr xvfb
+SERVERNAME= ${PORTNAME:S/^xlibre-/x/:S/xserver/xorg/}
+
+BUILD_DEPENDS+= ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri
+RUN_DEPENDS+= xkeyboard-config>=2.5:x11/xkeyboard-config \
+ xkbcomp:x11/xkbcomp \
+ ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri
+
+MESON_ARGS+= -Dxwin=false \
+ -Dxquartz=false \
+ -Ddtrace=false \
+ -Dhal=false \
+ -Dsystemd_logind=false \
+ -Dxselinux=false \
+ -Dfallback_input_driver=libinput \
+ -Ddocs=false \
+ -Dxcsecurity=true
+MESON_ARGS+= -D${SERVERNAME}=true
+
+.for f in ${SERVERS:N${SERVERNAME}}
+MESON_ARGS+= -D${f}=false
+.endfor
+
+FONTPATH_ROOT?= ${LOCALBASE}/share/fonts
+FONTPATHD?= ${PREFIX}/etc/X11/fontpath.d
+DEFAULT_FONTPATH_LIST= \
+ ${FONTPATH_ROOT}/misc/ \
+ ${FONTPATH_ROOT}/TTF/ \
+ ${FONTPATH_ROOT}/OTF/ \
+ ${FONTPATH_ROOT}/Type1/ \
+ ${FONTPATH_ROOT}/100dpi/ \
+ ${FONTPATH_ROOT}/75dpi/ \
+ catalogue:${FONTPATHD}
+MESON_ARGS+= -Ddefault_font_path=${DEFAULT_FONTPATH_LIST:ts,}
+
+
+# Non X server common flags
+.if ${SERVERNAME} != xorg
+MESON_ARGS+= -Dudev=false \
+ -Dudev_kms=false
+PLIST=
+PKGMESSAGE=
+BINARY_NAME= ${SERVERNAME:C/^(.).*/\1/:tu}${SERVERNAME:C/^.//}
+PLIST_FILES= bin/${BINARY_NAME} \
+ share/man/man1/${BINARY_NAME}.1.gz
+.endif
+
+.include <bsd.port.pre.mk>
+.if ${OPSYS}==FreeBSD
+AMD64=amd64
+.else
+AMD64=x86_64
+.endif
+
+.if ${PORT_OPTIONS:MLIBUNWIND}
+. if ${ARCH} == aarch64 || ${ARCH} == ${AMD64} || ${ARCH} == armv7 || ${ARCH} == i386 || ${ARCH} == powerpc || ${ARCH} == powerpc64 || ${ARCH} == powerpc64le
+LIB_DEPENDS+= libunwind.so:devel/libunwind
+MESON_ARGS+= -Dlibunwind=true
+. endif
+.else
+MESON_ARGS+= -Dlibunwind=false
+.endif
+
+.if ${OPSYS} == FreeBSD
+MESON_ARGS+= -Dsha1=libmd
+.endif
+
+.if ${SERVERNAME} != xorg
+post-install:
+ ${RM} -r ${STAGEDIR}${PREFIX}/lib/xorg/protocol.txt
+ ${RMDIR} ${STAGEDIR}${PREFIX}/lib/xorg
+ ${RM} ${STAGEDIR}${PREFIX}/share/man/man1/Xserver.1
+.include <bsd.port.post.mk>
+.endif
diff --git a/x11-servers/xlibre-server/Makefile.version b/x11-servers/xlibre-server/Makefile.version
new file mode 100644
index 000000000000..762f9dcca745
--- /dev/null
+++ b/x11-servers/xlibre-server/Makefile.version
@@ -0,0 +1,4 @@
+XLIBRE_MJR_VER=25.0
+XLIBRE_MIN_VER=0.16
+
+XLIBRE_VER=${XLIBRE_MJR_VER}.${XLIBRE_MIN_VER}
diff --git a/x11-servers/xlibre-server/distinfo b/x11-servers/xlibre-server/distinfo
new file mode 100644
index 000000000000..9e7aa077a41f
--- /dev/null
+++ b/x11-servers/xlibre-server/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1763716462
+SHA256 (xlibre/server/X11Libre-xserver-25.0.0.16-xlibre-xserver-25.0.0.16_GH0.tar.gz) = 0187e57331daefa75ddc33a4f878ef4c08526b83dc91dbc51a25375d2ff33b8c
+SIZE (xlibre/server/X11Libre-xserver-25.0.0.16-xlibre-xserver-25.0.0.16_GH0.tar.gz) = 5415775
diff --git a/x11-servers/xlibre-server/files/20-evdev-kbd.conf b/x11-servers/xlibre-server/files/20-evdev-kbd.conf
new file mode 100644
index 000000000000..7a73fb641c36
--- /dev/null
+++ b/x11-servers/xlibre-server/files/20-evdev-kbd.conf
@@ -0,0 +1,6 @@
+Section "InputClass"
+ Identifier "Evdev keyboard"
+ MatchDevicePath "/dev/input/event*"
+ MatchIsKeyboard "on"
+ Option "XkbRules" "evdev"
+EndSection
diff --git a/x11-servers/xlibre-server/files/patch-config_udev.c b/x11-servers/xlibre-server/files/patch-config_udev.c
new file mode 100644
index 000000000000..38b3e84db5ad
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-config_udev.c
@@ -0,0 +1,56 @@
+* Don't pass the device parameter when using kbdmux to prevent conflict
+*
+* Specify a driver to use for basic devices (keyboard and mouse), otherwise none attaches
+*
+--- config/udev.c.orig 2017-03-15 18:05:25 UTC
++++ config/udev.c
+@@ -29,6 +29,7 @@
+
+ #include <libudev.h>
+ #include <ctype.h>
++#include <fcntl.h>
+ #include <unistd.h>
+
+ #include "input.h"
+@@ -188,7 +189,21 @@ device_added(struct udev_device *udev_de
+ attrs.product = strdup(name);
+ input_options = input_option_new(input_options, "name", name);
+ input_options = input_option_new(input_options, "path", path);
+- input_options = input_option_new(input_options, "device", path);
++ if(strstr(path, "kbdmux") != NULL) {
++ /*
++ * Don't pass "device" option if the keyboard is already attached
++ * to the console (ie. open() fails). This would activate a special
++ * logic in xf86-input-keyboard. Prevent any other attached to console
++ * keyboards being processed. There can be only one such device.
++ */
++ int fd = open(path, O_RDONLY);
++ if (fd > -1) {
++ close(fd);
++ input_options = input_option_new(input_options, "device", path);
++ }
++ }
++ else
++ input_options = input_option_new(input_options, "device", path);
+ input_options = input_option_new(input_options, "major", itoa(major(devnum)));
+ input_options = input_option_new(input_options, "minor", itoa(minor(devnum)));
+ if (path)
+@@ -272,6 +287,18 @@ device_added(struct udev_device *udev_de
+ }
+ }
+
++ if (attrs.flags & (ATTR_KEY | ATTR_KEYBOARD)) {
++ if (!feature_present("evdev_support"))
++ input_options = input_option_new(input_options, "driver", "kbd");
++ } else if (attrs.flags & ATTR_POINTER) {
++ if (strstr(path, "vbox"))
++ input_options = input_option_new(input_options, "driver", "vboxmouse");
++ else {
++ if (!feature_present("evdev_support"))
++ input_options = input_option_new(input_options, "driver", "mouse");
++ }
++ }
++
+ input_options = input_option_new(input_options, "config_info", config_info);
+
+ /* Default setting needed for non-seat0 seats */
diff --git a/x11-servers/xlibre-server/files/patch-hw_xfree86_compat_ones.c b/x11-servers/xlibre-server/files/patch-hw_xfree86_compat_ones.c
new file mode 100644
index 000000000000..1a296ff48141
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-hw_xfree86_compat_ones.c
@@ -0,0 +1,15 @@
+--- hw/xfree86/compat/ones.c.orig
++++ hw/xfree86/compat/ones.c
+@@ -20,8 +20,12 @@ int
+ Ones(unsigned long mask)
+ { /* HACKMEM 169 */
+ /* can't add a message here because this should be fast */
++#if defined __has_builtin
+ #if __has_builtin(__builtin_popcountl)
+ return __builtin_popcountl (mask);
++#endif
++#elif defined __builtin_popcountl
++ return __builtin_popcountl (mask);
+ #else
+ unsigned long y;
+
diff --git a/x11-servers/xlibre-server/files/patch-hw_xfree86_meson.build b/x11-servers/xlibre-server/files/patch-hw_xfree86_meson.build
new file mode 100644
index 000000000000..5b5e9e9bc038
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-hw_xfree86_meson.build
@@ -0,0 +1,11 @@
+--- hw/xfree86/meson.build.orig 2022-06-29 14:37:28.042085000 +0000
++++ hw/xfree86/meson.build 2022-06-29 14:37:36.259147000 +0000
+@@ -152,7 +152,7 @@ if get_option('suid_wrapper')
+ c_args: xorg_c_args,
+ install: true,
+ install_dir: get_option('libexecdir'),
+- install_mode: ['r-sr-xr-x', 0, 0],
++ # install_mode: ['r-sr-xr-x', 0, 0],
+ )
+
+ # meson gets confused when there are two targets of the same name
diff --git a/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_arm_video.c b/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_arm_video.c
new file mode 100644
index 000000000000..6bb04dcb8a84
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_arm_video.c
@@ -0,0 +1,11 @@
+--- hw/xfree86/os-support/bsd/arm_video.c 2025-12-12 16:55:30.888512000 -0800
++++ hw/xfree86/os-support/bsd/arm_video.c 2025-12-12 16:55:40.571888000 -0800
+@@ -65,7 +65,7 @@
+ #include <X11/X.h>
+
+ #include "xf86.h"
+-#include "xf86_os_support."
++#include "xf86_os_support.h"
+ #include "xf86Priv.h"
+ #include "xf86_OSlib.h"
+ #include "compiler.h"
diff --git a/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c b/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c
new file mode 100644
index 000000000000..54bedf2a4c75
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_bsd_bsd__init.c
@@ -0,0 +1,55 @@
+--- hw/xfree86/os-support/bsd/bsd_init.c.orig 2023-10-25 01:40:28 UTC
++++ hw/xfree86/os-support/bsd/bsd_init.c
+@@ -48,6 +48,8 @@ static int initialVT = -1;
+ #if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
+ static int VTnum = -1;
+ static int initialVT = -1;
++static struct termios tty_attr; /* tty state to restore */
++static int tty_mode; /* kbd mode to restore */
+ #endif
+
+ #ifdef PCCONS_SUPPORT
+@@ -253,6 +255,7 @@ xf86OpenConsole()
+ #endif
+ acquire_vt:
+ if (!xf86Info.ShareVTs) {
++ struct termios nTty;
+ /*
+ * now get the VT
+ */
+@@ -287,6 +290,26 @@ xf86OpenConsole()
+ if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
+ FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed");
+ }
++
++ tcgetattr(xf86Info.consoleFd, &tty_attr);
++ ioctl(xf86Info.consoleFd, KDGKBMODE, &tty_mode);
++
++ /* disable special keys */
++ if (ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW) < 0) {
++ FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed (%s)",
++ strerror(errno));
++ }
++
++ nTty = tty_attr;
++ nTty.c_iflag = IGNPAR | IGNBRK;
++ nTty.c_oflag = 0;
++ nTty.c_cflag = CREAD | CS8;
++ nTty.c_lflag = 0;
++ nTty.c_cc[VTIME] = 0;
++ nTty.c_cc[VMIN] = 1;
++ cfsetispeed(&nTty, 9600);
++ cfsetospeed(&nTty, 9600);
++ tcsetattr(xf86Info.consoleFd, TCSANOW, &nTty);
+ }
+ else { /* xf86Info.ShareVTs */
+ close(xf86Info.consoleFd);
+@@ -594,6 +617,8 @@ xf86CloseConsole()
+ case SYSCONS:
+ case PCVT:
+ ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT); /* Back to text mode */
++ ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode);
++ tcsetattr(xf86Info.consoleFd, TCSANOW, &tty_attr);
+ if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1) {
+ VT.mode = VT_AUTO;
+ ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* dflt vt handling */
diff --git a/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_meson.build b/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_meson.build
new file mode 100644
index 000000000000..24b04eec83ec
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-hw_xfree86_os-support_meson.build
@@ -0,0 +1,10 @@
+--- hw/xfree86/os-support/meson.build.orig 2025-07-20 14:22:32 UTC
++++ hw/xfree86/os-support/meson.build
+@@ -98,6 +98,7 @@ elif host_machine.system().endswith('bsd')
+ 'bsd/bsd_bell.c',
+ 'bsd/bsd_init.c',
+ 'shared/drm_platform.c',
++ 'misc/SlowBcopy.c',
+ 'shared/pm_noop.c'
+ ]
+
diff --git a/x11-servers/xlibre-server/files/patch-hw_xfree86_xorg-wrapper.c b/x11-servers/xlibre-server/files/patch-hw_xfree86_xorg-wrapper.c
new file mode 100644
index 000000000000..9a4327eff91f
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-hw_xfree86_xorg-wrapper.c
@@ -0,0 +1,23 @@
+* Skip the detection of root rights requirement, the assumption that presence
+* of KMS drivers removes the root requirement is only valid for Linux
+*
+--- hw/xfree86/xorg-wrapper.c.orig 2022-01-02 23:41:56.000000000 +0100
++++ hw/xfree86/xorg-wrapper.c 2022-06-29 16:28:24.797008000 +0200
+@@ -191,7 +191,7 @@ int main(int argc, char *argv[])
+
+ int main(int argc, char *argv[])
+ {
+-#ifdef WITH_LIBDRM
++#if defined(WITH_LIBDRM) && defined(__linux__)
+ struct drm_mode_card_res res;
+ #endif
+ char buf[PATH_MAX];
+@@ -230,7 +230,7 @@ int main(int argc, char *argv[])
+ }
+ }
+
+-#ifdef WITH_LIBDRM
++#if defined(WITH_LIBDRM) && defined(__linux__)
+ /* Detect if we need root rights, except when overridden by the config */
+ if (needs_root_rights == -1) {
+ for (i = 0; i < 16; i++) {
diff --git a/x11-servers/xlibre-server/files/patch-meson.build b/x11-servers/xlibre-server/files/patch-meson.build
new file mode 100644
index 000000000000..f933599bfac2
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-meson.build
@@ -0,0 +1,11 @@
+--- meson.build.orig 2025-09-16 15:49:48 UTC
++++ meson.build
+@@ -456,7 +456,7 @@ else
+ build_dri2 = get_option('dri2') == 'true'
+ endif
+
+-if host_machine.system() in ['freebsd', 'openbsd']
++if host_machine.system() in ['dragonfly', 'freebsd', 'openbsd']
+ epoll_dep = dependency('epoll-shim')
+ else
+ epoll_dep = []
diff --git a/x11-servers/xlibre-server/files/patch-os-utils.c b/x11-servers/xlibre-server/files/patch-os-utils.c
new file mode 100644
index 000000000000..8f9c4f1f137d
--- /dev/null
+++ b/x11-servers/xlibre-server/files/patch-os-utils.c
@@ -0,0 +1,18 @@
+--- os/utils.c.orig 2014-04-15 01:01:57 UTC
++++ os/utils.c
+@@ -443,11 +443,11 @@ GetTimeInMillis(void)
+ static clockid_t clockid;
+
+ if (!clockid) {
+-#ifdef CLOCK_MONOTONIC_COARSE
+- if (clock_getres(CLOCK_MONOTONIC_COARSE, &tp) == 0 &&
++#ifdef CLOCK_MONOTONIC_FAST
++ if (clock_getres(CLOCK_MONOTONIC_FAST, &tp) == 0 &&
+ (tp.tv_nsec / 1000) <= 1000 &&
+- clock_gettime(CLOCK_MONOTONIC_COARSE, &tp) == 0)
+- clockid = CLOCK_MONOTONIC_COARSE;
++ clock_gettime(CLOCK_MONOTONIC_FAST, &tp) == 0)
++ clockid = CLOCK_MONOTONIC_FAST;
+ else
+ #endif
+ if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
diff --git a/x11-servers/xlibre-server/files/pkg-message.in b/x11-servers/xlibre-server/files/pkg-message.in
new file mode 100644
index 000000000000..07198f4e1924
--- /dev/null
+++ b/x11-servers/xlibre-server/files/pkg-message.in
@@ -0,0 +1,35 @@
+[
+{ type: install
+ message: <<EOM
+XLibre-server has been installed.
+
+If your kernel is compiled with the EVDEV_SUPPORT option enabled
+(default starting from FreeBSD 12.1) it is recommended to enable evdev mode in
+pointer device drivers like ums(4) and psm(4). This will give improvements like
+better tilt wheel support for mice and centralized gesture support via
+xf86-input-synaptics or libinput drivers for touchpads.
+
+This is also needed for PS/2 devices to be properly detected by XLibre when
+moused service is disabled in /etc/rc.conf and kernel is compiled with
+EVDEV_SUPPORT.
+
+To enable evdev in such a device, run the following:
+
+# sysctl kern.evdev.rcpt_mask=6
+
+To make it persistent across reboots, add the following to /etc/sysctl.conf:
+
+kern.evdev.rcpt_mask=6
+
+In case you're using a serial mouse or any other mouse that *only* works over
+sysmouse(4) and moused(8) on an evdev enabled kernel, please run this:
+
+# sysctl kern.evdev.rcpt_mask=3
+
+To make it persistent across reboots, add to this /etc/sysctl.conf:
+
+kern.evdev.rcpt_mask=3
+
+EOM
+}
+]
diff --git a/x11-servers/xlibre-server/pkg-descr b/x11-servers/xlibre-server/pkg-descr
new file mode 100644
index 000000000000..6165e40db316
--- /dev/null
+++ b/x11-servers/xlibre-server/pkg-descr
@@ -0,0 +1,3 @@
+This package contains the XLibre X server and some associated programs.
+
+See also: https://github.com/X11Libre/xserver
diff --git a/x11-servers/xlibre-server/pkg-plist b/x11-servers/xlibre-server/pkg-plist
new file mode 100644
index 000000000000..1dec48a8741b
--- /dev/null
+++ b/x11-servers/xlibre-server/pkg-plist
@@ -0,0 +1,174 @@
+bin/X
+bin/Xorg
+bin/gtf
+include/xorg/Xprintf.h
+include/xorg/callback.h
+include/xorg/client.h
+include/xorg/closure.h
+include/xorg/colormap.h
+include/xorg/colormapst.h
+include/xorg/compiler.h
+include/xorg/compositeext.h
+include/xorg/cursor.h
+include/xorg/cursorstr.h
+include/xorg/damage.h
+include/xorg/damagestr.h
+include/xorg/dgaproc.h
+include/xorg/displaymode.h
+include/xorg/dix.h
+include/xorg/dixaccess.h
+include/xorg/dixfont.h
+include/xorg/dixfontstr.h
+include/xorg/dixstruct.h
+include/xorg/dri.h
+include/xorg/dri2.h
+include/xorg/dri3.h
+include/xorg/dristruct.h
+include/xorg/edid.h
+include/xorg/events.h
+include/xorg/exa.h
+include/xorg/exevents.h
+include/xorg/extension.h
+include/xorg/extinit.h
+include/xorg/extnsionst.h
+include/xorg/fb.h
+include/xorg/fbdevhw.h
+include/xorg/fboverlay.h
+include/xorg/fbpict.h
+include/xorg/fbrop.h
+include/xorg/fd_notify.h
+include/xorg/fourcc.h
+include/xorg/gc.h
+include/xorg/gcstruct.h
+include/xorg/glamor.h
+include/xorg/globals.h
+include/xorg/glxvndabi.h
+include/xorg/glyphstr.h
+include/xorg/hotplug.h
+include/xorg/i2c_def.h
+include/xorg/input.h
+include/xorg/inputstr.h
+include/xorg/list.h
+include/xorg/mi.h
+include/xorg/micmap.h
+include/xorg/micoord.h
+include/xorg/migc.h
+include/xorg/miline.h
+include/xorg/mioverlay.h
+include/xorg/mipict.h
+include/xorg/mipointer.h
+include/xorg/mipointrst.h
+include/xorg/misc.h
+include/xorg/miscstruct.h
+include/xorg/mistruct.h
+include/xorg/misync.h
+include/xorg/misyncfd.h
+include/xorg/misyncshm.h
+include/xorg/misyncstr.h
+include/xorg/mizerarc.h
+include/xorg/nonsdk_extinit.h
+include/xorg/opaque.h
+include/xorg/optionstr.h
+include/xorg/os.h
+include/xorg/picture.h
+include/xorg/picturestr.h
+include/xorg/pixmap.h
+include/xorg/pixmapstr.h
+include/xorg/present.h
+include/xorg/privates.h
+include/xorg/property.h
+include/xorg/ptrveloc.h
+include/xorg/randrstr.h
+include/xorg/region.h
+include/xorg/regionstr.h
+include/xorg/resource.h
+include/xorg/rgb.h
+include/xorg/rrtransform.h
+include/xorg/sarea.h
+include/xorg/screenint.h
+include/xorg/scrnintstr.h
+include/xorg/servermd.h
+include/xorg/shadow.h
+include/xorg/shadowfb.h
+include/xorg/shmint.h
+include/xorg/syncsdk.h
+include/xorg/validate.h
+include/xorg/vbe.h
+include/xorg/vbeModes.h
+include/xorg/vgaHW.h
+include/xorg/vndserver.h
+include/xorg/wfbrename.h
+include/xorg/window.h
+include/xorg/windowstr.h
+include/xorg/xaarop.h
+include/xorg/xf86-input-inputtest-protocol.h
+include/xorg/xf86.h
+include/xorg/xf86Crtc.h
+include/xorg/xf86Cursor.h
+include/xorg/xf86DDC.h
+include/xorg/xf86Modes.h
+include/xorg/xf86Module.h
+include/xorg/xf86Opt.h
+include/xorg/xf86Optionstr.h
+include/xorg/xf86Optrec.h
+include/xorg/xf86Parser.h
+include/xorg/xf86Pci.h
+include/xorg/xf86PciInfo.h
+include/xorg/xf86Priv.h
+include/xorg/xf86Privstr.h
+include/xorg/xf86RandR12.h
+include/xorg/xf86Xinput.h
+include/xorg/xf86_OSlib.h
+include/xorg/xf86_OSproc.h
+include/xorg/xf86cmap.h
+include/xorg/xf86fbman.h
+include/xorg/xf86i2c.h
+include/xorg/xf86int10.h
+include/xorg/xf86platformBus.h
+include/xorg/xf86sbusBus.h
+include/xorg/xf86str.h
+include/xorg/xf86xv.h
+include/xorg/xf86xvmc.h
+include/xorg/xisb.h
+include/xorg/xkbrules.h
+include/xorg/xkbsrv.h
+include/xorg/xkbstr.h
+include/xorg/xorg-server.h
+include/xorg/xorgVersion.h
+include/xorg/xserver-properties.h
+include/xorg/xvdix.h
+include/xorg/xvmcext.h
+lib/xorg/modules/xlibre-25.0/drivers/modesetting_drv.so
+lib/xorg/modules/xlibre-25.0/extensions/libglx.so
+lib/xorg/modules/xlibre-25.0/input/inputtest_drv.so
+lib/xorg/modules/xlibre-25.0/libexa.so
+lib/xorg/modules/xlibre-25.0/libfbdevhw.so
+lib/xorg/modules/xlibre-25.0/libglamoregl.so
+lib/xorg/modules/xlibre-25.0/libint10.so
+lib/xorg/modules/xlibre-25.0/libshadow.so
+lib/xorg/modules/xlibre-25.0/libshadowfb.so
+lib/xorg/modules/xlibre-25.0/libvgahw.so
+lib/xorg/modules/xlibre-25.0/libwfb.so
+lib/xorg/protocol.txt
+libdata/pkgconfig/xorg-server.pc
+%%SUID%%libexec/Xorg
+%%SUID%%@(,,4555) libexec/Xorg.wrap
+%%UDEV%%share/X11/xorg.conf.d/10-quirks.conf
+share/X11/xorg.conf.d/20-evdev-kbd.conf
+share/aclocal/xorg-server.m4
+share/man/man1/Xorg.1.gz
+%%SUID%%share/man/man1/Xorg.wrap.1.gz
+share/man/man1/Xserver.1.gz
+share/man/man1/gtf.1.gz
+share/man/man4/exa.4.gz
+share/man/man4/fbdevhw.4.gz
+share/man/man4/inputtestdrv.4.gz
+share/man/man4/modesetting.4.gz
+%%SUID%%share/man/man5/Xwrapper.config.5.gz
+share/man/man5/xorg.conf.5.gz
+share/man/man5/xorg.conf.d.5.gz
+@dir %%FONTPATHD%%
+@dir etc/X11/xorg.conf.d
+@dir lib/xorg/modules/drivers
+@dir lib/xorg/modules/input
+@dir lib/xorg/modules/extensions
diff --git a/x11-servers/xlibre-vfb/Makefile b/x11-servers/xlibre-vfb/Makefile
new file mode 100644
index 000000000000..f57d65bc78e3
--- /dev/null
+++ b/x11-servers/xlibre-vfb/Makefile
@@ -0,0 +1,15 @@
+PORTNAME= xlibre-vfb
+PORTVERSION= ${XLIBRE_VER}
+CATEGORIES= x11-servers
+
+MAINTAINER= b-aazbsd@proton.me
+COMMENT= Xlibre Xvfb server
+WWW= https://github.com/X11Libre/xserver/
+
+LICENSE= MIT
+
+CONFLICTS_INSTALL= xorg-vfbserver
+
+USES= xlibre-cat:server
+
+.include "../xlibre-server/Makefile.common"
diff --git a/x11-servers/xlibre-vfb/pkg-descr b/x11-servers/xlibre-vfb/pkg-descr
new file mode 100644
index 000000000000..099ce2821ab5
--- /dev/null
+++ b/x11-servers/xlibre-vfb/pkg-descr
@@ -0,0 +1 @@
+This package contains Xvfb, a virtual framebuffer X server.