version: '1.8.4-git-{build}'
image: 'Visual Studio 2017'
clone_depth: 1

# Build configuration
configuration:
  - Release

# Environment
environment:
  NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip
  QT32PATH: 'C:\Qt\5.12\msvc2017'
  QT64PATH: 'C:\Qt\5.12\msvc2017_64'
  VSVARSALLPATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
  matrix:
    # Build: qmake vs2017 x86 shared
    #- ARCH: x86
    #  PYTHON: 'C:\Python36'
    #  QMAKE: 1
    #  DEPLOY: true
    # Build: qmake vs2017 x64 shared
    - ARCH: x64
      PYTHON: 'C:\Python36-x64'
      QMAKE: 1
      DEPLOY: true
    # Build: meson ninja x64 static
    - ARCH: x64
      PYTHON: 'C:\Python36-x64'
      MESON: 1
      BACKEND: ninja
      DEPLOY: false

install:
  - cmd: if defined QMAKE ( git clone --depth 1 --recurse-submodules https://github.com/radareorg/r2ghidra-dec.git %APPVEYOR_BUILD_FOLDER%/r2ghidra-dec )
  - ps: $env:path = ($env:path -split ";").Where({!($_ -like "*Microsoft SQL Server*")}) -join ";"
  - cmd: C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER && scripts/fetch_deps.sh"
  - cmd: set "CUTTER_DEPS_DIR=%APPVEYOR_BUILD_FOLDER%\cutter-deps"
  - cmd: set "PATH=%CD%;%PYTHON%;%PATH%"
  - cmd: call "%VSVARSALLPATH%" %ARCH%
  - cmd: if "%ARCH%" == "x64" ( set "PATH=%QT64PATH%\bin;%PATH%" ) else ( set "PATH=%QT32PATH%\bin;%PATH%" )
  - cmd: python -m pip install meson
  - cmd: powershell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; wget %NINJA_URL% -OutFile ninja.zip; Expand-Archive .\ninja.zip -DestinationPath ."
  # Artifacts
  - cmd: set "ARTIFACT_NAME=Cutter-v1.8.4-%ARCH%.Windows"
  - cmd: if defined MESON ( set "ARTIFACT_PATH=dist_%ARCH%" ) else ( set "ARTIFACT_PATH=build_%ARCH%\cutter" )

before_build:
  - cmd: git submodule update --init
  - scripts\prepare_breakpad.bat

# Build config
build_script:
  - cmd: if defined QMAKE ( call prepare_r2.bat && call build.bat CUTTER_APPVEYOR_R2DEC=true CUTTER_R2GHIDRA_STATIC=true R2GHIDRA_SOURCE="%APPVEYOR_BUILD_FOLDER%/r2ghidra-dec" CUTTER_ENABLE_CRASH_REPORTS=true CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=true CUTTER_DEPS_DIR="%CUTTER_DEPS_DIR%" )
  - cmd: if defined MESON ( python meson.py --release --dist=%ARTIFACT_PATH% --backend=%BACKEND% --python )

after_build:
  - cmd: if defined QMAKE ( xcopy r2_dist_%ARCH%\bin r2_dist_%ARCH% && set "PATH=%CD%\r2_dist_%ARCH%;%PATH%" && powershell scripts\bundle_r2dec.ps1 "%CD%\%ARTIFACT_PATH%" )
  - cmd: if defined QMAKE ( C:\msys64\usr\bin\bash -lc "export PATH=\"/c/msys64/usr/bin:$PATH\" && cd \"$APPVEYOR_BUILD_FOLDER\" && scripts/appveyor_r2ghidra.sh" )
  - cmd: powershell scripts\bundle_openssl.ps1 %ARCH% "%CD%\%ARTIFACT_PATH%"
  - cmd: powershell scripts\bundle_python.ps1 %ARCH% "%CD%\%ARTIFACT_PATH%"
  - cmd: xcopy "%CUTTER_DEPS_DIR%\pyside\lib\site-packages" "%ARTIFACT_PATH%\python36\site-packages" /e /i /h
  - cmd: copy "%CUTTER_DEPS_DIR%\pyside\bin\shiboken2.dll" "%ARTIFACT_PATH%\"
  - cmd: copy "%CUTTER_DEPS_DIR%\pyside\bin\pyside2.dll" "%ARTIFACT_PATH%\"

# Tests
test: off

# Artifacts
artifacts:
  - path: "%ARTIFACT_PATH%"
    name: "%ARTIFACT_NAME%"

deploy:
  description: 'Cutter binaries'
  provider: GitHub
  auth_token:
    secure: 2SmsqS2RaX2N5c9UwUcfBwNmMX64FfPAZFShLyxIkZXiC8vLaYCHToWxBYEuWRSk
  artifact: "%ARTIFACT_NAME%"
  draft: true
  prerelease: true
  on:
    appveyor_repo_tag: true
    DEPLOY: true

for:
  -
    branches:
      only:
        - master
  -
    skip_non_tags: true