sfml: unvendor miniaudio

Signed-off-by: Marcin Serwin <marcin@serwin.dev>
This commit is contained in:
Marcin Serwin
2025-09-11 23:05:21 +02:00
parent 48ac9598d5
commit d06691a01e
2 changed files with 45 additions and 20 deletions
+10 -20
View File
@@ -6,6 +6,7 @@
# nativeBuildInputs
cmake,
pkg-config,
# buildInputs
flac,
@@ -13,6 +14,7 @@
glew,
libjpeg,
libvorbis,
miniaudio,
udev,
libXi,
libX11,
@@ -20,12 +22,6 @@
libXrandr,
libXrender,
xcbutilimage,
# miniaudio
alsa-lib,
libjack2,
libpulseaudio,
sndio,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -45,15 +41,22 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/SFML/SFML/commit/a87763becbc4672b38f1021418ed94caa0f6540a.patch?full_index=1";
hash = "sha256-tJmXTdhwtWq6XfUPBzw47yTrc6EzwmSiVj9n6jQwHig=";
})
# Not upstreamble in the near future, see https://github.com/SFML/SFML/pull/3555
./unvendor-miniaudio.patch
];
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
flac
freetype
glew
libjpeg
libvorbis
miniaudio
]
++ lib.optional stdenv.hostPlatform.isLinux udev
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
@@ -65,25 +68,12 @@ stdenv.mkDerivation (finalAttrs: {
xcbutilimage
];
# We rely on RUNPATH
dontPatchELF = true;
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "SFML_INSTALL_PKGCONFIG_FILES" true)
(lib.cmakeFeature "SFML_MISC_INSTALL_PREFIX" "share/SFML")
(lib.cmakeBool "SFML_BUILD_FRAMEWORKS" false)
(lib.cmakeBool "SFML_USE_SYSTEM_DEPS" true)
# FIXME: Unvendor miniaudio and move these deps there
(lib.cmakeFeature "CMAKE_INSTALL_RPATH" (
lib.makeLibraryPath [
alsa-lib
libjack2
libpulseaudio
sndio
]
))
];
meta = {
@@ -0,0 +1,35 @@
diff --git a/src/SFML/Audio/CMakeLists.txt b/src/SFML/Audio/CMakeLists.txt
index 7567205c..ecbb4ea1 100644
--- a/src/SFML/Audio/CMakeLists.txt
+++ b/src/SFML/Audio/CMakeLists.txt
@@ -10,7 +10,6 @@ set(SRC
${INCROOT}/Export.hpp
${SRCROOT}/Listener.cpp
${INCROOT}/Listener.hpp
- ${SRCROOT}/Miniaudio.cpp
${SRCROOT}/MiniaudioUtils.hpp
${SRCROOT}/MiniaudioUtils.cpp
${SRCROOT}/Music.cpp
@@ -169,8 +168,10 @@ sfml_add_library(Audio
# avoids warnings in vorbisfile.h
target_compile_definitions(sfml-audio PRIVATE OV_EXCLUDE_STATIC_CALLBACKS FLAC__NO_DLL)
-# disable miniaudio features we do not use
-target_compile_definitions(sfml-audio PRIVATE MA_NO_MP3 MA_NO_FLAC MA_NO_ENCODING MA_NO_RESOURCE_MANAGER MA_NO_GENERATION)
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(miniaudio REQUIRED IMPORTED_TARGET miniaudio)
+target_link_libraries(sfml-audio PRIVATE PkgConfig::miniaudio)
+target_include_directories(sfml-audio SYSTEM PRIVATE "${miniaudio_INCLUDE_DIRS}/miniaudio")
# use standard fixed-width integer types
target_compile_definitions(sfml-audio PRIVATE MA_USE_STDINT)
@@ -186,9 +187,6 @@ if(SFML_OS_IOS)
target_link_libraries(sfml-audio PRIVATE "-framework Foundation" "-framework CoreFoundation" "-framework CoreAudio" "-framework AudioToolbox" "-framework AVFoundation")
endif()
-# miniaudio sources
-target_include_directories(sfml-audio SYSTEM PRIVATE "${PROJECT_SOURCE_DIR}/extlibs/headers/miniaudio")
-
# minimp3 sources
target_include_directories(sfml-audio SYSTEM PRIVATE "${PROJECT_SOURCE_DIR}/extlibs/headers/minimp3")