├── .editorconfig ├── .env ├── .github ├── dependabot.yml └── workflows │ ├── build.yml │ └── lint.yml ├── .gitignore ├── .shellcheckrc ├── .yamllint.yml ├── README.md ├── build-all ├── build-brotli ├── build-dav1d ├── build-ffmpeg ├── build-freetype ├── build-fribidi ├── build-harfbuzz ├── build-highway ├── build-lcms2 ├── build-libarchive ├── build-libass ├── build-libbluray ├── build-libdvdnav ├── build-libdvdread ├── build-libjxl ├── build-libplacebo ├── build-libpng ├── build-libunibreak ├── build-libvpx ├── build-libwebp ├── build-luajit ├── build-moltenvk ├── build-mpv ├── build-opus ├── build-shaderc ├── build-svt-av1 ├── build-uchardet ├── build-vulkan ├── build-x264 ├── build-x265 ├── fetch ├── homebrew └── build-deps.txt └── src └── .gitkeep /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | insert_final_newline = true 6 | indent_style = space 7 | indent_size = 2 8 | max_line_length = 100 9 | trim_trailing_whitespace = true 10 | 11 | [{*.md,fetch}] 12 | max_line_length = unset 13 | 14 | [{homebrew,patches,src}/**] 15 | charset = unset 16 | insert_final_newline = unset 17 | indent_style = unset 18 | indent_size = unset 19 | max_line_length = unset 20 | trim_trailing_whitespace = unset 21 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # Ignore "Unused variables" 2 | # shellcheck shell=sh disable=SC2034 3 | 4 | PREFIX="${PREFIX:-/opt/local}" 5 | STOWDIR="${PREFIX}/stow" 6 | PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 7 | CMAKE_GENERATOR="Ninja" 8 | CMAKE_POLICY_VERSION_MINIMUM="4.0" 9 | MACOSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET:-15.5}" 10 | CFLAGS="-mcpu=native" 11 | CXXFLAGS="${CFLAGS}" 12 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | updates: 4 | - package-ecosystem: github-actions 5 | directory: / 6 | schedule: 7 | interval: weekly 8 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Build & Upload Artifact 3 | 4 | on: 5 | workflow_dispatch: 6 | push: 7 | branches: 8 | - master 9 | paths: 10 | - ".github/workflows/build.yml" 11 | - "build-*" 12 | - "fetch" 13 | 14 | jobs: 15 | build: 16 | runs-on: macos-15 17 | 18 | permissions: 19 | contents: read 20 | id-token: write 21 | attestations: write 22 | 23 | steps: 24 | - name: Checkout 25 | uses: actions/checkout@v4 26 | 27 | - name: Select Xcode 28 | run: | 29 | sudo xcode-select -s /Applications/Xcode_16.4.app 30 | xcodebuild -version 31 | 32 | - name: Create Stow Directory 33 | run: | 34 | sudo mkdir -p /opt/local 35 | sudo chown "$USER":admin /opt/local 36 | mkdir -p /opt/local/stow 37 | 38 | - name: Install Dependencies 39 | run: | 40 | brew update -q 41 | xargs brew install -q --formula < homebrew/build-deps.txt 42 | 43 | - name: Fetch Sources 44 | run: ./fetch all 45 | 46 | - name: Build & Install 47 | run: ./build-all --bundle 48 | env: 49 | MACOSX_DEPLOYMENT_TARGET: 15.5 50 | 51 | - name: Upload Artifact 52 | id: upload 53 | uses: actions/upload-artifact@v4 54 | with: 55 | name: mpv-macos-15-arm64 56 | path: mpv.tar.gz 57 | if-no-files-found: error 58 | compression-level: 0 59 | overwrite: true 60 | 61 | - name: Attest Artifact 62 | uses: actions/attest-build-provenance@v2 63 | with: 64 | subject-name: mpv-macos-15-arm64.zip 65 | subject-digest: sha256:${{ steps.upload.outputs.artifact-digest }} 66 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Lint 3 | 4 | on: 5 | push: 6 | pull_request: 7 | 8 | jobs: 9 | shellcheck: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v4 14 | 15 | - name: Check 16 | run: shellcheck .env build-* fetch 17 | 18 | yamllint: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@v4 23 | 24 | - name: Check 25 | run: yamllint --strict . 26 | 27 | editorconfig: 28 | runs-on: ubuntu-latest 29 | steps: 30 | - name: Checkout 31 | uses: actions/checkout@v4 32 | 33 | - name: Install 34 | uses: editorconfig-checker/action-editorconfig-checker@main 35 | 36 | - name: Check 37 | run: editorconfig-checker 38 | 39 | actionlint: 40 | runs-on: ubuntu-latest 41 | steps: 42 | - name: Checkout 43 | uses: actions/checkout@v4 44 | 45 | - name: Check 46 | uses: raven-actions/actionlint@v2 47 | 48 | prettier: 49 | runs-on: ubuntu-latest 50 | 51 | steps: 52 | - name: Checkout 53 | uses: actions/checkout@v4 54 | 55 | - name: Setup Node 56 | uses: actions/setup-node@v4 57 | 58 | - name: Install 59 | run: npm install prettier@next 60 | 61 | - name: Check 62 | run: npx prettier --check . 63 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /src/** 2 | !/src/.gitkeep 3 | 4 | mpv.tar.gz 5 | -------------------------------------------------------------------------------- /.shellcheckrc: -------------------------------------------------------------------------------- 1 | external-sources=true 2 | 3 | enable=avoid-nullary-conditions 4 | enable=quote-safe-variables 5 | enable=require-double-brackets 6 | enable=require-variable-braces 7 | 8 | # Ignore "Expressions don't expand in single quotes" 9 | disable=SC2016 10 | 11 | # Ignore "Use "${var:?}" to ensure this never expands to /*" 12 | disable=SC2115 13 | -------------------------------------------------------------------------------- /.yamllint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | truthy: disable 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mpv-build-macOS 2 | 3 | [![Build & Upload Artifact](https://github.com/m154k1/mpv-build-macOS/actions/workflows/build.yml/badge.svg)](https://github.com/m154k1/mpv-build-macOS/actions/workflows/build.yml) 4 | [![Lint](https://github.com/m154k1/mpv-build-macOS/actions/workflows/lint.yml/badge.svg)](https://github.com/m154k1/mpv-build-macOS/actions/workflows/lint.yml) 5 | 6 | A set of scripts that help build [mpv](https://mpv.io) on macOS. 7 | 8 | > [!TIP] 9 | > Prebuilt mpv.app from GitHub Actions is available at [nightly.link]. 10 | > 11 | > Download: [`mpv-macos-15-arm64.zip`] (macOS 15.5 & Apple M1 or newer) 12 | 13 | ### Requirements 14 | 15 | - [Xcode.app](https://developer.apple.com/xcode/) 16 | - [Homebrew](https://brew.sh) 17 | 18 | ### Build and install 19 | 20 | :arrow_right: Make sure Xcode is ready: 21 | 22 | ```sh 23 | xcodebuild -runFirstLaunch 24 | ``` 25 | 26 | :arrow_right: Clone the repository: 27 | 28 | ```sh 29 | git clone "https://github.com/m154k1/mpv-build-macOS.git" 30 | cd mpv-build-macOS 31 | ``` 32 | 33 | :arrow_right: Install build dependencies from Homebrew: 34 | 35 | ```sh 36 | xargs brew install --formula < homebrew/build-deps.txt 37 | ``` 38 | 39 | :arrow_right: Create an installation directory for local packages: 40 | 41 | > [!NOTE] 42 | > If you want to use custom installation directory, 43 | > set `PREFIX` environment variable instead. 44 | 45 | ```sh 46 | sudo mkdir /opt/local 47 | sudo chown "$USER":admin /opt/local 48 | mkdir /opt/local/stow 49 | ``` 50 | 51 | :arrow_right: Fetch sources: 52 | 53 | ```sh 54 | ./fetch all 55 | ``` 56 | 57 | :arrow_right: Build mpv and its dependencies (select an option): 58 | 59 | - Install mpv as CLI-only program: 60 | 61 | ```sh 62 | ./build-all 63 | ``` 64 | 65 | - Install CLI and create an app bundle (mpv.app): 66 | 67 | ```sh 68 | ./build-all --bundle 69 | ``` 70 | 71 | The bundle will be placed in `mpv.tar.gz`. 72 | 73 | :arrow_right: Add `/opt/local/bin` (or `$PREFIX/bin`) to your `$PATH`. 74 | 75 | ### Recommended settings 76 | 77 | ```cfg 78 | # ~/.config/mpv/mpv.conf 79 | vo=gpu-next 80 | hwdec=videotoolbox 81 | macos-render-timer=feedback 82 | ``` 83 | 84 | ### Environment variables 85 | 86 | - `MVK_CONFIG_LOG_LEVEL=` - sets MoltenVK log level: 87 | 88 | - `0` - disabled 89 | - `1` - error 90 | - `2` - warning 91 | - `3` - verbose 92 | 93 | - `MTL_HUD_ENABLED=1` - enables the [Metal Performance HUD]. 94 | 95 | [nightly.link]: https://nightly.link/m154k1/mpv-build-macOS/workflows/build/master 96 | [`mpv-macos-15-arm64.zip`]: https://nightly.link/m154k1/mpv-build-macOS/workflows/build/master/mpv-macos-15-arm64.zip 97 | [Metal Performance HUD]: https://developer.apple.com/documentation/xcode/monitoring-your-metal-apps-graphics-performance 98 | -------------------------------------------------------------------------------- /build-all: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | cd "$(dirname "$0")" 4 | 5 | ./build-vulkan 6 | ./build-moltenvk 7 | ./build-shaderc 8 | ./build-lcms2 9 | ./build-libplacebo 10 | ./build-dav1d 11 | ./build-svt-av1 12 | ./build-x264 13 | ./build-x265 14 | ./build-libvpx 15 | ./build-opus 16 | ./build-libwebp 17 | ./build-libpng 18 | ./build-brotli 19 | ./build-highway 20 | ./build-libjxl 21 | ./build-freetype 22 | ./build-harfbuzz 23 | ./build-fribidi 24 | ./build-libunibreak 25 | ./build-libass 26 | ./build-libbluray 27 | ./build-libdvdread 28 | ./build-libdvdnav 29 | ./build-ffmpeg 30 | ./build-luajit 31 | ./build-libarchive 32 | ./build-uchardet 33 | ./build-mpv "$@" 34 | -------------------------------------------------------------------------------- /build-brotli: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # brotli 4 | # https://github.com/google/brotli.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="brotli" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/brotli" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 24 | -DBROTLI_DISABLE_TESTS=ON \ 25 | -DBROTLI_BUILD_TOOLS=OFF \ 26 | "$@" 27 | 28 | cmake --build "${builddir}" 29 | 30 | rm -rf "${pkgdir}" 31 | 32 | cmake --install "${builddir}" 33 | rm -rf "${pkgdir}"/share 34 | stow -Rd "${STOWDIR}" "${pkgname}" 35 | 36 | rm -rf "${builddir}" 37 | 38 | echo "*** $0: finished" 39 | -------------------------------------------------------------------------------- /build-dav1d: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # dav1d 4 | # https://code.videolan.org/videolan/dav1d.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="dav1d" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/dav1d" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Denable_tools=false \ 26 | -Denable_tests=false \ 27 | "$@" 28 | 29 | meson compile -C "${builddir}" 30 | 31 | rm -rf "${pkgdir}" 32 | 33 | meson install -C "${builddir}" 34 | stow -Rd "${STOWDIR}" "${pkgname}" 35 | 36 | rm -rf "${builddir}" 37 | 38 | echo "*** $0: finished" 39 | -------------------------------------------------------------------------------- /build-ffmpeg: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # FFmpeg 4 | # https://git.ffmpeg.org/ffmpeg.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="ffmpeg" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/ffmpeg" 12 | 13 | echo 14 | echo "*** $0: started" 15 | 16 | cd "${srcdir}" 17 | 18 | ./configure \ 19 | --prefix="${pkgdir}" \ 20 | --arch="$(uname -m)" \ 21 | --cpu=host \ 22 | --cc=clang \ 23 | --enable-shared \ 24 | --enable-lto=thin \ 25 | --enable-gpl \ 26 | --enable-version3 \ 27 | --enable-nonfree \ 28 | --enable-lcms2 \ 29 | --enable-libass \ 30 | --enable-libbluray \ 31 | --enable-libdav1d \ 32 | --enable-libdvdnav \ 33 | --enable-libdvdread \ 34 | --enable-libfreetype \ 35 | --enable-libfribidi \ 36 | --enable-libharfbuzz \ 37 | --enable-libjxl \ 38 | --enable-libopus \ 39 | --enable-libplacebo \ 40 | --enable-libshaderc \ 41 | --enable-libsvtav1 \ 42 | --enable-libvpx \ 43 | --enable-libwebp \ 44 | --enable-libx264 \ 45 | --enable-libx265 \ 46 | --enable-libxml2 \ 47 | --disable-static \ 48 | --disable-debug \ 49 | --disable-doc \ 50 | --disable-sdl2 \ 51 | --disable-libxcb \ 52 | --disable-xlib \ 53 | "$@" 54 | 55 | make -j4 56 | 57 | rm -rf "${pkgdir}" 58 | 59 | make install 60 | rm -rf "${pkgdir}"/share 61 | stow -Rd "${STOWDIR}" "${pkgname}" 62 | 63 | echo "*** $0: finished" 64 | -------------------------------------------------------------------------------- /build-freetype: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # FreeType 4 | # https://gitlab.freedesktop.org/freetype/freetype.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="freetype" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/freetype" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Dharfbuzz=dynamic \ 26 | -Dbrotli=enabled \ 27 | -Dbzip2=enabled \ 28 | -Dmmap=enabled \ 29 | -Dpng=enabled \ 30 | -Dzlib=system \ 31 | "$@" 32 | 33 | meson compile -C "${builddir}" 34 | 35 | rm -rf "${pkgdir}" 36 | 37 | meson install -C "${builddir}" --tags runtime,devel 38 | stow -Rd "${STOWDIR}" "${pkgname}" 39 | 40 | rm -rf "${builddir}" 41 | 42 | echo "*** $0: finished" 43 | -------------------------------------------------------------------------------- /build-fribidi: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # GNU FriBidi 4 | # https://github.com/fribidi/fribidi.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="fribidi" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/fribidi" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Dbin=false \ 26 | -Ddeprecated=false \ 27 | -Ddocs=false \ 28 | -Dtests=false \ 29 | "$@" 30 | 31 | meson compile -C "${builddir}" 32 | 33 | rm -rf "${pkgdir}" 34 | 35 | meson install -C "${builddir}" 36 | stow -Rd "${STOWDIR}" "${pkgname}" 37 | 38 | rm -rf "${builddir}" 39 | 40 | echo "*** $0: finished" 41 | -------------------------------------------------------------------------------- /build-harfbuzz: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # HarfBuzz 4 | # https://github.com/harfbuzz/harfbuzz.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="harfbuzz" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/harfbuzz" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Dcoretext=enabled \ 26 | -Dfreetype=enabled \ 27 | -Dglib=disabled \ 28 | -Dgobject=disabled \ 29 | -Dcairo=disabled \ 30 | -Dchafa=disabled \ 31 | -Dicu=disabled \ 32 | -Dtests=disabled \ 33 | -Dintrospection=disabled \ 34 | -Ddocs=disabled \ 35 | -Dutilities=disabled \ 36 | "$@" 37 | 38 | meson compile -C "${builddir}" 39 | 40 | rm -rf "${pkgdir}" 41 | 42 | meson install -C "${builddir}" --tags runtime,devel 43 | stow -Rd "${STOWDIR}" "${pkgname}" 44 | 45 | rm -rf "${builddir}" 46 | 47 | echo "*** $0: finished" 48 | -------------------------------------------------------------------------------- /build-highway: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Highway 4 | # https://github.com/google/highway.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="highway" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/highway" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 24 | -DBUILD_SHARED_LIBS=ON \ 25 | -DHWY_ENABLE_CONTRIB=OFF \ 26 | -DHWY_ENABLE_EXAMPLES=OFF \ 27 | -DHWY_ENABLE_TESTS=OFF \ 28 | "$@" 29 | 30 | cmake --build "${builddir}" 31 | 32 | rm -rf "${pkgdir}" 33 | 34 | cmake --install "${builddir}" 35 | rm -rf "${pkgdir}"/lib/cmake 36 | stow -Rd "${STOWDIR}" "${pkgname}" 37 | 38 | rm -rf "${builddir}" 39 | 40 | echo "*** $0: finished" 41 | -------------------------------------------------------------------------------- /build-lcms2: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Little-CMS 4 | # https://github.com/mm2/Little-CMS.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="lcms2" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/Little-CMS" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Djpeg=disabled \ 26 | -Dtiff=disabled \ 27 | "$@" 28 | 29 | meson compile -C "${builddir}" 30 | 31 | rm -rf "${pkgdir}" 32 | 33 | meson install -C "${builddir}" 34 | stow -Rd "${STOWDIR}" "${pkgname}" 35 | 36 | rm -rf "${builddir}" 37 | 38 | echo "*** $0: finished" 39 | -------------------------------------------------------------------------------- /build-libarchive: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libarchive 4 | # https://github.com/libarchive/libarchive.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libarchive" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libarchive" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_INSTALL_LIBDIR="lib" \ 23 | -DCMAKE_BUILD_TYPE=Release \ 24 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 25 | -DENABLE_LZ4=OFF \ 26 | -DENABLE_ZSTD=OFF \ 27 | -DENABLE_TAR=OFF \ 28 | -DENABLE_CPIO=OFF \ 29 | -DENABLE_CAT=OFF \ 30 | -DENABLE_UNZIP=OFF \ 31 | -DENABLE_TEST=OFF \ 32 | -Wno-dev \ 33 | "$@" 34 | 35 | cmake --build "${builddir}" 36 | 37 | rm -rf "${pkgdir}" 38 | 39 | cmake --install "${builddir}" 40 | rm -rf "${pkgdir}"/{lib/*.a,share} 41 | stow -Rd "${STOWDIR}" "${pkgname}" 42 | 43 | rm -rf "${builddir}" 44 | 45 | echo "*** $0: finished" 46 | -------------------------------------------------------------------------------- /build-libass: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libass 4 | # https://github.com/libass/libass.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libass" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libass" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Ddefault_library=shared \ 22 | -Dwrap_mode=nodownload \ 23 | -Dbuildtype=release \ 24 | -Db_lto=true \ 25 | -Db_lto_mode=thin \ 26 | -Dcoretext=enabled \ 27 | -Dasm=enabled \ 28 | -Dlibunibreak=enabled \ 29 | -Dtest=disabled \ 30 | -Dcompare=disabled \ 31 | -Dprofile=disabled \ 32 | -Dfuzz=disabled \ 33 | -Dcheckasm=disabled \ 34 | -Dfontconfig=disabled \ 35 | -Ddirectwrite=disabled \ 36 | "$@" 37 | 38 | meson compile -C "${builddir}" 39 | 40 | rm -rf "${pkgdir}" 41 | 42 | meson install -C "${builddir}" 43 | stow -Rd "${STOWDIR}" "${pkgname}" 44 | 45 | rm -rf "${builddir}" 46 | 47 | echo "*** $0: finished" 48 | -------------------------------------------------------------------------------- /build-libbluray: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libbluray 4 | # https://code.videolan.org/videolan/libbluray.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libbluray" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libbluray" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Ddefault_library=shared \ 22 | -Dwrap_mode=nodownload \ 23 | -Dbuildtype=release \ 24 | -Db_lto=true \ 25 | -Db_lto_mode=thin \ 26 | -Dfreetype=enabled \ 27 | -Dlibxml2=enabled \ 28 | -Denable_tools=false \ 29 | -Dbdj_jar=disabled \ 30 | -Dfontconfig=disabled \ 31 | "$@" 32 | 33 | meson compile -C "${builddir}" 34 | 35 | rm -rf "${pkgdir}" 36 | 37 | meson install -C "${builddir}" 38 | stow -Rd "${STOWDIR}" "${pkgname}" 39 | 40 | rm -rf "${builddir}" 41 | 42 | echo "*** $0: finished" 43 | -------------------------------------------------------------------------------- /build-libdvdnav: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libdvdnav 4 | # https://code.videolan.org/videolan/libdvdnav.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libdvdnav" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libdvdnav" 12 | 13 | echo 14 | echo "*** $0: started" 15 | 16 | cd "${srcdir}" 17 | 18 | ./configure \ 19 | --prefix="${pkgdir}" \ 20 | --enable-shared \ 21 | --disable-static \ 22 | --disable-apidoc \ 23 | "$@" 24 | 25 | make -j4 26 | 27 | rm -rf "${pkgdir}" 28 | 29 | make install 30 | rm -rf "${pkgdir}"/lib/*.la "${pkgdir}"/share 31 | stow -Rd "${STOWDIR}" "${pkgname}" 32 | 33 | echo "*** $0: finished" 34 | -------------------------------------------------------------------------------- /build-libdvdread: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libdvdread 4 | # https://code.videolan.org/videolan/libdvdread.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libdvdread" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libdvdread" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Ddefault_library=shared \ 22 | -Dwrap_mode=nodownload \ 23 | -Dbuildtype=release \ 24 | -Db_lto=true \ 25 | -Db_lto_mode=thin \ 26 | "$@" 27 | 28 | meson compile -C "${builddir}" 29 | 30 | rm -rf "${pkgdir}" 31 | 32 | meson install -C "${builddir}" --tags runtime,devel 33 | stow -Rd "${STOWDIR}" "${pkgname}" 34 | 35 | rm -rf "${builddir}" 36 | 37 | echo "*** $0: finished" 38 | -------------------------------------------------------------------------------- /build-libjxl: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libjxl 4 | # https://github.com/libjxl/libjxl.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libjxl" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libjxl" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 24 | -DJPEGXL_FORCE_SYSTEM_BROTLI=ON \ 25 | -DJPEGXL_FORCE_SYSTEM_LCMS2=ON \ 26 | -DJPEGXL_FORCE_SYSTEM_HWY=ON \ 27 | -DJPEGXL_ENABLE_TOOLS=OFF \ 28 | -DJPEGXL_ENABLE_DOXYGEN=OFF \ 29 | -DJPEGXL_ENABLE_MANPAGES=OFF \ 30 | -DJPEGXL_ENABLE_BENCHMARK=OFF \ 31 | -DJPEGXL_ENABLE_EXAMPLES=OFF \ 32 | -DJPEGXL_ENABLE_JPEGLI=OFF \ 33 | -DJPEGXL_ENABLE_JNI=OFF \ 34 | -DJPEGXL_ENABLE_SJPEG=OFF \ 35 | -DJPEGXL_ENABLE_OPENEXR=OFF \ 36 | -DJPEGXL_ENABLE_SKCMS=OFF \ 37 | -DJPEGXL_BUNDLE_LIBPNG=OFF \ 38 | -DBUILD_TESTING=OFF \ 39 | -Wno-dev \ 40 | "$@" 41 | 42 | cmake --build "${builddir}" 43 | 44 | rm -rf "${pkgdir}" 45 | 46 | cmake --install "${builddir}" 47 | stow -Rd "${STOWDIR}" "${pkgname}" 48 | 49 | rm -rf "${builddir}" 50 | 51 | echo "*** $0: finished" 52 | -------------------------------------------------------------------------------- /build-libplacebo: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libplacebo 4 | # https://code.videolan.org/videolan/libplacebo.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libplacebo" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libplacebo" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Dvulkan-registry="${PREFIX}/share/vulkan/registry/vk.xml" \ 26 | -Dvulkan=enabled \ 27 | -Dshaderc=enabled \ 28 | -Dlcms=enabled \ 29 | -Dxxhash=enabled \ 30 | -Dopengl=disabled \ 31 | -Dd3d11=disabled \ 32 | -Dglslang=disabled \ 33 | -Ddemos=false \ 34 | "$@" 35 | 36 | meson compile -C "${builddir}" 37 | 38 | rm -rf "${pkgdir}" 39 | 40 | meson install -C "${builddir}" 41 | stow -Rd "${STOWDIR}" "${pkgname}" 42 | 43 | rm -rf "${builddir}" 44 | 45 | echo "*** $0: finished" 46 | -------------------------------------------------------------------------------- /build-libpng: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libpng 4 | # https://github.com/pnggroup/libpng.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libpng" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libpng" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DSKIP_INSTALL_EXPORT=ON \ 24 | -DPNG_STATIC=OFF \ 25 | -DPNG_FRAMEWORK=OFF \ 26 | -DPNG_TESTS=OFF \ 27 | -DPNG_TOOLS=OFF \ 28 | "$@" 29 | 30 | cmake --build "${builddir}" 31 | 32 | rm -rf "${pkgdir}" 33 | 34 | cmake --install "${builddir}" 35 | rm -rf "${pkgdir}"/{bin,lib/cmake,share} 36 | stow -Rd "${STOWDIR}" "${pkgname}" 37 | 38 | rm -rf "${builddir}" 39 | 40 | echo "*** $0: finished" 41 | -------------------------------------------------------------------------------- /build-libunibreak: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libunibreak 4 | # https://github.com/adah1972/libunibreak.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libunibreak" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libunibreak" 12 | 13 | echo 14 | echo "*** $0: started" 15 | 16 | cd "${srcdir}" 17 | 18 | ./configure \ 19 | --prefix="${pkgdir}" \ 20 | --enable-shared \ 21 | --disable-static \ 22 | "$@" 23 | 24 | make -j4 25 | 26 | rm -rf "${pkgdir}" 27 | 28 | make install 29 | rm -f "${pkgdir}"/lib/*.la 30 | stow -Rd "${STOWDIR}" "${pkgname}" 31 | 32 | echo "*** $0: finished" 33 | -------------------------------------------------------------------------------- /build-libvpx: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libvpx 4 | # https://chromium.googlesource.com/webm/libvpx 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libvpx" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libvpx" 12 | 13 | echo 14 | echo "*** $0: started" 15 | 16 | cd "${srcdir}" 17 | 18 | ./configure \ 19 | --prefix="${pkgdir}" \ 20 | --enable-shared \ 21 | --enable-runtime-cpu-detect \ 22 | --enable-pic \ 23 | --enable-vp9 \ 24 | --enable-vp9-highbitdepth \ 25 | --enable-vp9-postproc \ 26 | --enable-vp9-temporal-denoising \ 27 | --disable-dependency-tracking \ 28 | --disable-static \ 29 | --disable-debug \ 30 | --disable-docs \ 31 | --disable-examples \ 32 | --disable-tools \ 33 | --disable-unit-tests \ 34 | --disable-vp8-encoder \ 35 | "$@" 36 | 37 | make -j4 38 | 39 | rm -rf "${pkgdir}" 40 | 41 | make install 42 | 43 | for lib in "${pkgdir}"/lib/*.dylib; do 44 | if [[ ! -L "${lib}" ]]; then 45 | echo "install_name: '$(otool -D "${lib}" | sed -n 2p)' --> '${lib}'" 46 | install_name_tool -id "${lib}" "${lib}" 47 | fi 48 | done 49 | 50 | stow -Rd "${STOWDIR}" "${pkgname}" 51 | 52 | echo "*** $0: finished" 53 | -------------------------------------------------------------------------------- /build-libwebp: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # libwebp 4 | # https://chromium.googlesource.com/webm/libwebp 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="libwebp" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/libwebp" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 24 | -DBUILD_SHARED_LIBS=ON \ 25 | -DWEBP_BUILD_ANIM_UTILS=OFF \ 26 | -DWEBP_BUILD_CWEBP=OFF \ 27 | -DWEBP_BUILD_DWEBP=OFF \ 28 | -DWEBP_BUILD_GIF2WEBP=OFF \ 29 | -DWEBP_BUILD_IMG2WEBP=OFF \ 30 | -DWEBP_BUILD_VWEBP=OFF \ 31 | -DWEBP_BUILD_WEBPINFO=OFF \ 32 | -DWEBP_BUILD_WEBPMUX=OFF \ 33 | -DWEBP_BUILD_EXTRAS=OFF \ 34 | "$@" 35 | 36 | cmake --build "${builddir}" 37 | 38 | rm -rf "${pkgdir}" 39 | 40 | cmake --install "${builddir}" 41 | rm -rf "${pkgdir}"/share 42 | stow -Rd "${STOWDIR}" "${pkgname}" 43 | 44 | rm -rf "${builddir}" 45 | 46 | echo "*** $0: finished" 47 | -------------------------------------------------------------------------------- /build-luajit: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # LuaJIT 4 | # https://github.com/LuaJIT/LuaJIT.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="luajit" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/LuaJIT" 12 | 13 | echo 14 | echo "*** $0: started" 15 | 16 | make -C "${srcdir}" -j4 amalg \ 17 | PREFIX="${pkgdir}" \ 18 | BUILDMODE=dynamic \ 19 | CFLAGS="${CFLAGS} -O3 -flto=thin" \ 20 | "$@" 21 | 22 | rm -rf "${pkgdir}" 23 | 24 | make -C "${srcdir}" install PREFIX="${pkgdir}" 25 | rm -rf "${pkgdir}"/{bin,lib/lua,share} 26 | stow -Rd "${STOWDIR}" "${pkgname}" 27 | 28 | echo "*** $0: finished" 29 | -------------------------------------------------------------------------------- /build-moltenvk: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # MoltenVK 4 | # https://github.com/KhronosGroup/MoltenVK.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="moltenvk" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/MoltenVK" 12 | builddir="Package/Latest/MoltenVK/dynamic/dylib/macOS" 13 | xcodebuild="xcodebuild ARCHS=$(uname -m) ONLY_ACTIVE_ARCH=YES" 14 | 15 | echo 16 | echo "*** $0: started" 17 | 18 | cd "${srcdir}" 19 | 20 | sed -i '' 's/xcodebuild "$@"/'"${xcodebuild}"' "$@"/g' fetchDependencies 21 | sed -i '' 's/XCODEBUILD := .*/XCODEBUILD := '"${xcodebuild}"'/' Makefile 22 | ./fetchDependencies --macos --v-headers-root "${PREFIX}" 23 | make macos MVK_CONFIG_LOG_LEVEL=1 "$@" 24 | 25 | sed -i '' 's;\./;../../../lib/;' "${builddir}"/MoltenVK_icd.json 26 | echo 27 | echo 'MoltenVK_icd.json:' 28 | cat "${builddir}"/MoltenVK_icd.json 29 | echo 30 | 31 | rm -rf "${pkgdir}" 32 | 33 | install -d "${pkgdir}"/{lib,etc/vulkan/icd.d} 34 | install -vm755 "${builddir}"/libMoltenVK.dylib "${pkgdir}"/lib 35 | install -vm644 "${builddir}"/MoltenVK_icd.json "${pkgdir}"/etc/vulkan/icd.d 36 | stow -Rd "${STOWDIR}" "${pkgname}" 37 | 38 | echo "*** $0: finished" 39 | -------------------------------------------------------------------------------- /build-mpv: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # mpv 4 | # https://github.com/mpv-player/mpv.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="mpv" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/mpv" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | if [[ "$1" == "--bundle" ]]; then 15 | bundle=1 16 | shift 17 | fi 18 | 19 | echo 20 | echo "*** $0: started" 21 | 22 | rm -rf "${builddir}" 23 | 24 | meson setup "${builddir}" "${srcdir}" \ 25 | --prefix="${pkgdir}" \ 26 | -Dwrap_mode=nodownload \ 27 | -Dbuildtype=release \ 28 | -Db_lto=true \ 29 | -Db_lto_mode=thin \ 30 | -Dlua=luajit \ 31 | -Dgl=disabled \ 32 | -Dmacos-touchbar=disabled \ 33 | "$@" 34 | 35 | meson compile -C "${builddir}" 36 | 37 | if [[ -n "${bundle}" ]]; then 38 | mkdir -p ~/.config/vulkan 39 | ln -sfn "${PREFIX}"/etc/vulkan/icd.d ~/.config/vulkan/icd.d 40 | 41 | meson compile -C "${builddir}" macos-bundle 42 | rm -f mpv.tar.gz 43 | tar -czvf mpv.tar.gz -C "${builddir}" mpv.app 44 | fi 45 | 46 | rm -rf "${pkgdir}" 47 | 48 | meson install -C "${builddir}" --tags runtime,devel 49 | stow -Rd "${STOWDIR}" "${pkgname}" 50 | 51 | rm -rf "${builddir}" 52 | 53 | echo "*** $0: finished" 54 | -------------------------------------------------------------------------------- /build-opus: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Opus 4 | # https://gitlab.xiph.org/xiph/opus.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="opus" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/opus" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | meson setup "${builddir}" "${srcdir}" \ 20 | --prefix="${pkgdir}" \ 21 | -Dwrap_mode=nodownload \ 22 | -Dbuildtype=release \ 23 | -Db_lto=true \ 24 | -Db_lto_mode=thin \ 25 | -Ddeep-plc=enabled \ 26 | -Ddred=enabled \ 27 | -Dosce=enabled \ 28 | -Dextra-programs=disabled \ 29 | -Dtests=disabled \ 30 | -Ddocs=disabled \ 31 | "$@" 32 | 33 | meson compile -C "${builddir}" 34 | 35 | rm -rf "${pkgdir}" 36 | 37 | meson install -C "${builddir}" 38 | stow -Rd "${STOWDIR}" "${pkgname}" 39 | 40 | rm -rf "${builddir}" 41 | 42 | echo "*** $0: finished" 43 | -------------------------------------------------------------------------------- /build-shaderc: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # shaderc 4 | # https://github.com/google/shaderc.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="shaderc" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/shaderc" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cd "${srcdir}" 20 | sed -i '' 's/${SHADERC_SKIP_INSTALL}/ON/g' third_party/CMakeLists.txt 21 | sed -i '' '/^.*GLSLANG_ENABLE_INSTALL.*$/d' third_party/CMakeLists.txt 22 | ./utils/git-sync-deps 23 | cd - 24 | 25 | cmake -B "${builddir}" -S "${srcdir}" \ 26 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 27 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 28 | -DCMAKE_BUILD_TYPE=Release \ 29 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 30 | -DSHADERC_SKIP_TESTS=ON \ 31 | -DSHADERC_SKIP_EXAMPLES=ON \ 32 | "$@" 33 | 34 | cmake --build "${builddir}" 35 | 36 | rm -rf "${pkgdir}" 37 | 38 | cmake --install "${builddir}" 39 | rm -rf "${pkgdir}"/{bin,lib/{*.a,pkgconfig/*{combined,static}.pc}} 40 | stow -Rd "${STOWDIR}" "${pkgname}" 41 | 42 | rm -rf "${builddir}" 43 | 44 | echo "*** $0: finished" 45 | -------------------------------------------------------------------------------- /build-svt-av1: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # SVT-AV1 4 | # https://gitlab.com/AOMediaCodec/SVT-AV1.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="svt-av1" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/SVT-AV1" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DNATIVE=ON \ 24 | -DSVT_AV1_LTO=ON \ 25 | -DBUILD_APPS=OFF \ 26 | -DBUILD_TESTING=OFF \ 27 | "$@" 28 | 29 | cmake --build "${builddir}" 30 | 31 | rm -rf "${pkgdir}" 32 | 33 | cmake --install "${builddir}" 34 | stow -Rd "${STOWDIR}" "${pkgname}" 35 | 36 | rm -rf "${builddir}" 37 | 38 | echo "*** $0: finished" 39 | -------------------------------------------------------------------------------- /build-uchardet: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # uchardet 4 | # https://gitlab.freedesktop.org/uchardet/uchardet.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="uchardet" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/uchardet" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}" 18 | 19 | cmake -B "${builddir}" -S "${srcdir}" \ 20 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 21 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 22 | -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 24 | -DBUILD_BINARY=OFF \ 25 | -DBUILD_STATIC=OFF \ 26 | -Wno-dev \ 27 | "$@" 28 | 29 | cmake --build "${builddir}" 30 | 31 | rm -rf "${pkgdir}" 32 | 33 | cmake --install "${builddir}" 34 | rm -rf "${pkgdir}"/{lib/cmake,share} 35 | stow -Rd "${STOWDIR}" "${pkgname}" 36 | 37 | rm -rf "${builddir}" 38 | 39 | echo "*** $0: finished" 40 | -------------------------------------------------------------------------------- /build-vulkan: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Vulkan Headers 4 | # https://github.com/KhronosGroup/Vulkan-Headers.git 5 | # 6 | # Vulkan Loader 7 | # https://github.com/KhronosGroup/Vulkan-Loader.git 8 | # 9 | cd "$(dirname "$0")" 10 | set -a; . .env; set +a 11 | 12 | pkgname="vulkan" 13 | pkgdir="${STOWDIR}/${pkgname}" 14 | headerssrcdir="src/Vulkan-Headers" 15 | loadersrcdir="src/Vulkan-Loader" 16 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 17 | 18 | echo 19 | echo "*** $0: started" 20 | 21 | rm -rf "${builddir}" "${pkgdir}" 22 | 23 | cmake -B "${builddir}" -S "${headerssrcdir}" \ 24 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 25 | -DCMAKE_BUILD_TYPE=Release 26 | 27 | cmake --install "${builddir}" 28 | 29 | rm -rf "${builddir}" 30 | 31 | cmake -B "${builddir}" -S "${loadersrcdir}" \ 32 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 33 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 34 | -DCMAKE_BUILD_TYPE=Release \ 35 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 36 | -DVULKAN_HEADERS_INSTALL_DIR="${pkgdir}" \ 37 | -DSYSCONFDIR="${PREFIX}/etc" \ 38 | -DBUILD_TESTS=OFF \ 39 | "$@" 40 | 41 | cmake --build "${builddir}" 42 | cmake --install "${builddir}" 43 | rm -rf "${pkgdir}"/{lib/cmake,loader,share/cmake} 44 | stow -Rd "${STOWDIR}" "${pkgname}" 45 | 46 | rm -rf "${builddir}" 47 | 48 | echo "*** $0: finished" 49 | -------------------------------------------------------------------------------- /build-x264: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # x264 4 | # https://code.videolan.org/videolan/x264.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="x264" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/x264" 12 | 13 | echo 14 | echo "*** $0: started" 15 | 16 | cd "${srcdir}" 17 | 18 | ./configure \ 19 | --prefix="${pkgdir}" \ 20 | --enable-shared \ 21 | --enable-lto \ 22 | --disable-cli \ 23 | --disable-opencl \ 24 | "$@" 25 | 26 | make -j4 27 | 28 | rm -rf "${pkgdir}" 29 | 30 | make install 31 | stow -Rd "${STOWDIR}" "${pkgname}" 32 | 33 | echo "*** $0: finished" 34 | -------------------------------------------------------------------------------- /build-x265: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # x265 4 | # https://bitbucket.org/multicoreware/x265_git.git 5 | # 6 | cd "$(dirname "$0")" 7 | set -a; . .env; set +a 8 | 9 | pkgname="x265" 10 | pkgdir="${STOWDIR}/${pkgname}" 11 | srcdir="src/x265/source" 12 | builddir="${TMPDIR:-/tmp}/build.${pkgname}" 13 | 14 | echo 15 | echo "*** $0: started" 16 | 17 | rm -rf "${builddir}"{,-10,-12} 18 | 19 | cmake -B "${builddir}"-10 -S "${srcdir}" \ 20 | -DCMAKE_BUILD_TYPE=Release \ 21 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 22 | -DNATIVE_BUILD=ON \ 23 | -DHIGH_BIT_DEPTH=ON \ 24 | -DEXPORT_C_API=OFF \ 25 | -DENABLE_CLI=OFF \ 26 | -DENABLE_SHARED=OFF \ 27 | -Wno-dev 28 | 29 | cmake --build "${builddir}"-10 30 | 31 | cmake -B "${builddir}"-12 -S "${srcdir}" \ 32 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 33 | -DCMAKE_BUILD_TYPE=Release \ 34 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 35 | -DNATIVE_BUILD=ON \ 36 | -DHIGH_BIT_DEPTH=ON \ 37 | -DMAIN12=ON \ 38 | -DEXPORT_C_API=OFF \ 39 | -DENABLE_CLI=OFF \ 40 | -DENABLE_SHARED=OFF \ 41 | -Wno-dev 42 | 43 | cmake --build "${builddir}"-12 44 | 45 | cmake -B "${builddir}" -S "${srcdir}" \ 46 | -DCMAKE_INSTALL_PREFIX="${pkgdir}" \ 47 | -DCMAKE_INSTALL_NAME_DIR="${pkgdir}/lib" \ 48 | -DCMAKE_BUILD_TYPE=Release \ 49 | -DENABLE_SHARED=ON \ 50 | -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ 51 | -DNATIVE_BUILD=ON \ 52 | -DEXTRA_LIB='x265_main10.a;x265_main12.a' \ 53 | -DEXTRA_LINK_FLAGS='-L.' \ 54 | -DLINKED_10BIT=ON \ 55 | -DLINKED_12BIT=ON \ 56 | -DENABLE_CLI=OFF \ 57 | -Wno-dev \ 58 | "$@" 59 | 60 | ln -s "${builddir}"-10/libx265.a "${builddir}"/libx265_main10.a 61 | ln -s "${builddir}"-12/libx265.a "${builddir}"/libx265_main12.a 62 | cmake --build "${builddir}" 63 | 64 | rm -rf "${pkgdir}" 65 | 66 | cmake --install "${builddir}" 67 | rm -f "${pkgdir}"/lib/*.a 68 | stow -Rd "${STOWDIR}" "${pkgname}" 69 | 70 | rm -rf "${builddir}"{,-10,-12} 71 | 72 | echo "*** $0: finished" 73 | -------------------------------------------------------------------------------- /fetch: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | cd "$(dirname "$0")" 4 | 5 | print_usage() { 6 | echo "Usage:" 7 | echo " $0 all" 8 | echo " $0 ..." 9 | } 10 | 11 | fetch_tar() { 12 | local url="$1" 13 | local name="$2" 14 | rm -rf src/"${name}" 15 | curl -sL "${url}" | tar -xvC src -s ";^[^/]*;${name};" 16 | } 17 | 18 | fetch_brotli() { 19 | local url="https://github.com/google/brotli.git" 20 | rm -rf src/brotli 21 | git -C src clone --depth 1 "${url}" 22 | } 23 | 24 | fetch_dav1d() { 25 | local url="https://code.videolan.org/videolan/dav1d.git" 26 | rm -rf src/dav1d 27 | git -C src clone --depth 1 "${url}" 28 | } 29 | 30 | fetch_ffmpeg() { 31 | local url="https://github.com/FFmpeg/FFmpeg.git" 32 | rm -rf src/ffmpeg 33 | git -C src clone --depth 1 "${url}" ffmpeg 34 | } 35 | 36 | fetch_freetype() { 37 | local url="https://gitlab.freedesktop.org/freetype/freetype.git" 38 | rm -rf src/freetype 39 | git -C src clone --depth 1 "${url}" 40 | } 41 | 42 | fetch_fribidi() { 43 | local url="https://github.com/fribidi/fribidi.git" 44 | rm -rf src/fribidi 45 | git -C src clone --depth 1 "${url}" 46 | } 47 | 48 | fetch_harfbuzz() { 49 | local url="https://github.com/harfbuzz/harfbuzz.git" 50 | rm -rf src/harfbuzz 51 | git -C src clone --depth 1 "${url}" 52 | } 53 | 54 | fetch_highway() { 55 | local url="https://github.com/google/highway.git" 56 | rm -rf src/highway 57 | git -C src clone --depth 1 "${url}" 58 | } 59 | 60 | fetch_lcms2() { 61 | local url="https://github.com/mm2/Little-CMS.git" 62 | rm -rf src/Little-CMS 63 | git -C src clone --depth 1 "${url}" 64 | } 65 | 66 | fetch_libarchive() { 67 | local url="https://github.com/libarchive/libarchive.git" 68 | rm -rf src/libarchive 69 | git -C src clone --depth 1 "${url}" 70 | } 71 | 72 | fetch_libass() { 73 | local url="https://github.com/libass/libass.git" 74 | rm -rf src/libass 75 | git -C src clone --depth 1 "${url}" 76 | } 77 | 78 | fetch_libbluray() { 79 | local url="https://code.videolan.org/videolan/libbluray.git" 80 | rm -rf src/libbluray 81 | git -C src clone --depth 1 --recurse-submodules "${url}" 82 | } 83 | 84 | fetch_libdvdnav() { 85 | local version="6.1.1" 86 | local url="https://download.videolan.org/pub/videolan/libdvdnav/${version}/libdvdnav-${version}.tar.bz2" 87 | fetch_tar "${url}" libdvdnav 88 | } 89 | 90 | fetch_libdvdread() { 91 | local url="https://code.videolan.org/videolan/libdvdread/-/archive/master/libdvdread-master.tar.bz2" 92 | fetch_tar "${url}" libdvdread 93 | } 94 | 95 | fetch_libjxl() { 96 | local url="https://github.com/libjxl/libjxl.git" 97 | rm -rf src/libjxl 98 | git -C src clone --depth 1 "${url}" 99 | } 100 | 101 | fetch_libplacebo() { 102 | local url="https://code.videolan.org/videolan/libplacebo.git" 103 | rm -rf src/libplacebo 104 | git -C src clone --depth 1 --recurse-submodules=3rdparty/{fast_float,jinja,markupsafe} "${url}" 105 | } 106 | 107 | fetch_libpng() { 108 | local url="https://github.com/pnggroup/libpng.git" 109 | rm -rf src/libpng 110 | git -C src clone --depth 1 "${url}" 111 | } 112 | 113 | fetch_libunibreak() { 114 | local version="6.1" 115 | local url="https://github.com/adah1972/libunibreak/releases/download/libunibreak_${version//./_}/libunibreak-${version}.tar.gz" 116 | fetch_tar "${url}" libunibreak 117 | } 118 | 119 | fetch_libvpx() { 120 | local url="https://chromium.googlesource.com/webm/libvpx" 121 | rm -rf src/libvpx 122 | git -C src clone --depth 1 "${url}" 123 | } 124 | 125 | fetch_libwebp() { 126 | local url="https://chromium.googlesource.com/webm/libwebp" 127 | rm -rf src/libwebp 128 | git -C src clone --depth 1 "${url}" 129 | } 130 | 131 | fetch_luajit() { 132 | local url="https://github.com/LuaJIT/LuaJIT.git" 133 | rm -rf src/LuaJIT 134 | git -C src clone --depth 1 "${url}" 135 | } 136 | 137 | fetch_moltenvk() { 138 | local url="https://github.com/KhronosGroup/MoltenVK.git" 139 | rm -rf src/MoltenVK 140 | git -C src clone --depth 1 "${url}" 141 | } 142 | 143 | fetch_mpv() { 144 | local url="https://github.com/mpv-player/mpv.git" 145 | rm -rf src/mpv 146 | git -C src clone --depth 1 "${url}" 147 | } 148 | 149 | fetch_opus() { 150 | local version="1.5.2" 151 | local url="https://downloads.xiph.org/releases/opus/opus-${version}.tar.gz" 152 | fetch_tar "${url}" opus 153 | } 154 | 155 | fetch_shaderc() { 156 | local url="https://github.com/google/shaderc.git" 157 | rm -rf src/shaderc 158 | git -C src clone --depth 1 "${url}" 159 | } 160 | 161 | fetch_svt-av1() { 162 | local url="https://gitlab.com/AOMediaCodec/SVT-AV1.git" 163 | rm -rf src/SVT-AV1 164 | git -C src clone --depth 1 "${url}" 165 | } 166 | 167 | fetch_uchardet() { 168 | local url="https://gitlab.freedesktop.org/uchardet/uchardet.git" 169 | rm -rf src/uchardet 170 | git -C src clone --depth 1 "${url}" 171 | } 172 | 173 | fetch_vulkan() { 174 | local loaderurl="https://github.com/KhronosGroup/Vulkan-Loader.git" 175 | local headersurl="https://github.com/KhronosGroup/Vulkan-Headers.git" 176 | rm -rf src/Vulkan-{Loader,Headers} 177 | git -C src clone --depth 1 "${loaderurl}" 178 | git -C src clone --depth 1 "${headersurl}" 179 | } 180 | 181 | fetch_x264() { 182 | local url="https://code.videolan.org/videolan/x264.git" 183 | rm -rf src/x264 184 | git -C src clone --depth 1 "${url}" 185 | } 186 | 187 | fetch_x265() { 188 | local url="https://bitbucket.org/multicoreware/x265_git/get/master.tar.bz2" 189 | fetch_tar "${url}" x265 190 | } 191 | 192 | if [[ $# == 0 ]]; then 193 | print_usage 194 | exit 1 195 | fi 196 | 197 | if [[ "$*" == "all" ]]; then 198 | fetch_brotli 199 | fetch_dav1d 200 | fetch_ffmpeg 201 | fetch_freetype 202 | fetch_fribidi 203 | fetch_harfbuzz 204 | fetch_highway 205 | fetch_lcms2 206 | fetch_libarchive 207 | fetch_libass 208 | fetch_libbluray 209 | fetch_libdvdnav 210 | fetch_libdvdread 211 | fetch_libjxl 212 | fetch_libplacebo 213 | fetch_libpng 214 | fetch_libunibreak 215 | fetch_libvpx 216 | fetch_libwebp 217 | fetch_luajit 218 | fetch_moltenvk 219 | fetch_mpv 220 | fetch_opus 221 | fetch_shaderc 222 | fetch_svt-av1 223 | fetch_uchardet 224 | fetch_vulkan 225 | fetch_x264 226 | fetch_x265 227 | else 228 | for arg in "$@"; do 229 | case "${arg}" in 230 | "brotli") 231 | fetch_brotli 232 | ;; 233 | "dav1d") 234 | fetch_dav1d 235 | ;; 236 | "ffmpeg") 237 | fetch_ffmpeg 238 | ;; 239 | "freetype") 240 | fetch_freetype 241 | ;; 242 | "fribidi") 243 | fetch_fribidi 244 | ;; 245 | "harfbuzz") 246 | fetch_harfbuzz 247 | ;; 248 | "highway") 249 | fetch_highway 250 | ;; 251 | "lcms2") 252 | fetch_lcms2 253 | ;; 254 | "libarchive") 255 | fetch_libarchive 256 | ;; 257 | "libass") 258 | fetch_libass 259 | ;; 260 | "libbluray") 261 | fetch_libbluray 262 | ;; 263 | "libdvdnav") 264 | fetch_libdvdnav 265 | ;; 266 | "libdvdread") 267 | fetch_libdvdread 268 | ;; 269 | "libjxl") 270 | fetch_libjxl 271 | ;; 272 | "libplacebo") 273 | fetch_libplacebo 274 | ;; 275 | "libpng") 276 | fetch_libpng 277 | ;; 278 | "libunibreak") 279 | fetch_libunibreak 280 | ;; 281 | "libvpx") 282 | fetch_libvpx 283 | ;; 284 | "libwebp") 285 | fetch_libwebp 286 | ;; 287 | "luajit") 288 | fetch_luajit 289 | ;; 290 | "moltenvk") 291 | fetch_moltenvk 292 | ;; 293 | "mpv") 294 | fetch_mpv 295 | ;; 296 | "opus") 297 | fetch_opus 298 | ;; 299 | "shaderc") 300 | fetch_shaderc 301 | ;; 302 | "svt-av1") 303 | fetch_svt-av1 304 | ;; 305 | "uchardet") 306 | fetch_uchardet 307 | ;; 308 | "vulkan") 309 | fetch_vulkan 310 | ;; 311 | "x264") 312 | fetch_x264 313 | ;; 314 | "x265") 315 | fetch_x265 316 | ;; 317 | *) 318 | echo "Unknown argument:" 319 | echo " ${arg}" 320 | print_usage 321 | exit 1 322 | ;; 323 | esac 324 | done 325 | fi 326 | -------------------------------------------------------------------------------- /homebrew/build-deps.txt: -------------------------------------------------------------------------------- 1 | cmake 2 | meson 3 | pkgconf 4 | stow 5 | xxhash 6 | -------------------------------------------------------------------------------- /src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/m154k1/mpv-build-macOS/b248462c3bcd70f5248fc7d8668a9b49e6e04b35/src/.gitkeep --------------------------------------------------------------------------------