name: build-and-test-perfcounters

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  job:
    # TODO(dominic): Extend this to include compiler and set through env: CC/CXX.
    name: ${{ matrix.os }}.${{ matrix.build_type }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        # ubuntu-18.04 is deprecated but included for best-effort
        os: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04]
        build_type: ['Release', 'Debug']
    steps:
    - uses: actions/checkout@v2

    - name: install libpfm
      run: sudo apt -y install libpfm4-dev

    - name: setup cmake
      if: matrix.os == 'ubuntu-18.04'
      uses: jwlawson/actions-setup-cmake@v1.9
      with:
        cmake-version: '3.16.3'

    - name: create build environment
      run: cmake -E make_directory ${{ runner.workspace }}/_build

    - name: configure cmake
      shell: bash
      working-directory: ${{ runner.workspace }}/_build
      run: >
        cmake $GITHUB_WORKSPACE
        -DBENCHMARK_ENABLE_LIBPFM=1
        -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
        -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}

    - name: build
      shell: bash
      working-directory: ${{ runner.workspace }}/_build
      run: cmake --build . --config ${{ matrix.build_type }}

    # Skip testing, for now. It seems perf_event_open does not succeed on the
    # hosting machine, very likely a permissions issue.
    # TODO(mtrofin): Enable test.
    # - name: test
    #   shell: bash
    #   working-directory: ${{ runner.workspace }}/_build
    #   run: ctest -C ${{ matrix.build_type }} --rerun-failed --output-on-failure

