diff options
Diffstat (limited to '.github/workflows/build.yml')
| -rw-r--r-- | .github/workflows/build.yml | 377 |
1 files changed, 207 insertions, 170 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1c22914..fac5f383 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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/ |
