diff options
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r-- | .github/workflows/build.yml | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..1524d584cd --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,193 @@ +name: build + +on: + push: + branches: + - master + - ci + - 'release/**' + pull_request: + branches: [master] + +jobs: + mingw: + runs-on: ubuntu-20.04 + strategy: + matrix: + target: [i686-w64-mingw32, x86_64-w64-mingw32] + steps: + - uses: actions/checkout@v2 + + # Increase -N suffix here to force full rebuild after changes + - uses: actions/cache@v2 + with: + path: mingw_prefix/ + key: "${{ matrix.target }}-2" + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib nasm yasm + # Meson from apt is too old + pip3 install --no-input meson ninja + ./bootstrap.py + + - name: Build with meson + run: | + ./ci/build-mingw64.sh meson + env: + TARGET: ${{ matrix.target }} + + - name: Print meson log + if: ${{ failure() }} + run: | + cat ./${{ matrix.target }}_mingw_build/meson-logs/meson-log.txt + + - name: Build with waf + run: | + ./ci/build-mingw64.sh waf + env: + TARGET: ${{ matrix.target }} + + - name: Print waf log + if: ${{ failure() }} + run: | + cat ./build/config.log + + macos: + runs-on: ${{ matrix.os }} + strategy: + matrix: + cc: + - "clang" + os: + - "macos-10.15" + - "macos-11" + steps: + - uses: actions/checkout@v2 + + - name: Override Xcode 13.0 if it's the default toolchain + run: | + XCODE_PATH="$(xcode-select -p)" + case "${XCODE_PATH}" in + *Xcode_13.0*) + sudo xcode-select -s "/Applications/Xcode_13.1.app" + echo "Updated Xcode path ${XCODE_PATH} -> $(xcode-select -p)" + ;; + esac + + - name: Install dependencies + run: | + brew update + brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 luajit libass ffmpeg meson + + - name: Build with meson + run: | + ./ci/build-macos.sh meson + env: + CC: "${{ matrix.cc }}" + TRAVIS_OS_NAME: "${{ matrix.os }}" + + - name: Print meson log + if: ${{ failure() }} + run: | + cat ./build/meson-logs/meson-log.txt + + - name: Build with waf + run: | + ./ci/build-macos.sh waf + env: + CC: "${{ matrix.cc }}" + TRAVIS_OS_NAME: "${{ matrix.os }}" + + - name: Print waf log + if: ${{ failure() }} + run: | + cat ./build/config.log + + linux: + runs-on: "ubuntu-20.04" + container: + image: "registry.cirno.systems/kiwi/containers/mpv-ci:stable-deps" + # Disable seccomp until a container manager in GitHub recognizes + # clone3() syscall, + # <https://github.com/actions/virtual-environments/issues/3812>. + options: --security-opt seccomp=unconfined + env: + CC: "${{ matrix.cc }}" + strategy: + matrix: + cc: + - "gcc" + - "clang" + steps: + - uses: actions/checkout@v2 + + - name: Install dependencies + run: | + ./bootstrap.py + zypper -n install meson + + - name: Build with meson + run: | + ./ci/build-tumbleweed.sh meson + + - name: Print meson log + if: ${{ failure() }} + run: | + cat ./build/meson-logs/meson-log.txt + + - name: Build with waf + run: | + ./ci/build-tumbleweed.sh waf + + - name: Print waf log + if: ${{ failure() }} + run: | + cat ./build/config.log + + freebsd: + runs-on: macos-10.15 # until https://github.com/actions/runner/issues/385 + steps: + - uses: actions/checkout@v2 + - name: Test in FreeBSD VM + uses: vmactions/freebsd-vm@v0.1.5 # aka FreeBSD 13.0 + with: + usesh: true + prepare: | + # Requested in ci/build-freebsd.sh + pkg install -y \ + cmake \ + evdev-proto \ + ffmpeg \ + libplacebo \ + libxkbcommon \ + luajit \ + meson \ + openal-soft \ + pkgconf \ + python3 \ + sdl2 \ + sndio \ + vulkan-headers \ + wayland-protocols \ + # + # Optionally auto-enabled + pkg install -y \ + alsa-lib \ + jackit \ + libXv \ + libarchive \ + libbluray \ + libcaca \ + libcdio-paranoia \ + libdvdnav \ + mujs \ + pulseaudio \ + rubberband \ + sekrit-twc-zimg \ + uchardet \ + v4l_compat \ + # + run: | + ./ci/build-freebsd.sh |