mirror of
https://github.com/decaf-emu/decaf-emu.git
synced 2026-07-10 10:48:28 +00:00
208 lines
7.9 KiB
YAML
208 lines
7.9 KiB
YAML
name: C/C++ CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.name }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name: [
|
|
ubuntu-20.04-gcc-9,
|
|
windows-2019-cl,
|
|
]
|
|
include:
|
|
- name: ubuntu-20.04-gcc-9
|
|
os: ubuntu-20.04
|
|
compiler: gcc
|
|
version: "9"
|
|
- name: windows-2019-cl
|
|
os: windows-2019
|
|
compiler: cl
|
|
#- name: macOS-latest-Xcode-12
|
|
# os: macOS-latest
|
|
# compiler: xcode
|
|
# version: "12"
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Initialise
|
|
run: mkdir build
|
|
|
|
- name: Install Dependencies (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
cd build
|
|
wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
|
|
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-bionic.list http://packages.lunarg.com/vulkan/lunarg-vulkan-bionic.list
|
|
sudo apt-add-repository ppa:cginternals/ppa
|
|
sudo apt-get update
|
|
sudo apt-get install -y cmake libcurl4-openssl-dev libsdl2-dev libssl-dev zlib1g-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev vulkan-sdk python3-setuptools libavcodec-dev libavfilter-dev libswscale-dev libavutil-dev
|
|
if [ "${{ matrix.compiler }}" = "gcc" ]; then
|
|
sudo apt-get install -y g++-${{ matrix.version }}
|
|
else
|
|
sudo apt-get install -y clang-${{ matrix.version }}
|
|
fi
|
|
pip3 install wheel
|
|
pip3 install aqtinstall
|
|
python3 -m aqt install 5.13.0 linux desktop
|
|
|
|
- name: Install Dependencies (macOS)
|
|
if: startsWith(matrix.os, 'macOS')
|
|
run: |
|
|
brew install openssl sdl2 conan
|
|
|
|
- name: Load Cached Vulkan SDK (macOS)
|
|
id: cache-vulkan-macos
|
|
if: startsWith(matrix.os, 'macOS')
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: vulkan
|
|
key: ${{ runner.os }}-vulkan-1.2.182.0
|
|
|
|
- name: Install Vulkan SDK from web (macOS)
|
|
if: startsWith(matrix.os, 'macOS') && steps.cache-vulkan-macos.outputs.cache-hit != 'true'
|
|
run: |
|
|
mkdir vulkan
|
|
cd vulkan
|
|
curl -s -o vulkan-sdk.dmg "https://sdk.lunarg.com/sdk/download/1.2.182.0/mac/vulkansdk-macos-1.2.182.0.dmg?u="
|
|
hdiutil mount vulkan-sdk.dmg
|
|
cp -r /Volumes/vulkansdk-macos-1.2.182.0/macOS .
|
|
rm vulkan-sdk.dmg
|
|
|
|
- name: Load Cached Vulkan SDK (Windows)
|
|
id: cache-vulkan-windows
|
|
if: startsWith(matrix.os, 'windows')
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: C:/VulkanSDK/1.2.182.0
|
|
key: ${{ runner.os }}-vulkan-1.2.182.0
|
|
|
|
- name: Install Vulkan SDK from web (Windows)
|
|
if: startsWith(matrix.os, 'windows') && steps.cache-vulkan-windows.outputs.cache-hit != 'true'
|
|
shell: powershell
|
|
run: |
|
|
mkdir "C:\\VulkanSDK"
|
|
cd "C:\\VulkanSDK"
|
|
Invoke-WebRequest "https://sdk.lunarg.com/sdk/download/1.2.182.0/windows/VulkanSDK-1.2.182.0-Installer.exe?u=" -OutFile "VulkanSDK.exe"
|
|
Start-Process -FilePath VulkanSDK.exe -Wait -PassThru -ArgumentList @("/S");
|
|
cd "C:\\VulkanSDK\\1.2.182.0"
|
|
Remove-Item -Force -Recurse Bin32
|
|
Remove-Item -Force -Recurse Demos
|
|
Remove-Item -Force -Recurse Lib32
|
|
Remove-Item -Force -Recurse Templates
|
|
Remove-Item -Force -Recurse Tools
|
|
Remove-Item -Force -Recurse Tools32
|
|
Remove-Item -Force -Recurse Third-Party
|
|
Remove-Item -Force Uninstall.exe
|
|
Remove-Item -Force Bin\\VkLayer*
|
|
Remove-Item -Force Lib\\shaderc*
|
|
dir
|
|
|
|
- name: Load Cached Qt (Windows)
|
|
id: cache-qt-windows
|
|
if: startsWith(matrix.os, 'windows')
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: C:/Qt/5.13.0/msvc2017_64
|
|
key: ${{ runner.os }}-qt-5.13.0-msvc2017_64
|
|
|
|
- name: Install Qt from web (Windows)
|
|
if: startsWith(matrix.os, 'windows') && steps.cache-qt-windows.outputs.cache-hit != 'true'
|
|
shell: powershell
|
|
run: |
|
|
mkdir "C:\\Qt"
|
|
cd "C:\\Qt"
|
|
pip install aqtinstall
|
|
cmd /c 'python 2>&1' -m aqt install 5.13.0 windows desktop win64_msvc2017_64
|
|
dir
|
|
|
|
- name: Setup Environment (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
if [ "${{ matrix.compiler }}" = "gcc" ]; then
|
|
echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV
|
|
echo "CXX=g++-${{ matrix.version }}" >> $GITHUB_ENV
|
|
echo "CONAN_ENV_COMPILER_LIBCXX=libstdc++11" >> $GITHUB_ENV
|
|
else
|
|
echo "CC=clang-${{ matrix.version }}" >> $GITHUB_ENV
|
|
echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV
|
|
fi
|
|
echo "CONAN_ENV_COMPILER=${{ matrix.compiler }}" >> $GITHUB_ENV
|
|
echo "CONAN_ENV_COMPILER_VERSION=${{ matrix.version }}" >> $GITHUB_ENV
|
|
echo "QTDIR=$PWD/build/5.13.0/gcc_64" >> $GITHUB_ENV
|
|
echo "VULKAN_SDK=$PWD/vulkan/macOS" >> $GITHUB_ENV
|
|
|
|
- name: Setup Environment (macOS)
|
|
if: startsWith(matrix.os, 'macOS')
|
|
run: |
|
|
echo "VULKAN_SDK=$PWD/vulkan/macOS" >> $GITHUB_ENV
|
|
sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app
|
|
|
|
- name: Setup Environment (Windows)
|
|
if: startsWith(matrix.os, 'windows')
|
|
shell: powershell
|
|
run: |
|
|
echo "VULKAN_SDK=C:\\VulkanSDK\\1.2.182.0" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "QTDIR=C:\\Qt\\5.13.0\\msvc2017_64" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "CONAN_ENV_COMPILER=Visual Studio" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "CONAN_ENV_COMPILER_VERSION=16" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
- name: Install Conan Dependencies (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
cd build
|
|
pip install --user conan
|
|
source ~/.profile
|
|
conan user
|
|
conan install .. -s compiler=${{ matrix.compiler }} -s compiler.version=${{ matrix.version }} -s compiler.libcxx=libstdc++11 --build=missing -o silent=True -o ffmpeg=False -o curl=False -o openssl=False -o sdl2=False -o zlib=False
|
|
|
|
- name: Install Conan Dependencies (macOS)
|
|
if: startsWith(matrix.os, 'macOS')
|
|
run: |
|
|
cd build
|
|
conan user
|
|
conan install .. --build=missing -o silent=True -o ffmpeg=False -o curl=False -o openssl=False -o sdl2=False -o zlib=False
|
|
|
|
- name: Install Conan Dependencies (Windows)
|
|
if: startsWith(matrix.os, 'windows')
|
|
shell: cmd
|
|
run: |
|
|
cd build
|
|
pip install conan
|
|
conan user
|
|
conan install .. -s compiler="Visual Studio" -s compiler.version=16 --build=missing -o silent=True -o ffmpeg=False -o curl=True -o openssl=True -o sdl2=True -o zlib=True
|
|
|
|
- name: Configure (macOS)
|
|
if: startsWith(matrix.os, 'macOS')
|
|
run: |
|
|
cd build
|
|
cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DDECAF_BUILD_TOOLS=ON -DDECAF_FFMPEG=OFF -DDECAF_VULKAN=ON -DDECAF_QT=OFF -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DSDL2_DIR=/usr/local/opt/sdl2 -DCMAKE_INSTALL_PREFIX=install ..
|
|
|
|
- name: Configure (Ubuntu)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
cd build
|
|
cmake -DDECAF_BUILD_TOOLS=ON -DDECAF_FFMPEG=ON -DDECAF_VULKAN=ON -DDECAF_QT=ON -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=$QTDIR/lib/cmake/Qt5 -DCMAKE_INSTALL_PREFIX=install ..
|
|
|
|
- name: Configure (Windows)
|
|
if: startsWith(matrix.os, 'windows')
|
|
shell: cmd
|
|
run: |
|
|
cd build
|
|
cmake -DDECAF_BUILD_TOOLS=ON -DDECAF_FFMPEG=OFF -DDECAF_VULKAN=ON -DDECAF_QT=ON -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=%QTDIR%/lib/cmake/Qt5 -DCMAKE_INSTALL_PREFIX=install ..
|
|
|
|
- name: Build
|
|
run: |
|
|
cd build
|
|
cmake --build . --config Release -j 2 --target install
|
|
|
|
- uses: actions/upload-artifact@master
|
|
with:
|
|
name: decaf-emu-${{ matrix.os }}
|
|
path: build/install
|