Files
FFmpeg/.github/workflows/build.yml
T
Michael Fabian 'Xaymar' Dirks 97a2ea1135 ci: Update x264 to 0.161.3020
2020-11-22 02:55:19 +01:00

106 lines
3.8 KiB
YAML

name: Build
on:
workflow_dispatch:
inputs:
ref:
description: 'Branch, Tag or Commit to build'
required: false
default: 'master'
env:
X264_VERSION: "0.161.3020"
jobs:
cc:
runs-on: ubuntu-20.04
strategy:
matrix:
bits: [ 32, 64 ]
type: [ "static", "shared" ]
license: [ "LGPLv2", "LGPLv3", "GPLv2", "GPLv3" ]
name: "Windows (${{ matrix.bits }}bit, ${{ matrix.type }}, ${{ matrix.license }})"
steps:
- name: "Checkout"
uses: actions/checkout@v2
with:
ref: "${{ github.event.inputs.ref }}"
submodules: "recursive"
fetch-depth: 0
- name: "Gather Information"
id: data
shell: bash
run: |
# Bitness
if [ "${{ matrix.bits }}" == "32" ]; then
echo "::set-output name=arch::i686"
echo "::set-output name=target_os::mingw32"
echo "::set-output name=cross_prefix::i686-w64-mingw32"
else
echo "::set-output name=arch::x86_64"
echo "::set-output name=target_os::mingw64"
echo "::set-output name=cross_prefix::x86_64-w64-mingw32"
fi
# License
if [ "${{ matrix.license }}" == "LGPLv2" ]; then
echo "::set-output name=flags_license::"
elif [ "${{ matrix.license }}" == "LGPLv3" ]; then
echo "::set-output name=flags_license:: --enable-version3"
elif [ "${{ matrix.license }}" == "GPLv2" ]; then
echo "::set-output name=flags_license::--enable-gpl"
elif [ "${{ matrix.license }}" == "GPLv3" ]; then
echo "::set-output name=flags_license::--enable-gpl --enable-version3"
fi
# Build Type
if [ "${{ matrix.type }}" == "static" ]; then
echo "::set-output name=flags_type::--enable-static --disable-shared"
else
echo "::set-output name=flags_type::--disable-static --enable-shared"
fi
# Commit
echo "::set-output name=commit::$(git rev-parse --short=8 HEAD)"
- name: "Dependency: Packages"
shell: bash
run: |
sudo apt-get update
sudo apt-get install \
build-essential git \
cmake make ninja-build \
pkg-config \
mingw-w64 mingw-w64-tools gcc-mingw-w64 g++-mingw-w64 \
nasm
- name: "Dependency: x264 (v${{ env.X264_VERSION }}, GPLv2, shared)"
if: startsWith(matrix.license, 'GPL')
id: x264
shell: bash
run: |
curl -L -o "x264.zip" "https://github.com/Xaymar/x264/releases/download/${X264_VERSION}/x264-${{ matrix.bits }}-shared-GPLv2.zip"
sudo 7z x -o/usr/${{ steps.data.outputs.cross_prefix }}/ x264.zip
7z x -o./distrib x264.zip
echo "::set-output name=flags::--enable-libx264"
- name: "Configure"
shell: bash
run: |
./configure \
--arch=${{ steps.data.outputs.arch }} \
--target-os=${{ steps.data.outputs.target_os }} \
--cross-prefix=${{ steps.data.outputs.cross_prefix }}- \
--prefix="${{ github.workspace }}/distrib" \
--extra-cflags=-O3 --extra-cflags=-mmmx --extra-cflags=-msse --extra-cflags=-msse2 --extra-cflags=-msse3 --extra-cflags=-mssse3 \
--extra-cflags=-msse4.1 --extra-cflags=-msse4.2 --extra-cflags=-mavx --extra-cflags=-maes --extra-cflags=-mpclmul \
${{ steps.data.outputs.flags_license }} \
${{ steps.data.outputs.flags_type }} \
${{ steps.x264.outputs.flags}}
- name: "Compile"
shell: bash
run: |
make -j $(($(grep ^cpu\\scores /proc/cpuinfo | uniq | awk '{print $4}') * 2))
make install
- name: "Upload Artifacts"
uses: actions/upload-artifact@v1
with:
name: ffmpeg-${{ matrix.bits }}-${{ matrix.type }}-${{ matrix.license }}-${{ steps.data.outputs.commit }}
path: distrib