File: linux-cxx20.yaml

package info (click to toggle)
reflect-cpp 0.18.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 12,524 kB
  • sloc: cpp: 44,484; python: 131; makefile: 30; sh: 3
file content (91 lines) | stat: -rw-r--r-- 4,466 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
name: linux-cxx20

on: [ pull_request, workflow_dispatch ]

env: 
    VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"

jobs:
  linux:
    strategy:
      fail-fast: false
      matrix:
        include:
          - compiler: llvm
            compiler-version: 16
          - compiler: llvm
            compiler-version: 18
          - compiler: gcc
            compiler-version: 11
            additional-dep: "g++-11"
          - compiler: gcc
            compiler-version: 12
          - compiler: gcc
            compiler-version: 14
    name: "${{ github.job }} (${{ matrix.compiler }}-${{ matrix.compiler-version }})"
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          submodules: recursive
          fetch-depth: 0
      - name: Export GitHub Actions cache environment variables
        uses: actions/github-script@v7
        with:
          script: |
            core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
            core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
      - name: Setup ccache
        uses: hendrikmuhs/ccache-action@v1
        with:
          key: "${{ github.job }}-${{ matrix.compiler }}-${{ matrix.compiler-version }}"
          max-size: "2G"
      - name: Run vcpkg
        uses: lukka/run-vcpkg@v11
      - name: Install dependencies
        run: |
          sudo apt update
          sudo apt install -y ninja-build ${{ matrix.additional-dep }}
      - name: Install Conan
        run: |
          sudo apt install -y pipx
          pipx install conan
          conan profile detect
      - name: Make sure the library compiles with Conan
        run: conan build . --build=missing -s compiler.cppstd=gnu20 -o *:with_capnproto=True -o *:with_cbor=True -o *:with_flatbuffers=True -o *:with_msgpack=True -o *:with_toml=True -o *:with_ubjson=True -o *:with_xml=True -o *:with_yaml=True      
      - name: Compile
        run: |
          if [[ "${{ matrix.compiler }}" == "llvm" ]]; then
            export CC=clang-${{ matrix.compiler-version }}
            export CXX=clang++-${{ matrix.compiler-version }}
          elif [[ "${{ matrix.compiler }}" == "gcc" ]]; then
            export CC=gcc-${{ matrix.compiler-version }}
            export CXX=g++-${{ matrix.compiler-version }}
          fi
          sudo ln -s $(which ccache) /usr/local/bin/$CC
          sudo ln -s $(which ccache) /usr/local/bin/$CXX
          $CXX --version
          cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=20 -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CAPNPROTO=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release
          cmake --build build
      - name: Run tests
        run: |
          ctest --test-dir build --output-on-failure
      - name: Run benchmarks
        run: |
          echo '# Benchmarks' >> $GITHUB_STEP_SUMMARY 
          echo '## Benchmarks across different formats' >> $GITHUB_STEP_SUMMARY 
          echo '```' >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_read >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_write >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_read >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_write >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_write >> $GITHUB_STEP_SUMMARY
          echo '```' >> $GITHUB_STEP_SUMMARY
          echo '## Benchmarks for JSON' >> $GITHUB_STEP_SUMMARY 
          echo '```' >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=canada >> $GITHUB_STEP_SUMMARY
          ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=licenses >> $GITHUB_STEP_SUMMARY
          echo '```' >> $GITHUB_STEP_SUMMARY