Skip to content

Commit

Permalink
Merge branch 'master' into effect-layers
Browse files Browse the repository at this point in the history
  • Loading branch information
Salanto authored Jun 2, 2022
2 parents dab16a6 + d87371b commit f7c87b5
Show file tree
Hide file tree
Showing 28 changed files with 18,101 additions and 577 deletions.
377 changes: 207 additions & 170 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,176 +1,213 @@
name: build
name: CI build

on: push
on: [push]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'

jobs:
windows:
runs-on: windows-latest

build:
strategy:
fail-fast: false
matrix:
version:
- 5.15.1
platform:
- gcc_64
- android
- msvc2019
- mingw81_32
- clang_64

include:
- platform: gcc_64
os: ubuntu-latest
- platform: android
os: ubuntu-latest
- platform: msvc2019
os: windows-2019
- platform: mingw81_32
os: windows-latest
- platform: clang_64
os: macos-latest

runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v2

- name: Install Catch2
shell: bash
run: |
curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz
tar xvf catch2.tar.gz
cd Catch2-2.13.4
cmake -Bbuild -H. -DBUILD_TESTING=OFF
cmake --build build/ --target install
- name: Fetch external libs
run: |
# QtApng
curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.4/qtapng-msvc2017_64-5.14.1.zip -o apng.zip
unzip apng.zip
# discord-rpc
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc_win.zip
unzip discord_rpc_win.zip
cp ./discord-rpc/win64-dynamic/lib/discord-rpc.lib ./lib
# BASS
curl http://www.un4seen.com/files/bass24.zip -o bass.zip
unzip bass.zip
cp ./c/x64/bass.lib ./lib
# BASS MIDI
curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
unzip bassmidi.zip
cp ./c/x64/bassmidi.lib ./lib
# BASS Opus
curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
unzip bassopus.zip
cp ./c/x64/bassopus.lib ./lib
- name: Cache Qt
id: cache-qt
uses: actions/cache@v1
with:
path: ../Qt
key: ${{ runner.os }}-qt5

- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: '5.15.2'
cached: ${{steps.cache-qt.outputs.cache-hit}}

- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build

- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE

- name: Build
working-directory: ${{github.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target Attorney_Online

- name: Deploy
working-directory: ${{github.workspace}}/build/Release
shell: bash
run: |
windeployqt .
cp ../../msvc2017_64/plugins/imageformats/qapng.dll ./imageformats/
cp ../../discord-rpc/win64-dynamic/bin/discord-rpc.dll .
cp ../../x64/bass.dll .
cp ../../x64/bassmidi.dll .
cp ../../x64/bassopus.dll .
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: Attorney_Online-x64
path: ${{github.workspace}}/build/Release/

# linux:
# # The CMake configure and build commands are platform agnostic and should work equally
# # well on Windows or Mac. You can convert this to a matrix build if you need
# # cross-platform coverage.
# # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
# runs-on: ubuntu-20.04

# steps:
# - uses: actions/checkout@v2

# - name: Install catch2
# run: |
# curl -L https://github.com/catchorg/Catch2/archive/v2.13.4.tar.gz -o catch2.tar.gz
# tar xvf catch2.tar.gz
# cd Catch2-2.13.4
# cmake -Bbuild -H. -DBUILD_TESTING=OFF
# sudo cmake --build build/ --target install

# - name: Fetch external libs
# run: |
# # Download
# curl http://www.un4seen.com/files/bass24-linux.zip -o bass_linux.zip
# curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus_linux.zip
# curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc_linux.zip
# # Extract
# unzip bass_linux.zip
# unzip bassopus_linux.zip
# unzip discord_rpc_linux.zip
# # Copy
# cp x64/libbass.so lib
# cp x64/libbassopus.so lib
# cp discord-rpc/linux-dynamic/lib/libdiscord-rpc.so lib

# - name: Install Qt5
# run: sudo apt update -y && sudo apt install -y qt5-default

# - name: Install QtApng
# run: |
# git clone https://github.com/Skycoder42/QtApng
# cd QtApng
# qmake
# make
# sudo make install

# - name: Create Build Environment
# # Some projects don't allow in-source building, so create a separate build directory
# # We'll use this as our working directory for all subsequent commands
# run: cmake -E make_directory ${{github.workspace}}/build

# - name: Configure CMake
# # Use a bash shell so we can use the same syntax for environment variable
# # access regardless of the host operating system
# shell: bash
# env:
# CC: gcc-10
# CXX: g++-10
# working-directory: ${{github.workspace}}/build
# # Note the current convention is to use the -S and -B options here to specify source
# # and build directories, but this is only available with CMake 3.13 and higher.
# # The CMake binaries on the Github Actions machines are (as of this writing) 3.12
# run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE

# - name: Build
# working-directory: ${{github.workspace}}/build
# shell: bash
# # Execute the build. You can specify a specific target with "--target <NAME>"
# run: cmake --build . --config $BUILD_TYPE --target Attorney_Online

# - name: Strip
# working-directory: ${{github.workspace}}/build
# shell: bash
# run: strip -s Attorney_Online

# - name: Compress
# working-directory: ${{github.workspace}}/build
# shell: bash
# run: tar czvf Attorney_Online-linux-x86_64.tgz Attorney_Online

# - name: Upload Artifact
# uses: actions/upload-artifact@v2
# with:
# name: Attorney_Online
# path: ${{github.workspace}}/build/Attorney_Online-linux-x86_64.tgz
- uses: actions/checkout@master
with:
submodules: recursive
- uses: actions/setup-python@master
- name: actions/cache qt
uses: actions/cache@master
id: cache
with:
path: qt/${{matrix.version}}/${{matrix.platform}}
key: qt-${{matrix.version}}-${{matrix.platform}}

- name: Add msbuild to PATH
if: matrix.platform == 'msvc2019'
uses: microsoft/setup-msbuild@master

- uses: stonedDiscord/action-setup-qt@master
id: qt
with:
version: 5.15.1
platform: ${{matrix.platform}}

- name: Install QtApng
run: |
git clone https://github.com/Skycoder42/QtApng.git
cd QtApng
qmake CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}}
${{steps.qt.outputs.make}} qmake_all
${{steps.qt.outputs.make}}
${{steps.qt.outputs.make}} INSTALL_ROOT="${{steps.qt.outputs.installdir}}" install
- name: Create bin folder
run: |
mkdir bin
- name: Install Windows Discord RPC
if: contains(matrix.os, 'windows')
run: |
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-win.zip -o discord_rpc.zip
unzip discord_rpc.zip
cp ./discord-rpc/win32-dynamic/lib/discord-rpc.lib ./lib/
cp ./discord-rpc/win32-dynamic/bin/discord-rpc.dll ./bin/
- name: Install Linux Discord RPC
if: matrix.platform == 'gcc_64'
run: |
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc.zip
unzip discord_rpc.zip
cp ./discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ./lib/
cp ./discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ./bin/
- name: Install Mac Discord RPC
if: matrix.os == 'macos-latest'
run: |
curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip -o discord_rpc.zip
unzip discord_rpc.zip
cp ./discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ./lib/
cp ./discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ./bin/
- name: Install Windows BASS
if: contains(matrix.os, 'windows')
run: |
curl http://www.un4seen.com/files/bass24.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/c/bass.lib ./lib/
cp ./bass/bass.dll ./bin/
curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/c/bassmidi.lib ./lib/
cp ./bass/bassmidi.dll ./bin/
curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/c/bassopus.lib ./lib/
cp ./bass/bassopus.dll ./bin/
- name: Install Linux BASS
if: matrix.platform == 'gcc_64'
run: |
curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/x64/libbass.so ./lib/
cp ./bass/x64/libbass.so ./bin/
curl http://www.un4seen.com/files/bassmidi24-linux.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/x64/libbassmidi.so ./lib/
cp ./bass/x64/libbassmidi.so ./bin/
curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/x64/libbassopus.so ./lib/
cp ./bass/x64/libbassopus.so ./bin/
- name: Install Mac BASS
if: matrix.os == 'macos-latest'
run: |
curl http://www.un4seen.com/files/bass24-osx.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/libbass.dylib ./lib/
cp ./bass/libbass.dylib ./bin/
curl http://www.un4seen.com/files/bassmidi24-osx.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/libbassmidi.dylib ./lib/
cp ./bass/libbassmidi.dylib ./bin/
curl http://www.un4seen.com/files/bassopus24-osx.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/libbassopus.dylib ./lib/
cp ./bass/libbassopus.dylib ./bin/
- name: Install Android BASS
if: matrix.platform == 'android'
run: |
mkdir ./android/libs/
mkdir ./android/libs/armeabi-v7a/
curl http://www.un4seen.com/files/bass24-android.zip -o bass.zip
unzip -d bass -o bass.zip
cp ./bass/libs/armeabi-v7a/libbass.so ./lib/
cp ./bass/libs/armeabi-v7a/libbass.so ./android/libs/armeabi-v7a/
curl http://www.un4seen.com/files/bassmidi24-android.zip -o bassmidi.zip
unzip -d bass -o bassmidi.zip
cp ./bass/libs/armeabi-v7a/libbassmidi.so ./lib/
cp ./bass/libs/armeabi-v7a/libbassmidi.so ./android/libs/armeabi-v7a/
curl http://www.un4seen.com/files/bassopus24-android.zip -o bassopus.zip
unzip -d bass -o bassopus.zip
cp ./bass/libs/armeabi-v7a/libbassopus.so ./lib/
cp ./bass/libs/armeabi-v7a/libbassopus.so ./android/libs/armeabi-v7a/
- name: qmake
run: |
qmake CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}} ANDROID_ABIS="armeabi-v7a"
- name: build
run: |
${{steps.qt.outputs.make}}
- name: Deploy Windows
if: contains(matrix.os, 'windows')
working-directory: ${{github.workspace}}/bin/
shell: bash
run: |
windeployqt .
cp ../QtApng/plugins/imageformats/qapng.dll ./imageformats/
- name: Deploy Mac
if: matrix.os == 'macos-latest'
working-directory: ${{github.workspace}}/bin/
shell: bash
run: |
macdeployqt Attorney_Online.app
cp ../QtApng/plugins/imageformats/libqapng.dylib ./Attorney_Online.app/Contents/PlugIns/imageformats/
mv *.dylib ./Attorney_Online.app/Contents/Frameworks
install_name_tool -change @loader_path/libbass.dylib @rpath/libbass.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libbassopus.dylib @rpath/libbassopus.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libbassmidi.dylib @rpath/libbassmidi.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libdiscord-rpc.dylib @rpath/libdiscord-rpc.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
install_name_tool -change @loader_path/libqapng.dylib @rpath/libqapng.dylib ./Attorney_Online.app/Contents/MacOS/Attorney_Online
- name: Deploy Android
if: matrix.platform == 'android'
working-directory: ${{github.workspace}}/
shell: bash
run: |
mkdir ./build/libs/
mkdir ./build/libs/armeabi-v7a/
mv ./bin/*.so ./build/libs/armeabi-v7a/
cp ./QtApng/plugins/imageformats/libplugins_imageformats_qapng_armeabi-v7a.so ./build/libs/armeabi-v7a/
androiddeployqt --input android-Attorney_Online-deployment-settings.json --output ./build/ --apk ./bin/AttorneyOnline.apk
- name: Upload Artifact
uses: actions/upload-artifact@master
with:
name: Attorney_Online-${{matrix.platform}}
path: ${{github.workspace}}/bin/
Loading

0 comments on commit f7c87b5

Please sign in to comment.