steps:
  - bash: |
      set -ex
      toolchain=$TOOLCHAIN
      if [ "$toolchain" = "" ]; then
        toolchain=nightly
      fi
      if command -v rustup; then
        rustup update $toolchain
        rustup default $toolchain
      else
        curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $toolchain
        echo "##vso[task.prependpath]$HOME/.cargo/bin"
      fi
    displayName: Install rust (unix)
    condition: ne( variables['Agent.OS'], 'Windows_NT' )
  - script: |
      @echo on
      if not defined TOOLCHAIN set TOOLCHAIN=nightly
      rustup update %TOOLCHAIN%-%TARGET%
      rustup default %TOOLCHAIN%-%TARGET%
    displayName: Install rust (windows)
    condition: eq( variables['Agent.OS'], 'Windows_NT' )
  - script: |
      set -ex
      if [ -n "${TARGET}" ]; then
        rustup target add $TARGET
      fi
    condition: ne( variables['Agent.OS'], 'Windows_NT' )
    displayName: Install target (unix)
  - script: |
      @echo on
      if defined TARGET rustup target add %TARGET%
    condition: eq( variables['Agent.OS'], 'Windows_NT' )
    displayName: Install target (windows)
  - script: |
      @echo on
      if "%ARCH%" == "i686" choco install mingw --x86 --force
    condition: eq( variables['Agent.OS'], 'Windows_NT' )
    displayName: Install MinGW32 (windows)
  - bash: |
      set -ex
      gcc -print-search-dirs
      find "C:\ProgramData\Chocolatey" -name "crt2*"
      find "C:\ProgramData\Chocolatey" -name "dllcrt2*"
      find "C:\ProgramData\Chocolatey" -name "libmsvcrt*"
    condition: eq( variables['Agent.OS'], 'Windows_NT' )	
    displayName: Find GCC libraries (windows)
  - bash: |
      set -ex
      if [[ -n ${ARCH_BITS} ]]; then
        for i in crt2.o dllcrt2.o libmingwex.a libmsvcrt.a ; do
          cp -f "/C/ProgramData/Chocolatey/lib/mingw/tools/install/mingw${ARCH_BITS}/${ARCH}-w64-mingw32/lib/$i" "`rustc --print sysroot`/lib/rustlib/${TARGET}/lib"
        done
      fi
    condition: eq( variables['Agent.OS'], 'Windows_NT' )	
    displayName: Fix MinGW (windows)
  - bash: |
        set -ex
        rustc -Vv
        cargo -V
        rustup -Vv
        rustup show
        which rustc
        which cargo
        which rustup
    displayName: Query rust and cargo versions
  - script: |
      @echo on
      where gcc
    condition: eq( variables['Agent.OS'], 'Windows_NT' )
    displayName: Query gcc path
  - bash: |
      set -ex
      cargo generate-lockfile
      cargo generate-lockfile --manifest-path libc-test/Cargo.toml
    displayName: Generate lockfiles