Before you can build mpv & mpv.app on an Apple silicon Mac, there's a couple of required dependencies you'll need to install if you haven't already:
-
Go to System Preferences > Software Update. If there's anything there to update, do it.
-
If you don't have the Xcode Command Line Tools installed, run
xcode-select --install
and select Install on the prompt that appears. -
If you don't have Homebrew installed, follow the instructions here.
-
If you don't have all of mpv's dependencies installed, run
brew install --build-from-source --only-dependencies mpv && brew install libplacebo
.
You'll also need a local copy of the mpv repo, which you can get by running git clone https://github.com/mpv-player/mpv
.
You can now run the attached script to build mpv & mpv.app on an Apple silicon Mac yourself. Just make sure to run it from the root directory of the cloned repo.
If you want to bundle a static build of mpv.app, perform these steps following the ones above.
-
Run
brew install dylibbundler
. -
Run the script from the root directory of the cloned repo, but append
--static
to the command, like./build-mpv_silicon.sh --static
.
Going forward, you can update your local copy of the repo by running the following commands from its root directory:
git reset --hard
git clean --force -d -x
git pull origin master
building log
jianwang@jianwangs-Mac-mini mpv % ./build-mpv_silicon.sh --static + meson setup build Directory already configured.Just run your build command (e.g. ninja) and Meson will regenerate as necessary.
If ninja fails, run "ninja reconfigure" or "meson setup --reconfigure"
to force Meson to regenerate.
If build failures persist, run "meson setup --wipe" to rebuild from scratch
using the same options as passed when configuring the build.
To change option values, run "meson configure" instead.
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /opt/homebrew/bin/ninja -C /Users/jianwang/Documents/mpv/build
ninja: Entering directory `/Users/jianwang/Documents/mpv/build'
[0/1] Regenerating build files.
The Meson build system
Version: 1.2.3
Source dir: /Users/jianwang/Documents/mpv
Build dir: /Users/jianwang/Documents/mpv/build
Build type: native build
Project name: mpv
Project version: 0.36.0-UNKNOWN
C compiler for the host machine: cc (clang 15.0.0 "Apple clang version 15.0.0 (clang-1500.0.40.1)")
C linker for the host machine: cc ld64 1015.7
Host machine cpu family: aarch64
Host machine cpu: aarch64
Program python3 found: YES (/opt/homebrew/bin/python3)
Dependency libavcodec found: YES 60.3.100 (cached)
Dependency libavfilter found: YES 9.3.100 (cached)
Dependency libavformat found: YES 60.3.100 (cached)
Dependency libavutil found: YES 58.2.100 (cached)
Dependency libswresample found: YES 4.10.100 (cached)
Dependency libswscale found: YES 7.1.100 (cached)
Dependency libplacebo found: YES 6.338.1 (cached)
Dependency libass found: YES 0.17.1 (cached)
Compiler for C supports arguments -Werror=implicit-function-declaration: YES (cached)
Compiler for C supports arguments -Wempty-body: YES (cached)
Compiler for C supports arguments -Wdisabled-optimization: YES (cached)
Compiler for C supports arguments -Wstrict-prototypes: YES (cached)
Compiler for C supports arguments -Wno-format-zero-length: YES (cached)
Compiler for C supports arguments -Wno-redundant-decls: YES (cached)
Compiler for C supports arguments -Wvla: YES (cached)
Compiler for C supports arguments -Wno-format-truncation: NO (cached)
Compiler for C supports arguments -Wimplicit-fallthrough: YES (cached)
Compiler for C supports arguments -fno-math-errno: YES (cached)
Compiler for C supports arguments -Wformat -Werror=format-security: YES (cached)
Compiler for C supports link arguments -Wl,-z,noexecstack: NO (cached)
Compiler for C supports link arguments -Wl,--nxcompat,--no-seh,--dynamicbase: NO (cached)
Dependency dl found: YES unknown (cached)
Library atomic found: NO
Compiler for C supports link arguments -rdynamic: YES (cached)
Dependency threads found: YES unknown (cached)
Run-time dependency appleframeworks found: YES (Cocoa, IOKit, QuartzCore)
Checking for function "ppoll" : NO (cached)
Library windowsapp skipped: feature uwp disabled
Checking for function "glob" : YES (cached)
Header "sys/vt.h" has symbol "VT_GETMODE" : NO (cached)
Header "sys/consio.h" has symbol "VT_GETMODE" : NO (cached)
Checking for function "fstatfs" : YES (cached)
Checking for function "fstatfs" : NO (cached)
Checking if "vector check" compiles: YES (cached)
Program /Users/jianwang/Documents/mpv/TOOLS/docutils-wrapper.py found: YES (/Users/jianwang/Documents/mpv/TOOLS/docutils-wrapper.py)
Program /Users/jianwang/Documents/mpv/TOOLS/file2string.py found: YES (/Users/jianwang/Documents/mpv/TOOLS/file2string.py)
Program /Users/jianwang/Documents/mpv/TOOLS/matroska.py found: YES (/Users/jianwang/Documents/mpv/TOOLS/matroska.py)
Dependency libcdio skipped: feature cdda disabled
Dependency libcdio_paranoia skipped: feature cdda disabled
Dependency dvdnav skipped: feature dvdnav disabled
Dependency dvdread skipped: feature dvdnav disabled
Dependency iconv found: YES unknown (cached)
Dependency mujs found: YES 1.3.3 (cached)
Dependency lcms2 found: YES 2.15 (cached)
Found pkg-config: /opt/homebrew/bin/pkg-config (0.29.2)
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency libarchive found: NO (tried pkgconfig, framework and cmake)
Dependency libavdevice found: YES 60.1.100 (cached)
Dependency libbluray found: YES 1.3.4 (cached)
Library m found: YES
Library rt found: NO
Run-time dependency lua found: NO (tried pkgconfig, framework and cmake)
Run-time dependency lua52 found: NO (tried pkgconfig, framework and cmake)
Run-time dependency lua5.2 found: NO (tried pkgconfig, framework and cmake)
Run-time dependency lua-5.2 found: NO (tried pkgconfig, framework and cmake)
Dependency luajit found: YES 2.1.1696795921 (cached)
Dependency rubberband found: YES 3.3.0 (cached)
Dependency sdl2 skipped: feature sdl2 disabled
Dependency uchardet found: YES 0.0.8 (cached)
Dependency vapoursynth found: YES 64 (cached)
Dependency vapoursynth-script found: YES 64 (cached)
Dependency zimg found: YES 3.0.5 (cached)
Dependency zlib found: YES 1.2.12 (cached)
Run-time dependency alsa found: NO (tried pkgconfig, framework and cmake)
Dependency appleframeworks (modules: Foundation, AudioToolbox) found: YES unknown (cached)
Header "AudioToolbox/AudioToolbox.h" has symbol "kAudioUnitSubType_RemoteIO" : NO (cached)
Run-time dependency appleframeworks found: YES (CoreFoundation, CoreAudio, AudioUnit, AudioToolbox)
Run-time dependency jack found: NO (tried pkgconfig, framework and cmake)
Dependency openal skipped: feature openal disabled
Library OpenSLES found: NO
Header "sys/soundcard.h" has symbol "SNDCTL_DSP_HALT" : NO (cached)
Run-time dependency libpipewire-0.3 found: NO (tried pkgconfig, framework and cmake)
Run-time dependency libpulse found: NO (tried pkgconfig, framework and cmake)
Run-time dependency sndio found: NO (tried pkgconfig, framework and cmake)
Header "audioclient.h" has symbol "IAudioClient" : NO (cached)
Run-time dependency caca found: NO (tried pkgconfig, framework and cmake)
Has header "d3d9.h" skipped: feature direct3d disabled
Run-time dependency libdrm found: NO (tried pkgconfig, framework and cmake)
Run-time dependency gbm found: NO (tried pkgconfig, framework and cmake)
Dependency libjpeg found: YES 3.0.0 (cached)
Run-time dependency shaderc found: NO (tried pkgconfig, pkgconfig, pkgconfig and system)
Run-time dependency libsixel found: NO (tried pkgconfig, framework and cmake)
Checking for function "shm_open" : YES (cached)
Run-time dependency spirv-cross-c-shared found: NO (tried pkgconfig, framework and cmake)
Run-time dependency wayland-client found: NO (tried pkgconfig, framework and cmake)
Run-time dependency wayland-cursor found: NO (tried pkgconfig, framework and cmake)
Run-time dependency wayland-protocols found: NO (tried pkgconfig, framework and cmake)
Run-time dependency xkbcommon found: NO (tried pkgconfig, framework and cmake)
Run-time dependency wayland-client found: NO (tried pkgconfig, framework and cmake)
Has header "linux/input-event-codes.h" with dependency wayland-client: NO (cached)
Program wayland-scanner found: NO
Dependency x11 found: YES 1.8.7 (cached)
Run-time dependency xscrnsaver found: NO (tried pkgconfig, framework and cmake)
Dependency xext found: YES 1.3.5 (cached)
Run-time dependency xpresent found: NO (tried pkgconfig, framework and cmake)
Run-time dependency xrandr found: NO (tried pkgconfig, framework and cmake)
Dependency xv skipped: feature xv disabled
Dependency appleframeworks (modules: OpenGL) found: YES unknown (cached)
Library EGL found: NO
Run-time dependency egl found: NO (tried pkgconfig, framework and cmake)
Library EGL skipped: feature egl-android disabled
Run-time dependency wayland-egl found: NO (tried pkgconfig, framework and cmake)
Dependency /opt/vc/lib/pkgconfig/brcmegl.pc skipped: feature rpi disabled
Dependency vulkan found: YES 1.3.268 (cached)
Checking for function "vkCreateDisplayPlaneSurfaceKHR" with dependency vulkan: NO (cached)
Run-time dependency ffnvcodec found: NO (tried pkgconfig, framework and cmake)
Header "OpenGLES/ES3/glext.h" has symbol "GL_RGB32F" : NO (cached)
Dependency /opt/vc/lib/pkgconfig/mmal.pc skipped: feature rpi-mmal disabled
Run-time dependency libva found: NO (tried pkgconfig, framework and cmake)
Dependency libva-drm skipped: feature vaapi-drm disabled
Dependency libva-wayland skipped: feature vaapi-wayland disabled
Dependency libva-x11 skipped: feature vaapi-x11 disabled
Dependency vdpau skipped: feature vdpau disabled
Program /Users/jianwang/Documents/mpv/TOOLS/macos-sdk-version.py found: YES (/Users/jianwang/Documents/mpv/TOOLS/macos-sdk-version.py)
Message: Detected macOS sdk path: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
Message: Detected macOS SDK: 14.0
../meson.build:1489: WARNING: add_languages is missing native:, assuming languages are wanted for both host and build.
Objective-C compiler for the host machine: cc (clang 15.0.0)
Objective-C linker for the host machine: cc ld64 1015.7
Program xcrun found: YES (/usr/bin/xcrun)
Program /Library/Developer/CommandLineTools/usr/bin/swift found: YES (/Library/Developer/CommandLineTools/usr/bin/swift)
Message: Detected Swift version: 5.9
Program /Users/jianwang/Documents/mpv/TOOLS/macos-swift-lib-directory.py found: YES (/Users/jianwang/Documents/mpv/TOOLS/macos-swift-lib-directory.py)
Message: Detected Swift library directory: /Library/Developer/CommandLineTools/usr/lib/swift/macosx
Has header "AppKit/NSTouchBar.h" : YES (cached)
Program rst2man found: YES (/opt/homebrew/bin/rst2man)
Program rst2html rst2html.py skipped: feature html-build disabled
Program rst2pdf skipped: feature pdf-build disabled
Configuring config.h using configuration
Message: List of enabled features: av-channel-layout avif-muxer bsd-fstatfs build-date cocoa coreaudio cplugins darwin debug ffmpeg gl gl-cocoa glob glob-posix gpl iconv javascript jpeg jpegxl lavu-uuid lcms2 libass libavdevice libbluray libdl libm libplacebo luajit macos-cocoa-cb macos-media-player macos-touchbar manpage-build osx-thread-name posix posix-shm rubberband rubberband-3 swift threads uchardet vapoursynth vector videotoolbox-gl vulkan zimg zimg-st428 zlib
Fetching value of define "MPV_CLIENT_API_VERSION" : (((2) << 16) | (2) | 0UL) (cached)
Compiler for C supports link arguments -Wl,-Bsymbolic: NO (cached)
Build targets in project: 24
mpv 0.36.0-UNKNOWN
Found ninja-1.11.1 at /opt/homebrew/bin/ninja
Cleaning... 0 files.
[2/40] Compiling C object libmpv.2.dylib.p/video_out_gpu_next_context.c.o
FAILED: libmpv.2.dylib.p/video_out_gpu_next_context.c.o
cc -Ilibmpv.2.dylib.p -I. -I.. -Icommon -Ietc -Iplayer/javascript -Iplayer/lua -Isub -ITOOLS/osxbundle -Iosdep -I/opt/homebrew/Cellar/libass/0.17.1/include -I/opt/homebrew/Cellar/libunibreak/5.1/include -I/opt/homebrew/Cellar/harfbuzz/8.2.2/include/harfbuzz -I/opt/homebrew/Cellar/glib/2.78.0/include/glib-2.0 -I/opt/homebrew/Cellar/glib/2.78.0/lib/glib-2.0/include -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/Cellar/pcre2/10.42/include -I/opt/homebrew/Cellar/graphite2/1.3.14/include -I/opt/homebrew/Cellar/fribidi/1.0.13/include/fribidi -I/opt/homebrew/opt/freetype/include/freetype2 -I/opt/homebrew/opt/libpng/include/libpng16 -I/opt/homebrew/Cellar/ffmpeg/6.0_1/include -I/opt/homebrew/Cellar/libplacebo/6.338.1/include -I/opt/homebrew/Cellar/mujs/1.3.3/include -I/opt/homebrew/Cellar/little-cms2/2.15/include -I/opt/homebrew/Cellar/libbluray/1.3.4/include -I/opt/homebrew/Cellar/fontconfig/2.14.2/include -I/opt/homebrew/Cellar/luajit/2.1.1696795921/include/luajit-2.1 -I/opt/homebrew/Cellar/rubberband/3.3.0/include -I/opt/homebrew/Cellar/libsamplerate/0.2.2/include -I/opt/homebrew/Cellar/uchardet/0.0.8/include/uchardet -I/opt/homebrew/Cellar/vapoursynth/64/include/vapoursynth -I/opt/homebrew/Cellar/zimg/3.0.5/include -I/opt/homebrew/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/include/python3.11 -I/opt/homebrew/Cellar/jpeg-turbo/3.0.0/include -I/opt/homebrew/Cellar/vulkan-loader/1.3.268/include -fvisibility=hidden -fcolor-diagnostics -Wall -Winvalid-pch -std=c11 -O2 -g -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -Werror=implicit-function-declaration -Wempty-body -Wdisabled-optimization -Wstrict-prototypes -Wno-format-zero-length -Wno-redundant-decls -Wvla -Wimplicit-fallthrough -fno-math-errno -Wformat -Werror=format-security -Wno-logical-op-parentheses -Wno-switch -Wno-tautological-compare -Wno-pointer-sign -Wno-tautological-constant-out-of-range-compare -MD -MQ libmpv.2.dylib.p/video_out_gpu_next_context.c.o -MF libmpv.2.dylib.p/video_out_gpu_next_context.c.o.d -o libmpv.2.dylib.p/video_out_gpu_next_context.c.o -c ../video/out/gpu_next/context.c
In file included from ../video/out/gpu_next/context.c:50:
In file included from ../video/out/vulkan/context.h:4:
In file included from ../video/out/vulkan/common.h:30:
/opt/homebrew/Cellar/libplacebo/6.338.1/include/libplacebo/vulkan.h:21:10: fatal error: 'vulkan/vulkan.h' file not found
#include <vulkan/vulkan.h>
^~~~~~~~~~~~~~~~~
1 error generated.
[9/40] Compiling Objective-C object li...ylib.p/video_out_cocoa_events_view.m.o
../video/out/cocoa/events_view.m:42:41: warning: 'NSFilenamesPboardType' is deprecated: first deprecated in macOS 10.14 - Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead [-Wdeprecated-declarations]
[self registerForDraggedTypes:@[NSFilenamesPboardType,
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:312:32: note: 'NSFilenamesPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSFilenamesPboardType API_DEPRECATED("Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead", macos(10.0,10.14));
^
../video/out/cocoa/events_view.m:43:41: warning: 'NSURLPboardType' is deprecated: first deprecated in macOS 10.14 [-Wdeprecated-declarations]
NSURLPboardType]];
^~~~~~~~~~~~~~~
NSPasteboardTypeURL
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:321:32: note: 'NSURLPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSURLPboardType API_DEPRECATED_WITH_REPLACEMENT("NSPasteboardTypeURL", macos(10.0,10.14));
^
../video/out/cocoa/events_view.m:308:31: warning: 'NSFilenamesPboardType' is deprecated: first deprecated in macOS 10.14 - Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead [-Wdeprecated-declarations]
if ([types containsObject:NSFilenamesPboardType] ||
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:312:32: note: 'NSFilenamesPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSFilenamesPboardType API_DEPRECATED("Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead", macos(10.0,10.14));
^
../video/out/cocoa/events_view.m:309:31: warning: 'NSURLPboardType' is deprecated: first deprecated in macOS 10.14 [-Wdeprecated-declarations]
[types containsObject:NSURLPboardType]) {
^~~~~~~~~~~~~~~
NSPasteboardTypeURL
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:321:32: note: 'NSURLPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSURLPboardType API_DEPRECATED_WITH_REPLACEMENT("NSPasteboardTypeURL", macos(10.0,10.14));
^
../video/out/cocoa/events_view.m:319:40: warning: 'NSFilenamesPboardType' is deprecated: first deprecated in macOS 10.14 - Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead [-Wdeprecated-declarations]
if ([[pboard types] containsObject:NSFilenamesPboardType]) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:312:32: note: 'NSFilenamesPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSFilenamesPboardType API_DEPRECATED("Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead", macos(10.0,10.14));
^
../video/out/cocoa/events_view.m:320:56: warning: 'NSFilenamesPboardType' is deprecated: first deprecated in macOS 10.14 - Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead [-Wdeprecated-declarations]
NSArray *pbitems = [pboard propertyListForType:NSFilenamesPboardType];
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:312:32: note: 'NSFilenamesPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSFilenamesPboardType API_DEPRECATED("Create multiple pasteboard items with NSPasteboardTypeFileURL or kUTTypeFileURL instead", macos(10.0,10.14));
^
../video/out/cocoa/events_view.m:323:47: warning: 'NSURLPboardType' is deprecated: first deprecated in macOS 10.14 [-Wdeprecated-declarations]
} else if ([[pboard types] containsObject:NSURLPboardType]) {
^~~~~~~~~~~~~~~
NSPasteboardTypeURL
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPasteboard.h:321:32: note: 'NSURLPboardType' has been explicitly marked deprecated here
APPKIT_EXTERN NSPasteboardType NSURLPboardType API_DEPRECATED_WITH_REPLACEMENT("NSPasteboardTypeURL", macos(10.0,10.14));
^
7 warnings generated.
[11/40] Generating manpages with a custom command
ninja: build stopped: subcommand failed.