name: CI build on: [push, pull_request] env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' jobs: 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-20.04 - 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@master with: submodules: recursive - uses: actions/setup-python@master with: python-version: '3.10' - 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@main - name: Downgrade Android NDK if: matrix.platform == 'android' run: | ANDROID_ROOT=/usr/local/lib/android ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager echo "y" | $SDKMANAGER "ndk;21.4.7075529" echo "y" | $SDKMANAGER "platforms;android-24" ln -sfn $ANDROID_SDK_ROOT/ndk/21.4.7075529 $ANDROID_NDK_ROOT - uses: Skycoder42/action-setup-qt@master id: qt with: version: ${{matrix.version}} platform: ${{matrix.platform}} - name: Install QtApng run: | git clone https://github.com/Skycoder42/QtApng.git cd QtApng cd src/3rdparty chmod +x get_libs.sh ./get_libs.sh 1.2.13 1.6.37 cd ../.. qmake CONFIG+=install_ok QMAKE_CXXFLAGS+="-fno-sized-deallocation" 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: 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/ cp ./discord-rpc/win32-dynamic/include/discord*.h ./include/ - 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/ cp ./discord-rpc/linux-dynamic/include/discord*.h ./include/ - 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/ cp ./discord-rpc/osx-dynamic/include/discord*.h ./include/ - 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/libs/x86_64/libbass.so ./lib/ cp ./bass/libs/x86_64/libbass.so ./bin/ curl http://www.un4seen.com/files/bassmidi24-linux.zip -o bassmidi.zip unzip -d bass -o bassmidi.zip cp ./bass/libs/x86_64/libbassmidi.so ./lib/ cp ./bass/libs/x86_64/libbassmidi.so ./bin/ curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip unzip -d bass -o bassopus.zip cp ./bass/libs/x86_64/libbassopus.so ./lib/ cp ./bass/libs/x86_64/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 -p ./android/libs/armeabi-v7a/ curl http://www.un4seen.com/files/bass24-android.zip -o bass.zip unzip -o bass.zip -d bass cp ./bass/libs/armeabi-v7a/libbass.so ./lib/ unzip -o bass.zip "libs/*" -d "./android/libs/" 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/ unzip -o bassmidi.zip "libs/*" -d "./android/libs/" 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/ unzip -o bassopus.zip "libs/*" -d "./android/libs/" cp ./bass/libs/armeabi-v7a/libbassopus.so ./android/libs/armeabi-v7a/ - name: qmake if: matrix.platform != 'android' run: | qmake QMAKE_CXXFLAGS+="-fno-sized-deallocation" DEFINES+=DISCORD CONFIG+=install_ok QT_PLATFORM=${{matrix.platform}} - name: qmake android if: matrix.platform == 'android' 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 --no-quick-import --no-translations --no-virtualkeyboard --no-compiler-runtime --no-webkit2 --no-opengl-sw . cp ../QtApng/plugins/imageformats/qapng.dll ./imageformats/ rm ./imageformats/qtiff.dll rm ./imageformats/qjpeg.dll rm ./imageformats/qicns.dll rm ./imageformats/qico.dll rm ./imageformats/qsvg.dll rm ./imageformats/qtga.dll rm ./imageformats/qwbmp.dll rm ./Qt5Svg.dll rm -r iconengines rm -r bearer rm -r styles - name: Copy MingW DLL if: matrix.platform == 'mingw81_32' working-directory: ${{github.workspace}}/bin/ shell: bash run: | cp D:/a/AO2-Client/AO2-Client/.cache/qt/Tools/mingw810_32/bin/libgcc_s_dw2-1.dll . cp D:/a/AO2-Client/AO2-Client/.cache/qt/Tools/mingw810_32/bin/libstdc++-6.dll . cp D:/a/AO2-Client/AO2-Client/.cache/qt/Tools/mingw810_32/bin/libwinpthread-1.dll . - name: Deploy Linux if: matrix.platform == 'gcc_64' working-directory: ${{github.workspace}}/bin/ shell: bash run: | cp ../scripts/launch.sh . mkdir -p imageformats cp ../QtApng/plugins/imageformats/libqapng.so ./imageformats/libqapng.so chmod +x launch.sh chmod +x Attorney_Online tar -cf Attorney_Online.tar ./* rm -rf imageformats rm *.so rm *.sh rm Attorney_Online - 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 hdiutil create -volname "Attorney_Online" -srcfolder "./Attorney_Online.app" -ov -format UDZO "Attorney_Online.dmg" rm -r ./Attorney_Online.app/ - name: Deploy Android if: matrix.platform == 'android' working-directory: ${{github.workspace}}/ shell: bash run: | mkdir -p ./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 --android-platform android-24 --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.os}}-${{matrix.platform}} path: ${{github.workspace}}/bin/