# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- master
- dev

jobs:
- job:
  displayName: Windows
  pool:
    vmImage:
     windows-2019
  steps:
  - task: CMake@1
    inputs:
      workingDirectory: 'build'
      cmakeArgs: ..
  - task: MSBuild@1
    inputs:
      solution: build/libmimalloc.sln
  - upload: $(Build.SourcesDirectory)/build
    artifact: windows

- job:
  displayName: Linux
  pool:
    vmImage:
     ubuntu-16.04
  strategy:
    matrix:
      Debug:
        CC: gcc
        CXX: g++
        BuildType: debug
        cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_CHECK_FULL=ON
      Release:
        CC: gcc
        CXX: g++
        BuildType: release
        cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release
      Debug Clang:
        CC: clang
        CXX: clang++
        BuildType: debug-clang
        cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_CHECK_FULL=ON
      Release Clang:
        CC: clang
        CXX: clang++
        BuildType: release-clang
        cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release

  steps:
  - task: CMake@1
    inputs:
      workingDirectory: $(BuildType)
      cmakeArgs: .. $(cmakeExtraArgs)

  - script: make -j$(nproc) -C $(BuildType)
    displayName: Make

  - script: make test -C $(BuildType)
    displayName: Ctest

  - upload: $(Build.SourcesDirectory)/$(BuildType)
    artifact: ubuntu-$(BuildType)

- job:
  displayName: macOS
  pool:
    vmImage:
     macOS-10.14
  steps:
  - task: CMake@1
    inputs:
      workingDirectory: 'build'
      cmakeArgs: ..
  - script: make -j$(sysctl -n hw.ncpu) -C build
  - upload: $(Build.SourcesDirectory)/build
    artifact: macos
