name: SDRangel Mac release build

on:
  push:
    branches:
      - mac_ci
    tags:
      - 'v*'

jobs:
  build_mac_x64:
    runs-on: macos-13
    env:
      MACOSX_DEPLOYMENT_TARGET: 12.0
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true
          fetch-depth: 0
      - name: Update brew
        run: brew update
      - name: Install brew packages
        run: brew install nasm subversion
      - name: Install SDRplay API
        run: |
            wget https://www.sdrplay.com/software/SDRplayAPI-macos-installer-universal-3.15.0.pkg
            sudo installer -pkg SDRplayAPI-macos-installer-universal-3.15.0.pkg -target /
      - name: Install python
        run: |
            wget  https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg
            sudo installer -pkg python-3.12.7-macos11.pkg -target /
      - name: Install python packages for UHD
        run: |
            /usr/local/bin/python3.12 -m pip install numpy mako requests Cheetah3 setuptools
      - name: Install Qt
        uses: jurplel/install-qt-action@v4
        with:
          version: '6.9.1'
          host: 'mac'
          arch: 'clang_64'
          modules: 'qtcharts qtscxml qt5compat qtlocation qtmultimedia qtpositioning qtserialport qtspeech qtwebsockets qtwebengine qtshadertools qtwebchannel'
      - name: Configure SDRangel
        run: |
          mkdir build && cd build
          cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_QT6=ON -DCMAKE_BUILD_TYPE=Release -DARCH_OPT=nehalem -DDEBUG_OUTPUT=ON -DENABLE_USRP=ON -DENABLE_MIRISDR=OFF -DBUILD_SERVER=OFF -DENABLE_EXTERNAL_LIBRARIES=ON -DBUNDLE=ON -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=TRUE -DPYTHON_EXECUTABLE=/usr/local/bin/python3.12
      - name: Build SDRangel on Mac
        run: |
          cd build
          make -j4
      - name: Create dmg
        run: |
          cd build
          RETRIES=5
          COUNT=1
          set +e
          while [ $COUNT -lt $RETRIES ]; do
            make package
            if [ $? -eq 0 ]; then
              RETRIES=0
              break
            fi
            let COUNT=$COUNT+1
          done
        shell: bash
        continue-on-error: true
      - name: Get version
        id: get_version
        run: |
            if [[ "${{github.ref_name}}" == "mac_ci" ]]; then
                echo "version=$(echo ${{github.sha}} | cut -c1-7)" >> $GITHUB_OUTPUT
            else
                echo "version=$(echo ${{github.ref_name}} | cut -c2-)" >> $GITHUB_OUTPUT
            fi
      - name: Get filename
        id: get_filename
        run: echo "filename=$(grep CPACK_PACKAGE_FILE_NAME build/CMakeCache.txt | cut -d "=" -f2)" >> $GITHUB_OUTPUT
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: sdrangel-${{ steps.get_version.outputs.version }}-macx64.dmg
          path: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg
      - name: Upload release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v2
        with:
          files: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg

  build_mac_arm64:
    runs-on: macos-14
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true
          fetch-depth: 0
      - name: Update brew
        run: brew update
      - name: Install brew packages
        run: brew install nasm subversion
      - name: Install SDRplay API
        run: |
            wget https://www.sdrplay.com/software/SDRplayAPI-macos-installer-universal-3.15.0.pkg
            sudo installer -pkg SDRplayAPI-macos-installer-universal-3.15.0.pkg -target /
      - name: Install python
        run: |
            wget  https://www.python.org/ftp/python/3.12.7/python-3.12.7-macos11.pkg
            sudo installer -pkg python-3.12.7-macos11.pkg -target /
      - name: Install python packages for UHD
        run: |
            /usr/local/bin/python3.12 -m pip install numpy mako requests Cheetah3 setuptools
      - name: Install Qt
        uses: jurplel/install-qt-action@v4
        with:
          version: '6.9.1'
          host: 'mac'
          arch: 'clang_64'
          modules: 'qtcharts qtscxml qt5compat qtlocation qtmultimedia qtpositioning qtserialport qtspeech qtwebsockets qtwebengine qtshadertools qtwebchannel'
      - name: Configure SDRangel
        run: |
          mkdir build && cd build
          cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_QT6=ON -DCMAKE_BUILD_TYPE=Release -DDEBUG_OUTPUT=ON -DENABLE_USRP=ON -DENABLE_MIRISDR=OFF -DBUILD_SERVER=OFF -DENABLE_EXTERNAL_LIBRARIES=ON -DBUNDLE=ON -DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=TRUE -DPYTHON_EXECUTABLE=/usr/local/bin/python3.12
      - name: Build SDRangel on Mac
        run: |
          cd build
          make -j3
      - name: Create dmg
        run: |
          cd build
          RETRIES=5
          COUNT=1
          set +e
          while [ $COUNT -lt $RETRIES ]; do
            make package
            if [ $? -eq 0 ]; then
              RETRIES=0
              break
            fi
            let COUNT=$COUNT+1
          done
        shell: bash
        continue-on-error: true
      - name: Get version
        id: get_version
        run: |
            if [[ "${{github.ref_name}}" == "mac_ci" ]]; then
                echo "version=$(echo ${{github.sha}} | cut -c1-7)" >> $GITHUB_OUTPUT
            else
                echo "version=$(echo ${{github.ref_name}} | cut -c2-)" >> $GITHUB_OUTPUT
            fi
      - name: Get filename
        id: get_filename
        run: echo "filename=$(grep CPACK_PACKAGE_FILE_NAME build/CMakeCache.txt | cut -d "=" -f2)" >> $GITHUB_OUTPUT
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: sdrangel-${{ steps.get_version.outputs.version }}-macarm64.dmg
          path: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg
      - name: Upload release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v2
        with:
          files: ${{ github.workspace }}/build/${{ steps.get_filename.outputs.filename }}.dmg