name: LinuxInstall

on:
  create:
    tags:
      - 'v*'

  workflow_dispatch:

jobs:
  build_ubuntu:
    runs-on: ubuntu-20.04

    steps:
      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y libxcb-cursor0
          sudo apt-get install -y libspeechd2
    
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          path: pdf4qt
          
      - name: Set up GCC
        uses: egor-tensin/setup-gcc@v1
        with:
          version: 11
          platform: x64

      - name: 'VCPKG: Set up VCPKG'
        run: |
          git clone --depth=1 https://github.com/microsoft/vcpkg.git
          cd vcpkg
          ./bootstrap-vcpkg.sh
          ./vcpkg integrate install
        
      - name: 'VCPKG: Cache vcpkg dependencies'
        uses: actions/cache@v3
        with:
          path: |
            ./vcpkg/downloads
            ./vcpkg/packages
          key: ${{ runner.os }}-vcpkg-v2-${{ hashFiles('**/vcpkg.json') }}
          restore-keys: |
            ${{ runner.os }}-vcpkg-v2-

      - name: 'VCPKG: Install project dependencies'
        run: |
          ./vcpkg install tbb openssl lcms zlib openjpeg freetype ijg-libjpeg libpng blend2d
        working-directory: vcpkg
        
      - name: Install Qt
        uses: jurplel/install-qt-action@v3
        with:
          version: '6.6.0'
          host: 'linux'
          target: 'desktop'
          dir: '${{ github.workspace }}/qt/'
          install-deps: 'true'
          modules: 'qtspeech qtmultimedia'
          cache: 'true'
          cache-key-prefix: ${{ runner.os }}-qt-660

      - name: Build project
        working-directory: pdf4qt
        run: |
          cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_OVERLAY_PORTS=vcpkg/overlays -DPDF4QT_INSTALL_TO_USR=ON
          cmake --build build -j6
          cmake --install build
          cp -rp build/install build/install_appimage
          
      - name: 'Linux Deploy Qt'
        working-directory: pdf4qt/build
        run: |
          wget -O deploy.AppImage https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
          chmod +x deploy.AppImage
          ./deploy.AppImage install/usr/share/applications/io.github.JakubMelka.Pdf4qt.desktop -executable-dir=install/usr/bin -extra-plugins=iconengines,imageformats,texttospeech

      - name: Make DEB package
        working-directory: pdf4qt/build
        run: |
          sh make-package.sh
           
      - name: Upload DEB package
        uses: actions/upload-artifact@v3
        with:
          name: ubuntu-deb-package
          path: ./pdf4qt/build/*.deb
          retention-days: 30
          
      - name: 'Make AppImage'
        working-directory: pdf4qt/build
        run: |
          cp install_appimage/usr/share/icons/hicolor/scalable/apps/io.github.JakubMelka.Pdf4qt.svg install_appimage/io.github.JakubMelka.Pdf4qt.svg
          ./deploy.AppImage install_appimage/usr/share/applications/io.github.JakubMelka.Pdf4qt.desktop -appimage -executable-dir=install_appimage/usr/bin -always-overwrite -extra-plugins=iconengines,imageformats,texttospeech
          
      - name: Upload AppImage package
        uses: actions/upload-artifact@v3
        with:
          name: ubuntu-appimage
          path: ./pdf4qt/build/*.AppImage
          retention-days: 30
         
