git: c7edce06b9d0 - main - devel/asfml: Update to 3.0.0

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Wed, 02 Sep 2026 10:50:39 UTC
The branch main has been updated by fuz:

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

commit c7edce06b9d03307e9a76758396ad4ebfeb4a335
Author:     Alastair Hogge <agh@riseup.net>
AuthorDate: 2026-08-30 08:41:40 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2026-09-02 10:49:38 +0000

    devel/asfml: Update to 3.0.0
    
    Update to 3.0.0:
     * Assign ada@FreeBSD.org to ${MAINTAINER}
     * Clean-up do-build-EXAMPLES-on and do-install-EXAMPLES-on targets
     * Drop gmake and rely on GPR tools where possible/convenient
     * Explicitly declare all csfml dependencies in ${LIB_DEPENDS}
     * Remove ${BROKEN_i386} now that it is correctly reflected in
       devel/gprbuild
     * Remove hard-coded GNAT-12 version in ${USES}
    
    Changelog: https://github.com/mgrojo/ASFML/releases/tag/v3.0.0
    
    PR:             277643
---
 devel/asfml/Makefile                               | 174 +++++++++--------
 devel/asfml/distinfo                               |   6 +-
 devel/asfml/files/asfml.gpr.in                     |   7 -
 devel/asfml/files/patch-examples_example_main.adb  |  34 +++-
 devel/asfml/files/patch-examples_pong_pong.adb     |  18 +-
 .../files/patch-examples_renderwindow_main.adb     |  18 +-
 .../files/patch-examples_renderwindow_unicode.adb  |  16 +-
 .../files/patch-examples_sound__spatial_main.adb   |  11 ++
 devel/asfml/pkg-plist                              | 217 ++++++++++++---------
 9 files changed, 286 insertions(+), 215 deletions(-)

diff --git a/devel/asfml/Makefile b/devel/asfml/Makefile
index e4302b861df4..0151ed59f762 100644
--- a/devel/asfml/Makefile
+++ b/devel/asfml/Makefile
@@ -1,119 +1,137 @@
 PORTNAME=	asfml
 DISTVERSIONPREFIX=	v
-DISTVERSION=	2.5.5
-PORTREVISION=	2
+DISTVERSION=	3.0.0
 CATEGORIES=	devel games graphics multimedia
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	ada@FreeBSD.org
 COMMENT=	Ada bindings to the Simple and Fast Multimedia Library (SFML)
 WWW=		https://mgrojo.github.io/ASFML/
 
 LICENSE=	ZLIB
 LICENSE_FILE=	${WRKSRC}/LICENSE.md
 
-BROKEN_i386=	segfault: raised STORAGE_ERROR : s-intman.adb:136 explicit raise
-
 BUILD_DEPENDS=	gprbuild>0:devel/gprbuild
-LIB_DEPENDS=	libcsfml-system.so:devel/csfml
+LIB_DEPENDS=	libcsfml-audio.so:devel/csfml \
+		libcsfml-graphics.so:devel/csfml \
+		libcsfml-network.so:devel/csfml \
+		libcsfml-system.so:devel/csfml \
+		libcsfml-window.so:devel/csfml
 
-USES=		ada:12,run
-USE_GCC=	yes:build
+USES=		ada:run
 USE_GITHUB=	yes
 GH_ACCOUNT=	mgrojo
 GH_PROJECT=	${PORTNAME:tu}
 
-EXTRACT_AFTER_ARGS=	--exclude include/generated
-
-SUB_FILES=	${PORTNAME}.gpr
-
-OPTIONS_DEFINE=	DEBUG DOCS EXAMPLES
-OPTIONS_SUB=	yes
-
-DOCS_DESC=	Install API reference documentation
-EXAMPLES_DESC=	Build and install Ada SFML examples
-
-EXAMPLES_RUN_DEPENDS+=	dejavu>0:x11-fonts/dejavu \
-			webfonts>0:x11-fonts/webfonts
-
-EXAMPLES_USES=	fonts:fc gl gmake
-EXAMPLES_USE=	GL=glu,opengl
-
-_GPR_ARGS=	-j${MAKE_JOBS_NUMBER} -p
-
-.include <bsd.port.options.mk>
-
-.if ${PORT_OPTIONS:MDEBUG}
-_GPR_ARGS+=	-XASFML_BUILD_MODE=debug
-.endif
+MAKE_CMD=	gprbuild
+
+EXTRACT_AFTER_ARGS=	${_DIST_EXCLUDES:S,^,--exclude ,}
+
+PORTEXAMPLES=	*
+
+OPTIONS_DEFINE=			DOCS EXAMPLES
+OPTIONS_DEFAULT=		CONTRACTS OPTIMIZE RUNTIME STATIC STYLE
+OPTIONS_GROUP=			TOOLCHAINCONFIG
+OPTIONS_GROUP_TOOLCHAINCONFIG=	CONTRACTS RUNTIME STATIC STYLE
+OPTIONS_SUB=			yes
+
+CONTRACTS_DESC=		Disable/Enable Pragma asserations and Contracts
+EXAMPLES_DESC=		Build and install Ada SFML examples
+RUNTIME_DESC=		Disable/Enable runtime checks
+STATIC_DESC=		Warn on compile time assertations failing
+STYLE_DESC=		Check for style violations during compilation
+TOOLCHAINCONFIG_DESC=	Enable/Disable tool-chain static/runtime checking
+
+CONTRACTS_VARS_OFF=	_GPR_PROJECT_ARGS+=-XASFML_CONTRACTS=disabled
+EXAMPLES_USES=		fonts:fc gl
+EXAMPLES_USE=		GL=glu,opengl
+RUNTIME_VARS_OFF=	_GPR_PROJECT_ARGS+=-XASFML_RUNTIME_CHECKS=disabled
+STATIC_VARS_OFF=	_GPR_PROJECT_ARGS+=-XASFML_COMPILE_CHECKS=disabled
+STYLE_VARS_OFF=		_GPR_PROJECT_ARGS+=-XASFML_STYLE_CHECKS=disabled
+
+_ASFML_EXAMPLES=	clock example ftp graphics music opengl pong \
+			renderwindow sound sound_spatial soundstream \
+			vertexbuffer vulkan window
+_DATADIR_AUDIO=		${DATADIR}/audio
+_DATADIR_IMAGES=	${DATADIR}/images
+_DIST_EXCLUDES=		include/generated tests/thread
+_GPRBUILD_ARGS=		${_GPR_PROJECT_ARGS} -j${MAKE_JOBS_NUMBER} -p -vh -vP2
+_GPRINSTALL_ARGS=	${_GPR_PROJECT_ARGS} --no-manifest \
+			--prefix='${STAGEDIR}${PREFIX}' -p -v
+_GPR_PROJECT_ARGS=	-XASFML_BUILD_MODE+=${WITH_DEBUG:Uoptimize:Ddebug}
 
 post-extract:
 	${MV} ${WRKSRC}/tests \
 		${WRKSRC}/examples
 
 post-patch:
-	${REINPLACE_CMD} -e 's|%%DATA_AUDIO%%|${DATADIR}/audio/|' \
-		-e 's|%%DATA_FONTS%%|${DATADIR}/fonts/|' \
-		-e 's|%%DATA_GRAPHICS%%|${DATADIR}/graphics/|' \
-		-e 's|%%PREFIX_FONTDIR%%|${FONTSDIR:C/${PORTNAME}//g}|' \
+	${REINPLACE_CMD} -e 's|%%DATADIR_AUDIO%%|${_DATADIR_AUDIO}|' \
+		-e 's|%%DATADIR_IMAGES%%|${_DATADIR_IMAGES}|' \
+		-e 's|%%FONTSDIR%%|${FONTSDIR}|' \
 		${WRKSRC}/examples/example/main.adb \
 		${WRKSRC}/examples/pong/pong.adb \
 		${WRKSRC}/examples/renderwindow/main.adb \
-		${WRKSRC}/examples/renderwindow/unicode.adb
+		${WRKSRC}/examples/renderwindow/unicode.adb \
+		${WRKSRC}/examples/sound_spatial/main.adb
 
 do-build:
 	(cd ${WRKSRC} && \
-		${SETENV} ${MAKE_ENV} gprbuild ${_GPR_ARGS} -P asfml)
+		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${_GPRBUILD_ARGS} -P \
+		${PORTNAME})
 
 do-build-EXAMPLES-on:
+. for _example in ${_ASFML_EXAMPLES}
+.  if ${_example} == pong
+	(cd ${WRKSRC}/examples && \
+		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${_GPRBUILD_ARGS} -P \
+		${_example}/pong)
+.  else
 	(cd ${WRKSRC}/examples && \
-		${SETENV} ${MAKE_ENV} ${MAKE_CMD})
+		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${_GPRBUILD_ARGS} -P \
+		${_example}/main)
+.  endif
+. endfor
 
 do-install:
-	${MKDIR} ${STAGEDIR}${PREFIX}/share/gpr
-	${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.gpr \
-		${STAGEDIR}${PREFIX}/share/gpr/
-	${MKDIR} ${STAGEDIR}${PREFIX}/include/${PORTNAME}
-	${INSTALL_DATA} ${WRKSRC}/include/*.ad[bs] \
-		${STAGEDIR}${PREFIX}/include/${PORTNAME}
-	${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}
-	${INSTALL_DATA} ${WRKSRC}/lib/*.ali \
-		${STAGEDIR}${PREFIX}/lib/${PORTNAME}
-	${INSTALL_DATA} ${WRKSRC}/lib/*.a \
-		${STAGEDIR}${PREFIX}/lib/
+	(cd ${WRKSRC}/ && \
+		${SETENV} ${MAKE_ENV} gprinstall ${_GPRINSTALL_ARGS} --ali-subdir=libdata/${PORTNAME} \
+		--lib-subdir=lib/${PORTNAME} --sources-subdir=include/${PORTNAME} \
+		-P ${PORTNAME})
 
 do-install-DOCS-on:
-	${MKDIR} ${STAGEDIR}${DOCSDIR}
 	(cd ${WRKSRC}/doc && \
 		${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR})
 
 do-install-EXAMPLES-on:
-	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
-.for DEMO in clock example graphics music opengl renderwindow thread window
-	${INSTALL_DATA} ${WRKSRC}/examples/${DEMO}/main.adb \
-		${STAGEDIR}${EXAMPLESDIR}/${DEMO}.adb
-	${INSTALL_PROGRAM} ${WRKSRC}/examples/${DEMO}/main \
-		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${DEMO}
-.if ${DEMO} == renderwindow || ${DEMO} == window
-	${INSTALL_DATA} ${WRKSRC}/examples/${DEMO}/unicode.adb \
-		${STAGEDIR}${EXAMPLESDIR}/${DEMO}-unicode.adb
-	${INSTALL_PROGRAM} ${WRKSRC}/examples/${DEMO}/unicode \
-		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${DEMO}-unicode
-.endif
-.endfor
-	${INSTALL_DATA} ${WRKSRC}/examples/pong/pong.adb \
-		${STAGEDIR}${EXAMPLESDIR}
-	${INSTALL_DATA} ${WRKSRC}/examples/thread/thread_func.* \
-		${STAGEDIR}${EXAMPLESDIR}
-	${INSTALL_PROGRAM} ${WRKSRC}/examples/pong/pong \
-		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-pong
-	${MKDIR} ${STAGEDIR}${DATADIR}/audio
-	${INSTALL_DATA} ${WRKSRC}/examples/pong/*.ogg \
-		${STAGEDIR}${DATADIR}/audio
-	${MKDIR} ${STAGEDIR}${DATADIR}/graphics
-	${INSTALL_DATA} ${WRKSRC}/examples/renderwindow/*.png \
-		${STAGEDIR}${DATADIR}/graphics
-	${MKDIR} ${STAGEDIR}${DATADIR}/fonts
-	${INSTALL_DATA} ${WRKSRC}/examples/renderwindow/aerial.ttf \
-		${STAGEDIR}${DATADIR}/fonts
+. for _example in ${_ASFML_EXAMPLES}
+	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/${_example}
+	${INSTALL_DATA} ${WRKSRC}/examples/${_example}/*.ad[bs] \
+		${STAGEDIR}${EXAMPLESDIR}/${_example}
+.  if ${_example} == pong
+	${INSTALL_PROGRAM} ${WRKSRC}/examples/${_example}/pong \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${_example}
+.  elif ${_example} == renderwindow
+	${INSTALL_PROGRAM} ${WRKSRC}/examples/${_example}/main \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${_example}
+	${INSTALL_PROGRAM} ${WRKSRC}/examples/${_example}/unicode \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${_example}-unicode
+.  elif ${_example} == window
+	${INSTALL_PROGRAM} ${WRKSRC}/examples/${_example}/main \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${_example}
+	${INSTALL_PROGRAM} ${WRKSRC}/examples/${_example}/unicode \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${_example}-unicode
+.  else
+	${INSTALL_PROGRAM} ${WRKSRC}/examples/${_example}/main \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}-example-${_example}
+.  endif
+. endfor
+	${MKDIR} ${STAGEDIR}${_DATADIR_AUDIO}
+	${FIND} ${WRKSRC}/examples/ -type f -name *.ogg -exec ${INSTALL_DATA} \
+		{} ${STAGEDIR}${_DATADIR_AUDIO} \;
+	${MKDIR} ${STAGEDIR}${_DATADIR_IMAGES}
+	${FIND} ${WRKSRC}/ -type f -name *.png -exec ${INSTALL_DATA} {} ${STAGEDIR}${_DATADIR_IMAGES} \
+		\;
+	${MKDIR} ${STAGEDIR}${FONTSDIR}
+	${FIND} ${WRKSRC}/examples/ -type f -name *.ttf -exec ${INSTALL_DATA} \
+		{} ${STAGEDIR}${FONTSDIR} \;
 
 .include <bsd.port.mk>
diff --git a/devel/asfml/distinfo b/devel/asfml/distinfo
index 89155a8a8410..333813495d77 100644
--- a/devel/asfml/distinfo
+++ b/devel/asfml/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1696916674
-SHA256 (mgrojo-ASFML-v2.5.5_GH0.tar.gz) = ae2d7878de13a5d9c95068ac824554977d421ec6ffc5ffd5f3cc004d8c317d3f
-SIZE (mgrojo-ASFML-v2.5.5_GH0.tar.gz) = 1378542
+TIMESTAMP = 1787627722
+SHA256 (mgrojo-ASFML-v3.0.0_GH0.tar.gz) = a6e3226585acb038e9f04d50efe7aeb00455d4b6d4bd5d1c42a692ae76244efc
+SIZE (mgrojo-ASFML-v3.0.0_GH0.tar.gz) = 1620180
diff --git a/devel/asfml/files/asfml.gpr.in b/devel/asfml/files/asfml.gpr.in
deleted file mode 100644
index 785d8ac129a9..000000000000
--- a/devel/asfml/files/asfml.gpr.in
+++ /dev/null
@@ -1,7 +0,0 @@
-library project ASFML is
-  for Externally_Built use "true";
-  for Library_Dir      use ("../../lib/asfml");
-  for Library_Kind     use "static";
-  for Library_Name     use "asfml";
-  for Source_Dirs      use ("../../include/asfml");
-end ASFML
diff --git a/devel/asfml/files/patch-examples_example_main.adb b/devel/asfml/files/patch-examples_example_main.adb
index 3c992d4d94e5..8e208de745f5 100644
--- a/devel/asfml/files/patch-examples_example_main.adb
+++ b/devel/asfml/files/patch-examples_example_main.adb
@@ -1,11 +1,29 @@
---- examples/example/main.adb.orig	2023-10-21 00:37:05 UTC
+--- examples/example/main.adb.orig	2026-08-26 00:17:49 UTC
 +++ examples/example/main.adb
-@@ -41,7 +41,7 @@ begin
-    setTexture(Sprite, Texture, sfTrue);
+@@ -41,7 +41,7 @@ Resources: begin
+       Window := create(Mode, "SFML window");
  
-    -- Create a graphical text to display
--   Font := createFromFile("arial.ttf");
-+   Font := createFromFile("%%PREFIX_FONTDIR%%webfonts/arial.ttf");
+       -- Load a sprite to display
+-      Texture := createFromFile("../../images/ASFML_Logo.png");
++      Texture := createFromFile("%%DATADIR_IMAGES%%/ASFML_Logo.png");
  
-    Text := create;
-    setString(Text, "Hello SFML");
+       if Texture = null then
+          raise Resource_Unavailable;
+@@ -51,7 +51,7 @@ Resources: begin
+       setPosition(Sprite, (x => 200.0, y => 200.0));
+ 
+       -- Create a graphical text to display
+-      Font := createFromFile("../tuffy.ttf");
++      Font := createFromFile("%%FONTSDIR%%/tuffy.ttf");
+ 
+       if Font = null then
+          raise Resource_Unavailable;
+@@ -63,7 +63,7 @@ Resources: begin
+       setCharacterSize(Text, 50);
+ 
+       -- Load a music file to play
+-      Music := createFromFile("../doodle_pop.ogg");
++      Music := createFromFile("%%DATADIR_AUDIO%%/doodle_pop.ogg");
+ 
+       if Music = null then
+          raise Resource_Unavailable;
diff --git a/devel/asfml/files/patch-examples_pong_pong.adb b/devel/asfml/files/patch-examples_pong_pong.adb
index 74f6ff5055f7..9f5b35907122 100644
--- a/devel/asfml/files/patch-examples_pong_pong.adb
+++ b/devel/asfml/files/patch-examples_pong_pong.adb
@@ -1,20 +1,20 @@
---- examples/pong/pong.adb.orig	2023-10-21 00:38:34 UTC
+--- examples/pong/pong.adb.orig	2026-08-26 00:15:15 UTC
 +++ examples/pong/pong.adb
-@@ -42,7 +42,7 @@ begin
-    Reset (Gen);
-    Win := RenderWindow.Create(mode => (GameWidth, GameHeight, 32), title => "Ada SFML Pong");
+@@ -44,7 +44,7 @@ begin
+       (mode => (size => (GameWidth, GameHeight), bitsPerPixel => 32),
+        title => "Ada SFML Pong");
     RenderWindow.SetVerticalSyncEnabled(Win, sfTrue);
 -   BallSoundBuffer := SoundBuffer.CreateFromFile("ping_pong_8bit_beeep.ogg");
-+   BallSoundBuffer := SoundBuffer.CreateFromFile("%%DATA_AUDIO%%ping_pong_8bit_beeep.ogg");
-    BallSound := Sound.Create;
-    Sound.SetBuffer(BallSound, BallSoundBuffer);
++   BallSoundBuffer := SoundBuffer.CreateFromFile("%%DATADIR_AUDIO%%/ping_pong_8bit_beeep.ogg");
+    BallSound := Sound.Create (BallSoundBuffer);
     LeftPaddle := RectangleShape.Create;
-@@ -65,7 +65,7 @@ begin
+ 
+@@ -66,7 +66,7 @@ begin
     CircleShape.setOutlineColor (Ball, Color.sfBlack);
     CircleShape.setFillColor (Ball, Color.sfWhite);
     CircleShape.setOrigin (Ball, (0.5 * BallRadius, 0.5 * BallRadius));
 -   GameFont := Font.CreateFromFile("../renderwindow/aerial.ttf");
-+   GameFont := Font.CreateFromFile("%%DATA_FONTS%%aerial.ttf");
++   GameFont := Font.CreateFromFile("%%FONTSDIR%%/aerial.ttf");
     GameMessage := Text.Create;
     Text.setFont (GameMessage, GameFont);
     Text.setCharacterSize (GameMessage, 30);
diff --git a/devel/asfml/files/patch-examples_renderwindow_main.adb b/devel/asfml/files/patch-examples_renderwindow_main.adb
index d42844b67213..b4f37383e9f7 100644
--- a/devel/asfml/files/patch-examples_renderwindow_main.adb
+++ b/devel/asfml/files/patch-examples_renderwindow_main.adb
@@ -1,27 +1,27 @@
---- examples/renderwindow/main.adb.orig	2023-10-21 00:40:13 UTC
+--- examples/renderwindow/main.adb.orig	2026-08-26 00:11:42 UTC
 +++ examples/renderwindow/main.adb
 @@ -33,13 +33,13 @@ begin
  
  begin
  
--   Img := CreateFromFile ("logo.png");
-+   Img := CreateFromFile ("%%DATA_GRAPHICS%%logo.png");
+-   Img := CreateFromFile ("../../images/ASFML_Logo.png");
++   Img := CreateFromFile ("%%DATADIR_IMAGES%%/ASFML_Logo.png");
     if Img = null then
        Put_Line ("Could not open image");
        return;
     end if;
  
--   Icon := CreateFromFile ("sfml-icon.png");
-+   Icon := CreateFromFile ("%%DATA_GRAPHICS%%sfml-icon.png");
+-   Icon := CreateFromFile ("../../images/sfml-icon.png");
++   Icon := CreateFromFile ("%%DATADIR_IMAGES%%/sfml-icon.png");
     if Icon = null then
        Put_Line ("Could not open icon");
        Destroy (Img);
-@@ -58,7 +58,7 @@ begin
-                           y => Float (sfUint32 (Mode.Height) / 2 - GetSize (Img).y / 2)));
-    --sfSprite_SetBlendMode (Sprite, sfBlendAlpha);
+@@ -56,7 +56,7 @@ begin
+                 (x => Float (sfUint32 (Mode.size.x) / 2 - GetSize (Img).x / 2),
+                  y => Float (sfUint32 (Mode.size.y) / 2 - GetSize (Img).y / 2)));
  
 -   Font := CreateFromFile("aerial.ttf");
-+   Font := CreateFromFile("%%DATA_FONTS%%aerial.ttf");
++   Font := CreateFromFile("%%FONTSDIR%%/aerial.ttf");
     if Font = null then
        Put_Line ("Could not get font");
        Destroy (Sprite);
diff --git a/devel/asfml/files/patch-examples_renderwindow_unicode.adb b/devel/asfml/files/patch-examples_renderwindow_unicode.adb
index 988a8750d349..167e3472f1b4 100644
--- a/devel/asfml/files/patch-examples_renderwindow_unicode.adb
+++ b/devel/asfml/files/patch-examples_renderwindow_unicode.adb
@@ -1,27 +1,27 @@
---- examples/renderwindow/unicode.adb.orig	2023-10-21 00:41:27 UTC
+--- examples/renderwindow/unicode.adb.orig	2026-08-26 00:13:05 UTC
 +++ examples/renderwindow/unicode.adb
 @@ -35,13 +35,13 @@ begin
  
  begin
  
--   Img := CreateFromFile ("logo.png");
-+   Img := CreateFromFile ("%%DATA_GRAPHICS%%logo.png");
+-   Img := CreateFromFile ("../../images/ASFML_Logo.png");
++   Img := CreateFromFile ("%%DATADIR_IMAGES%%/ASFML_Logo.png");
     if Img = null then
        Put_Line ("Could not open image");
        return;
     end if;
  
--   Icon := CreateFromFile ("sfml-icon.png");
-+   Icon := CreateFromFile ("%%DATA_GRAPHICS%%sfml-icon.png");
+-   Icon := CreateFromFile ("../../images/sfml-icon.png");
++   Icon := CreateFromFile ("%%DATADIR_IMAGES%%/sfml-icon.png");
     if Icon = null then
        Put_Line ("Could not open icon");
        Destroy (Img);
 @@ -59,7 +59,7 @@ begin
-                          (x => Float (sfUint32 (Mode.Width) / 2 - GetSize (Img).x / 2),
-                           y => Float (sfUint32 (Mode.Height) / 2 - GetSize (Img).y / 2)));
+       (x => Float (sfUint32 (Mode.size.x) / 2 - GetSize (Img).x / 2),
+        y => Float (sfUint32 (Mode.size.y) / 2 - GetSize (Img).y / 2)));
  
 -   Font := CreateFromFile("DejaVuSans.ttf");
-+   Font := CreateFromFile("%%PREFIX_FONTDIR%%dejavu/DejaVuSans.ttf");
++   Font := CreateFromFile("%%FONTSDIR%%/DejaVuSans.ttf");
     if Font = null then
        Put_Line ("Could not get font");
        Destroy (Sprite);
diff --git a/devel/asfml/files/patch-examples_sound__spatial_main.adb b/devel/asfml/files/patch-examples_sound__spatial_main.adb
new file mode 100644
index 000000000000..13419e37e980
--- /dev/null
+++ b/devel/asfml/files/patch-examples_sound__spatial_main.adb
@@ -0,0 +1,11 @@
+--- examples/sound_spatial/main.adb.orig	2026-08-26 00:03:55 UTC
++++ examples/sound_spatial/main.adb
+@@ -23,7 +23,7 @@ procedure Main is
+    use type Sf.Audio.sfSoundBuffer_Ptr;
+    use type Sf.Audio.sfSound_Ptr;
+ 
+-   Buffer_Path : constant String := "../doodle_pop.ogg";
++   Buffer_Path : constant String := "%%DATADIR_AUDIO%%/doodle_pop.ogg";
+    Buffer : Sf.Audio.sfSoundBuffer_Ptr := Sound_Buffer.createFromFile (Buffer_Path);
+    The_Sound : Sf.Audio.sfSound_Ptr;
+    Spatial_Cone : constant Cone.sfSoundSourceCone :=
diff --git a/devel/asfml/pkg-plist b/devel/asfml/pkg-plist
index 4f017cb27394..8ec1ab74f66a 100644
--- a/devel/asfml/pkg-plist
+++ b/devel/asfml/pkg-plist
@@ -1,14 +1,20 @@
 %%EXAMPLES%%bin/asfml-example-clock
 %%EXAMPLES%%bin/asfml-example-example
+%%EXAMPLES%%bin/asfml-example-ftp
 %%EXAMPLES%%bin/asfml-example-graphics
 %%EXAMPLES%%bin/asfml-example-music
 %%EXAMPLES%%bin/asfml-example-opengl
 %%EXAMPLES%%bin/asfml-example-pong
 %%EXAMPLES%%bin/asfml-example-renderwindow
 %%EXAMPLES%%bin/asfml-example-renderwindow-unicode
-%%EXAMPLES%%bin/asfml-example-thread
+%%EXAMPLES%%bin/asfml-example-sound
+%%EXAMPLES%%bin/asfml-example-sound_spatial
+%%EXAMPLES%%bin/asfml-example-soundstream
+%%EXAMPLES%%bin/asfml-example-vertexbuffer
+%%EXAMPLES%%bin/asfml-example-vulkan
 %%EXAMPLES%%bin/asfml-example-window
 %%EXAMPLES%%bin/asfml-example-window-unicode
+include/asfml/sf-audio-effectprocessor.ads
 include/asfml/sf-audio-listener.ads
 include/asfml/sf-audio-music.adb
 include/asfml/sf-audio-music.ads
@@ -17,8 +23,10 @@ include/asfml/sf-audio-soundbuffer.adb
 include/asfml/sf-audio-soundbuffer.ads
 include/asfml/sf-audio-soundbufferrecorder.adb
 include/asfml/sf-audio-soundbufferrecorder.ads
+include/asfml/sf-audio-soundchannel.ads
 include/asfml/sf-audio-soundrecorder.adb
 include/asfml/sf-audio-soundrecorder.ads
+include/asfml/sf-audio-soundsourcecone.ads
 include/asfml/sf-audio-soundstatus.ads
 include/asfml/sf-audio-soundstream.ads
 include/asfml/sf-audio.ads
@@ -69,12 +77,11 @@ include/asfml/sf-network-tcplistener.ads
 include/asfml/sf-network-tcpsocket.ads
 include/asfml/sf-network-udpsocket.ads
 include/asfml/sf-network.ads
+include/asfml/sf-system-buffer.ads
 include/asfml/sf-system-clock.ads
 include/asfml/sf-system-inputstream.ads
-include/asfml/sf-system-mutex.ads
 include/asfml/sf-system-sleep.adb
 include/asfml/sf-system-sleep.ads
-include/asfml/sf-system-thread.ads
 include/asfml/sf-system-time.ads
 include/asfml/sf-system-vector2.ads
 include/asfml/sf-system-vector3.ads
@@ -89,94 +96,105 @@ include/asfml/sf-window-gl.ads
 include/asfml/sf-window-glu.ads
 include/asfml/sf-window-joystick.ads
 include/asfml/sf-window-joystickidentification.ads
+include/asfml/sf-window-keyboard.adb
 include/asfml/sf-window-keyboard.ads
 include/asfml/sf-window-mouse.ads
 include/asfml/sf-window-sensor.ads
 include/asfml/sf-window-touch.ads
 include/asfml/sf-window-videomode.ads
+include/asfml/sf-window-vulkan.adb
+include/asfml/sf-window-vulkan.ads
 include/asfml/sf-window-window.adb
 include/asfml/sf-window-window.ads
+include/asfml/sf-window-windowbase.adb
+include/asfml/sf-window-windowbase.ads
 include/asfml/sf-window-windowhandle.ads
 include/asfml/sf-window.ads
 include/asfml/sf.ads
-lib/asfml/sf-audio-listener.ali
-lib/asfml/sf-audio-music.ali
-lib/asfml/sf-audio-sound.ali
-lib/asfml/sf-audio-soundbuffer.ali
-lib/asfml/sf-audio-soundbufferrecorder.ali
-lib/asfml/sf-audio-soundrecorder.ali
-lib/asfml/sf-audio-soundstatus.ali
-lib/asfml/sf-audio-soundstream.ali
-lib/asfml/sf-audio.ali
-lib/asfml/sf-graphics-blendmode.ali
-lib/asfml/sf-graphics-circleshape.ali
-lib/asfml/sf-graphics-color.ali
-lib/asfml/sf-graphics-convexshape.ali
-lib/asfml/sf-graphics-font.ali
-lib/asfml/sf-graphics-fontinfo.ali
-lib/asfml/sf-graphics-glsl.ali
-lib/asfml/sf-graphics-glyph.ali
-lib/asfml/sf-graphics-image.ali
-lib/asfml/sf-graphics-primitivetype.ali
-lib/asfml/sf-graphics-rect.ali
-lib/asfml/sf-graphics-rectangleshape.ali
-lib/asfml/sf-graphics-renderstates.ali
-lib/asfml/sf-graphics-rendertexture.ali
-lib/asfml/sf-graphics-renderwindow.ali
-lib/asfml/sf-graphics-shader.ali
-lib/asfml/sf-graphics-shape.ali
-lib/asfml/sf-graphics-sprite.ali
-lib/asfml/sf-graphics-text.ali
-lib/asfml/sf-graphics-texture.ali
-lib/asfml/sf-graphics-transform.ali
-lib/asfml/sf-graphics-transformable.ali
-lib/asfml/sf-graphics-vertex.ali
-lib/asfml/sf-graphics-vertexarray.ali
-lib/asfml/sf-graphics-vertexbuffer.ali
-lib/asfml/sf-graphics-view.ali
-lib/asfml/sf-graphics.ali
-lib/asfml/sf-network-ftp.ali
-lib/asfml/sf-network-http.ali
-lib/asfml/sf-network-ipaddress.ali
-lib/asfml/sf-network-packet.ali
-lib/asfml/sf-network-socketselector.ali
-lib/asfml/sf-network-socketstatus.ali
-lib/asfml/sf-network-tcplistener.ali
-lib/asfml/sf-network-tcpsocket.ali
-lib/asfml/sf-network-udpsocket.ali
-lib/asfml/sf-network.ali
-lib/asfml/sf-system-clock.ali
-lib/asfml/sf-system-inputstream.ali
-lib/asfml/sf-system-mutex.ali
-lib/asfml/sf-system-sleep.ali
-lib/asfml/sf-system-thread.ali
-lib/asfml/sf-system-time.ali
-lib/asfml/sf-system-vector2.ali
-lib/asfml/sf-system-vector3.ali
-lib/asfml/sf-system.ali
-lib/asfml/sf-window-clipboard.ali
-lib/asfml/sf-window-context.ali
-lib/asfml/sf-window-cursor.ali
-lib/asfml/sf-window-event.ali
-lib/asfml/sf-window-gl.ali
-lib/asfml/sf-window-glu.ali
-lib/asfml/sf-window-joystick.ali
-lib/asfml/sf-window-joystickidentification.ali
-lib/asfml/sf-window-keyboard.ali
-lib/asfml/sf-window-mouse.ali
-lib/asfml/sf-window-sensor.ali
-lib/asfml/sf-window-touch.ali
-lib/asfml/sf-window-videomode.ali
-lib/asfml/sf-window-window.ali
-lib/asfml/sf-window-windowhandle.ali
-lib/asfml/sf-window.ali
-lib/asfml/sf.ali
-lib/libasfml.a
+lib/asfml/libasfml.a
+libdata/asfml/sf-audio-effectprocessor.ali
+libdata/asfml/sf-audio-listener.ali
+libdata/asfml/sf-audio-music.ali
+libdata/asfml/sf-audio-sound.ali
+libdata/asfml/sf-audio-soundbuffer.ali
+libdata/asfml/sf-audio-soundbufferrecorder.ali
+libdata/asfml/sf-audio-soundchannel.ali
+libdata/asfml/sf-audio-soundrecorder.ali
+libdata/asfml/sf-audio-soundsourcecone.ali
+libdata/asfml/sf-audio-soundstatus.ali
+libdata/asfml/sf-audio-soundstream.ali
+libdata/asfml/sf-audio.ali
+libdata/asfml/sf-graphics-blendmode.ali
+libdata/asfml/sf-graphics-circleshape.ali
+libdata/asfml/sf-graphics-color.ali
+libdata/asfml/sf-graphics-convexshape.ali
+libdata/asfml/sf-graphics-font.ali
+libdata/asfml/sf-graphics-fontinfo.ali
+libdata/asfml/sf-graphics-glsl.ali
+libdata/asfml/sf-graphics-glyph.ali
+libdata/asfml/sf-graphics-image.ali
+libdata/asfml/sf-graphics-primitivetype.ali
+libdata/asfml/sf-graphics-rect.ali
+libdata/asfml/sf-graphics-rectangleshape.ali
+libdata/asfml/sf-graphics-renderstates.ali
+libdata/asfml/sf-graphics-rendertexture.ali
+libdata/asfml/sf-graphics-renderwindow.ali
+libdata/asfml/sf-graphics-shader.ali
+libdata/asfml/sf-graphics-shape.ali
+libdata/asfml/sf-graphics-sprite.ali
+libdata/asfml/sf-graphics-text.ali
+libdata/asfml/sf-graphics-texture.ali
+libdata/asfml/sf-graphics-transform.ali
+libdata/asfml/sf-graphics-transformable.ali
+libdata/asfml/sf-graphics-vertex.ali
+libdata/asfml/sf-graphics-vertexarray.ali
+libdata/asfml/sf-graphics-vertexbuffer.ali
+libdata/asfml/sf-graphics-view.ali
+libdata/asfml/sf-graphics.ali
+libdata/asfml/sf-network-ftp.ali
+libdata/asfml/sf-network-http.ali
+libdata/asfml/sf-network-ipaddress.ali
+libdata/asfml/sf-network-packet.ali
+libdata/asfml/sf-network-socketselector.ali
+libdata/asfml/sf-network-socketstatus.ali
+libdata/asfml/sf-network-tcplistener.ali
+libdata/asfml/sf-network-tcpsocket.ali
+libdata/asfml/sf-network-udpsocket.ali
+libdata/asfml/sf-network.ali
+libdata/asfml/sf-system-buffer.ali
+libdata/asfml/sf-system-clock.ali
+libdata/asfml/sf-system-inputstream.ali
+libdata/asfml/sf-system-sleep.ali
+libdata/asfml/sf-system-time.ali
+libdata/asfml/sf-system-vector2.ali
+libdata/asfml/sf-system-vector3.ali
+libdata/asfml/sf-system.ali
+libdata/asfml/sf-window-clipboard.ali
+libdata/asfml/sf-window-context.ali
+libdata/asfml/sf-window-cursor.ali
+libdata/asfml/sf-window-event.ali
+libdata/asfml/sf-window-gl.ali
+libdata/asfml/sf-window-glu.ali
+libdata/asfml/sf-window-joystick.ali
+libdata/asfml/sf-window-joystickidentification.ali
+libdata/asfml/sf-window-keyboard.ali
+libdata/asfml/sf-window-mouse.ali
+libdata/asfml/sf-window-sensor.ali
+libdata/asfml/sf-window-touch.ali
+libdata/asfml/sf-window-videomode.ali
+libdata/asfml/sf-window-vulkan.ali
+libdata/asfml/sf-window-window.ali
+libdata/asfml/sf-window-windowbase.ali
+libdata/asfml/sf-window-windowhandle.ali
+libdata/asfml/sf-window.ali
+libdata/asfml/sf.ali
 %%DOCS%%%%DOCSDIR%%/blank.html
 %%DOCS%%%%DOCSDIR%%/docs/sf___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio___spec.js
+%%DOCS%%%%DOCSDIR%%/docs/sf__audio__effectprocessor___spec.html
+%%DOCS%%%%DOCSDIR%%/docs/sf__audio__effectprocessor___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__listener___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__listener___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__music___spec.html
@@ -187,8 +205,12 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundbuffer___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundbufferrecorder___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundbufferrecorder___spec.js
+%%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundchannel___spec.html
+%%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundchannel___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundrecorder___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundrecorder___spec.js
+%%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundsourcecone___spec.html
+%%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundsourcecone___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundstatus___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundstatus___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__audio__soundstream___spec.html
@@ -283,6 +305,8 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/docs/sf__network__udpsocket___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__system___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__system___spec.js
+%%DOCS%%%%DOCSDIR%%/docs/sf__system__buffer___spec.html
+%%DOCS%%%%DOCSDIR%%/docs/sf__system__buffer___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__system__clock___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__system__clock___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__system__inputstream___spec.html
@@ -327,8 +351,12 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__touch___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__videomode___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__videomode___spec.js
+%%DOCS%%%%DOCSDIR%%/docs/sf__window__vulkan___spec.html
+%%DOCS%%%%DOCSDIR%%/docs/sf__window__vulkan___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__window___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__window___spec.js
+%%DOCS%%%%DOCSDIR%%/docs/sf__window__windowbase___spec.html
+%%DOCS%%%%DOCSDIR%%/docs/sf__window__windowbase___spec.js
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__windowhandle___spec.html
 %%DOCS%%%%DOCSDIR%%/docs/sf__window__windowhandle___spec.js
 %%DOCS%%%%DOCSDIR%%/documentation_index.js
@@ -353,6 +381,8 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/inheritance_index.html
 %%DOCS%%%%DOCSDIR%%/inheritance_index.js
 %%DOCS%%%%DOCSDIR%%/source_file_index.js
+%%DOCS%%%%DOCSDIR%%/srcs/sf-audio-effectprocessor.ads.html
+%%DOCS%%%%DOCSDIR%%/srcs/sf-audio-effectprocessor.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-listener.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-listener.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-music.ads.html
@@ -363,8 +393,12 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundbuffer.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundbufferrecorder.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundbufferrecorder.ads.js
+%%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundchannel.ads.html
+%%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundchannel.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundrecorder.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundrecorder.ads.js
+%%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundsourcecone.ads.html
+%%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundsourcecone.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundstatus.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundstatus.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-audio-soundstream.ads.html
@@ -445,6 +479,8 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/srcs/sf-network-udpsocket.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-network.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-network.ads.js
+%%DOCS%%%%DOCSDIR%%/srcs/sf-system-buffer.ads.html
+%%DOCS%%%%DOCSDIR%%/srcs/sf-system-buffer.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-system-clock.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-system-clock.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-system-inputstream.ads.html
@@ -489,30 +525,25 @@ lib/libasfml.a
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-touch.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-videomode.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-videomode.ads.js
+%%DOCS%%%%DOCSDIR%%/srcs/sf-window-vulkan.ads.html
+%%DOCS%%%%DOCSDIR%%/srcs/sf-window-vulkan.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-window.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-window.ads.js
+%%DOCS%%%%DOCSDIR%%/srcs/sf-window-windowbase.ads.html
+%%DOCS%%%%DOCSDIR%%/srcs/sf-window-windowbase.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-windowhandle.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window-windowhandle.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf-window.ads.js
 %%DOCS%%%%DOCSDIR%%/srcs/sf.ads.html
 %%DOCS%%%%DOCSDIR%%/srcs/sf.ads.js
+%%EXAMPLES%%%%DATADIR%%/audio/doodle_pop.ogg
 %%EXAMPLES%%%%DATADIR%%/audio/ping_pong_8bit_beeep.ogg
-%%EXAMPLES%%%%DATADIR%%/fonts/aerial.ttf
-%%EXAMPLES%%%%DATADIR%%/graphics/icon64x64.png
-%%EXAMPLES%%%%DATADIR%%/graphics/logo.png
-%%EXAMPLES%%%%DATADIR%%/graphics/sfml-icon.png
-%%EXAMPLES%%%%EXAMPLESDIR%%/clock.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/example.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/graphics.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/music.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/opengl.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/pong.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/renderwindow-unicode.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/renderwindow.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/thread.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/thread_func.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/thread_func.ads
-%%EXAMPLES%%%%EXAMPLESDIR%%/window-unicode.adb
-%%EXAMPLES%%%%EXAMPLESDIR%%/window.adb
+%%EXAMPLES%%%%DATADIR%%/images/ASFML_Logo.png
+%%EXAMPLES%%%%DATADIR%%/images/icon64x64.png
+%%EXAMPLES%%%%DATADIR%%/images/logo.png
+%%EXAMPLES%%%%DATADIR%%/images/sfml-icon.png
+%%EXAMPLES%%%%FONTSDIR%%/DejaVuSans.ttf
+%%EXAMPLES%%%%FONTSDIR%%/aerial.ttf
+%%EXAMPLES%%%%FONTSDIR%%/tuffy.ttf
 share/gpr/asfml.gpr