---
version: "{build}-{branch}"
clone_depth: 1

platform:
  - x64

matrix:
  fast_finish: false

environment:
  matrix:
    - TARGET: vs2019gui
      APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019'
      configuration: Release
      CMAKE_CUSTOM_OPTIONS: "-DCMAKE_BUILD_TYPE=Release \
                             -DARCH_OPT=SSE4_2 \
                             -DDEBUG_OUTPUT=ON \
                             -DENABLE_MIRISDR=OFF \
                             -DBUILD_SERVER=OFF \
                             -DCMAKE_PREFIX_PATH=C:\\Qt\\5.15.2\\msvc2019_64;C:\\Libraries\\boost_1_73_0"
      CMAKE_GENERATOR: Ninja
    - TARGET: ubuntu2004prod
      APPVEYOR_BUILD_WORKER_CLOUD: nasrock Docker
      APPVEYOR_BUILD_WORKER_IMAGE: Linux
      CC:  "gcc-9"
      CXX: "g++-9"
      CMAKE_CUSTOM_OPTIONS: "-DCMAKE_BUILD_TYPE=Release \
                             -DARCH_OPT=nehalem \
                             -DDEBUG_OUTPUT=ON \
                             -DENABLE_EXTERNAL_LIBRARIES=ON \
                             -DBUILD_SERVER=OFF"
    - TARGET: ubuntu2004docker
      APPVEYOR_BUILD_WORKER_CLOUD: nasrock
      APPVEYOR_BUILD_WORKER_IMAGE: Linux
      APPVEYOR_CONSOLE_DISABLE_PTY: true

for:
  - matrix:
      only:
        - TARGET: 'vs2019gui'
    cache:
      - C:\ProgramData\chocolatey\bin
      - C:\ProgramData\chocolatey\lib
    build_script:
      - call "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
      # Install GNU patch as applying patches with git fails in BladeRF tree
      - choco install patch
      - git submodule update --init --recursive
      - mkdir build && cd build
      - cmake .. -G "%CMAKE_GENERATOR%" %CMAKE_CUSTOM_OPTIONS%
      - cmake --build . --config Release --target package
    artifacts: # push installer executable
      path: build\*.exe
      name: installer
    deploy:
      release: sdrangel-v$(appveyor_build_version)
      description: 'SDRangel Windows'
      provider: GitHub
      auth_token:
        secure: kyU5TaXRoily6q/QLRLqal2xCFGWEdnb8AJIu7FknsUQyj1wjRGmqC2My+Wfszod
      artifact: installer, portable
      draft: false
      prerelease: false
      tag: $(APPVEYOR_REPO_TAG_NAME) # will not work until tag is pushed
      on:
        APPVEYOR_REPO_TAG: true   # deploy on tag push only
        branch: master            # release from master branch only
  - matrix:
      only:
        - TARGET: ubuntu2004prod
    cache:
      - $HOME/external/
    install:
      - sh: sudo apt-get update
      - sh: echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections
      # not sdrplay with soapysdr; libairspyhf-dev is too old (no lna)
      - sh: |
          sudo apt-get -y install build-essential cmake git xxd \
            devscripts fakeroot debhelper libfftw3-dev qtbase5-dev libqt5opengl5-dev \
            qttools5-dev qttools5-dev-tools qtmultimedia5-dev libqt5multimedia5-plugins libqt5websockets5-dev \
            libqt5quick5 \
            qml-module-qtlocation qml-module-qtpositioning qml-module-qtquick-window2 qml-module-qtquick-dialogs \
            qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-layouts \
            libqt5serialport5-dev qtdeclarative5-dev qtpositioning5-dev qtlocation5-dev \
            libqt5charts5-dev libqt5texttospeech5-dev libfaad-dev zlib1g-dev \
            libusb-1.0-0-dev libboost-all-dev libasound2-dev libopencv-dev libopencv-imgcodecs-dev \
            libxml2-dev bison flex ffmpeg  libpostproc-dev libavcodec-dev libavformat-dev \
            libopus-dev libcodec2-dev libairspy-dev libhackrf-dev \
            libbladerf-dev libsoapysdr-dev libiio-dev libuhd-dev \
            python3-mako python3-cheetah python3-numpy \
            autoconf automake libtool ninja-build libclang1-9
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_cm256cc.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_mbelib.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_serialdv.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_dsdcc.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_perseus-sdr.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_xtrx-sdr.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_airspyhf.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_rtlsdr.sh; fi
      - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_limesuite.sh; fi
      - sh: bash cmake/ci/build_sdrplay.sh
    before_build:
      - sh: bash -c export
      - sh: bash -c pwd
    build_script:
      - sh: ./cmake/ci/build_sdrangel.sh
    test_script:
      # debian build path
      - sh: ./obj-x86_64-linux-gnu/sdrangelbench
    after_build:
      - sh: mkdir sdrangel-${APPVEYOR_BUILD_VERSION}
      - sh: cp ../*.deb ../*.build ../*.buildinfo ../*.changes sdrangel-${APPVEYOR_BUILD_VERSION}
      - sh: tar -czf sdrangel-${APPVEYOR_BUILD_VERSION}.tar.gz sdrangel-${APPVEYOR_BUILD_VERSION}
      - sh: appveyor PushArtifact sdrangel-${APPVEYOR_BUILD_VERSION}.tar.gz -DeploymentName archive
    deploy:
      release: sdrangel-v$(appveyor_build_version)
      description: 'SDRangel Ubuntu 20.04'
      provider: GitHub
      auth_token:
        secure: kyU5TaXRoily6q/QLRLqal2xCFGWEdnb8AJIu7FknsUQyj1wjRGmqC2My+Wfszod
      artifact: archive
      draft: false
      prerelease: false
      on:
        APPVEYOR_REPO_TAG: true        # deploy on tag push only
        branch: master                 # release from master branch only
  - matrix:
      only:
        - TARGET: ubuntu2004docker
    before_build:
      - git clone https://github.com/f4exb/sdrangel-docker.git
      - cd sdrangel-docker
    build_script:
      - cd sdrangel
      - ./build_vanilla.sh -T ${APPVEYOR_PULL_REQUEST_HEAD_COMMIT:-${APPVEYOR_REPO_COMMIT}}
      - ./build_server.sh -T ${APPVEYOR_PULL_REQUEST_HEAD_COMMIT:-${APPVEYOR_REPO_COMMIT}}