Add GitHub Actions CI script

This commit is contained in:
spicyjpeg 2023-06-20 22:51:45 +02:00
parent 67746af7b4
commit 21aed2cd6b
No known key found for this signature in database
GPG Key ID: 5CC87404C01DF393
3 changed files with 148 additions and 0 deletions

92
.github/scripts/build.sh vendored Executable file
View File

@ -0,0 +1,92 @@
#!/bin/bash
ROOT_DIR="$(pwd)"
FFMPEG_VERSION="6.0"
NUM_JOBS="4"
if [ $# -eq 1 ]; then
PACKAGE_NAME="$1"
FFMPEG_OPTIONS=""
PSXAVENC_OPTIONS=""
elif [ $# -eq 3 ]; then
PACKAGE_NAME="$1"
FFMPEG_OPTIONS="--arch=x86 --target-os=mingw32 --cross-prefix=$2-"
PSXAVENC_OPTIONS="--cross-file $3"
else
echo "Usage: $0 <package name> [cross prefix] [cross file]"
exit 0
fi
## Download FFmpeg
if [ ! -d ffmpeg-$FFMPEG_VERSION ]; then
wget "https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.xz" \
|| exit 1
tar Jxf ffmpeg-$FFMPEG_VERSION.tar.xz \
|| exit 1
rm -f ffmpeg-$FFMPEG_VERSION.tar.xz
fi
## Build FFmpeg
mkdir -p ffmpeg-build
cd ffmpeg-build
../ffmpeg-$FFMPEG_VERSION/configure \
--prefix="$ROOT_DIR/ffmpeg-dist" \
$FFMPEG_OPTIONS \
--enable-gpl \
--enable-version3 \
--enable-static \
--disable-shared \
--enable-small \
--disable-programs \
--disable-doc \
--disable-avdevice \
--disable-postproc \
--disable-avfilter \
--disable-network \
--disable-encoders \
--disable-hwaccels \
--disable-muxers \
--disable-bsfs \
--disable-devices \
--disable-filters \
--disable-mmx \
|| exit 2
make -j $NUM_JOBS \
|| exit 2
make install \
|| exit 2
cd ..
rm -rf ffmpeg-build
## Build psxavenc
meson setup \
--buildtype release \
--strip \
--prefix $ROOT_DIR/psxavenc-dist \
--pkg-config-path $ROOT_DIR/ffmpeg-dist/lib/pkgconfig \
$PSXAVENC_OPTIONS \
psxavenc-build \
psxavenc \
|| exit 3
meson compile -C psxavenc-build \
|| exit 3
meson install -C psxavenc-build \
|| exit 3
rm -rf ffmpeg-dist psxavenc-build
## Package psxavenc
cd psxavenc-dist
zip -9 -r ../$PACKAGE_NAME.zip . \
|| exit 4
cd ..
rm -rf psxavenc-dist

12
.github/scripts/mingw-cross.txt vendored Normal file
View File

@ -0,0 +1,12 @@
[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
strip = 'x86_64-w64-mingw32-strip'
pkgconfig = 'pkg-config'
[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

44
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: Build psxavenc
on: [ push, pull_request ]
jobs:
build:
name: Build and create release
runs-on: ubuntu-latest
steps:
- name: Install prerequisites
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends meson ninja-build gcc-mingw-w64-x86-64
- name: Fetch repo contents
uses: actions/checkout@v3
with:
path: psxavenc
- name: Build psxavenc for Windows
run: |
psxavenc/.github/scripts/build.sh psxavenc-windows x86_64-w64-mingw32 psxavenc/.github/scripts/mingw-cross.txt
- name: Build psxavenc for Linux
run: |
psxavenc/.github/scripts/build.sh psxavenc-linux
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: psxavenc-windows
path: |
psxavenc-windows.zip
psxavenc-linux.zip
- name: Publish release
if: ${{ github.ref_type == 'tag' }}
uses: softprops/action-gh-release@v1
with:
#fail_on_unmatched_files: true
files: |
psxavenc-windows.zip
psxavenc-linux.zip