miniaudio: 0.11.22 -> 0.11.23, switch to cmake; sfml: unvendor miniaudio (#442186)

This commit is contained in:
Gaétan Lepage
2025-09-11 22:19:48 +00:00
committed by GitHub
5 changed files with 95 additions and 63 deletions
+48 -20
View File
@@ -3,38 +3,66 @@
stdenv,
fetchFromGitHub,
testers,
cmake,
ninja,
alsa-lib,
libjack2,
libpulseaudio,
libvorbis,
opusfile,
sndio,
alsaSupport ? true,
pulseSupport ? true,
jackSupport ? true,
sndioSupport ? true,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "miniaudio";
version = "0.11.22";
version = "0.11.23";
src = fetchFromGitHub {
owner = "mackron";
repo = "miniaudio";
rev = finalAttrs.version;
hash = "sha256-o/7sfBcrhyXEakccOAogQqm8dO4Szj1QSpaIHg6OSt4=";
tag = finalAttrs.version;
hash = "sha256-ZrfKw5a3AtIER2btCKWhuvygasNaHNf9EURf1Kv96Vc=";
};
postInstall = ''
mkdir -p $out/include
mkdir -p $out/lib/pkgconfig
outputs = [
"out"
"dev"
];
cp $src/miniaudio.h $out/include
ln -s $out/include/miniaudio.h $out
nativeBuildInputs = [
cmake
ninja
];
cp -r $src/extras $out/
buildInputs = [
libvorbis
opusfile
]
++ lib.optional pulseSupport libpulseaudio
++ lib.optional jackSupport libjack2
++ lib.optional alsaSupport alsa-lib
++ lib.optional sndioSupport sndio;
cat <<EOF >$out/lib/pkgconfig/miniaudio.pc
prefix=$out
includedir=$out/include
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "MINIAUDIO_NO_RUNTIME_LINKING" true)
(lib.cmakeBool "MINIAUDIO_BUILD_TESTS" true)
(lib.cmakeBool "MINIAUDIO_BUILD_EXAMPLES" true)
Name: miniaudio
Description: An audio playback and capture library in a single source file.
Version: $version
Cflags: -I$out/include
Libs: -lm -lpthread -latomic
EOF
'';
(lib.cmakeBool "MINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS" true)
(lib.cmakeBool "MINIAUDIO_ENABLE_PULSEAUDIO" pulseSupport)
(lib.cmakeBool "MINIAUDIO_ENABLE_JACK" jackSupport)
(lib.cmakeBool "MINIAUDIO_ENABLE_SNDIO" alsaSupport)
(lib.cmakeBool "MINIAUDIO_ENABLE_ALSA" sndioSupport)
];
doCheck = true;
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
@@ -48,6 +76,6 @@ stdenv.mkDerivation (finalAttrs: {
];
maintainers = [ maintainers.jansol ];
pkgConfigModules = [ "miniaudio" ];
platforms = platforms.all;
platforms = platforms.linux;
};
})
+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")
@@ -3,22 +3,10 @@
buildPythonPackage,
fetchFromGitHub,
setuptools,
miniaudio,
cffi,
pytestCheckHook,
}:
let
# TODO: recheck after 1.59
miniaudio' = miniaudio.overrideAttrs (oldAttrs: rec {
version = "0.11.16"; # cffi breakage with 0.11.17
src = fetchFromGitHub {
inherit (oldAttrs.src) owner repo;
rev = "refs/tags/${version}";
hash = "sha256-POe/dYPJ25RKNGIhaLoqxm9JJ08MrTyHVN4NmaGOdwM=";
};
});
in
buildPythonPackage rec {
pname = "miniaudio";
version = "1.61";
@@ -31,14 +19,7 @@ buildPythonPackage rec {
hash = "sha256-H3o2IWGuMqLrJTzQ7w636Ito6f57WBtMXpXXzrZ7UD8=";
};
postPatch = ''
rm -r miniaudio
ln -s ${miniaudio'} miniaudio
substituteInPlace build_ffi_module.py \
--replace-fail "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
substituteInPlace miniaudio.c \
--replace-fail "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
'';
# TODO: Properly unvendor miniaudio c library
build-system = [ setuptools ];
+1 -3
View File
@@ -9331,9 +9331,7 @@ self: super: with self; {
minexr = callPackage ../development/python-modules/minexr { };
miniaudio = callPackage ../development/python-modules/miniaudio {
inherit (pkgs) miniaudio;
};
miniaudio = callPackage ../development/python-modules/miniaudio { };
minichain = callPackage ../development/python-modules/minichain { };