mpv-unwrapped: build with meson

xcrun is required for darwin to find its SDK location and for the version detection.

Co-authored-by: adisbladis <adisbladis@gmail.com>
Co-authored-by: Anderson Torres <torres.anderson.85@protonmail.com>
Co-authored-by: Atemu <atemu.main@gmail.com>
This commit is contained in:
Sandro Jäckel 2022-11-12 19:10:13 +01:00 committed by Sandro Jäckel
parent 506f41b6ad
commit 683293089f
No known key found for this signature in database
GPG Key ID: B1763F8651144063

View File

@ -4,11 +4,10 @@
, fetchFromGitHub
, addOpenGLRunpath
, docutils
, perl
, meson
, ninja
, pkg-config
, python3
, wafHook
, which
, ffmpeg
, freefont_ttf
, freetype
@ -19,6 +18,7 @@
, libuchardet
, libiconv
, CoreFoundation, Cocoa, CoreAudio, MediaPlayer
, xcbuild
, waylandSupport ? stdenv.isLinux
, wayland
@ -97,40 +97,36 @@ in stdenv.mkDerivation rec {
patchShebangs version.* ./TOOLS/
'';
NIX_LDFLAGS = lib.optionalString x11Support "-lX11 -lXext "
+ lib.optionalString stdenv.isDarwin "-framework CoreFoundation";
NIX_LDFLAGS = lib.optionalString x11Support "-lX11 -lXext ";
# These flags are not supported and cause the build
# to fail, even when cross compilation itself works.
dontAddWafCrossFlags = true;
mesonFlags = let
mesonFeatureFlag = feature: flag: "-D${feature}=${if flag then "enabled" else "disabled"}";
in [
"-Ddefault_library=shared"
"-Dlibmpv=true"
(mesonFeatureFlag "libarchive" archiveSupport)
(mesonFeatureFlag "manpage-build" true)
(mesonFeatureFlag "cdda" cddaSupport)
(mesonFeatureFlag "dvbin" dvbinSupport)
(mesonFeatureFlag "dvdnav" dvdnavSupport)
(mesonFeatureFlag "openal" openalSupport)
(mesonFeatureFlag "sdl2" sdl2Support)
# Disable whilst Swift isn't supported
(mesonFeatureFlag "swift-build" swiftSupport)
(mesonFeatureFlag "macos-cocoa-cb" swiftSupport)
];
wafConfigureFlags = [
"--enable-libmpv-shared"
"--enable-manpage-build"
"--disable-libmpv-static"
"--disable-static-build"
"--disable-build-date" # Purity
(lib.enableFeature archiveSupport "libarchive")
(lib.enableFeature cddaSupport "cdda")
(lib.enableFeature dvdnavSupport "dvdnav")
(lib.enableFeature javascriptSupport "javascript")
(lib.enableFeature openalSupport "openal")
(lib.enableFeature sdl2Support "sdl2")
(lib.enableFeature sixelSupport "sixel")
(lib.enableFeature vaapiSupport "vaapi")
(lib.enableFeature waylandSupport "wayland")
(lib.enableFeature dvbinSupport "dvbin")
] # Disable whilst Swift isn't supported
++ lib.optional (!swiftSupport) "--disable-macos-cocoa-cb";
mesonAutoFeatures = "auto";
nativeBuildInputs = [
addOpenGLRunpath
docutils # for rst2man
perl
meson
ninja
pkg-config
python3
wafHook
which
] ++ lib.optionals stdenv.isDarwin [
xcbuild.xcrun
] ++ lib.optionals swiftSupport [ swift ]
++ lib.optionals waylandSupport [ wayland-scanner ];
@ -175,10 +171,10 @@ in stdenv.mkDerivation rec {
++ lib.optionals stdenv.isDarwin [ libiconv ]
++ lib.optionals stdenv.isDarwin [ CoreFoundation Cocoa CoreAudio MediaPlayer ];
enableParallelBuilding = true;
postBuild = lib.optionalString stdenv.isDarwin ''
pushd .. # Must be run from the source dir because it uses relative paths
python3 TOOLS/osxbundle.py -s build/mpv
popd
'';
postInstall = ''
@ -186,16 +182,13 @@ in stdenv.mkDerivation rec {
mkdir -p $out/share/mpv
ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
cp TOOLS/mpv_identify.sh $out/bin
cp TOOLS/umpv $out/bin
cp ../TOOLS/mpv_identify.sh $out/bin
cp ../TOOLS/umpv $out/bin
cp $out/share/applications/mpv.desktop $out/share/applications/umpv.desktop
sed -i '/Icon=/ ! s/mpv/umpv/g' $out/share/applications/umpv.desktop
substituteInPlace $out/lib/pkgconfig/mpv.pc \
--replace "$out/include" "$dev/include"
'' + lib.optionalString stdenv.isDarwin ''
mkdir -p $out/Applications
cp -r build/mpv.app $out/Applications
cp -r mpv.app $out/Applications
'';
# Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
@ -227,6 +220,6 @@ in stdenv.mkDerivation rec {
'';
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres fpletz globin ma27 tadeokondrak ];
platforms = platforms.darwin ++ platforms.linux;
platforms = platforms.unix;
};
}