trigger:
  - stable
  - next

pr: none

jobs:
  - job: "wasi"
    pool:
      vmImage: "ubuntu-16.04"
    steps:
      - script: |
          sudo apt-get install build-essential curl cmake
        displayName: Install system packages
      - script: |
          curl https://sh.rustup.rs -sSf | sh -s -- -y
          source ${HOME}/.cargo/env
          git clone --recursive https://github.com/wasmerio/wasmer.git
          (cd wasmer && cargo install --path .)
        displayName: Install wasmer
      - script: |
          curl -sL -o wasi-sdk.deb https://github.com/CraneStation/wasi-sdk/releases/download/wasi-sdk-5/wasi-sdk_5.0_amd64.deb
          sudo dpkg -i wasi-sdk.deb && rm -f wasi-sdk.deb
          sudo ln -s /opt/wasi-sdk/share/*sysroot* /opt/wasi-sysroot
        displayName: Install the WASI SDK
      - script: |
          env PATH=/opt/wasi-sdk/bin:${HOME}/.cargo/bin:$PATH dist-build/wasm32-wasi.sh
        displayName: Compile libsodium
      - task: PublishBuildArtifacts@1
        condition: not(canceled())
        inputs:
          pathToPublish: libsodium-wasm32-wasi
          artifactName: libsodium-wasm32-wasi

  - job: "windows"
    pool:
      vmImage: "windows-2019"
    steps:
      - powershell: |
          cd builds\msvc\build
          & .\buildbase.bat ..\vs2019\libsodium.sln 16
        displayName: Compile it all
      - powershell: |
          mkdir bin\include\sodium
          Copy-Item "src\libsodium\include\sodium\*.h" -Destination "bin\include\sodium" -Recurse
          Copy-Item "src\libsodium\include\*.h" -Destination "bin\include\"
        displayName: Copy header files
      - task: PublishBuildArtifacts@1
        condition: not(canceled())
        inputs:
          pathToPublish: bin
          artifactName: libsodium

  - job: "windows_old"
    pool:
      vmImage: "vs2017-win2016"
    steps:
      - powershell: |
          cd builds\msvc\build
          & .\buildbase.bat ..\vs2017\libsodium.sln 15
        displayName: Compile it all
      - task: PublishBuildArtifacts@1
        condition: not(canceled())
        inputs:
          pathToPublish: bin
          artifactName: libsodium

  - job: "windows_reallyold"
    pool:
      vmImage: "vs2015-win2012r2"
    steps:
      - powershell: |
          cd builds\msvc\build
          & .\buildbase.bat ..\vs2015\libsodium.sln 14
          & .\buildbase.bat ..\vs2013\libsodium.sln 12
          & .\buildbase.bat ..\vs2012\libsodium.sln 11
          & .\buildbase.bat ..\vs2010\libsodium.sln 10
        displayName: Compile it all
      - task: PublishBuildArtifacts@1
        condition: not(canceled())
        inputs:
          pathToPublish: bin
          artifactName: libsodium

  - job: mingw64
    pool:
      vmImage: "windows-2019"
    steps:
      - script: |
          git clone https://github.com/msys2/msys2-ci-base.git %CD:~0,2%\msys64
          %CD:~0,2%\msys64\usr\bin\rm -rf %CD:~0,2%\msys64\.git
        displayName: Install MSYS2
      - script: |
          set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Syyuu
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Syuu
        displayName: Update MSYS2
      - script: |
          set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm --needed -S base-devel mingw-w64-x86_64-toolchain
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Scc
          %CD:~0,2%\msys64\usr\bin\sed -i "s|#CacheDir.*|CacheDir=/c/Users/%USERNAME%/AppData/Local/Temp|g" /etc/pacman.conf
        displayName: Install Toolchain
      - script: |
          set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;%CD:~0,2%\msys64\usr\bin;%CD:~0,2%\msys64\bin
          set MSYS2_ROOT=%CD:~0,2%\msys64
          set MSYSTEM=MINGW64
          %MSYS2_ROOT%\cmd\msystem MINGW64
          %CD:~0,2%\msys64\usr\bin\bash -lc dist-build/msys2-win64.sh
        env:
          CHERE_INVOKING: yes
          MSYS2_ARCH: x86_64
        displayName: Compile libsodium
      - task: PublishBuildArtifacts@1
        condition: not(canceled())
        inputs:
          pathToPublish: libsodium-win64
          artifactName: libsodium-win64

  - job: mingw32
    pool:
      vmImage: "windows-2019"
    steps:
      - script: |
          git clone https://github.com/msys2/msys2-ci-base.git %CD:~0,2%\msys64
          %CD:~0,2%\msys64\usr\bin\rm -rf %CD:~0,2%\msys64\.git
        displayName: Install MSYS2
      - script: |
          set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Syyuu
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Syuu
        displayName: Update MSYS2
      - script: |
          set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm --needed -S base-devel mingw-w64-i686-toolchain
          %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Scc
          %CD:~0,2%\msys64\usr\bin\sed -i "s|#CacheDir.*|CacheDir=/c/Users/%USERNAME%/AppData/Local/Temp|g" /etc/pacman.conf
        displayName: Install Toolchain
      - script: |
          set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;%CD:~0,2%\msys64\usr\bin;%CD:~0,2%\msys64\bin
          set MSYS2_ROOT=%CD:~0,2%\msys64
          set MSYSTEM=MINGW32
          %MSYS2_ROOT%\cmd\msystem MINGW32
          %CD:~0,2%\msys64\usr\bin\bash -lc dist-build/msys2-win32.sh
        env:
          CHERE_INVOKING: yes
          MSYS2_ARCH: x86_64
        displayName: Compile libsodium
      - task: PublishBuildArtifacts@1
        condition: not(canceled())
        inputs:
          pathToPublish: libsodium-win32
          artifactName: libsodium-win32
