git: 54a5827bb6a0 - main - emulators/virtualbox-ose{,-kmod,-nox11}-72: Repocopy from emulators/virtualbox-ose{,-kmod,-nox11}-71

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Fri, 29 Aug 2025 15:17:54 UTC
The branch main has been updated by vvd:

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

commit 54a5827bb6a0a139ee746704a1b5c92f2f3b3042
Author:     Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2025-08-29 14:56:29 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2025-08-29 14:56:29 +0000

    emulators/virtualbox-ose{,-kmod,-nox11}-72: Repocopy from emulators/virtualbox-ose{,-kmod,-nox11}-71
    
    PR:     289019
---
 emulators/virtualbox-ose-72/Makefile               |  426 ++++++
 emulators/virtualbox-ose-72/distinfo               |    7 +
 .../virtualbox-ose-72/files/extrapatch-Config.kmk  |   11 +
 ...h-src-VBox-HostDrivers-Support-freebsd-Makefile |   11 +
 .../files/extrapatch-vboximg-Config.kmk            |   11 +
 emulators/virtualbox-ose-72/files/patch-Config.kmk |  402 +++++
 emulators/virtualbox-ose-72/files/patch-configure  |  138 ++
 ...patch-doc_manual_en__US_dita_UserManual.ditamap |   11 +
 .../files/patch-include-iprt-x86.h                 |   19 +
 .../files/patch-include_VBox_com_array.h           |   36 +
 .../files/patch-include_VBox_sup.h                 |   11 +
 .../files/patch-include_iprt_string.h              |   14 +
 ...-Additions-common-VBoxGuest-VBoxGuest-freebsd.c |  284 ++++
 ...Box-Additions-common-VBoxGuest-freebsd-Makefile |   27 +
 ...itions-common-VBoxGuest-freebsd-files_vboxguest |   34 +
 ...-VBox-Additions-x11-Installer-98vboxadd-xclient |   25 +
 ...VBox-Additions-x11-Installer-vboxclient.desktop |   10 +
 ...h-src-VBox-Devices-Network-slirp-bsd-sys-mbuf.h |   12 +
 ...ch-src-VBox-HostDrivers-VBoxNetAdp-Makefile.kmk |   20 +
 ...HostDrivers-VBoxNetFlt-freebsd-files_vboxnetflt |   10 +
 .../files/patch-src-VBox-Installer-Makefile.kmk    |   14 +
 .../files/patch-src-VBox-Installer-freebsd-VBox.sh |   77 +
 ...tch-src-VBox-Main-src-server-VirtualBoxImpl.cpp |   11 +
 ...untime-r0drv-freebsd-sleepqueue-r0drv-freebsd.h |   39 +
 ...itions_common_VBoxService_VBoxServiceVMInfo.cpp |   71 +
 ...tch-src_VBox_Additions_common_pam_pam__vbox.cpp |   20 +
 .../patch-src_VBox_Additions_freebsd_Makefile      |   38 +
 .../patch-src_VBox_Additions_freebsd_Makefile.kmk  |   31 +
 ...src_VBox_Additions_freebsd_drm_vboxvideo__drm.c |   17 +
 ...x_Additions_freebsd_mount__vboxvfs_Makefile.kmk |   31 +
 ...ditions_freebsd_mount__vboxvfs_mount__vboxvfs.8 |   56 +
 ...ditions_freebsd_mount__vboxvfs_mount__vboxvfs.c |  171 +++
 ...patch-src_VBox_Additions_freebsd_vboxvfs_bcmp.c |   12 +
 ...ch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs.h |  428 ++++++
 ..._VBox_Additions_freebsd_vboxvfs_vboxvfs__prov.c | 1015 +++++++++++++
 ...Box_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c |  645 ++++++++
 ...VBox_Additions_freebsd_vboxvfs_vboxvfs__vnops.c | 1543 ++++++++++++++++++++
 ...h-src_VBox_Additions_x11_vboxmouse_Makefile.kmk |   29 +
 ...patch-src_VBox_Devices_Graphics_DevVGA-SVGA.cpp |   20 +
 ...VBox_Devices_Graphics_DevVGA-SVGA3d-dx-dx11.cpp |   11 +
 ...c_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.cpp |   29 +
 ...src_VBox_Devices_Graphics_DevVGA-SVGA3d-glLdr.h |   11 +
 ...src_VBox_Devices_Graphics_DevVGA-SVGA3d-ogl.cpp |   56 +
 .../files/patch-src_VBox_Devices_Makefile.kmk      |   44 +
 .../patch-src_VBox_Devices_Network_DrvNAT.cpp      |   10 +
 .../patch-src_VBox_Devices_PC_ipxe_Makefile.kmk    |   29 +
 ..._Devices_USB_freebsd_USBProxyDevice-freebsd.cpp |   11 +
 .../files/patch-src_VBox_ExtPacks_VNC_VBoxVNC.cpp  |   58 +
 ...rc_VBox_Frontends_VBoxHeadless_VBoxHeadless.cpp |   11 +
 ...Box_Frontends_VBoxManage_VBoxManageModifyVM.cpp |   29 +
 .../patch-src_VBox_HostDrivers_Support_SUPDrv.cpp  |   13 +
 ...h-src_VBox_HostDrivers_Support_SUPDrvInternal.h |   11 +
 ...h-src_VBox_HostDrivers_Support_freebsd_Makefile |   30 +
 ...ox_HostDrivers_Support_freebsd_SUPDrv-freebsd.c |  234 +++
 ..._HostDrivers_Support_freebsd_SUPLib-freebsd.cpp |   11 +
 ...VBox_HostDrivers_Support_freebsd_files__vboxdrv |   34 +
 ...rc_VBox_HostDrivers_VBoxNetAdp_freebsd_Makefile |   11 +
 ...Drivers_VBoxNetAdp_freebsd_VBoxNetAdp-freebsd.c |  147 ++
 ...ch-src_VBox_HostDrivers_VBoxNetFlt_Makefile.kmk |   11 +
 ...rc_VBox_HostDrivers_VBoxNetFlt_freebsd_Makefile |   11 +
 ...Drivers_VBoxNetFlt_freebsd_VBoxNetFlt-freebsd.c |  471 ++++++
 ...h-src_VBox_HostDrivers_adpctl_VBoxNetAdpCtl.cpp |   11 +
 .../files/patch-src_VBox_Main_Makefile.kmk         |   10 +
 .../files/patch-src_VBox_Main_include_HostPower.h  |   20 +
 .../patch-src_VBox_Main_src-server_HostImpl.cpp    |   11 +
 ..._Main_src-server_freebsd_PerformanceFreeBSD.cpp |   24 +
 .../files/patch-src_VBox_Runtime_Makefile.kmk      |   29 +
 ...Box_Runtime_r0drv_freebsd_alloc-r0drv-freebsd.c |   58 +
 ...ox_Runtime_r0drv_freebsd_assert-r0drv-freebsd.c |   29 +
 ...ox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c |  408 ++++++
 ...ime_r0drv_freebsd_memuserkernel-r0drv-freebsd.c |   22 +
 ...c_VBox_Runtime_r0drv_freebsd_mp-r0drv-freebsd.c |   92 ++
 ..._Runtime_r0drv_freebsd_semevent-r0drv-freebsd.c |   53 +
 ...ime_r0drv_freebsd_semeventmulti-r0drv-freebsd.c |   73 +
 ...time_r0drv_freebsd_semfastmutex-r0drv-freebsd.c |   59 +
 ..._Runtime_r0drv_freebsd_semmutex-r0drv-freebsd.c |   80 +
 ..._Runtime_r0drv_freebsd_spinlock-r0drv-freebsd.c |   30 +
 ...VBox_Runtime_r0drv_freebsd_the-freebsd-kernel.h |   48 +
 ...ox_Runtime_r0drv_freebsd_thread-r0drv-freebsd.c |   91 ++
 ...x_Runtime_r0drv_freebsd_thread2-r0drv-freebsd.c |   35 +
 ...VBox_Runtime_r0drv_freebsd_time-r0drv-freebsd.c |   43 +
 ...Box_Runtime_r0drv_freebsd_timer-r0drv-freebsd.c |   68 +
 ...c_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp |   39 +
 ...Box_Runtime_r3_posix_process-creation-posix.cpp |   38 +
 .../files/patch-src_VBox_VMM_Config.kmk            |   11 +
 ...VBox_VMM_VMMR3_PDMAsyncCompletionFileNormal.cpp |   59 +
 .../files/patch-src_libs_xpcom18a4_Makefile.kmk    |   11 +
 ...ibs_xpcom18a4_nsprpub_pr_src_pthreads_ptsynch.c |   13 +
 ...h-src_libs_xpcom18a4_xpcom_io_nsLocalFileUnix.h |   17 +
 emulators/virtualbox-ose-72/files/pkg-message.in   |  120 ++
 emulators/virtualbox-ose-72/files/vboxheadless.in  |  140 ++
 emulators/virtualbox-ose-72/files/vboxinit.in      |   91 ++
 emulators/virtualbox-ose-72/files/vboxwatchdog.in  |   51 +
 emulators/virtualbox-ose-72/files/vboxwebsrv.in    |   47 +
 .../virtualbox-ose-72/files/virtualbox.desktop     |   17 +
 emulators/virtualbox-ose-72/pkg-descr              |    8 +
 emulators/virtualbox-ose-72/pkg-plist              |  449 ++++++
 emulators/virtualbox-ose-kmod-72/Makefile          |  115 ++
 emulators/virtualbox-ose-kmod-72/distinfo          |    3 +
 .../virtualbox-ose-kmod-72/files/pkg-message.in    |   10 +
 emulators/virtualbox-ose-kmod-72/files/vboxnet.in  |   67 +
 emulators/virtualbox-ose-kmod-72/pkg-descr         |    5 +
 emulators/virtualbox-ose-kmod-72/pkg-plist         |    6 +
 emulators/virtualbox-ose-nox11-72/Makefile         |   11 +
 104 files changed, 9692 insertions(+)

diff --git a/emulators/virtualbox-ose-72/Makefile b/emulators/virtualbox-ose-72/Makefile
new file mode 100644
index 000000000000..7b5d79a0d306
--- /dev/null
+++ b/emulators/virtualbox-ose-72/Makefile
@@ -0,0 +1,426 @@
+PORTNAME=	virtualbox-ose
+DISTVERSION=	7.1.12
+PORTREVISION?=	0
+CATEGORIES=	emulators
+MASTER_SITES=	https://download.virtualbox.org/virtualbox/${DISTVERSION}/:src \
+		LOCAL/vvd:docs
+PKGNAMESUFFIX?=	-71
+DISTFILES=	VirtualBox-${DISTVERSION}${EXTRACT_SUFX}:src \
+		VirtualBox-docs-${DISTVERSION}${EXTRACT_SUFX}:docs
+EXTRACT_ONLY=	VirtualBox-${DISTVERSION}${EXTRACT_SUFX} \
+		VirtualBox-docs-${DISTVERSION}${EXTRACT_SUFX}
+
+MAINTAINER=	vbox@FreeBSD.org
+COMMENT=	General-purpose full virtualizer for x86 hardware
+WWW=		https://www.virtualbox.org/
+
+LICENSE=	GPLv2
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+ONLY_FOR_ARCHS=	amd64
+
+BUILD_DEPENDS=	gtar:archivers/gtar \
+		kmk:devel/kBuild \
+		yasm:devel/yasm \
+		xsltproc:textproc/libxslt
+LIB_DEPENDS=	libpng.so:graphics/png \
+		libcurl.so:ftp/curl
+RUN_DEPENDS=	${LOCALBASE}/etc/rc.d/vboxnet:emulators/virtualbox-ose-kmod-71
+
+USES=		compiler:c++17-lang cpe gnome iconv pkgconfig qt:6 ssl tar:bzip2
+CPE_VENDOR=	oracle
+CPE_PRODUCT=	vm_virtualbox
+USE_BINUTILS=	yes
+USE_GNOME=	libxml2
+USE_QT=		tools:build
+USE_RC_SUBR=	vboxheadless vboxwatchdog
+
+HAS_CONFIGURE=		yes
+CONFIGURE_ARGS=		--disable-java --passive-mesa --disable-docs
+CONFIGURE_ARGS+=	--with-gcc="${CC}" --with-g++="${CXX}"
+
+CONFLICTS_INSTALL=	virtualbox-ose-legacy \
+			virtualbox-ose-nox11-legacy \
+			virtualbox-ose \
+			virtualbox-ose-nox11 \
+			virtualbox-ose-70 \
+			virtualbox-ose-nox11-70 \
+			virtualbox-ose-72 \
+			virtualbox-ose-nox11-72
+
+PORTSCOUT=	limit:^7\.1\.
+SUB_FILES=	pkg-message
+SUB_LIST=	VBOXDIR=${VBOX_DIR} \
+		VBOX_ETC=${VBOX_ETC} \
+		VBOXGROUP=${VBOXGROUP} \
+		VBOXUSER=${VBOXUSER} \
+		VBOXWSUSER=${VBOXWSUSER}
+
+WRKSRC=		${WRKDIR}/VirtualBox-${DISTVERSION}
+
+VBOXUSER?=	vboxusers
+VBOXWSUSER?=	vboxusers
+VBOXGROUP?=	vboxusers
+USERS=		${VBOXUSER}
+GROUPS=		${VBOXGROUP}
+VBOX_DIR=	${PREFIX}/${VBOX_DIR_REL}
+VBOX_DIR_REL=	lib/virtualbox
+VBOX_ETC=	${PREFIX}/etc/vbox
+VBOX_LINKS=	VBoxVRDP
+VBOX_PROGS=	VBoxAutostart VBoxBalloonCtrl VBoxBugReport VBoxHeadless \
+		VBoxManage
+VBOX_UTILS=	VBoxExtPackHelperApp VBoxNetAdpCtl VBoxNetDHCP VBoxNetNAT \
+		VBoxSVC
+
+PLIST_SUB=	GUEST_VER=${DISTVERSION} \
+		PYTHON_VERU=${PYTHON_VER:S/./_/}${PYTHON_ABIVER} \
+		VBOXGROUP=${VBOXGROUP}
+
+SLAVE_PORT?=	no
+
+OPTIONS_DEFINE=		AIO ALSA DBUS DEBUG DOCS GUESTADDITIONS NLS OGG PULSEAUDIO \
+			PYTHON QT6 R0LOGGING UDPTUNNEL VBOXIMG VDE VNC VORBIS VPX \
+			WEBSERVICE X11
+OPTIONS_DEFAULT=	AIO DBUS QT6 UDPTUNNEL VNC WEBSERVICE X11
+.if ${SLAVE_PORT} == no
+OPTIONS_DEFAULT+=	PYTHON
+.endif
+# Since version 6.1.24 pulseaudio is broken at runtime, preventing
+# virtual machines from starting if configured to use it.
+OPTIONS_EXCLUDE+=	PULSEAUDIO
+OPTIONS_SUB=		yes
+
+AIO_DESC=		Enable Asyncronous IO support (check pkg-message)
+DEBUG_DESC=		Debug symbols, additional logs and assertions
+GUESTADDITIONS_DESC=	Build with Guest Additions
+NLS_DESC=		Native language support (requires QT6)
+OGG_DESC=		Use libogg from audio/libogg instead of bundled one
+QT6_DESC=		Build with QT6 frontend (requires X11)
+R0LOGGING_DESC=		Enable R0 logging (requires DEBUG)
+UDPTUNNEL_DESC=		Build with UDP tunnel support
+VBOXIMG_DESC=		Build vboximg-mount (requires fuse-libs)
+VDE_DESC=		Build with VDE support
+VNC_DESC=		Build with VNC support
+VORBIS_DESC=		Use libvorbis from audio/libvorbis instead of bundled one
+VPX_DESC=		Use libvpx for video recording
+WEBSERVICE_DESC=	Build Webservice
+
+ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
+ALSA_CONFIGURE_OFF=	--disable-alsa
+DBUS_LIB_DEPENDS=	libdbus-1.so:devel/dbus
+DBUS_CONFIGURE_OFF=	--disable-dbus
+DEBUG_CONFIGURE_ON=	--build-debug
+NLS_IMPLIES=		QT6
+OGG_LIB_DEPENDS=	libogg.so:audio/libogg
+OGG_CONFIGURE_ON=	--enable-libogg
+PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
+PULSEAUDIO_CONFIGURE_OFF=	--disable-pulse
+PYTHON_USES=		python
+PYTHON_USES_OFF=	python:build
+PYTHON_USE=		PYTHON=distutils,noegginfo,noflavors
+PYTHON_CONFIGURE_OFF=	--disable-python
+PYTHON_VARS=		pydistutils_pkgname=vboxapi pydistutils_pkgversion=1.0
+QT6_IMPLIES=		X11
+QT6_USES=		gl qmake:no_env qt:6 xorg
+QT6_USE=		QT=base,scxml,tools,translations \
+			XORG=xcb GL=gl
+QT6_CONFIGURE_OFF=	--disable-qt
+R0LOGGING_IMPLIES=	DEBUG
+UDPTUNNEL_CONFIGURE_OFF=	--disable-udptunnel
+VBOXIMG_LIB_DEPENDS=	libfuse.so.2:filesystems/fusefs-libs
+VDE_RUN_DEPENDS=	vde_switch:net/vde2
+VDE_CONFIGURE_ON=	--enable-vde
+VNC_LIB_DEPENDS=	libvncserver.so:net/libvncserver
+VNC_CONFIGURE_ON=	--enable-vnc
+VORBIS_LIB_DEPENDS=	libvorbis.so:audio/libvorbis \
+			libvorbisenc.so:audio/libvorbis
+VORBIS_CONFIGURE_ON=	--enable-libvorbis
+VPX_LIB_DEPENDS=	libvpx.so:multimedia/libvpx
+VPX_CONFIGURE_OFF=	--disable-libvpx
+WEBSERVICE_BUILD_DEPENDS=	soapcpp2:devel/gsoap
+X11_USES=		sdl xorg
+X11_USE=		SDL=sdl XORG=x11,xcursor,xext,xinerama,xmu,xorgproto,xt
+X11_CONFIGURE_OFF=	--build-headless
+
+ENV=
+.export ENV
+
+.include <bsd.port.options.mk>
+
+.if ${SLAVE_PORT} == no
+CONFLICTS_INSTALL+=	virtualbox-ose-nox11-71
+.else
+CONFLICTS_INSTALL+=	virtualbox-ose-71
+.endif
+
+.if ${PORT_OPTIONS:MDEBUG}
+KMK_BUILDTYPE=	debug
+KMK_FLAGS+=	BUILD_TYPE=debug
+.else
+KMK_BUILDTYPE=	release
+.endif
+
+.if ${PORT_OPTIONS:MGUESTADDITIONS}
+GUESTADDITIONS=			VBoxGuestAdditions_${DISTVERSION}.iso
+DISTFILES+=			${GUESTADDITIONS}:src
+LICENSE+=			Additions
+LICENSE_COMB=			multi
+LICENSE_NAME_Additions=		Guest Additions
+LICENSE_PERMS_Additions=	auto-accept
+LICENSE_DISTFILES_Additions=	${GUESTADDITIONS}
+.endif
+
+.if ${PORT_OPTIONS:MQT6}
+PLIST_SUB+=	QT=""
+VBOX_PROGS+=	VirtualBox VirtualBoxVM
+VBOX_WITH_QT=	1
+.else
+PLIST_SUB+=	QT="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MWEBSERVICE}
+USE_RC_SUBR+=	vboxinit vboxwebsrv
+VBOX_LINKS+=	vboxwebsrv
+VBOX_UTILS+=	vboxwebsrv webtest
+.endif
+
+.if ${PORT_OPTIONS:MX11}
+#VBOX_PROGS+=	VBoxSDL
+.endif
+
+.if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
+PLIST_SUB+=	SDK=""
+.else
+PLIST_SUB+=	SDK="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MVBOXIMG}
+EXTRA_PATCHES+=	${PATCHDIR}/extrapatch-vboximg-Config.kmk
+VBOX_UTILS+=	vboximg-mount
+PLIST_SUB+=	VBOXIMG=""
+.else
+PLIST_SUB+=	VBOXIMG="@comment "
+.endif
+
+KMK_ARCH=	freebsd.${ARCH}
+PLIST_SUB+=	ARCH="${KMK_ARCH}"
+
+KMK_BUILDDIR=	${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}
+KMK_CONFIG=	VBOX_LIBPATH_X11=${LOCALBASE} VBOX_FREEBSD_SRC=${SRC_BASE}/sys VBOX_WITHOUT_DOCS=1 VBOX_GCC_std=-std=c++17
+KMK_FLAGS+=	-j${MAKE_JOBS_NUMBER}
+
+.include <bsd.port.pre.mk>
+
+.if ${CHOSEN_COMPILER_TYPE} == clang
+PATCH_DEPENDS+=	${LOCALBASE}/share/kBuild/tools/GXX3.kmk:devel/kBuild
+.endif
+
+.if ${PYTHON_MAJOR_VER} >= 3
+PLIST_SUB+=	PYTHON_PYCDIR=/__pycache__/ \
+		PYTHON_PYCEXT=.cpython-${PYTHON_SUFFIX}.pyc
+.else
+PLIST_SUB+=	PYTHON_PYCDIR=/ \
+		PYTHON_PYCEXT=.pyc
+.endif
+
+.if ${SSL_DEFAULT} != base
+CONFIGURE_ARGS+=	--with-openssl-dir="${OPENSSLBASE}"
+.endif
+
+post-patch:
+	@${ECHO_CMD} 'VBOX_PATH_APP_PRIVATE_ARCH = ${VBOX_DIR}' > \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_DOCBOOK = ${DBKXSLDIR}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_DOCBOOK_DTD = ${DBKXMLDIR}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_SHARED_LIBS = ${VBOX_DIR}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	# Please keep this even if using Clang to avoid repeated regressions.
+	# PR 245048
+	@${ECHO_CMD} "VBOX_WITH_RUNPATH = ${_GCC_RUNTIME:D${_GCC_RUNTIME}\:}${VBOX_DIR}" >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_APP_PRIVATE = ${DATADIR}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_APP_DOCS = ${DOCSDIR}' >> ${WRKSRC}/LocalConfig.kmk
+.if ${SSL_DEFAULT} != base
+	@${ECHO_CMD} 'VBOX_WITH_ALT_HASH_CODE = 1' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+	@${ECHO_CMD} 'VBOX_WITH_EXTPACK_VBOXDTRACE =' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_INSTALLER = 1' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_VBOXDRV =' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_TESTCASES =' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'SDK_VBOX_LIBPNG_INCS = ${PREFIX}/include/libpng' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'SDK_VBOX_LIBPNG_LIBS = png' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_ADDITIONS =' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_DRAG_AND_DROP = ${VBOX_WITH_QT}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_DRAG_AND_DROP_GH = ${VBOX_WITH_QT}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_VALIDATIONKIT =' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_WITH_X11_ADDITIONS =' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_BLD_PYTHON = ${LOCALBASE}/bin/${PYTHON_VERSION}' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+.if ${PORT_OPTIONS:MR0LOGGING}
+	@${ECHO_CMD} 'VBOX_WITH_R0_LOGGING = 1' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${PORT_OPTIONS:MWEBSERVICE}
+	@${ECHO_CMD} 'VBOX_WITH_WEBSERVICES = 1' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_GSOAP_INSTALLED = 1' >> ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_GSOAP = ${PREFIX}/lib/gsoap' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_GSOAP_BIN = ${PREFIX}/bin' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_PATH_GSOAP_IMPORT = ${PREFIX}/share/gsoap/import' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+	@${ECHO_CMD} 'VBOX_GCC_PEDANTIC_CXX = -Wshadow $$(VBOX_GCC_WARN) -Wno-long-long' >> \
+	    ${WRKSRC}/LocalConfig.kmk
+.endif
+.if empty(PORT_OPTIONS:MX11)
+	@${ECHO} 'VBOX_WITH_VMSVGA3D =' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+.if ${CHOSEN_COMPILER_TYPE} == clang
+	@${REINPLACE_CMD} -e 's| -finline-limit=8000||' \
+	    -e 's| -mpreferred-stack-boundary=2||' ${WRKSRC}/Config.kmk
+	@${REINPLACE_CMD} -e 's| -fpermissive||' ${WRKSRC}/Config.kmk \
+	    ${WRKSRC}/src/VBox/Main/webservice/Makefile.kmk
+	@${ECHO_CMD} 'TOOL_VBoxGccFreeBSD_LD = ${CXX}' >> ${WRKSRC}/LocalConfig.kmk
+	@${SED} -e 's|GXX3|VBoxGccFreeBSD|g' \
+	    ${LOCALBASE}/share/kBuild/tools/GXX3.kmk > \
+	    ${WRKSRC}/tools/kBuildTools/VBoxGccFreeBSD.kmk
+.endif
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1500013
+	@${ECHO_CMD} 'VBoxSVC_LDFLAGS.freebsd = -lsys' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+	# Causes a "reinplace" QA warning with default LOCALBASE
+	@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
+	    ${WRKSRC}/Config.kmk ${WRKSRC}/configure \
+	    ${WRKSRC}/kBuild/header.kmk ${WRKSRC}/kBuild/units/qt4.kmk \
+	    ${WRKSRC}/kBuild/units/qt5.kmk ${WRKSRC}/kBuild/units/qt6.kmk ${WRKSRC}/kBuild/sdks/LIBSDL.kmk \
+	    ${WRKSRC}/src/libs/xpcom18a4/python/gen_python_deps.py
+	@${REINPLACE_CMD} \
+	    -e 's|\$$KBUILDDIR_BIN/kmk_sed|${LOCALBASE}/bin/kmk_sed|g' \
+	    -e 's|SUPPYTHONLIBS=.*|SUPPYTHONLIBS="${PYTHON_VERSION}${PYTHON_ABIVER}"|' \
+	    ${WRKSRC}/configure
+.if empty(ICONV_LIB)
+	@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.kmk \
+	    ${WRKSRC}/src/VBox/Runtime/Makefile.kmk
+	@${ECHO_CMD} 'VBOX_ICONV_DEFS = LIBICONV_PLUG' >> ${WRKSRC}/LocalConfig.kmk
+.endif
+	@${REINPLACE_CMD} -e 's|%%VBOX_DIR%%|${VBOX_DIR}|g' \
+	    -e 's|%%VBOX_ETC%%|${VBOX_ETC}|g' \
+	    -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+	    ${WRKSRC}/src/VBox/Installer/freebsd/VBox.sh
+	@${REINPLACE_CMD} -e 's|%%VBOX_ETC%%|${VBOX_ETC}|g' \
+	    ${WRKSRC}/src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp
+	@${REINPLACE_CMD} \
+	    -e 's|^versions =.*|versions = ["${PYTHON_VER}${PYTHON_ABIVER}"]|' \
+	    ${WRKSRC}/src/libs/xpcom18a4/python/gen_python_deps.py
+
+post-patch-AIO-off:
+	@${REINPLACE_CMD} 's|r3/freebsd/fileaio-freebsd.cpp|r3/posix/fileaio-posix.cpp|' \
+		${WRKSRC}/src/VBox/Runtime/Makefile.kmk
+
+do-build:
+	cd ${WRKSRC} && ${SH} -c '. ${WRKSRC}/env.sh && \
+	    ${SETENV} ${MAKE_ENV} ${KMK_CONFIG} ${LOCALBASE}/bin/kmk ${KMK_FLAGS}'
+.if ${PORT_OPTIONS:MPYTHON}
+	${PYTHON_CMD} -mcompileall \
+	    ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom/python/xpcom
+.endif
+
+do-install:
+.if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
+	${MKDIR} ${STAGEDIR}${DATADIR}/sdk
+.endif
+	cd ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom && \
+	    ${COPYTREE_SHARE} "idl samples" ${STAGEDIR}${DATADIR}
+
+	${MKDIR} ${STAGEDIR}${PREFIX}/include/virtualbox
+	cd ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom/include && \
+	    ${COPYTREE_SHARE} "*" ${STAGEDIR}${PREFIX}/include/virtualbox
+
+	${MKDIR} ${STAGEDIR}${VBOX_DIR}
+	cd ${KMK_BUILDDIR}/bin && ${COPYTREE_SHARE} \
+	    "*.fd *.r0 *.so components" ${STAGEDIR}${VBOX_DIR}
+.if ${PORT_OPTIONS:MPYTHON} || ${PORT_OPTIONS:MWEBSERVICE}
+	${RLN} ${STAGEDIR}${DATADIR}/sdk ${STAGEDIR}${VBOX_DIR}
+.endif
+
+	${INSTALL_SCRIPT} ${WRKSRC}/src/VBox/Installer/freebsd/VBox.sh \
+	    ${STAGEDIR}${VBOX_DIR}
+.for f in ${VBOX_PROGS} ${VBOX_UTILS}
+	${INSTALL_PROGRAM} ${KMK_BUILDDIR}/bin/${f} ${STAGEDIR}${VBOX_DIR}
+.endfor
+.for f in ${VBOX_PROGS} ${VBOX_LINKS}
+	${LN} -fs ../${VBOX_DIR_REL}/VBox.sh ${STAGEDIR}${PREFIX}/bin/${f}
+.endfor
+.for f in ${VBOX_PROGS}
+	${LN} -fs ../${VBOX_DIR_REL}/VBox.sh ${STAGEDIR}${PREFIX}/bin/${f:tl}
+.endfor
+
+.if ${PORT_OPTIONS:MGUESTADDITIONS}
+	${MKDIR} ${STAGEDIR}${VBOX_DIR}/additions
+	${INSTALL_DATA} ${DISTDIR}/${GUESTADDITIONS} \
+	    ${STAGEDIR}${VBOX_DIR}/additions/
+	${RLN} ${STAGEDIR}${VBOX_DIR}/additions/${GUESTADDITIONS} \
+	    ${STAGEDIR}${VBOX_DIR}/additions/VBoxGuestAdditions.iso
+.endif
+
+.if ${PORT_OPTIONS:MDOCS}
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_DATA} ${WRKDIR}/VirtualBox-docs-${DISTVERSION}/UserManual.pdf \
+	    ${STAGEDIR}${DOCSDIR}
+.endif
+
+.if ${PORT_OPTIONS:MNLS}
+	cd ${KMK_BUILDDIR}/obj/VirtualBox/qtnls && \
+	    ${COPYTREE_SHARE} "*.qm" ${STAGEDIR}${DATADIR}/nls
+.endif
+
+.if ${PORT_OPTIONS:MPYTHON}
+	cd ${KMK_BUILDDIR}/bin/sdk/installer/python && \
+	    ${SETENV} VBOX_INSTALL_PATH="${VBOX_DIR}" \
+	    ${PYTHON_CMD} vboxapisetup.py install --root=${STAGEDIR}
+
+	@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/xpcom
+	cd ${KMK_BUILDDIR}/bin/sdk/bindings/xpcom/python/xpcom && \
+	    ${COPYTREE_SHARE} "*" ${STAGEDIR}${PYTHON_SITELIBDIR}/xpcom
+	@${MKDIR} ${STAGEDIR}${DATADIR}/sdk/bindings/xpcom/python
+	${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/xpcom \
+	    ${STAGEDIR}${DATADIR}/sdk/bindings/xpcom/python
+.endif
+
+.if ${PORT_OPTIONS:MQT6}
+	${INSTALL_DATA} \
+	    ${WRKSRC}/src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_48px.png \
+	    ${STAGEDIR}${PREFIX}/share/pixmaps/VBox.png
+	${INSTALL_DATA} \
+	    ${FILESDIR}/virtualbox.desktop \
+	    ${STAGEDIR}${PREFIX}/share/applications/virtualbox.desktop
+.endif
+
+.if ${PORT_OPTIONS:MVNC}
+	${MKDIR} ${STAGEDIR}${VBOX_DIR}/ExtensionPacks/VNC/${KMK_ARCH}
+	${INSTALL_DATA} ${KMK_BUILDDIR}/bin/ExtensionPacks/VNC/ExtPack* \
+	    ${STAGEDIR}${VBOX_DIR}/ExtensionPacks/VNC/
+	${INSTALL_LIB} ${KMK_BUILDDIR}/bin/ExtensionPacks/VNC/${KMK_ARCH}/* \
+	    ${STAGEDIR}${VBOX_DIR}/ExtensionPacks/VNC/${KMK_ARCH}/
+.endif
+
+.if ${PORT_OPTIONS:MVBOXIMG}
+	${LN} -fs ../${VBOX_DIR_REL}/vboximg-mount ${STAGEDIR}${PREFIX}/bin/
+.endif
+
+.if ${PORT_OPTIONS:MWEBSERVICE}
+	${MKDIR} ${STAGEDIR}${DATADIR}/sdk/bindings/webservice
+	${INSTALL_DATA} ${KMK_BUILDDIR}/obj/webservice/vboxweb.wsdl \
+	    ${STAGEDIR}${DATADIR}/sdk/bindings/webservice/
+.endif
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/virtualbox/*.so \
+		${STAGEDIR}${PREFIX}/lib/virtualbox/components/*.so
+
+.include <bsd.port.post.mk>
diff --git a/emulators/virtualbox-ose-72/distinfo b/emulators/virtualbox-ose-72/distinfo
new file mode 100644
index 000000000000..e7b992b0b10c
--- /dev/null
+++ b/emulators/virtualbox-ose-72/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1752700000
+SHA256 (VirtualBox-7.1.12.tar.bz2) = 6f9618f39168898134975f51df7c2d6d5129c0aa82b6ae11cf47f920c70df276
+SIZE (VirtualBox-7.1.12.tar.bz2) = 214691769
+SHA256 (VirtualBox-docs-7.1.12.tar.bz2) = ba48f2da2593d8cae56fcf601c132d77dbf1d16b1e26db162c89449250c269bd
+SIZE (VirtualBox-docs-7.1.12.tar.bz2) = 10109084
+SHA256 (VBoxGuestAdditions_7.1.12.iso) = 256883e2eabf7ab5c10fb3b6831c294942ce34bc615807f9d0cf6c3d2e882236
+SIZE (VBoxGuestAdditions_7.1.12.iso) = 61331456
diff --git a/emulators/virtualbox-ose-72/files/extrapatch-Config.kmk b/emulators/virtualbox-ose-72/files/extrapatch-Config.kmk
new file mode 100644
index 000000000000..775508d23b1b
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/extrapatch-Config.kmk
@@ -0,0 +1,11 @@
+--- Config.kmk.orig	2021-04-28 16:21:25 UTC
++++ Config.kmk
+@@ -4931,7 +4931,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
+ 		| xargs -J% objcopy % $(out)
+ 
+ ## Strip debug info (comment out if debugging or something).
+-	objcopy --strip-debug $(out)
++#	objcopy --strip-debug $(out)
+ endef
+  else # x86
+ TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT = $(outbase).kld
diff --git a/emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile b/emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile
new file mode 100644
index 000000000000..67361da543f7
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/extrapatch-src-VBox-HostDrivers-Support-freebsd-Makefile
@@ -0,0 +1,11 @@
+--- src/VBox/HostDrivers/Support/freebsd/Makefile.orig	2012-10-18 16:23:16.000000000 +0200
++++ src/VBox/HostDrivers/Support/freebsd/Makefile	2012-10-20 08:13:07.301179212 +0200
+@@ -27,7 +27,7 @@
+ 
+ KMOD = vboxdrv
+ 
+-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS
++CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DDEBUG
+ 
+ .if (${MACHINE_ARCH} == "i386")
+  CFLAGS += -DRT_ARCH_X86
diff --git a/emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk b/emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk
new file mode 100644
index 000000000000..d84209faa8cd
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/extrapatch-vboximg-Config.kmk
@@ -0,0 +1,11 @@
+--- Config.kmk.orig	2023-10-12 15:43:35.000000000 +0700
++++ Config.kmk	2023-10-30 22:11:09.119922000 +0700
+@@ -869,7 +869,7 @@
+ # windows versions (only define when buildling win.x86).
+ #VBOX_WITH_MORE_NT4_COMPAT_BINARIES = 1
+ # Set this to enable building of the vboximg-mount FUSE mounting utility.
+-if1of ($(KBUILD_TARGET), darwin linux)
++if1of ($(KBUILD_TARGET), darwin freebsd linux)
+  VBOX_WITH_VBOXIMGMOUNT = 1
+ endif
+ # Set this to enable packaging the fuse related bits into our installer.
diff --git a/emulators/virtualbox-ose-72/files/patch-Config.kmk b/emulators/virtualbox-ose-72/files/patch-Config.kmk
new file mode 100644
index 000000000000..7aaf90147847
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-Config.kmk
@@ -0,0 +1,402 @@
+--- Config.kmk.orig	2025-05-10 18:43:02 UTC
++++ Config.kmk
+@@ -610,11 +610,11 @@ endif
+  # Enable OSS audio support.
+  VBOX_WITH_AUDIO_OSS = 1
+ endif
+-if1of ($(KBUILD_TARGET), linux)
++if1of ($(KBUILD_TARGET), freebsd linux)
+  # Enable ALSA audio support.
+  VBOX_WITH_AUDIO_ALSA = 1
+ endif
+-if1of ($(KBUILD_TARGET), linux)
++if1of ($(KBUILD_TARGET), freebsd linux)
+  # Enable PulseAudio audio support.
+  VBOX_WITH_AUDIO_PULSE = 1
+ endif
+@@ -627,11 +627,11 @@ VBOX_WITH_PCI_PASSTHROUGH =
+ # (disabled with 6.1, since it's not complete/useful enough)
+ VBOX_WITH_PCI_PASSTHROUGH =
+ # Enable statically linked dbus support.
+-if1of ($(KBUILD_TARGET), linux solaris)
++if1of ($(KBUILD_TARGET), freebsd linux solaris)
+  VBOX_WITH_DBUS = 1
+ endif
+ # Enable building PAM modules.
+-if1of ($(KBUILD_TARGET), linux solaris)
++if1of ($(KBUILD_TARGET), freebsd linux solaris)
+  VBOX_WITH_PAM = 1
+ endif
+ # Enable internal networking.
+@@ -639,7 +639,7 @@ VBOX_WITH_VMSVGA = 1
+ # Enable vmsvga (svga2) graphics device variant, 2D part
+ VBOX_WITH_VMSVGA = 1
+ # Enable vmsvga (svga2) graphics device variant, 3D part
+-if1of ($(KBUILD_TARGET), darwin linux win)
++if1of ($(KBUILD_TARGET), darwin freebsd linux win)
+  VBOX_WITH_VMSVGA3D = 1
+ endif
+ # Enable vmsvga (svga2) graphics device variant, 3D part, VGPU10 DX commands
+@@ -825,7 +825,7 @@ VBOX_WITH_VBOXMANAGE_NLS  = 1
+ #endif
+ # Set this to prefix all C symbols in XPCOM, to avoid dynamic linking problems
+ # caused by our XPCOM library polluting the symbol namespace for system libs.
+-if1of ($(KBUILD_TARGET), linux solaris)
++if1of ($(KBUILD_TARGET), freebsd linux solaris)
+  VBOX_WITH_XPCOM_NAMESPACE_CLEANUP = 1
+ endif
+ # The webservices api.
+@@ -1357,10 +1357,6 @@ endif
+  endif
+ endif
+ 
+-ifeq ($(KBUILD_TARGET),freebsd)
+- VBOX_WITH_DOCS =
+-endif
+-
+ ifeq ($(KBUILD_TARGET),haiku)
+  VBOX_WITH_VRDP_RDESKTOP =
+  # Permanent (no working SDL).
+@@ -1545,7 +1541,7 @@ ifdef VBOX_OSE
+  # not yet
+  VBOX_WITH_PLUGIN_CRYPT =
+  VBOX_WITH_DRAG_AND_DROP_PROMISES =
+- ifn1of ($(KBUILD_TARGET), linux)
++ ifn1of ($(KBUILD_TARGET), freebsd linux)
+   VBOX_WITH_DOCS =
+   VBOX_WITH_DOCS_PACKING =
+  endif
+@@ -3680,19 +3676,7 @@ ifndef VBOX_GCC_std
+ #
+ ## @todo consider maxing this out.
+ ifndef VBOX_GCC_std
+- if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64) # Go straight for c++17 here.
+   VBOX_GCC_std := -std=c++17
+-  # else if "$(VBOX_CLANG_VERSION_CXX)" vge 60000 # Most language features complete by v6. Lib stuff was less complete in v6, but hopefully acceptable for out purposes.
+-  #VBOX_GCC_std := -std=c++17
+- else if "$(VBOX_CLANG_VERSION_CXX)" vge 50000 # darwin Xcode 5 allegedly knows what C++11 is
+-  VBOX_GCC_std := -std=c++11
+-  # else if "$(VBOX_GCC_VERSION_CXX)" vge 70000 # Language feature P0512R0 was v8, rest v7 or earlier. Most lib stuff present in 7, complete in v12.
+-  #VBOX_GCC_std := -std=gnu++17
+- else if "$(VBOX_GCC_VERSION_CXX)" vge 40800
+-  VBOX_GCC_std := -std=c++11
+- else if "$(VBOX_GCC_VERSION_CXX)" vge 40600
+-  VBOX_GCC_std := -std=c++0x
+- endif
+ endif
+ ifndef VBOX_VCC_std
+  if $(VBOX_VCC_TOOL_STEM) >= VCC141 # since 2017 15.3
+@@ -5682,11 +5666,11 @@ ifeq ($(VBOX_LDR_FMT),elf)
+   # Solaris driver signing.
+   TEMPLATE_VBoxR0_POST_CMDS         = $(VBOX_SIGN_DRIVER_CMDS)
+  else
+-  TEMPLATE_VBoxR0_LDFLAGS           = -nostdlib -Bsymbolic -g
++  TEMPLATE_VBoxR0_LDFLAGS           = -nostdlib -Bsymbolic -g -fuse-ld=bfd
+   ## @todo WTF doesn't the globals work? Debug info is supposed to be split everywhere. GRR
+   TEMPLATE_VBoxR0_LD_DEBUG          = split
+  endif
+- if "$(KBUILD_TARGET)" == "linux" && !defined(VBOX_WITH_KMOD_WRAPPED_R0_MODS)
++ if ( "$(KBUILD_TARGET)" == "linux" || "$(KBUILD_TARGET)" == "freebsd") && !defined(VBOX_WITH_KMOD_WRAPPED_R0_MODS)
+   VBOX_WITH_VBOXR0_AS_DLL = 1
+   TEMPLATE_VBoxR0_DLLSUFF           = .r0
+   TEMPLATE_VBoxR0_CFLAGS           += -fPIC
+@@ -5697,7 +5681,7 @@ ifeq ($(VBOX_LDR_FMT),elf)
+  else
+   TEMPLATE_VBoxR0_CFLAGS.amd64     += -mcmodel=kernel
+   TEMPLATE_VBoxR0_CXXFLAGS.amd64   += -mcmodel=kernel
+- endif
++endif
+  ifdef VBOX_WITH_KMOD_WRAPPED_R0_MODS # For BTF/pahold issue we use -g1
+   TEMPLATE_VBoxR0_DEFS             += VBOX_WITH_KMOD_WRAPPED_R0_MODS
+   TEMPLATE_VBoxR0_LDFLAGS.linux    += $(PATH_ROOT)/src/VBox/HostDrivers/Support/linux/VBoxR0-wrapped.lds
+@@ -6081,7 +6065,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+  # x86 FreeBSD (6.2 or something):
+  #  cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE \
+  #   -nostdinc -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include \
+- #   -finline-limit=8000 -fno-common -mno-align-long-strings -mpreferred-stack-boundary=2 \
++ #   -fno-common -mno-align-long-strings \
+  #   -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs \
+  #   -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-extensions \
+  #   -std=c99 -c ../my.c
+@@ -6092,7 +6076,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+  #
+  # AMD64 FreeBSD (7.1):
+  #  cc -O2 -fno-strict-aliasing -pipe -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc -I. -I@ -I@/contrib/altq \
+- #  -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common  \
++ #  --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common  \
+  #  -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \
+  #  -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding \
+  #  -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign \
+@@ -6174,7 +6158,7 @@ ifeq ($(KBUILD_TARGET),freebsd)
+ 		| xargs -J% objcopy % $(outbase).kld
+ 
+    # Link the final .ko (a shared object).
+-	ld $(flags) -Bshareable -o $(out) $(outbase).kld
++	ld $(flags) -Bshareable -znotext -o $(out) $(outbase).kld
+   endef
+  endif # x86
+ 
+@@ -6209,7 +6193,7 @@ ifeq ($(KBUILD_TARGET),netbsd)
+  	$(VBOX_GCC_fdiagnostics-show-option) \
+  	-Wstrict-prototypes -Wmissing-prototypes -Wstrict-prototypes \
+  	-Wimplicit-function-declaration -Werror-implicit-function-declaration \
+- 	-O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \
++ 	-O2 -ffreestanding -fno-strict-aliasing -fno-common \
+  	$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
+  	-nostdinc -std=c99 -msoft-float
+  TEMPLATE_VBoxR0Drv_CFLAGS.x86         = -m32 -mno-mmx -mno-sse -mno-avx \
+@@ -6220,7 +6204,7 @@ ifeq ($(KBUILD_TARGET),netbsd)
+  	-fno-asynchronous-unwind-tables -mno-fp-ret-in-387
+  TEMPLATE_VBoxR0Drv_CXXFLAGS           = -fno-exceptions -fno-rtti \
+  	$(VBOX_GCC_WARN) -Wpointer-arith -Winline \
+- 	-O2 -fno-strict-aliasing -fno-common -finline-limit=8000 \
++ 	-O2 -fno-strict-aliasing -fno-common \
+  	$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
+  	-nostdinc -msoft-float
+  TEMPLATE_VBoxR0Drv_CXXFLAGS.x86       = $(TEMPLATE_VBoxR0Drv_CFLAGS.x86)
+@@ -6528,11 +6512,11 @@ else # the gcc guys
+   TEMPLATE_VBoxR3Exe_LIBS              = pthread m rt dl
+  else ifeq ($(KBUILD_TARGET),os2)
+   TEMPLATE_VBoxR3Exe_TOOL              = GXX3OMF
+-  TEMPLATE_VBoxR3Exe_LIBS              = socket iconv
++  TEMPLATE_VBoxR3Exe_LIBS              = socket 
+  else ifeq ($(KBUILD_TARGET),darwin)
+   TEMPLATE_VBoxR3Exe_TOOL              = $(VBOX_GCC_TOOL)
+   TEMPLATE_VBoxR3Exe_LIBS              =
+-  TEMPLATE_VBoxR3Exe_DEFS             += LIBICONV_PLUG # Avoid 3rd party libiconv (from macports).
++  TEMPLATE_VBoxR3Exe_DEFS             += LIBICONV_PLUG # Avoid 3rd party lib (from macports).
+   TEMPLATE_VBoxR3Exe_SDKS.darwin       = $(VBOX_DARWIN_DEF_SDK_SDKS)
+   TEMPLATE_VBoxR3Exe_DEFS.darwin       = $(VBOX_DARWIN_DEF_SDK_DEFS)
+   TEMPLATE_VBoxR3Exe_CFLAGS.darwin     = $(VBOX_DARWIN_DEF_SDK_CFLAGS) -fno-common
+@@ -6549,17 +6533,26 @@ else # the gcc guys
+  else ifeq ($(KBUILD_TARGET),haiku)
+   TEMPLATE_VBoxR3Exe_TOOL              = GXX3
+   TEMPLATE_VBoxR3Exe_POST_CMDS        = $(VBOX_HAIKU_XRES_SETVER_CMDS)
+-  TEMPLATE_VBoxR3Exe_LIBS              = network iconv stdc++ supc++
++  TEMPLATE_VBoxR3Exe_LIBS              = network  stdc++ supc++
+   TEMPLATE_VBoxR3Exe_LIBPATH          += \
+   	/boot/common/lib
+   # Haiku uses PIC by default...
+   TEMPLATE_VBoxR3Exe_CFLAGS           += -fno-pic
+   TEMPLATE_VBoxR3Exe_CXXFLAGS         += -fno-pic
+   TEMPLATE_VBoxR3Exe_LDFLAGS          += -fno-pic
+- else if1of ($(KBUILD_TARGET), freebsd openbsd)
++ else ifeq ($(KBUILD_TARGET), freebsd)
+   TEMPLATE_VBoxR3Exe_TOOL              = GXX3
+   TEMPLATE_VBoxR3Exe_LIBS              = pthread
++  TEMPLATE_VBoxR3Exe_LDFLAGS           = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++  TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+   TEMPLATE_VBoxR3Exe_INCS             += \
++  	/usr/local/include
++  TEMPLATE_VBoxR3Exe_LIBPATH          += \
++  	/usr/local/lib
++ else ifeq ($(KBUILD_TARGET), openbsd)
++  TEMPLATE_VBoxR3Exe_TOOL              = GXX3
++  TEMPLATE_VBoxR3Exe_LIBS              = pthread
++  TEMPLATE_VBoxR3Exe_INCS             += \
+   	/usr/include \
+   	/usr/X11R6/include \
+   	/usr/local/include
+@@ -6578,7 +6571,7 @@ else # the gcc guys
+   	/usr/X11R7/lib
+  else ifeq ($(KBUILD_TARGET),solaris)
+   TEMPLATE_VBoxR3Exe_TOOL              = GXX3PLAIN
+-  TEMPLATE_VBoxR3Exe_DEFS             += LIBICONV_PLUG _REENTRANT # Avoid the GNU libiconv, for now at least.
++  TEMPLATE_VBoxR3Exe_DEFS             += LIBICONV_PLUG _REENTRANT # Avoid the GNU lib, for now at least.
+   if $(VBOX_GCC_VERSION_CC) < 30500
+    TEMPLATE_VBoxR3Exe_CFLAGS          += -std=gnu99
+   endif
+@@ -6594,6 +6587,7 @@ else # the gcc guys
+   TEMPLATE_VBoxR3Exe_LDFLAGS          += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
+  endif
+  ifdef VBOX_WITH_ORIGIN
++  TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd  += $(VBOX_GCC_ORIGIN_OPT)
+   TEMPLATE_VBoxR3Exe_LDFLAGS.linux    += $(VBOX_GCC_ORIGIN_OPT)
+  endif
+ endif
+@@ -6808,7 +6802,7 @@ else
+  ifdef VBOX_WITH_NOCRT_STATIC
+   TEMPLATE_VBoxR3StaticBase_DEFS           += RT_WITH_NOCRT_WRAPPERS
+  endif
+- ifn1of ($(KBUILD_TARGET), darwin linux solaris)
++ ifn1of ($(KBUILD_TARGET), darwin freebsd linux solaris)
+   # The gcc guys sans darwin, linux and solaris (don't depend on statically compiled system libs there)
+   TEMPLATE_VBoxR3StaticBase_CFLAGS          = $(TEMPLATE_VBoxR3Exe_CFLAGS) -static
+   TEMPLATE_VBoxR3StaticBase_CXXFLAGS        = $(TEMPLATE_VBoxR3Exe_CXXFLAGS) -static
+@@ -6876,7 +6870,7 @@ else
+  	$(SDK_VBoxZlib_LIBS) \
+  	$(SDK_VBoxLibLzma_LIBS)
+  if1of ($(KBUILD_TARGET), darwin freebsd)
+-  TEMPLATE_VBoxR3Static_LIBS       += iconv
++  TEMPLATE_VBoxR3Static_LIBS       += 
+  else ifeq ($(KBUILD_TARGET),solaris)
+   TEMPLATE_VBoxR3Static_LIBS       += kstat
+  endif
+@@ -7048,6 +7042,7 @@ else ifn1of ($(KBUILD_TARGET), os2)
+ else ifn1of ($(KBUILD_TARGET), os2)
+  ifneq ($(KBUILD_TYPE),asan) # Keep RPATH in asan builds so we can find libasan.so.X and libubsan.so.Y.
+   TEMPLATE_VBoxR3HardenedExe_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3Exe_LDFLAGS))
++  TEMPLATE_VBoxR3HardenedExe_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3Exe_LDFLAGS.freebsd))
+   TEMPLATE_VBoxR3HardenedExe_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3Exe_LDFLAGS.linux))
+  endif
+ endif
+@@ -7079,6 +7074,7 @@ ifn1of ($(KBUILD_TARGET), win os2)
+ 	$(if-expr !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),-IntegrityCheck,)
+ ifn1of ($(KBUILD_TARGET), win os2)
+  TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS       = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3TstDll_LDFLAGS))
++ TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.freebsd = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.freebsd))
+  TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.linux))
+ endif
+ 
+@@ -7102,6 +7098,7 @@ ifndef VBOX_WITH_HARDENING
+   TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
+  endif
+  ifdef VBOX_WITH_ORIGIN
++  TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.freebsd += $(VBOX_GCC_ORIGIN_OPT)
+   TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
+  endif
+ endif
+@@ -7454,7 +7451,7 @@ else # the GCC guys:
+  endif
+  TEMPLATE_VBoxMainExe_CXXFLAGS           = -g $(VBOX_GCC_pipe) \
+  	$(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_Wno-multistatement-macros) $(VBOX_GCC_Wno-class-memaccess) -Wshadow \
+- 	-fshort-wchar -fpermissive -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \
++ 	-fshort-wchar -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \
+  	$(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK) \
+  	$(VBOX_GCC_SANITIZER_FLAGS)
+  if !defined("VBOX_GCC_Wno-delete-non-virtual-dtor") && defined("VBOX_GCC_Wno-non-virtual-dtor")
+@@ -7518,10 +7515,19 @@ else # the GCC guys:
+  else ifeq ($(KBUILD_TARGET),haiku)
+   TEMPLATE_VBoxMainExe_TOOL              = GXX3
+   TEMPLATE_VBoxMainExe_LIBS              = $(LIB_RUNTIME) network stdc++ supc++
+- else if1of ($(KBUILD_TARGET), freebsd openbsd)
++ else ifeq ($(KBUILD_TARGET), freebsd)
+   TEMPLATE_VBoxMainExe_TOOL              = GXX3
+   TEMPLATE_VBoxMainExe_LIBS              = $(LIB_RUNTIME)
++  TEMPLATE_VBoxMainExe_LDFLAGS           = -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++  TEMPLATE_VBoxMainExe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+   TEMPLATE_VBoxMainExe_INCS             += \
++  	/usr/local/include
++  TEMPLATE_VBoxMainExe_LIBPATH          += \
++  	/usr/local/lib
++ else ifeq ($(KBUILD_TARGET), openbsd)
++  TEMPLATE_VBoxMainExe_TOOL              = GXX3
++  TEMPLATE_VBoxMainExe_LIBS              = $(LIB_RUNTIME)
++  TEMPLATE_VBoxMainExe_INCS             += \
+   	/usr/include \
+   	/usr/X11R6/include \
+   	/usr/local/include
+@@ -7553,6 +7559,7 @@ else # the GCC guys:
+   TEMPLATE_VBoxMainExe_LDFLAGS          += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
+  endif
+  ifdef VBOX_WITH_ORIGIN
++  TEMPLATE_VBoxMainExe_LDFLAGS.freebsd  += $(VBOX_GCC_ORIGIN_OPT)
+   TEMPLATE_VBoxMainExe_LDFLAGS.linux    += $(VBOX_GCC_ORIGIN_OPT)
+  endif
+ 
+@@ -8181,14 +8188,13 @@ ifdef VBOX_WITH_QTGUI
+    TEMPLATE_VBoxQtGuiExe_LIBPATH += \
+    	$(VBOX_LIBPATH_X11)
+    ifeq ($(KBUILD_TARGET),freebsd)
++    TEMPLATE_VBoxQtGuiExe_LDFLAGS += -Wl,-z,noexecstack,-z,relro $(VBOX_LD_as_needed)
++    TEMPLATE_VBoxQtGuiExe_LDFLAGS.freebsd.x86 = -Wl,-z,notext
+     TEMPLATE_VBoxQtGuiExe_INCS += \
+-    	/usr/include \
+-    	/usr/X11R6/include \
+     	/usr/local/include
+     TEMPLATE_VBoxQtGuiExe_LIBPATH += \
+-    	/usr/lib \
+-    	/usr/X11R6/lib \
+     	/usr/local/lib
++    TEMPLATE_VBoxQtGuiExe_LIBS += /usr/local/lib/qt6/libQt6PrintSupport.so
+    endif
+    ifeq ($(KBUILD_TARGET),solaris)
+     TEMPLATE_VBoxQtGuiExe_LDFLAGS.solaris = -Wl,-z,ignore # Same as VBOX_LD_as_needed.
+@@ -8460,7 +8466,7 @@ else
+   TEMPLATE_VBoxBldProg_LIBS              = pthread m rt dl
+  else ifeq ($(KBUILD_HOST),os2)
+   TEMPLATE_VBoxBldProg_TOOL              = GXX3OMF
+-  TEMPLATE_VBoxBldProg_LIBS              = socket iconv
++  TEMPLATE_VBoxBldProg_LIBS              = socket 
+  else ifeq ($(KBUILD_HOST),darwin)
+   TEMPLATE_VBoxBldProg_TOOL              = $(VBOX_GCC_TOOL)
+   if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.7" || "$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "7"
+@@ -8500,13 +8506,20 @@ else
+   TEMPLATE_VBoxBldProg_LIBS              =
+  else ifeq ($(KBUILD_HOST),haiku)
+   TEMPLATE_VBoxBldProg_TOOL              = GXX3
+-  TEMPLATE_VBoxBldProg_LIBS              = network iconv
++  TEMPLATE_VBoxBldProg_LIBS              = network 
+   TEMPLATE_VBoxBldProg_LIBPATH          += \
+   	/boot/common/lib
+- else if1of ($(KBUILD_HOST), freebsd openbsd)
++ else ifeq ($(KBUILD_HOST), freebsd)
+   TEMPLATE_VBoxBldProg_TOOL              = $(VBOX_GCC_TOOL)
+   TEMPLATE_VBoxBldProg_LIBS              = pthread
+   TEMPLATE_VBoxBldProg_INCS             += \
++  	/usr/local/include
++  TEMPLATE_VBoxBldProg_LIBPATH          += \
++  	/usr/local/lib
++ else ifeq ($(KBUILD_HOST), openbsd)
++  TEMPLATE_VBoxBldProg_TOOL              = $(VBOX_GCC_TOOL)
++  TEMPLATE_VBoxBldProg_LIBS              = pthread
++  TEMPLATE_VBoxBldProg_INCS             += \
+   	/usr/include \
+   	/usr/X11R6/include \
+   	/usr/local/include
+@@ -8553,11 +8566,11 @@ TEMPLATE_VBoxAdvBldProg_LIBS.darwin = \
+ 	$(TEMPLATE_VBoxBldProg_LIBS)
+ TEMPLATE_VBoxAdvBldProg_LIBS.darwin = \
+ 	$(TEMPLATE_VBoxAdvBldProg_LIBS) \
+-	iconv \
++	 \
+ 	$(TEMPLATE_VBoxBldProg_LIBS.darwin)
+ TEMPLATE_VBoxAdvBldProg_LIBS.freebsd = \
+ 	$(TEMPLATE_VBoxAdvBldProg_LIBS) \
+-	iconv \
++	 \
+ 	rt \
+ 	$(TEMPLATE_VBoxBldProg_LIBS.freebsd)
+ TEMPLATE_VBoxAdvBldProg_LIBS.linux = \
+@@ -8648,6 +8661,7 @@ else # the gcc guys
+  # Do not inherit sanitizer flags from VBoxR3Exe in guest executables.  Deal with them separately.
+  TEMPLATE_VBoxGuestR3ExeBase_CXXFLAGS.debug = $(NO_SUCH_VARIABLE)
*** 9451 LINES SKIPPED ***