1a8c51b3fSopenharmony_ciname: build-and-test-perfcounters
2a8c51b3fSopenharmony_ci
3a8c51b3fSopenharmony_cion:
4a8c51b3fSopenharmony_ci  push:
5a8c51b3fSopenharmony_ci    branches: [ main ]
6a8c51b3fSopenharmony_ci  pull_request:
7a8c51b3fSopenharmony_ci    branches: [ main ]
8a8c51b3fSopenharmony_ci
9a8c51b3fSopenharmony_cijobs:
10a8c51b3fSopenharmony_ci  job:
11a8c51b3fSopenharmony_ci    # TODO(dominic): Extend this to include compiler and set through env: CC/CXX.
12a8c51b3fSopenharmony_ci    name: ${{ matrix.os }}.${{ matrix.build_type }}
13a8c51b3fSopenharmony_ci    runs-on: ${{ matrix.os }}
14a8c51b3fSopenharmony_ci    strategy:
15a8c51b3fSopenharmony_ci      fail-fast: false
16a8c51b3fSopenharmony_ci      matrix:
17a8c51b3fSopenharmony_ci        os: [ubuntu-latest, ubuntu-20.04]
18a8c51b3fSopenharmony_ci        build_type: ['Release', 'Debug']
19a8c51b3fSopenharmony_ci    steps:
20a8c51b3fSopenharmony_ci    - uses: actions/checkout@v2
21a8c51b3fSopenharmony_ci
22a8c51b3fSopenharmony_ci    - name: install libpfm
23a8c51b3fSopenharmony_ci      run: sudo apt -y install libpfm4-dev
24a8c51b3fSopenharmony_ci
25a8c51b3fSopenharmony_ci    - name: setup cmake
26a8c51b3fSopenharmony_ci      uses: jwlawson/actions-setup-cmake@v1.9
27a8c51b3fSopenharmony_ci      with:
28a8c51b3fSopenharmony_ci        cmake-version: '3.5.1'
29a8c51b3fSopenharmony_ci
30a8c51b3fSopenharmony_ci    - name: create build environment
31a8c51b3fSopenharmony_ci      run: cmake -E make_directory ${{ runner.workspace }}/_build
32a8c51b3fSopenharmony_ci
33a8c51b3fSopenharmony_ci    - name: configure cmake
34a8c51b3fSopenharmony_ci      shell: bash
35a8c51b3fSopenharmony_ci      working-directory: ${{ runner.workspace }}/_build
36a8c51b3fSopenharmony_ci      run: >
37a8c51b3fSopenharmony_ci        cmake $GITHUB_WORKSPACE
38a8c51b3fSopenharmony_ci        -DBENCHMARK_ENABLE_LIBPFM=1
39a8c51b3fSopenharmony_ci        -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
40a8c51b3fSopenharmony_ci        -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
41a8c51b3fSopenharmony_ci
42a8c51b3fSopenharmony_ci    - name: build
43a8c51b3fSopenharmony_ci      shell: bash
44a8c51b3fSopenharmony_ci      working-directory: ${{ runner.workspace }}/_build
45a8c51b3fSopenharmony_ci      run: cmake --build . --config ${{ matrix.build_type }}
46a8c51b3fSopenharmony_ci
47a8c51b3fSopenharmony_ci    # Skip testing, for now. It seems perf_event_open does not succeed on the
48a8c51b3fSopenharmony_ci    # hosting machine, very likely a permissions issue.
49a8c51b3fSopenharmony_ci    # TODO(mtrofin): Enable test.
50a8c51b3fSopenharmony_ci    # - name: test
51a8c51b3fSopenharmony_ci    #   shell: bash
52a8c51b3fSopenharmony_ci    #   working-directory: ${{ runner.workspace }}/_build
53a8c51b3fSopenharmony_ci    #   run: ctest -C ${{ matrix.build_type }} --rerun-failed --output-on-failure
54a8c51b3fSopenharmony_ci
55a8c51b3fSopenharmony_ci  ubuntu-16_04:
56a8c51b3fSopenharmony_ci    name: ubuntu-16.04.${{ matrix.build_type }}
57a8c51b3fSopenharmony_ci    runs-on: [ubuntu-latest]
58a8c51b3fSopenharmony_ci    strategy:
59a8c51b3fSopenharmony_ci      fail-fast: false
60a8c51b3fSopenharmony_ci      matrix:
61a8c51b3fSopenharmony_ci        build_type: ['Release', 'Debug']
62a8c51b3fSopenharmony_ci    container: ubuntu:16.04
63a8c51b3fSopenharmony_ci    steps:
64a8c51b3fSopenharmony_ci      - uses: actions/checkout@v2
65a8c51b3fSopenharmony_ci
66a8c51b3fSopenharmony_ci      - name: install required bits
67a8c51b3fSopenharmony_ci        run: |
68a8c51b3fSopenharmony_ci          apt update
69a8c51b3fSopenharmony_ci          apt -y install clang cmake g++ git
70a8c51b3fSopenharmony_ci
71a8c51b3fSopenharmony_ci      - name: install libpfm
72a8c51b3fSopenharmony_ci        run: apt -y install libpfm4-dev
73a8c51b3fSopenharmony_ci
74a8c51b3fSopenharmony_ci      - name: create build environment
75a8c51b3fSopenharmony_ci        run: cmake -E make_directory $GITHUB_WORKSPACE/_build
76a8c51b3fSopenharmony_ci
77a8c51b3fSopenharmony_ci      - name: configure cmake
78a8c51b3fSopenharmony_ci        shell: bash
79a8c51b3fSopenharmony_ci        working-directory: ${{ github.workspace }}/_build
80a8c51b3fSopenharmony_ci        run: >
81a8c51b3fSopenharmony_ci          cmake $GITHUB_WORKSPACE
82a8c51b3fSopenharmony_ci          -DBENCHMARK_ENABLE_LIBPFM=1
83a8c51b3fSopenharmony_ci          -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
84a8c51b3fSopenharmony_ci          -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
85a8c51b3fSopenharmony_ci
86a8c51b3fSopenharmony_ci      - name: build
87a8c51b3fSopenharmony_ci        shell: bash
88a8c51b3fSopenharmony_ci        working-directory: ${{ github.workspace }}/_build
89a8c51b3fSopenharmony_ci        run: cmake --build . --config ${{ matrix.build_type }}
90a8c51b3fSopenharmony_ci
91a8c51b3fSopenharmony_ci    # Skip testing, for now. It seems perf_event_open does not succeed on the
92a8c51b3fSopenharmony_ci    # hosting machine, very likely a permissions issue.
93a8c51b3fSopenharmony_ci    # TODO(mtrofin): Enable test.
94a8c51b3fSopenharmony_ci    # - name: test
95a8c51b3fSopenharmony_ci    #   shell: bash
96a8c51b3fSopenharmony_ci    #   working-directory: ${{ runner.workspace }}/_build
97a8c51b3fSopenharmony_ci    #   run: ctest -C ${{ matrix.build_type }} --rerun-failed --output-on-failure
98