diff --git a/pkgs/by-name/sf/sfml/package.nix b/pkgs/by-name/sf/sfml/package.nix index 235f31e50475..f91240cb85b1 100644 --- a/pkgs/by-name/sf/sfml/package.nix +++ b/pkgs/by-name/sf/sfml/package.nix @@ -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 = { diff --git a/pkgs/by-name/sf/sfml/unvendor-miniaudio.patch b/pkgs/by-name/sf/sfml/unvendor-miniaudio.patch new file mode 100644 index 000000000000..6053118e05fe --- /dev/null +++ b/pkgs/by-name/sf/sfml/unvendor-miniaudio.patch @@ -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") +