aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlastair Hogge <agh@riseup.net>2026-08-30 06:26:38 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2026-09-02 10:49:37 +0000
commitdbfa9f04377fb4df340c26648cc09c9a8c3b1273 (patch)
treeb9f35accf4485161299c4148a914f73ff5f7f79b
parent0d76b81f912c8b776223fbd67aca7f7d72067e08 (diff)
devel/sfml: Update to 3.0.0; migrate to multimedia
Update to 3.0.0: * Add examples * Expand ${CATEGORIES}, and move to correct category, multimedia/ * Update compiler to C++ 2017 in ${USES} * Mark DOXYGEN broken because the build does not produce a required tag file * port(clippy|fmt|lint) maintenance * submitter becomes maintainer Changelog: https://github.com/SFML/SFML/releases/tag/3.0.0 PR: 297879
-rw-r--r--MOVED1
-rw-r--r--devel/sfml/Makefile62
-rw-r--r--devel/sfml/distinfo3
-rw-r--r--multimedia/Makefile1
-rw-r--r--multimedia/sfml3/Makefile96
-rw-r--r--multimedia/sfml3/distinfo3
-rw-r--r--multimedia/sfml3/files/patch-CMakeLists.txt21
-rw-r--r--multimedia/sfml3/files/patch-examples_event__handling_EventHandling.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_island_Island.cpp20
-rw-r--r--multimedia/sfml3/files/patch-examples_joystick_Joystick.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_keyboard_Keyboard.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_opengl_OpenGL.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_raw__input_RawInput.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_shader_Shader.cpp94
-rw-r--r--multimedia/sfml3/files/patch-examples_sound_Sound.cpp20
-rw-r--r--multimedia/sfml3/files/patch-examples_sound__effects_SoundEffects.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_tennis_Tennis.cpp11
-rw-r--r--multimedia/sfml3/files/patch-examples_vulkan_Vulkan.cpp29
-rw-r--r--multimedia/sfml3/files/patch-include_SFML_System_String.hpp (renamed from devel/sfml/files/patch-include_SFML_System_String.hpp)0
-rw-r--r--multimedia/sfml3/pkg-descr (renamed from devel/sfml/pkg-descr)0
-rw-r--r--multimedia/sfml3/pkg-plist (renamed from devel/sfml/pkg-plist)84
21 files changed, 423 insertions, 88 deletions
diff --git a/MOVED b/MOVED
index e8698e7ac11c..66f228ea1130 100644
--- a/MOVED
+++ b/MOVED
@@ -5591,3 +5591,4 @@ www/py-django42||2026-08-31|Has expired: Django 4.2 is now in Extended Support,
www/py-seafdav||2026-08-31|Removed, depended on net-mgmt/seafile-server
mail/james||2026-08-31|Has expired: This is a version that is over 10 years old and has multiple vulnerabilities
www/py-seafobj||2026-08-31|Removed, depended on net-mgmt/seafile-server
+devel/sfml|multimedia/sfml3|2026-09-02|SFML move to appropriate catagory and suffix name with major version number, 3
diff --git a/devel/sfml/Makefile b/devel/sfml/Makefile
deleted file mode 100644
index 33bdc3e06787..000000000000
--- a/devel/sfml/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-PORTNAME= SFML
-DISTVERSION= 2.6.2
-CATEGORIES= devel
-
-MAINTAINER= ports@FreeBSD.org
-COMMENT= Simple and Fast Multimedia Library
-WWW= https://www.sfml-dev.org/ \
- https://github.com/SFML/SFML
-
-LICENSE= ZLIB
-LICENSE_FILE= ${WRKSRC}/license.md
-
-USES= cmake compiler:c++11-lang
-USE_GITHUB= yes
-CMAKE_ON= SFML_USE_SYSTEM_DEPS
-USE_LDCONFIG= yes
-
-CONFLICTS= sfml251
-
-PORTDATA= *
-PORTDOCS= *
-
-PLIST_SUB= LONGVERSION=${DISTVERSION} \
- SHORTVERSION=${DISTVERSION:R}
-
-OPTIONS_DEFINE= DOCS DOXYGEN
-OPTIONS_GROUP= MODULES
-OPTIONS_GROUP_MODULES= AUDIO GRAPHICS NETWORK WINDOW
-OPTIONS_DEFAULT= ${OPTIONS_GROUP_MODULES}
-OPTIONS_SUB= yes
-
-MODULES_DESC= SFML modules
-
-AUDIO_DESC= SFML Audio module
-AUDIO_LIB_DEPENDS= libFLAC.so:audio/flac \
- libogg.so:audio/libogg \
- libvorbis.so:audio/libvorbis
-AUDIO_USES= openal:al
-AUDIO_CMAKE_BOOL= SFML_BUILD_AUDIO
-
-DOXYGEN_IMPLIES= DOCS
-DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen
-DOXYGEN_CMAKE_BOOL= SFML_BUILD_DOC
-
-GRAPHICS_DESC= SFML Graphics module
-GRAPHICS_IMPLIES= WINDOW
-GRAPHICS_LIB_DEPENDS= libfreetype.so:print/freetype2
-GRAPHICS_CMAKE_BOOL= SFML_BUILD_GRAPHICS
-
-NETWORK_DESC= SFML Network module
-NETWORK_CMAKE_BOOL= SFML_BUILD_NETWORK
-
-WINDOW_DESC= SFML Window module
-WINDOW_USES= gl xorg
-WINDOW_USE= GL=gl XORG=x11,xcursor,xrandr
-WINDOW_CMAKE_BOOL= SFML_BUILD_WINDOW
-
-post-install-DOCS-on:
- @${RM} ${STAGEDIR}${DOCSDIR}/license.md
- ${INSTALL_DATA} ${WRKSRC}/changelog.md ${STAGEDIR}${DOCSDIR}
-
-.include <bsd.port.mk>
diff --git a/devel/sfml/distinfo b/devel/sfml/distinfo
deleted file mode 100644
index 8d0b3b95beec..000000000000
--- a/devel/sfml/distinfo
+++ /dev/null
@@ -1,3 +0,0 @@
-TIMESTAMP = 1731608442
-SHA256 (SFML-SFML-2.6.2_GH0.tar.gz) = 15ff4d608a018f287c6a885db0a2da86ea389e516d2323629e4d4407a7ce047f
-SIZE (SFML-SFML-2.6.2_GH0.tar.gz) = 28624288
diff --git a/multimedia/Makefile b/multimedia/Makefile
index b4fc16c496a5..d59990b0b536 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -345,6 +345,7 @@
SUBDIR += rubygem-streamio-ffmpeg
SUBDIR += scte35dump
SUBDIR += sfml2
+ SUBDIR += sfml3
SUBDIR += shaka-packager
SUBDIR += shotcut
SUBDIR += shotcut-qt6
diff --git a/multimedia/sfml3/Makefile b/multimedia/sfml3/Makefile
new file mode 100644
index 000000000000..85a547f51196
--- /dev/null
+++ b/multimedia/sfml3/Makefile
@@ -0,0 +1,96 @@
+PORTNAME= SFML
+DISTVERSION= 3.0.0
+CATEGORIES= multimedia audio devel games
+
+MAINTAINER= agh@riseup.net
+COMMENT= Simple and Fast Multimedia Library
+WWW= https://github.com/SFML/SFML \
+ https://www.sfml-dev.org/
+
+LICENSE= ZLIB
+LICENSE_FILE= ${WRKSRC}/license.md
+
+USES= cmake compiler:c++17-lang
+USE_GITHUB= yes
+USE_LDCONFIG= yes
+
+CMAKE_ON= BUILD_SHARED_LIBS SFML_USE_SYSTEM_DEPS
+
+CONFLICTS= sfml2
+
+EXTRACT_AFTER_ARGS= ${_DIST_EXCLUDES:S,^,--exclude ,}
+
+PLIST_SUB= SO_RELEASE=${_SO_RELEASE} \
+ SO_VERSION=${_SO_VERSION}
+PORTDATA= *
+PORTDOCS= *
+PORTEXAMPLES= *
+
+OPTIONS_DEFINE= DOCS DOXYGEN EXAMPLES
+OPTIONS_DEFAULT= ${OPTIONS_GROUP_MODULES}
+OPTIONS_GROUP= MODULES
+OPTIONS_GROUP_MODULES= AUDIO GRAPHICS NETWORK WINDOW
+OPTIONS_SUB= yes
+
+AUDIO_DESC= SFML Audio module
+GRAPHICS_DESC= SFML Graphics module
+MODULES_DESC= SFML modules
+NETWORK_DESC= SFML Network module
+WINDOW_DESC= SFML Window module
+
+AUDIO_BUILD_DEPENDS= ${LOCALBASE}/include/miniaudio/miniaudio.h:audio/miniaudio
+AUDIO_LIB_DEPENDS= libFLAC.so:audio/flac \
+ libogg.so:audio/libogg \
+ libvorbis.so:audio/libvorbis
+AUDIO_CMAKE_BOOL= SFML_BUILD_AUDIO
+DOXYGEN_IMPLIES= DOCS
+DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen
+DOXYGEN_BROKEN= option DOXYGEN breaks the build failing to generate doxygen file SFML.tag
+DOXYGEN_CMAKE_BOOL= SFML_BUILD_DOC
+EXAMPLES_CMAKE_BOOL= SFML_BUILD_EXAMPLES
+GRAPHICS_IMPLIES= WINDOW
+GRAPHICS_LIB_DEPENDS= libfreetype.so:print/freetype2
+GRAPHICS_CMAKE_BOOL= SFML_BUILD_GRAPHICS
+NETWORK_CMAKE_BOOL= SFML_BUILD_NETWORK
+WINDOW_USES= gl xorg
+WINDOW_USE= GL=gl \
+ XORG=x11,xcursor,xext,xfixes,xi,xrandr,xrender
+WINDOW_CMAKE_BOOL= SFML_BUILD_WINDOW
+
+_DIST_EXCLUDES= .clang-format .clang-tidy .editorconfig .gitattributes \
+ .github .gitignore changelog.md CONTRIBUTING.md \
+ examples/android examples/cocoa examples/win32 \
+ migration.md readme.md
+_EXAMPLES_ASSETS= -type f -not -name '*.bak' -not -name '*.cpp' -not \
+ -name '*.h' -not -name '*.hpp' -not -name '*.orig' -not \
+ -name CMakeLists.txt
+_EXAMPLES_PROGRAM= -depth 1 -type f -and -not -type d -and -perm -o=+x
+_EXAMPLES_SOURCE= "-not -name *.bak -not -name *.orig -not -regex .*assets.* -not -name asset_licenses.md -not -name CMakeLists.txt -not -regex .*resources.*"
+_SO_RELEASE= ${DISTVERSION:R}
+_SO_VERSION= ${DISTVERSION}
+
+post-patch:
+ ${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}|g' \
+ ${WRKSRC}/examples/event_handling/EventHandling.cpp \
+ ${WRKSRC}/examples/island/Island.cpp \
+ ${WRKSRC}/examples/joystick/Joystick.cpp \
+ ${WRKSRC}/examples/keyboard/Keyboard.cpp \
+ ${WRKSRC}/examples/opengl/OpenGL.cpp \
+ ${WRKSRC}/examples/raw_input/RawInput.cpp \
+ ${WRKSRC}/examples/shader/Shader.cpp \
+ ${WRKSRC}/examples/sound_effects/SoundEffects.cpp \
+ ${WRKSRC}/examples/sound/Sound.cpp \
+ ${WRKSRC}/examples/tennis/Tennis.cpp \
+ ${WRKSRC}/examples/vulkan/Vulkan.cpp
+
+post-install-EXAMPLES-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+ ${FIND} ${WRKSRC}/examples ${_EXAMPLES_ASSETS} -execdir ${INSTALL_DATA} \
+ {} ${STAGEDIR}${DATADIR}/{} \;
+ (cd ${WRKSRC}/examples && \
+ ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} ${_EXAMPLES_SOURCE})
+ ${FIND} ${BUILD_WRKSRC}/bin ${_EXAMPLES_PROGRAM} -execdir ${INSTALL_PROGRAM} \
+ {} ${STAGEDIR}${PREFIX}/bin/${PORTNAME:tl}-example-{} \
+ \;
+
+.include <bsd.port.mk>
diff --git a/multimedia/sfml3/distinfo b/multimedia/sfml3/distinfo
new file mode 100644
index 000000000000..7095f9f30abd
--- /dev/null
+++ b/multimedia/sfml3/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1787466631
+SHA256 (SFML-SFML-3.0.0_GH0.tar.gz) = 37506fafbd618b1f8e153bbca8811e62203a70b32a1183279fb9612fd0501d2b
+SIZE (SFML-SFML-3.0.0_GH0.tar.gz) = 4379832
diff --git a/multimedia/sfml3/files/patch-CMakeLists.txt b/multimedia/sfml3/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..919469350734
--- /dev/null
+++ b/multimedia/sfml3/files/patch-CMakeLists.txt
@@ -0,0 +1,21 @@
+--- CMakeLists.txt.orig 2026-08-23 07:13:30 UTC
++++ CMakeLists.txt
+@@ -356,9 +356,6 @@ endif()
+ COMPONENT devel)
+ endif()
+
+-install(FILES license.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
+-install(FILES readme.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
+-
+ # install the Xcode templates if requested
+ if(SFML_INSTALL_XCODE_TEMPLATES)
+ # configure the templates plist files
+@@ -386,8 +383,6 @@ set(CPACK_PACKAGE_FILE_NAME "SFML-${PROJECT_VERSION}-$
+ set(CPACK_PACKAGE_NAME_SUMMARY "Simple and Fast Multimedia Library")
+ set(CPACK_PACKAGE_VENDOR "SFML Team")
+ set(CPACK_PACKAGE_FILE_NAME "SFML-${PROJECT_VERSION}-${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}-${CMAKE_BUILD_TYPE}")
+-set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/readme.md")
+-set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.md")
+ set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
+ set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
+ set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
diff --git a/multimedia/sfml3/files/patch-examples_event__handling_EventHandling.cpp b/multimedia/sfml3/files/patch-examples_event__handling_EventHandling.cpp
new file mode 100644
index 000000000000..6d3706d2dd63
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_event__handling_EventHandling.cpp
@@ -0,0 +1,11 @@
+--- examples/event_handling/EventHandling.cpp.orig 2026-08-25 01:35:09 UTC
++++ examples/event_handling/EventHandling.cpp
+@@ -316,7 +316,7 @@ class Application (private)
+ // Member data
+ ////////////////////////////////////////////////////////////
+ sf::RenderWindow m_window{sf::VideoMode({800u, 600u}), "SFML Event Handling", sf::Style::Titlebar | sf::Style::Close};
+- const sf::Font m_font{"resources/tuffy.ttf"};
++ const sf::Font m_font{"%%DATADIR%%/tuffy.ttf"};
+ sf::Text m_logText{m_font, "", 20};
+ sf::Text m_handlerText{m_font, "Current Handler: Classic", 24};
+ sf::Text m_instructions{m_font, "Press Enter to change handler type", 24};
diff --git a/multimedia/sfml3/files/patch-examples_island_Island.cpp b/multimedia/sfml3/files/patch-examples_island_Island.cpp
new file mode 100644
index 000000000000..736b646c389d
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_island_Island.cpp
@@ -0,0 +1,20 @@
+--- examples/island/Island.cpp.orig 2026-08-25 01:38:23 UTC
++++ examples/island/Island.cpp
+@@ -430,7 +430,7 @@ int main()
+ sf::RenderWindow window(sf::VideoMode(windowSize), "SFML Island", sf::Style::Titlebar | sf::Style::Close);
+ window.setVerticalSyncEnabled(true);
+
+- const sf::Font font("resources/tuffy.ttf");
++ const sf::Font font("%%DATADIR%%/tuffy.ttf");
+
+ // Create all of our graphics resources
+ sf::Text hudText(font);
+@@ -459,7 +459,7 @@ int main()
+ {
+ statusText.setString("Shaders and/or Vertex Buffers Unsupported");
+ }
+- else if (!terrainShader.loadFromFile("resources/terrain.vert", "resources/terrain.frag"))
++ else if (!terrainShader.loadFromFile("%%DATADIR%%/terrain.vert", "%%DATADIR%%/terrain.frag"))
+ {
+ statusText.setString("Failed to load shader program");
+ }
diff --git a/multimedia/sfml3/files/patch-examples_joystick_Joystick.cpp b/multimedia/sfml3/files/patch-examples_joystick_Joystick.cpp
new file mode 100644
index 000000000000..3feccbee0165
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_joystick_Joystick.cpp
@@ -0,0 +1,11 @@
+--- examples/joystick/Joystick.cpp.orig 2026-08-25 01:38:49 UTC
++++ examples/joystick/Joystick.cpp
+@@ -94,7 +94,7 @@ int main()
+ window.setVerticalSyncEnabled(true);
+
+ // Open the text font
+- const sf::Font font("resources/tuffy.ttf");
++ const sf::Font font("%%DATADIR%%/tuffy.ttf");
+
+ // Set up our string conversion parameters
+ sstr.precision(2);
diff --git a/multimedia/sfml3/files/patch-examples_keyboard_Keyboard.cpp b/multimedia/sfml3/files/patch-examples_keyboard_Keyboard.cpp
new file mode 100644
index 000000000000..d0797bc2c8c9
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_keyboard_Keyboard.cpp
@@ -0,0 +1,11 @@
+--- examples/keyboard/Keyboard.cpp.orig 2026-08-25 01:39:08 UTC
++++ examples/keyboard/Keyboard.cpp
+@@ -22,7 +22,7 @@ std::filesystem::path resourcesDir()
+ #ifdef SFML_SYSTEM_IOS
+ return "";
+ #else
+- return "resources";
++ return "%%DATADIR%%";
+ #endif
+ }
+
diff --git a/multimedia/sfml3/files/patch-examples_opengl_OpenGL.cpp b/multimedia/sfml3/files/patch-examples_opengl_OpenGL.cpp
new file mode 100644
index 000000000000..ec83efc50094
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_opengl_OpenGL.cpp
@@ -0,0 +1,11 @@
+--- examples/opengl/OpenGL.cpp.orig 2026-08-25 01:39:16 UTC
++++ examples/opengl/OpenGL.cpp
+@@ -27,7 +27,7 @@ std::filesystem::path resourcesDir()
+ #ifdef SFML_SYSTEM_IOS
+ return "";
+ #else
+- return "resources";
++ return "%%DATADIR%%";
+ #endif
+ }
+ } // namespace
diff --git a/multimedia/sfml3/files/patch-examples_raw__input_RawInput.cpp b/multimedia/sfml3/files/patch-examples_raw__input_RawInput.cpp
new file mode 100644
index 000000000000..dfff636a7efb
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_raw__input_RawInput.cpp
@@ -0,0 +1,11 @@
+--- examples/raw_input/RawInput.cpp.orig 2026-08-25 01:39:32 UTC
++++ examples/raw_input/RawInput.cpp
+@@ -19,7 +19,7 @@ int main()
+ window.setVerticalSyncEnabled(true);
+
+ // Open the application font
+- const sf::Font font("resources/tuffy.ttf");
++ const sf::Font font("%%DATADIR%%/tuffy.ttf");
+
+ // Create the mouse position text
+ sf::Text mousePosition(font, "", 20);
diff --git a/multimedia/sfml3/files/patch-examples_shader_Shader.cpp b/multimedia/sfml3/files/patch-examples_shader_Shader.cpp
new file mode 100644
index 000000000000..ffbe872c43a6
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_shader_Shader.cpp
@@ -0,0 +1,94 @@
+--- examples/shader/Shader.cpp.orig 2026-08-25 01:39:40 UTC
++++ examples/shader/Shader.cpp
+@@ -279,11 +279,11 @@ std::optional<Pixelate> tryLoadPixelate()
+ std::optional<Pixelate> tryLoadPixelate()
+ {
+ sf::Texture texture;
+- if (!texture.loadFromFile("resources/background.jpg"))
++ if (!texture.loadFromFile("%%DATADIR%%/background.jpg"))
+ return std::nullopt;
+
+ sf::Shader shader;
+- if (!shader.loadFromFile("resources/pixelate.frag", sf::Shader::Type::Fragment))
++ if (!shader.loadFromFile("%%DATADIR%%/pixelate.frag", sf::Shader::Type::Fragment))
+ return std::nullopt;
+
+ return std::make_optional<Pixelate>(std::move(texture), std::move(shader));
+@@ -292,7 +292,7 @@ std::optional<WaveBlur> tryLoadWaveBlur(const sf::Font
+ std::optional<WaveBlur> tryLoadWaveBlur(const sf::Font& font)
+ {
+ sf::Shader shader;
+- if (!shader.loadFromFile("resources/wave.vert", "resources/blur.frag"))
++ if (!shader.loadFromFile("%%DATADIR%%/wave.vert", "%%DATADIR%%/blur.frag"))
+ return std::nullopt;
+
+ return std::make_optional<WaveBlur>(font, std::move(shader));
+@@ -301,7 +301,7 @@ std::optional<StormBlink> tryLoadStormBlink()
+ std::optional<StormBlink> tryLoadStormBlink()
+ {
+ sf::Shader shader;
+- if (!shader.loadFromFile("resources/storm.vert", "resources/blink.frag"))
++ if (!shader.loadFromFile("%%DATADIR%%/storm.vert", "%%DATADIR%%/blink.frag"))
+ return std::nullopt;
+
+ return std::make_optional<StormBlink>(std::move(shader));
+@@ -318,21 +318,21 @@ std::optional<Edge> tryLoadEdge()
+
+ // Load the background texture
+ sf::Texture backgroundTexture;
+- if (!backgroundTexture.loadFromFile("resources/sfml.png"))
++ if (!backgroundTexture.loadFromFile("%%DATADIR%%/sfml.png"))
+ return std::nullopt;
+
+ backgroundTexture.setSmooth(true);
+
+ // Load the entity texture
+ sf::Texture entityTexture;
+- if (!entityTexture.loadFromFile("resources/devices.png"))
++ if (!entityTexture.loadFromFile("%%DATADIR%%/devices.png"))
+ return std::nullopt;
+
+ entityTexture.setSmooth(true);
+
+ // Load the shader
+ sf::Shader shader;
+- if (!shader.loadFromFile("resources/edge.frag", sf::Shader::Type::Fragment))
++ if (!shader.loadFromFile("%%DATADIR%%/edge.frag", sf::Shader::Type::Fragment))
+ return std::nullopt;
+
+ shader.setUniform("texture", sf::Shader::CurrentTexture);
+@@ -348,14 +348,14 @@ std::optional<Geometry> tryLoadGeometry()
+
+ // Load the logo texture
+ sf::Texture logoTexture;
+- if (!logoTexture.loadFromFile("resources/logo.png"))
++ if (!logoTexture.loadFromFile("%%DATADIR%%/logo.png"))
+ return std::nullopt;
+
+ logoTexture.setSmooth(true);
+
+ // Load the shader
+ sf::Shader shader;
+- if (!shader.loadFromFile("resources/billboard.vert", "resources/billboard.geom", "resources/billboard.frag"))
++ if (!shader.loadFromFile("%%DATADIR%%/billboard.vert", "%%DATADIR%%/billboard.geom", "%%DATADIR%%/billboard.frag"))
+ return std::nullopt;
+
+ shader.setUniform("texture", sf::Shader::CurrentTexture);
+@@ -389,7 +389,7 @@ int main()
+ window.setVerticalSyncEnabled(true);
+
+ // Open the application font
+- const sf::Font font("resources/tuffy.ttf");
++ const sf::Font font("%%DATADIR%%/tuffy.ttf");
+
+ // Create the effects
+ std::optional pixelateEffect = tryLoadPixelate();
+@@ -413,7 +413,7 @@ int main()
+ std::size_t current = 0;
+
+ // Create the messages background
+- const sf::Texture textBackgroundTexture("resources/text-background.png");
++ const sf::Texture textBackgroundTexture("%%DATADIR%%/text-background.png");
+ sf::Sprite textBackground(textBackgroundTexture);
+ textBackground.setPosition({0.f, 520.f});
+ textBackground.setColor(sf::Color(255, 255, 255, 200));
diff --git a/multimedia/sfml3/files/patch-examples_sound_Sound.cpp b/multimedia/sfml3/files/patch-examples_sound_Sound.cpp
new file mode 100644
index 000000000000..fb6e0c945c3c
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_sound_Sound.cpp
@@ -0,0 +1,20 @@
+--- examples/sound/Sound.cpp.orig 2026-08-25 01:39:50 UTC
++++ examples/sound/Sound.cpp
+@@ -15,7 +15,7 @@ void playSound()
+ void playSound()
+ {
+ // Load a sound buffer from a wav file
+- const sf::SoundBuffer buffer("resources/killdeer.wav");
++ const sf::SoundBuffer buffer("%%DATADIR%%/killdeer.wav");
+
+ // Display sound information
+ std::cout << "killdeer.wav:" << '\n'
+@@ -48,7 +48,7 @@ void playMusic(const std::filesystem::path& filename)
+ void playMusic(const std::filesystem::path& filename)
+ {
+ // Load an ogg music file
+- sf::Music music("resources" / filename);
++ sf::Music music("%%DATADIR%%" / filename);
+
+ // Display music information
+ std::cout << filename << ":" << '\n'
diff --git a/multimedia/sfml3/files/patch-examples_sound__effects_SoundEffects.cpp b/multimedia/sfml3/files/patch-examples_sound__effects_SoundEffects.cpp
new file mode 100644
index 000000000000..ff26a39c2175
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_sound__effects_SoundEffects.cpp
@@ -0,0 +1,11 @@
+--- examples/sound_effects/SoundEffects.cpp.orig 2026-08-25 01:40:03 UTC
++++ examples/sound_effects/SoundEffects.cpp
+@@ -28,7 +28,7 @@ std::filesystem::path resourcesDir()
+ #ifdef SFML_SYSTEM_IOS
+ return "";
+ #else
+- return "resources";
++ return "%%DATADIR%%";
+ #endif
+ }
+ } // namespace
diff --git a/multimedia/sfml3/files/patch-examples_tennis_Tennis.cpp b/multimedia/sfml3/files/patch-examples_tennis_Tennis.cpp
new file mode 100644
index 000000000000..69291ee2f7ed
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_tennis_Tennis.cpp
@@ -0,0 +1,11 @@
+--- examples/tennis/Tennis.cpp.orig 2026-08-25 01:40:20 UTC
++++ examples/tennis/Tennis.cpp
+@@ -23,7 +23,7 @@ std::filesystem::path resourcesDir()
+ #ifdef SFML_SYSTEM_IOS
+ return "";
+ #else
+- return "resources";
++ return "%%DATADIR%%";
+ #endif
+ }
+ } // namespace
diff --git a/multimedia/sfml3/files/patch-examples_vulkan_Vulkan.cpp b/multimedia/sfml3/files/patch-examples_vulkan_Vulkan.cpp
new file mode 100644
index 000000000000..7cff9c3be874
--- /dev/null
+++ b/multimedia/sfml3/files/patch-examples_vulkan_Vulkan.cpp
@@ -0,0 +1,29 @@
+--- examples/vulkan/Vulkan.cpp.orig 2026-08-25 01:40:29 UTC
++++ examples/vulkan/Vulkan.cpp
+@@ -908,7 +908,7 @@ class VulkanExample (public)
+ // Use the vertex shader SPIR-V code to create a vertex shader module
+ {
+ sf::FileInputStream file;
+- if (!file.open("resources/shader.vert.spv"))
++ if (!file.open("%%DATADIR%%/shader.vert.spv"))
+ {
+ vulkanAvailable = false;
+ return;
+@@ -936,7 +936,7 @@ class VulkanExample (public)
+ // Use the fragment shader SPIR-V code to create a fragment shader module
+ {
+ sf::FileInputStream file;
+- if (!file.open("resources/shader.frag.spv"))
++ if (!file.open("%%DATADIR%%/shader.frag.spv"))
+ {
+ vulkanAvailable = false;
+ return;
+@@ -1787,7 +1787,7 @@ class VulkanExample (public)
+ {
+ // Load the image data
+ sf::Image imageData;
+- if (!imageData.loadFromFile("resources/logo.png"))
++ if (!imageData.loadFromFile("%%DATADIR%%/logo.png"))
+ {
+ vulkanAvailable = false;
+ return;
diff --git a/devel/sfml/files/patch-include_SFML_System_String.hpp b/multimedia/sfml3/files/patch-include_SFML_System_String.hpp
index ae79639bd4a2..ae79639bd4a2 100644
--- a/devel/sfml/files/patch-include_SFML_System_String.hpp
+++ b/multimedia/sfml3/files/patch-include_SFML_System_String.hpp
diff --git a/devel/sfml/pkg-descr b/multimedia/sfml3/pkg-descr
index 1ff9a8306396..1ff9a8306396 100644
--- a/devel/sfml/pkg-descr
+++ b/multimedia/sfml3/pkg-descr
diff --git a/devel/sfml/pkg-plist b/multimedia/sfml3/pkg-plist
index c40d1217fe01..18e844330e17 100644
--- a/devel/sfml/pkg-plist
+++ b/multimedia/sfml3/pkg-plist
@@ -1,13 +1,33 @@
+%%EXAMPLES%%bin/sfml-example-X11Example
+%%EXAMPLES%%bin/sfml-example-event_handling
+%%EXAMPLES%%bin/sfml-example-ftp
+%%EXAMPLES%%bin/sfml-example-island
+%%EXAMPLES%%bin/sfml-example-joystick
+%%EXAMPLES%%bin/sfml-example-keyboard
+%%EXAMPLES%%bin/sfml-example-opengl
+%%EXAMPLES%%bin/sfml-example-raw_input
+%%EXAMPLES%%bin/sfml-example-shader
+%%EXAMPLES%%bin/sfml-example-sockets
+%%EXAMPLES%%bin/sfml-example-sound
+%%EXAMPLES%%bin/sfml-example-sound-capture
+%%EXAMPLES%%bin/sfml-example-sound-effects
+%%EXAMPLES%%bin/sfml-example-stencil
+%%EXAMPLES%%bin/sfml-example-tennis
+%%EXAMPLES%%bin/sfml-example-voip
+%%EXAMPLES%%bin/sfml-example-vulkan
+%%EXAMPLES%%bin/sfml-example-window
include/SFML/Audio.hpp
-include/SFML/Audio/AlResource.hpp
+include/SFML/Audio/AudioResource.hpp
include/SFML/Audio/Export.hpp
include/SFML/Audio/InputSoundFile.hpp
include/SFML/Audio/Listener.hpp
include/SFML/Audio/Music.hpp
include/SFML/Audio/OutputSoundFile.hpp
+include/SFML/Audio/PlaybackDevice.hpp
include/SFML/Audio/Sound.hpp
include/SFML/Audio/SoundBuffer.hpp
include/SFML/Audio/SoundBufferRecorder.hpp
+include/SFML/Audio/SoundChannel.hpp
include/SFML/Audio/SoundFileFactory.hpp
include/SFML/Audio/SoundFileFactory.inl
include/SFML/Audio/SoundFileReader.hpp
@@ -21,7 +41,9 @@ include/SFML/Graphics.hpp
include/SFML/Graphics/BlendMode.hpp
include/SFML/Graphics/CircleShape.hpp
include/SFML/Graphics/Color.hpp
+include/SFML/Graphics/Color.inl
include/SFML/Graphics/ConvexShape.hpp
+include/SFML/Graphics/CoordinateType.hpp
include/SFML/Graphics/Drawable.hpp
include/SFML/Graphics/Export.hpp
include/SFML/Graphics/Font.hpp
@@ -40,9 +62,11 @@ include/SFML/Graphics/RenderWindow.hpp
include/SFML/Graphics/Shader.hpp
include/SFML/Graphics/Shape.hpp
include/SFML/Graphics/Sprite.hpp
+include/SFML/Graphics/StencilMode.hpp
include/SFML/Graphics/Text.hpp
include/SFML/Graphics/Texture.hpp
include/SFML/Graphics/Transform.hpp
+include/SFML/Graphics/Transform.inl
include/SFML/Graphics/Transformable.hpp
include/SFML/Graphics/Vertex.hpp
include/SFML/Graphics/VertexArray.hpp
@@ -63,25 +87,22 @@ include/SFML/Network/TcpSocket.hpp
include/SFML/Network/UdpSocket.hpp
include/SFML/OpenGL.hpp
include/SFML/System.hpp
+include/SFML/System/Angle.hpp
+include/SFML/System/Angle.inl
include/SFML/System/Clock.hpp
include/SFML/System/Err.hpp
+include/SFML/System/Exception.hpp
include/SFML/System/Export.hpp
include/SFML/System/FileInputStream.hpp
include/SFML/System/InputStream.hpp
-include/SFML/System/Lock.hpp
include/SFML/System/MemoryInputStream.hpp
-include/SFML/System/Mutex.hpp
include/SFML/System/NativeActivity.hpp
-include/SFML/System/NonCopyable.hpp
include/SFML/System/Sleep.hpp
include/SFML/System/String.hpp
include/SFML/System/String.inl
-include/SFML/System/Thread.hpp
-include/SFML/System/Thread.inl
-include/SFML/System/ThreadLocal.hpp
-include/SFML/System/ThreadLocalPtr.hpp
-include/SFML/System/ThreadLocalPtr.inl
+include/SFML/System/SuspendAwareClock.hpp
include/SFML/System/Time.hpp
+include/SFML/System/Time.inl
include/SFML/System/Utf.hpp
include/SFML/System/Utf.inl
include/SFML/System/Vector2.hpp
@@ -94,6 +115,7 @@ include/SFML/Window/Context.hpp
include/SFML/Window/ContextSettings.hpp
include/SFML/Window/Cursor.hpp
include/SFML/Window/Event.hpp
+include/SFML/Window/Event.inl
include/SFML/Window/Export.hpp
include/SFML/Window/GlResource.hpp
include/SFML/Window/Joystick.hpp
@@ -105,28 +127,44 @@ include/SFML/Window/VideoMode.hpp
include/SFML/Window/Vulkan.hpp
include/SFML/Window/Window.hpp
include/SFML/Window/WindowBase.hpp
+include/SFML/Window/WindowBase.inl
+include/SFML/Window/WindowEnums.hpp
include/SFML/Window/WindowHandle.hpp
-include/SFML/Window/WindowStyle.hpp
+lib/cmake/SFML/FindDRM.cmake
+lib/cmake/SFML/FindEGL.cmake
+lib/cmake/SFML/FindFLAC.cmake
+lib/cmake/SFML/FindFreetype.cmake
+lib/cmake/SFML/FindGBM.cmake
+lib/cmake/SFML/FindGLES.cmake
+lib/cmake/SFML/FindUDev.cmake
+lib/cmake/SFML/FindVorbis.cmake
+%%AUDIO%%lib/cmake/SFML/SFMLAudioSharedTargets-%%CMAKE_BUILD_TYPE%%.cmake
+%%AUDIO%%lib/cmake/SFML/SFMLAudioSharedTargets.cmake
lib/cmake/SFML/SFMLConfig.cmake
-lib/cmake/SFML/SFMLConfigDependencies.cmake
lib/cmake/SFML/SFMLConfigVersion.cmake
-lib/cmake/SFML/SFMLSharedTargets-%%CMAKE_BUILD_TYPE%%.cmake
-lib/cmake/SFML/SFMLSharedTargets.cmake
+%%GRAPHICS%%lib/cmake/SFML/SFMLGraphicsSharedTargets-%%CMAKE_BUILD_TYPE%%.cmake
+%%GRAPHICS%%lib/cmake/SFML/SFMLGraphicsSharedTargets.cmake
+%%NETWORK%%lib/cmake/SFML/SFMLNetworkSharedTargets-%%CMAKE_BUILD_TYPE%%.cmake
+%%NETWORK%%lib/cmake/SFML/SFMLNetworkSharedTargets.cmake
+lib/cmake/SFML/SFMLSystemSharedTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/SFML/SFMLSystemSharedTargets.cmake
+%%WINDOW%%lib/cmake/SFML/SFMLWindowSharedTargets-%%CMAKE_BUILD_TYPE%%.cmake
+%%WINDOW%%lib/cmake/SFML/SFMLWindowSharedTargets.cmake
%%AUDIO%%lib/libsfml-audio.so
-%%AUDIO%%lib/libsfml-audio.so.%%SHORTVERSION%%
-%%AUDIO%%lib/libsfml-audio.so.%%LONGVERSION%%
+%%AUDIO%%lib/libsfml-audio.so.%%SO_RELEASE%%
+%%AUDIO%%lib/libsfml-audio.so.%%SO_VERSION%%
%%GRAPHICS%%lib/libsfml-graphics.so
-%%GRAPHICS%%lib/libsfml-graphics.so.%%SHORTVERSION%%
-%%GRAPHICS%%lib/libsfml-graphics.so.%%LONGVERSION%%
+%%GRAPHICS%%lib/libsfml-graphics.so.%%SO_RELEASE%%
+%%GRAPHICS%%lib/libsfml-graphics.so.%%SO_VERSION%%
%%NETWORK%%lib/libsfml-network.so
-%%NETWORK%%lib/libsfml-network.so.%%SHORTVERSION%%
-%%NETWORK%%lib/libsfml-network.so.%%LONGVERSION%%
+%%NETWORK%%lib/libsfml-network.so.%%SO_RELEASE%%
+%%NETWORK%%lib/libsfml-network.so.%%SO_VERSION%%
lib/libsfml-system.so
-lib/libsfml-system.so.%%SHORTVERSION%%
-lib/libsfml-system.so.%%LONGVERSION%%
+lib/libsfml-system.so.%%SO_RELEASE%%
+lib/libsfml-system.so.%%SO_VERSION%%
%%WINDOW%%lib/libsfml-window.so
-%%WINDOW%%lib/libsfml-window.so.%%SHORTVERSION%%
-%%WINDOW%%lib/libsfml-window.so.%%LONGVERSION%%
+%%WINDOW%%lib/libsfml-window.so.%%SO_RELEASE%%
+%%WINDOW%%lib/libsfml-window.so.%%SO_VERSION%%
libdata/pkgconfig/sfml-all.pc
%%AUDIO%%libdata/pkgconfig/sfml-audio.pc
%%GRAPHICS%%libdata/pkgconfig/sfml-graphics.pc