# Azure Pipelines CI build configuration
# Documentation at https://aka.ms/yaml

variables:
  VERILATOR_VERSION: 4.010
  VERILATOR_PATH: /opt/buildcache/verilator/$(VERILATOR_VERSION)
  TOOLCHAIN_PATH: /opt/buildcache/riscv
  # Release tag from https://github.com/lowRISC/lowrisc-toolchains/releases
  TOOLCHAIN_VERSION: 20191010-1

trigger:
  # Combine builds on master as long as another build is running
  batch: true
  branches:
    include:
    - master

stages:
# Stage 1 are fast checks for tools which provide fast turnaround time
# (< 5 minutes)
- stage: quick_sanity
  displayName: Quick sanity checks
  jobs:
  - job: "lint"
    displayName: "Run code quality checks (lint)"
    pool: "Default"
    steps:
    - bash: |
        sudo apt-get install -y python3 python3-pip build-essential srecord python3-setuptools zlib1g-dev libusb-1.0 clang-format
        sudo pip3 install -r python-requirements.txt
      displayName: 'Install dependencies'

    - bash: |
        python3 --version
        yapf --version
        isort --version
        clang-format -version
      displayName: 'Display tool versions'

#   XXX: Python lint checks are until Issue #313 is resolved
#    - bash: find ./util -iname '*.py' -print0 | xargs -0 -n1 $PWD/util/lintpy.py -f
#      displayName: 'Run Python lint'

    - bash: |
        make -C hw regs && git diff --exit-code
        if [ $? != 0 ]; then
          echo -n "##vso[task.logissue type=error]"
          echo "Register headers not up-to-date. Regenerate them with 'make -C hw regs'."
          exit 1
        fi
      condition: always()
      displayName: 'Ensure all generated files are clean and up-to-date'

    - bash: |
        # XXX: As of today, task.logissue comments with 'sourcepath' set don't
        # get reported to GitHub Checks annotations. Upstream bug report:
        # https://developercommunity.visualstudio.com/content/problem/689794/pipelines-logging-command-logissue-does-not-report.html
        #echo "##vso[task.issue type=error;sourcepath=/azure-pipelines.yml;linenumber=45;columnnumber=1;code=100;]Found something that could be a problem."
        fork_origin=$(git merge-base --fork-point origin/master)
        changed_files=$(git diff --name-only $fork_origin | grep -v /vendor/)
        test -z $changed_files || git diff -U0 $fork_origin $changed_files | clang-format-diff -p1 | tee clang-format-output
        if [ -s clang-format-output ]; then
          echo -n "##vso[task.logissue type=error]"
          echo "C/C++ lint failed. Use 'util/run-clang-format.sh' or 'git clang-format' to format the code."
          exit 1
        fi
      # This check is not idempotent, but checks changes to a base branch.
      # Run it only on pull requests.
      condition: eq(variables['Build.Reason'], 'PullRequest')
      displayName: 'Use clang-format to check C/C++ coding style'

    - bash: |
        commit_range=$(git merge-base --fork-point origin/master)..HEAD
        # Notes:
        # * Merge commits are not checked. We always use rebases instead of
        #   merges to keep a linear history, which makes merge commits disappear
        #   ultimately, making them only a CI artifact which should not be
        #   checked.
        # * 'type=error' is used even for warnings. Only "errors" are shown in
        #   the GitHub checks API. However, warnings don't return a non-zero
        #   error code and don't fail the build step.
        ./util/lint_commits.py \
            --no-merges \
            --error-msg-prefix='##vso[task.logissue type=error]' \
            --warning-msg-prefix='##vso[task.logissue type=error]' \
            $commit_range
      # Only run on pull requests to check new commits only
      condition: eq(variables['Build.Reason'], 'PullRequest')
      displayName: "Check commit metadata"

# Stage 2 for longer builds and tests. Jobs run in parallel by default, and
# dependencies should be used for build -> test dependencies.
- stage: build_test
  displayName: Build and test
  jobs:
  - job: "sw_build"
    displayName: "Build Software"
    pool: "Default"
    steps:
    - bash: |
        sudo apt-get install -y python3 python3-pip build-essential srecord python3-setuptools zlib1g-dev libusb-1.0 \
          && sudo pip3 install -r python-requirements.txt
      displayName: 'Install dependencies'
    - bash: |
        export TOOLCHAIN_PATH="${TOOLCHAIN_PATH}"
        export TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}"
        REQUEST_UPDATE=true ci/run_sw_build.sh
      displayName: 'Build embedded targets'
  - job: "top_earlgrey_verilator"
    displayName: "Build Verilator simulation of the Earl Grey toplevel design"
    pool: "Default"
    steps:
    - bash: |
        sudo apt-get install -y python3 python3-pip build-essential srecord python3-setuptools zlib1g-dev libusb-1.0 \
          && sudo pip3 install -r python-requirements.txt \
          && sudo apt-get install git make autoconf g++ flex bison curl
      displayName: 'Install dependencies'
    - bash: |
        set -e
        if [ ! -d $(VERILATOR_PATH) ]; then
          echo "Building verilator (no cached build found)"
          mkdir -p build/verilator
          cd build/verilator
          curl -Ls -o verilator.tgz https://www.veripool.org/ftp/verilator-$(VERILATOR_VERSION).tgz
          tar -xf verilator.tgz
          cd verilator-$(VERILATOR_VERSION)
          ./configure --prefix=$(VERILATOR_PATH)
          make -j$(nproc)
          mkdir -p $VERILATOR_PATH
          make install
        else
          echo "Re-using cached verilator build"
        fi
      displayName: 'Build and install Verilator'
    - bash: |
        export PATH=$VERILATOR_PATH/bin:$PATH
        python3 --version
        fusesoc --version
        verilator --version
      displayName: 'Display environment'
    - bash: |
        export PATH=$VERILATOR_PATH/bin:$PATH
        fusesoc --cores-root=. run --target=sim --setup --build lowrisc:systems:top_earlgrey_verilator
      displayName: 'Build simulation with Verilator'

  - job: "top_earlgrey_nexysvideo"
    displayName: "Build NexysVideo variant of the Earl Grey toplevel design using Vivado"
    pool: "Default"
    timeoutInMinutes: 120 # 2 hours
    steps:
    - bash: |
        sudo apt-get install -y python3 python3-pip build-essential srecord python3-setuptools zlib1g-dev libusb-1.0 \
          && sudo pip3 install -r python-requirements.txt
      displayName: 'Install dependencies'
    - bash: |
        set -e
        source /opt/xilinx/Vivado/2018.3/settings64.sh
        fusesoc --cores-root . run --target=synth --setup --build lowrisc:systems:top_earlgrey_nexysvideo
      displayName: 'Build bitstream with Vivado'
