-
Notifications
You must be signed in to change notification settings - Fork 191
200 lines (197 loc) · 7.94 KB
/
Copy pathlinux.yaml
File metadata and controls
200 lines (197 loc) · 7.94 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
name: linux
on: [ push, pull_request ]
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
jobs:
linux:
strategy:
fail-fast: false
matrix:
format: ["JSON", "AVRO", "BOOST_SERIALIZATION", "CAPNPROTO", "CBOR", "CEREAL", "FLEXBUFFERS", "MSGPACK", "PARQUET", "TOML", "UBJSON", "XML", "YAML", "benchmarks", "headers"]
compiler: [llvm, gcc]
compiler-version: [11, 12, 13, 14, 16, 17, 18]
cxx: [20, 23]
exclude:
- compiler: gcc
compiler-version: 16
- compiler: gcc
compiler-version: 17
- compiler: gcc
compiler-version: 18
- compiler: llvm
compiler-version: 11
- compiler: llvm
compiler-version: 12
- compiler: llvm
compiler-version: 13
- compiler: llvm
compiler-version: 14
- compiler: gcc
compiler-version: 11
cxx: 23
- compiler: gcc
compiler-version: 12
cxx: 23
- compiler: llvm
compiler-version: 16
cxx: 23
- compiler: llvm
compiler-version: 17
cxx: 23
include:
- format: JSON
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: AVRO
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: BOOST_SERIALIZATION
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: CAPNPROTO
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: CBOR
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: CEREAL
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: FLEXBUFFERS
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: MSGPACK
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: PARQUET
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: TOML
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: UBJSON
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: XML
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: YAML
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: benchmarks
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
- format: headers
compiler: gcc
compiler-version: 16
cxx: 26
reflection: "on"
name: "${{ github.job }} (${{ matrix.format }}-C++${{ matrix.cxx }}-${{ matrix.compiler }}-${{ matrix.compiler-version }})"
concurrency:
group: "linux-${{ github.ref }}-${{ github.job }}-${{ matrix.format }}-C++${{ matrix.cxx }}-${{ matrix.compiler }}-${{ matrix.compiler-version }}"
cancel-in-progress: true
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: Run vcpkg
uses: lukka/run-vcpkg@v11
- name: Install dependencies
run: |
sudo apt update
if [[ "${{ matrix.compiler-version }}" == 11 ]]; then
sudo apt install -y ninja-build g++-11
elif [[ "${{ matrix.compiler }}" == "gcc" && "${{ matrix.compiler-version }}" == 16 ]]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install -y ninja-build g++-16
else
sudo apt install -y ninja-build
fi
- 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
$CXX --version
EXTRA_CMAKE_FLAGS=""
if [[ "${{ matrix.reflection }}" == "on" ]]; then
EXTRA_CMAKE_FLAGS="-DREFLECTCPP_USE_CPP26_REFLECTION=ON -DCMAKE_CXX_FLAGS=-freflection"
fi
if [[ "${{ matrix.compiler }}" == "llvm" && "${{ matrix.cxx }}" == 23 ]]; then
EXTRA_CMAKE_FLAGS="-DCMAKE_CXX_FLAGS=-stdlib=libc++"
fi
if [[ "${{ matrix.format }}" == "JSON" ]]; then
cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=${{ matrix.cxx }} -DREFLECTCPP_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_FLAGS
elif [[ "${{ matrix.format }}" == "benchmarks" ]]; then
cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=${{ matrix.cxx }} -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_ALL_FORMATS=ON -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_FLAGS
elif [[ "${{ matrix.format }}" == "headers" ]]; then
cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=${{ matrix.cxx }} -DREFLECTCPP_CHECK_HEADERS=ON -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_FLAGS
else
cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=${{ matrix.cxx }} -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_JSON=OFF -DREFLECTCPP_${{ matrix.format }}=ON -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_FLAGS
fi
cmake --build build -j4
- name: Run tests
if: (matrix.format != 'benchmarks') && (matrix.format != 'headers')
run: |
ctest --test-dir build --output-on-failure
- name: Run benchmarks
if: matrix.format == '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