mpv: add flag for swift on darwin

While we currently don't have a pure swift build on macOS it's possible
to build mpv using the swift compiler from CLT. eg.

    self: super:
    let
      CommandLineTools = "/Library/Developer/CommandLineTools";
    in
    {
      swift = super.stdenv.mkDerivation {
        name = "swift-CommandLineTools-0.0.0";
        phases = [ "installPhase" "fixupPhase" ];

        propagatedBuildInputs = [ self.darwin.DarwinTools ];

        installPhase = ''
            mkdir -p $out/bin $out/lib
            ln -s ${CommandLineTools}/usr/bin/swift $out/bin
            ln -s ${CommandLineTools}/usr/lib/swift $out/lib
            ln -s ${CommandLineTools}/SDKs $out
        '';

        setupHook = builtins.toFile "hook" ''
            addCommandLineTools() {
                echo >&2
                echo "WARNING: this is impure and unreliable, make sure the CommandLineTools are installed!" >&2
                echo "  $ xcode-select --install" >&2
                echo >&2
                [ -d ${CommandLineTools} ]
                export NIX_LDFLAGS+=" -L@out@/lib/swift/macosx"
                export SWIFT=swift
                export SWIFT_LIB_DYNAMIC=@out@/lib/swift/macosx
                export MACOS_SDK_VERSION=$(sw_vers -productVersion | awk -F. '{print $1 "." $2}')
                export MACOS_SDK=@out@/SDKs/MacOSX$MACOS_SDK_VERSION.sdk
            }

            prePhases+=" addCommandLineTools"
        '';

        __impureHostDeps = [ CommandLineTools ];
      };

      mpv = super.mpv.override { swiftSupport = true; };
    }
This commit is contained in:
Daiderd Jordan 2020-02-06 14:15:35 +01:00
parent f8a38f67bd
commit 3987ea9a9d
No known key found for this signature in database
GPG key ID: D02435D05B810C96
2 changed files with 8 additions and 5 deletions

View file

@ -38,11 +38,12 @@
, libpngSupport ? true, libpng ? null
, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
, rubberbandSupport ? stdenv.isLinux, rubberband ? null
, screenSaverSupport ? true, libXScrnSaver ? null
, sambaSupport ? stdenv.isLinux, samba ? null
, screenSaverSupport ? true, libXScrnSaver ? null
, sdl2Support ? true, SDL2 ? null
, sndioSupport ? true, sndio ? null
, speexSupport ? true, speex ? null
, swiftSupport ? false, swift ? null
, theoraSupport ? true, libtheora ? null
, vaapiSupport ? stdenv.isLinux, libva ? null
, vdpauSupport ? true, libvdpau ? null
@ -119,7 +120,6 @@ in stdenv.mkDerivation rec {
"--disable-libmpv-static"
"--disable-static-build"
"--disable-build-date" # Purity
"--disable-macos-cocoa-cb" # Disable whilst Swift isn't supported
(enableFeature archiveSupport "libarchive")
(enableFeature cddaSupport "cdda")
(enableFeature dvdnavSupport "dvdnav")
@ -130,11 +130,13 @@ in stdenv.mkDerivation rec {
(enableFeature vaapiSupport "vaapi")
(enableFeature waylandSupport "wayland")
(enableFeature stdenv.isLinux "dvbin")
];
] # Disable whilst Swift isn't supported
++ stdenv.lib.optional (!swiftSupport) "--disable-macos-cocoa-cb";
nativeBuildInputs = [
addOpenGLRunpath docutils makeWrapper perl pkgconfig python3 wafHook which
];
]
++ optional swiftSupport swift;
buildInputs = [
ffmpeg_4 freetype libass libpthreadstubs
@ -172,7 +174,7 @@ in stdenv.mkDerivation rec {
++ optionals x11Support [ libX11 libXext libGLU libGL libXxf86vm libXrandr ]
++ optionals vulkanSupport [ libplacebo shaderc vulkan-headers vulkan-loader ]
++ optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
CoreFoundation Cocoa CoreAudio
CoreFoundation Cocoa CoreAudio MediaPlayer
]);
enableParallelBuilding = true;

View file

@ -75,6 +75,7 @@ with frameworks; with libs; {
LocalAuthentication = [];
MapKit = [];
MediaAccessibility = [ CoreGraphics CoreText QuartzCore ];
MediaPlayer = [];
MediaToolbox = [ AudioToolbox AudioUnit CoreMedia ];
Metal = [];
MetalKit = [ ModelIO Metal ];