mirror of
https://github.com/mupen64plus/mupen64plus-video-rice.git
synced 2025-04-02 10:51:56 -04:00
280 lines
10 KiB
YAML
280 lines
10 KiB
YAML
name: Rice
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '.{gitattributes,gitignore,travis.yml}'
|
|
- 'appveyor.yml,README'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '.{gitattributes,gitignore,travis.yml}'
|
|
- 'appveyor.yml,README'
|
|
schedule:
|
|
- cron: '20 14 21 * *'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
|
|
Linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- cc: GCC
|
|
platform: x64
|
|
bits: 64
|
|
- cc: GCC
|
|
platform: x86
|
|
bits: 32
|
|
- cc: Clang
|
|
platform: x64
|
|
bits: 64
|
|
- cc: Clang
|
|
platform: x86
|
|
bits: 32
|
|
name: Linux / ${{ matrix.cc }} / ${{ matrix.platform }}
|
|
runs-on: ubuntu-22.04
|
|
if: (github.event_name == 'schedule' && github.repository == 'mupen64plus/mupen64plus-video-rice') || (github.event_name != 'schedule')
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Get build dependencies and arrange the environment
|
|
run: |
|
|
echo "G_REV=$(git rev-parse --short HEAD)" >> "${GITHUB_ENV}"
|
|
if [[ ${{ matrix.bits }} -eq 32 ]]; then sudo dpkg --add-architecture i386; fi
|
|
sudo apt-get update
|
|
sudo apt-get -y install libgl1-mesa-dev libpng-dev libsdl1.2-dev libsdl2-dev zlib1g-dev
|
|
if [[ ${{ matrix.bits }} -eq 32 ]]; then
|
|
sudo apt-get --reinstall -y install gcc-multilib g++-multilib libc6 libc6-dev-i386 libgl1-mesa-glx:i386 libpng16-16:i386 libsdl1.2debian:i386 libsdl2-2.0-0:i386 zlib1g:i386
|
|
LINK="sudo ln -s -T"
|
|
cd /usr/lib/i386-linux-gnu
|
|
if ! [[ -f libGL.so ]]; then ${LINK} libGL.so.1.7.0 libGL.so; fi
|
|
if ! [[ -f libpng16.so ]]; then ${LINK} libpng16.so.16.37.0 libpng16.so; fi
|
|
if ! [[ -f libSDL.so ]]; then ${LINK} libSDL-1.2.so.0.11.4 libSDL.so; fi
|
|
if ! [[ -f libSDL2.so ]]; then ${LINK} libSDL2-2.0.so.0.18.2 libSDL2.so; fi
|
|
if ! [[ -f libz.so ]]; then ${LINK} libz.so.1.2.11 libz.so; fi
|
|
cd /usr/include/SDL2
|
|
if ! [[ -f _real_SDL_config.h ]]; then ${LINK} ../x86_64-linux-gnu/SDL2/_real_SDL_config.h _real_SDL_config.h; fi
|
|
fi
|
|
sudo ldconfig
|
|
- name: Build and related stuff, backup binaries
|
|
run: |
|
|
if [[ ${{ matrix.bits }} -eq 32 ]]; then export PIC="1" CPU_TUNE="-msse2 -mtune=pentium4"; else CPU_TUNE="-mtune=core2"; fi
|
|
export OPTFLAGS="-O2 -flto ${CPU_TUNE}"
|
|
ORIG="$(pwd)"
|
|
CC="gcc"
|
|
CXX="g++"
|
|
if [[ "${{ matrix.cc }}" != "GCC" ]]; then
|
|
CC="clang"
|
|
CXX="clang++"
|
|
fi
|
|
${CC} --version
|
|
echo ""
|
|
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
|
MSG="1.2"
|
|
mkdir pkg
|
|
for SDL in sdl sdl2; do
|
|
echo ""
|
|
echo ":: ${{ matrix.cc }} ${{ matrix.platform }} / SDL${MSG} ::"
|
|
echo ""
|
|
make -C projects/unix clean
|
|
echo ""
|
|
make CC="${CC}" CXX="${CXX}" BITS="${{ matrix.bits }}" SDL_CONFIG="${SDL}-config" -C projects/unix all -j4
|
|
echo ""
|
|
make -C projects/unix install DESTDIR="${ORIG}/pkg/"
|
|
echo ""
|
|
ls -gG pkg/usr/local/lib/mupen64plus/*.so
|
|
echo ""
|
|
ldd pkg/usr/local/lib/mupen64plus/mupen64plus-video-rice.so
|
|
MSG="2"
|
|
done
|
|
tar cvzf pkg/mupen64plus-video-rice-linux-${{ matrix.platform }}-g${{ env.G_REV }}.tar.gz -C pkg/ "usr"
|
|
- name: Upload artifact
|
|
if: matrix.cc == 'GCC'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: mupen64plus-video-rice-linux-${{ matrix.platform }}-g${{ env.G_REV }}
|
|
path: pkg/*.tar.gz
|
|
|
|
MSYS2:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- cc: GCC
|
|
platform: x64
|
|
cross: x86_64
|
|
bits: 64
|
|
- cc: GCC
|
|
platform: x86
|
|
cross: i686
|
|
bits: 32
|
|
name: Windows / MSYS2 ${{ matrix.cc }} / ${{ matrix.platform }}
|
|
runs-on: windows-2022
|
|
if: (github.event_name == 'schedule' && github.repository == 'mupen64plus/mupen64plus-video-rice') || (github.event_name != 'schedule')
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: MINGW${{ matrix.bits }}
|
|
update: true
|
|
install: >-
|
|
git
|
|
libtool
|
|
make
|
|
mingw-w64-${{ matrix.cross }}-gcc
|
|
mingw-w64-${{ matrix.cross }}-toolchain
|
|
mingw-w64-${{ matrix.cross }}-libpng
|
|
mingw-w64-${{ matrix.cross }}-SDL2
|
|
mingw-w64-${{ matrix.cross }}-zlib
|
|
- name: Build and related stuff, backup binaries
|
|
run: |
|
|
echo "G_REV=$(git rev-parse --short HEAD)" >> "${GITHUB_ENV}"
|
|
if [[ ${{ matrix.bits }} -eq 32 ]]; then CPU_TUNE="-msse2 -mtune=pentium4"; else CPU_TUNE="-mtune=core2"; fi
|
|
export OPTFLAGS="-O2 -flto ${CPU_TUNE}"
|
|
ORIG="$(pwd)"
|
|
CC="gcc"
|
|
CXX="g++"
|
|
${CC} --version
|
|
echo ""
|
|
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
|
mkdir pkg
|
|
echo ""
|
|
echo ":: ${{ matrix.cc }} ${{ matrix.platform }} / SDL2 ::"
|
|
echo ""
|
|
make -C projects/unix clean
|
|
echo ""
|
|
make CC="${CC}" CXX="${CXX}" BITS="${{ matrix.bits }}" -C projects/unix all -j4
|
|
echo ""
|
|
make -C projects/unix install PLUGINDIR="" SHAREDIR="" BINDIR="" MANDIR="" LIBDIR="" APPSDIR="" ICONSDIR="icons" INCDIR="api" LDCONFIG="true" DESTDIR="${ORIG}/pkg/"
|
|
echo ""
|
|
ls -gG pkg/*.dll
|
|
echo ""
|
|
ldd pkg/mupen64plus-video-rice.dll
|
|
- name: Backup dependencies, etc...
|
|
run: |
|
|
if [[ ${{ matrix.bits }} -eq 32 ]]; then LIBGCC="libgcc_s_dw2-1"; else LIBGCC="libgcc_s_seh-1"; fi
|
|
for LIB in ${LIBGCC} libpng16-16 libstdc++-6 libwinpthread-1 SDL2 zlib1; do
|
|
echo ":: Copying ${LIB}.dll"
|
|
cp "/mingw${{ matrix.bits }}/bin/${LIB}.dll" pkg/
|
|
done
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: mupen64plus-video-rice-msys2-${{ matrix.platform }}-g${{ env.G_REV }}
|
|
path: pkg/*
|
|
|
|
MSVC:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- toolset: v143
|
|
platform: x64
|
|
vs: 2022
|
|
- toolset: v141_xp
|
|
platform: x86
|
|
vs: 2019
|
|
name: Windows / MSVC with ${{ matrix.toolset }} / ${{ matrix.platform }}
|
|
runs-on: windows-${{ matrix.vs }}
|
|
if: (github.event_name == 'schedule' && github.repository == 'mupen64plus/mupen64plus-video-rice') || (github.event_name != 'schedule')
|
|
defaults:
|
|
run:
|
|
shell: cmd
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: microsoft/setup-msbuild@v1
|
|
- name: Build and related stuff, backup binaries
|
|
run: |
|
|
for /f "tokens=1" %%R in ('git rev-parse --short HEAD') do echo G_REV=%%R>> "%GITHUB_ENV%"
|
|
set "ARCH=${{ matrix.platform }}"
|
|
if [%ARCH%] == [x86] set "ARCH=Win32"
|
|
echo.
|
|
msbuild --version
|
|
echo.
|
|
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ..\mupen64plus-core
|
|
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-win32-deps.git ..\mupen64plus-win32-deps
|
|
md pkg
|
|
echo.
|
|
msbuild projects\msvc\mupen64plus-video-rice.vcxproj /p:Configuration=Release;Platform=%ARCH%;PlatformToolset=${{ matrix.toolset }}
|
|
echo.
|
|
copy "projects\msvc\%ARCH%\Release\mupen64plus-video-rice.dll" pkg\
|
|
dir pkg\*.dll
|
|
- name: Backup dependencies, etc...
|
|
run: |
|
|
xcopy data pkg
|
|
copy "..\mupen64plus-win32-deps\libpng-1.6.39\lib\${{ matrix.platform }}\*.dll" pkg\
|
|
copy "..\mupen64plus-win32-deps\SDL2-2.26.3\lib\${{ matrix.platform }}\*.dll" pkg\
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: mupen64plus-video-rice-msvc-${{ matrix.platform }}-g${{ env.G_REV }}
|
|
path: pkg/*
|
|
|
|
Nightly-build:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref_name == 'master'
|
|
needs: [Linux, MSYS2, MSVC]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
path: binaries
|
|
- name: Get some tools
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get -y install hashdeep
|
|
- name: Creating new artifacts and update nightly-build
|
|
run: |
|
|
mkdir pkg
|
|
cd binaries
|
|
for BIN in *; do
|
|
cd "${BIN}"
|
|
if [[ "${BIN:23:4}" == "msys" ]]; then
|
|
echo ":: Creating ${BIN}.zip"
|
|
zip -r "../../pkg/${BIN}.zip" *
|
|
elif [[ "${BIN:23:4}" == "msvc" ]]; then
|
|
echo ":: Creating ${BIN}.zip"
|
|
zip -r "../../pkg/${BIN}.zip" *
|
|
else
|
|
echo ":: Recovering ${BIN}.tar.gz"
|
|
mv *.tar.gz ../../pkg/
|
|
fi
|
|
cd ..
|
|
done
|
|
cd ../pkg
|
|
echo ""
|
|
for BIN in *; do
|
|
ls -gG ${BIN}
|
|
tigerdeep -lz ${BIN} >> ../${BIN:0:22}.tiger.txt
|
|
sha256sum ${BIN} >> ../${BIN:0:22}.sha256.txt
|
|
sha512sum ${BIN} >> ../${BIN:0:22}.sha512.txt
|
|
done
|
|
mv ../*.tiger.txt .
|
|
mv ../*.sha*.txt .
|
|
echo ""
|
|
echo "TIGER:"
|
|
cat *.tiger.txt
|
|
echo ""
|
|
echo "SHA256:"
|
|
cat *.sha256.txt
|
|
echo ""
|
|
echo "SHA512:"
|
|
cat *.sha512.txt
|
|
echo ""
|
|
git tag -f nightly-build
|
|
git push -f origin nightly-build
|
|
- name: Nightly-build
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
prerelease: true
|
|
allowUpdates: true
|
|
removeArtifacts: true
|
|
replacesArtifacts: false
|
|
tag: nightly-build
|
|
artifacts: pkg/*
|