ci.yml (23460B)
1 name: CI 2 3 # Trigger on pushes to all branches and for all pull-requests 4 on: [push, pull_request] 5 6 jobs: 7 build: 8 name: ${{ matrix.config.name }} 9 runs-on: ${{ matrix.config.os }} 10 strategy: 11 fail-fast: false 12 matrix: 13 config: 14 # GCC-4.8 15 - { 16 name: "Linux GCC 4.8 C++11", 17 os: ubuntu-16.04, 18 cc: "gcc-4.8", cxx: "g++-4.8", 19 cxx_standard: 11, 20 cxx_asan: true 21 } 22 # GCC-4.9 23 - { 24 name: "Linux GCC 4.9 C++11", 25 os: ubuntu-16.04, 26 cc: "gcc-4.9", cxx: "g++-4.9", 27 cxx_standard: 11, 28 cxx_asan: true 29 } 30 - { 31 name: "Linux GCC 4.9 C++14", 32 os: ubuntu-16.04, 33 cc: "gcc-4.9", cxx: "g++-4.9", 34 cxx_standard: 14, 35 cxx_asan: true 36 } 37 # GCC-5 38 - { 39 name: "Linux GCC 5 C++11", 40 os: ubuntu-16.04, 41 cc: "gcc-5", cxx: "g++-5", 42 cxx_standard: 11, 43 cxx_asan: true 44 } 45 - { 46 name: "Linux GCC 5 C++14", 47 os: ubuntu-16.04, 48 cc: "gcc-5", cxx: "g++-5", 49 cxx_standard: 14, 50 cxx_asan: true 51 } 52 - { 53 name: "Linux GCC 5 C++17", 54 os: ubuntu-16.04, 55 cc: "gcc-5", cxx: "g++-5", 56 cxx_standard: 17, 57 cxx_asan: true 58 } 59 # GCC-6 60 - { 61 name: "Linux GCC 6 C++11", 62 os: ubuntu-16.04, 63 cc: "gcc-6", cxx: "g++-6", 64 cxx_standard: 11, 65 cxx_asan: true 66 } 67 - { 68 name: "Linux GCC 6 C++14", 69 os: ubuntu-16.04, 70 cc: "gcc-6", cxx: "g++-6", 71 cxx_standard: 14, 72 cxx_asan: true 73 } 74 - { 75 name: "Linux GCC 6 C++17", 76 os: ubuntu-16.04, 77 cc: "gcc-6", cxx: "g++-6", 78 cxx_standard: 17, 79 cxx_asan: true 80 } 81 82 # GCC-7 83 - { 84 name: "Linux GCC 7 C++11", 85 os: ubuntu-20.04, 86 cc: "gcc-7", cxx: "g++-7", 87 cxx_standard: 11, 88 cxx_asan: true 89 } 90 - { 91 name: "Linux GCC 7 C++14", 92 os: ubuntu-20.04, 93 cc: "gcc-7", cxx: "g++-7", 94 cxx_standard: 14, 95 cxx_asan: true 96 } 97 - { 98 name: "Linux GCC 7 C++17", 99 os: ubuntu-20.04, 100 cc: "gcc-7", cxx: "g++-7", 101 cxx_standard: 17, 102 cxx_asan: true 103 } 104 105 # GCC-8 106 - { 107 name: "Linux GCC 8 C++11", 108 os: ubuntu-20.04, 109 cc: "gcc-8", cxx: "g++-8", 110 cxx_standard: 11, 111 cxx_asan: true 112 } 113 - { 114 name: "Linux GCC 8 C++14", 115 os: ubuntu-20.04, 116 cc: "gcc-8", cxx: "g++-8", 117 cxx_standard: 14, 118 cxx_asan: true 119 } 120 - { 121 name: "Linux GCC 8 C++17", 122 os: ubuntu-20.04, 123 cc: "gcc-8", cxx: "g++-8", 124 cxx_standard: 17, 125 cxx_asan: true 126 } 127 128 # GCC-9 129 - { 130 name: "Linux GCC 9 C++11", 131 os: ubuntu-20.04, 132 cc: "gcc-9", cxx: "g++-9", 133 cxx_standard: 11, 134 cxx_asan: true 135 } 136 - { 137 name: "Linux GCC 9 C++14", 138 os: ubuntu-20.04, 139 cc: "gcc-9", cxx: "g++-9", 140 cxx_standard: 14, 141 cxx_asan: true 142 } 143 - { 144 name: "Linux GCC 9 C++17", 145 os: ubuntu-20.04, 146 cc: "gcc-9", cxx: "g++-9", 147 cxx_standard: 17, 148 cxx_asan: true 149 } 150 151 # GCC-10 152 - { 153 name: "Linux GCC 10 C++11", 154 os: ubuntu-20.04, 155 cc: "gcc-10", cxx: "g++-10", 156 cxx_standard: 11, 157 cxx_asan: true 158 } 159 - { 160 name: "Linux GCC 10 C++14", 161 os: ubuntu-20.04, 162 cc: "gcc-10", cxx: "g++-10", 163 cxx_standard: 14, 164 cxx_asan: true 165 } 166 - { 167 name: "Linux GCC 10 C++17", 168 os: ubuntu-20.04, 169 cc: "gcc-10", cxx: "g++-10", 170 cxx_standard: 17, 171 cxx_asan: true 172 } 173 - { 174 name: "Linux GCC 10 C++20", 175 os: ubuntu-20.04, 176 cc: "gcc-10", cxx: "g++-10", 177 cxx_standard: 20, 178 cxx_asan: true 179 } 180 181 # GCC-11 182 - { 183 name: "Linux GCC 11 C++11", 184 os: ubuntu-20.04, 185 cc: "gcc-11", cxx: "g++-11", 186 cxx_standard: 11, 187 cxx_asan: true 188 } 189 - { 190 name: "Linux GCC 11 C++14", 191 os: ubuntu-20.04, 192 cc: "gcc-11", cxx: "g++-11", 193 cxx_standard: 14, 194 cxx_asan: true 195 } 196 - { 197 name: "Linux GCC 11 C++17", 198 os: ubuntu-20.04, 199 cc: "gcc-11", cxx: "g++-11", 200 cxx_standard: 17, 201 cxx_asan: true 202 } 203 - { 204 name: "Linux GCC 11 C++20", 205 os: ubuntu-20.04, 206 cc: "gcc-11", cxx: "g++-11", 207 cxx_standard: 20, 208 cxx_asan: true 209 } 210 211 # Clang-5.0 212 - { 213 name: "Linux Clang 5.0 C++11 / libstdc++", 214 os: ubuntu-16.04, 215 cc: "clang-5.0", cxx: "clang++-5.0", 216 cxx_standard: 11, 217 cxx_asan: true, 218 libcxx: false 219 } 220 - { 221 name: "Linux Clang 5.0 C++14 / libstdc++", 222 os: ubuntu-16.04, 223 cc: "clang-5.0", cxx: "clang++-5.0", 224 cxx_standard: 14, 225 cxx_asan: true, 226 libcxx: false 227 } 228 - { 229 name: "Linux Clang 5.0 C++17 / libstdc++", 230 os: ubuntu-16.04, 231 cc: "clang-5.0", cxx: "clang++-5.0", 232 cxx_standard: 17, 233 cxx_asan: true, 234 libcxx: false 235 } 236 - { 237 name: "Linux Clang 5.0 C++11 / libc++", 238 os: ubuntu-16.04, 239 cc: "clang-5.0", cxx: "clang++-5.0", 240 cxx_standard: 11, 241 cxx_asan: true, 242 libcxx: true 243 } 244 - { 245 name: "Linux Clang 5.0 C++14 / libc++", 246 os: ubuntu-16.04, 247 cc: "clang-5.0", cxx: "clang++-5.0", 248 cxx_standard: 14, 249 cxx_asan: true, 250 libcxx: true 251 } 252 - { 253 name: "Linux Clang 5.0 C++17 / libc++", 254 os: ubuntu-16.04, 255 cc: "clang-5.0", cxx: "clang++-5.0", 256 cxx_standard: 17, 257 cxx_asan: true, 258 libcxx: true 259 } 260 261 # Clang-6.0 262 - { 263 name: "Linux Clang 6.0 C++11 / libstdc++", 264 os: ubuntu-16.04, 265 cc: "clang-6.0", cxx: "clang++-6.0", 266 cxx_standard: 11, 267 cxx_asan: true, 268 libcxx: false 269 } 270 - { 271 name: "Linux Clang 6.0 C++14 / libstdc++", 272 os: ubuntu-16.04, 273 cc: "clang-6.0", cxx: "clang++-6.0", 274 cxx_standard: 14, 275 cxx_asan: true, 276 libcxx: false 277 } 278 - { 279 name: "Linux Clang 6.0 C++17 / libstdc++", 280 os: ubuntu-16.04, 281 cc: "clang-6.0", cxx: "clang++-6.0", 282 cxx_standard: 17, 283 cxx_asan: true, 284 libcxx: false 285 } 286 - { 287 name: "Linux Clang 6.0 C++11 / libc++", 288 os: ubuntu-16.04, 289 cc: "clang-6.0", cxx: "clang++-6.0", 290 cxx_standard: 11, 291 cxx_asan: true, 292 libcxx: true 293 } 294 - { 295 name: "Linux Clang 6.0 C++14 / libc++", 296 os: ubuntu-16.04, 297 cc: "clang-6.0", cxx: "clang++-6.0", 298 cxx_standard: 14, 299 cxx_asan: true, 300 libcxx: true 301 } 302 - { 303 name: "Linux Clang 6.0 C++17 / libc++", 304 os: ubuntu-16.04, 305 cc: "clang-6.0", cxx: "clang++-6.0", 306 cxx_standard: 17, 307 cxx_asan: true, 308 libcxx: true 309 } 310 311 # Clang-8 312 - { 313 name: "Linux Clang 8 C++11 / libstdc++", 314 os: ubuntu-20.04, 315 cc: "clang-8", cxx: "clang++-8", 316 cxx_standard: 11, 317 cxx_asan: false, 318 libcxx: false 319 } 320 - { 321 name: "Linux Clang 8 C++14 / libstdc++", 322 os: ubuntu-20.04, 323 cc: "clang-8", cxx: "clang++-8", 324 cxx_standard: 14, 325 cxx_asan: false, 326 libcxx: false 327 } 328 - { 329 name: "Linux Clang 8 C++17 / libstdc++", 330 os: ubuntu-20.04, 331 cc: "clang-8", cxx: "clang++-8", 332 cxx_standard: 17, 333 cxx_asan: false, 334 libcxx: false 335 } 336 - { 337 name: "Linux Clang 8 C++11 / libc++", 338 os: ubuntu-20.04, 339 cc: "clang-8", cxx: "clang++-8", 340 cxx_standard: 11, 341 cxx_asan: false, 342 libcxx: true 343 } 344 - { 345 name: "Linux Clang 8 C++14 / libc++", 346 os: ubuntu-20.04, 347 cc: "clang-8", cxx: "clang++-8", 348 cxx_standard: 14, 349 cxx_asan: false, 350 libcxx: true 351 } 352 - { 353 name: "Linux Clang 8 C++17 / libc++", 354 os: ubuntu-20.04, 355 cc: "clang-8", cxx: "clang++-8", 356 cxx_standard: 17, 357 cxx_asan: false, 358 libcxx: true 359 } 360 361 # Clang-9 362 - { 363 name: "Linux Clang 9 C++11 / libstdc++", 364 os: ubuntu-20.04, 365 cc: "clang-9", cxx: "clang++-9", 366 cxx_standard: 11, 367 cxx_asan: true, 368 libcxx: false 369 } 370 - { 371 name: "Linux Clang 9 C++14 / libstdc++", 372 os: ubuntu-20.04, 373 cc: "clang-9", cxx: "clang++-9", 374 cxx_standard: 14, 375 cxx_asan: true, 376 libcxx: false 377 } 378 - { 379 name: "Linux Clang 9 C++17 / libstdc++", 380 os: ubuntu-20.04, 381 cc: "clang-9", cxx: "clang++-9", 382 cxx_standard: 17, 383 cxx_asan: true, 384 libcxx: false 385 } 386 - { 387 name: "Linux Clang 9 C++11 / libc++", 388 os: ubuntu-20.04, 389 cc: "clang-9", cxx: "clang++-9", 390 cxx_standard: 11, 391 cxx_asan: true, 392 libcxx: true 393 } 394 - { 395 name: "Linux Clang 9 C++14 / libc++", 396 os: ubuntu-20.04, 397 cc: "clang-9", cxx: "clang++-9", 398 cxx_standard: 14, 399 cxx_asan: true, 400 libcxx: true 401 } 402 - { 403 name: "Linux Clang 9 C++17 / libc++", 404 os: ubuntu-20.04, 405 cc: "clang-9", cxx: "clang++-9", 406 cxx_standard: 17, 407 cxx_asan: true, 408 libcxx: true 409 } 410 411 # Clang-10 412 - { 413 name: "Linux Clang 10 C++11 / libstdc++", 414 os: ubuntu-20.04, 415 cc: "clang-10", cxx: "clang++-10", 416 cxx_standard: 11, 417 cxx_asan: true, 418 libcxx: false 419 } 420 - { 421 name: "Linux Clang 10 C++14 / libstdc++", 422 os: ubuntu-20.04, 423 cc: "clang-10", cxx: "clang++-10", 424 cxx_standard: 14, 425 cxx_asan: true, 426 libcxx: false 427 } 428 - { 429 name: "Linux Clang 10 C++17 / libstdc++", 430 os: ubuntu-20.04, 431 cc: "clang-10", cxx: "clang++-10", 432 cxx_standard: 17, 433 cxx_asan: true, 434 libcxx: false 435 } 436 - { 437 name: "Linux Clang 10 C++20 / libstdc++", 438 os: ubuntu-20.04, 439 cc: "clang-10", cxx: "clang++-10", 440 cxx_standard: 20, 441 cxx_asan: true, 442 libcxx: false 443 } 444 - { 445 name: "Linux Clang 10 C++11 / libc++", 446 os: ubuntu-20.04, 447 cc: "clang-10", cxx: "clang++-10", 448 cxx_standard: 11, 449 cxx_asan: true, 450 libcxx: true 451 } 452 - { 453 name: "Linux Clang 10 C++14 / libc++", 454 os: ubuntu-20.04, 455 cc: "clang-10", cxx: "clang++-10", 456 cxx_standard: 14, 457 cxx_asan: true, 458 libcxx: true 459 } 460 - { 461 name: "Linux Clang 10 C++17 / libc++", 462 os: ubuntu-20.04, 463 cc: "clang-10", cxx: "clang++-10", 464 cxx_standard: 17, 465 cxx_asan: true, 466 libcxx: true 467 } 468 - { 469 name: "Linux Clang 10 C++20 / libc++", 470 os: ubuntu-20.04, 471 cc: "clang-10", cxx: "clang++-10", 472 cxx_standard: 20, 473 cxx_asan: true, 474 libcxx: true 475 } 476 477 # Clang-11 478 - { 479 name: "Linux Clang 11 C++11 / libstdc++", 480 os: ubuntu-20.04, 481 cc: "clang-11", cxx: "clang++-11", 482 cxx_standard: 11, 483 cxx_asan: true, 484 libcxx: false 485 } 486 - { 487 name: "Linux Clang 11 C++14 / libstdc++", 488 os: ubuntu-20.04, 489 cc: "clang-11", cxx: "clang++-11", 490 cxx_standard: 14, 491 cxx_asan: true, 492 libcxx: false 493 } 494 - { 495 name: "Linux Clang 11 C++17 / libstdc++", 496 os: ubuntu-20.04, 497 cc: "clang-11", cxx: "clang++-11", 498 cxx_standard: 17, 499 cxx_asan: true, 500 libcxx: false 501 } 502 - { 503 name: "Linux Clang 11 C++20 / libstdc++", 504 os: ubuntu-20.04, 505 cc: "clang-11", cxx: "clang++-11", 506 cxx_standard: 20, 507 cxx_asan: true, 508 libcxx: false 509 } 510 511 # Clang-12 512 - { 513 name: "Linux Clang 12 C++11 / libstdc++", 514 os: ubuntu-20.04, 515 cc: "clang-12", cxx: "clang++-12", 516 cxx_standard: 11, 517 cxx_asan: true, 518 libcxx: false 519 } 520 - { 521 name: "Linux Clang 12 C++14 / libstdc++", 522 os: ubuntu-20.04, 523 cc: "clang-12", cxx: "clang++-12", 524 cxx_standard: 14, 525 cxx_asan: true, 526 libcxx: false 527 } 528 - { 529 name: "Linux Clang 12 C++17 / libstdc++", 530 os: ubuntu-20.04, 531 cc: "clang-12", cxx: "clang++-12", 532 cxx_standard: 17, 533 cxx_asan: true, 534 libcxx: false 535 } 536 - { 537 name: "Linux Clang 12 C++20 / libstdc++", 538 os: ubuntu-20.04, 539 cc: "clang-12", cxx: "clang++-12", 540 cxx_standard: 20, 541 cxx_asan: true, 542 libcxx: false 543 } 544 545 # AppleClang 546 - { 547 name: "macOS Clang C++11", 548 os: macos-latest, 549 cc: "clang", cxx: "clang++", 550 cxx_standard: 11, 551 cxx_asan: true 552 } 553 - { 554 name: "macOS Clang C++14", 555 os: macos-latest, 556 cc: "clang", cxx: "clang++", 557 cxx_standard: 14, 558 cxx_asan: true 559 } 560 - { 561 name: "macOS Clang C++17", 562 os: macos-latest, 563 cc: "clang", cxx: "clang++", 564 cxx_standard: 17, 565 cxx_asan: true 566 } 567 568 # MSVC 2019 569 - { 570 name: "Windows MSVC 2019 C++11", 571 os: windows-2019, 572 cc: "cl", cxx: "cl", 573 cxx_standard: 11, 574 } 575 - { 576 name: "Windows MSVC 2019 C++14", 577 os: windows-2019, 578 cc: "cl", cxx: "cl", 579 cxx_standard: 14, 580 } 581 - { 582 name: "Windows MSVC 2019 C++17", 583 os: windows-2019, 584 cc: "cl", cxx: "cl", 585 cxx_standard: 17, 586 } 587 - { 588 name: "Windows MSVC 2019 C++20", 589 os: windows-2019, 590 cc: "cl", cxx: "cl", 591 cxx_standard: 20, 592 } 593 - { 594 name: "Windows MSVC 2017 C++11", 595 os: windows-2016, 596 cc: "cl", cxx: "cl", 597 cxx_standard: 11, 598 } 599 - { 600 name: "Windows MSVC 2017 C++14", 601 os: windows-2016, 602 cc: "cl", cxx: "cl", 603 cxx_standard: 14, 604 } 605 - { 606 name: "Windows MSVC 2017 C++17", 607 os: windows-2016, 608 cc: "cl", cxx: "cl", 609 cxx_standard: 17, 610 } 611 steps: 612 - uses: actions/checkout@v2 613 614 - name: Install GCC 4.8 615 id: install_gcc_4_8 616 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-4.8' ) 617 shell: bash 618 working-directory: ${{ env.HOME }} 619 run: | 620 sudo apt-get install -y gcc-4.8 g++-4.8 621 622 - name: Install GCC 4.9 623 id: install_gcc_4_9 624 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-4.9' ) 625 shell: bash 626 working-directory: ${{ env.HOME }} 627 run: | 628 sudo apt-get install -y gcc-4.9 g++-4.9 629 630 - name: Install GCC 6 631 id: install_gcc_6 632 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-6' ) 633 shell: bash 634 working-directory: ${{ env.HOME }} 635 run: | 636 sudo apt-get install -y gcc-6 g++-6 637 638 - name: Install GCC 7 639 id: install_gcc_7 640 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-7' ) 641 shell: bash 642 working-directory: ${{ env.HOME }} 643 run: | 644 sudo apt-get install -y gcc-7 g++-7 645 646 - name: Install GCC 8 647 id: install_gcc_8 648 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-8' ) 649 shell: bash 650 working-directory: ${{ env.HOME }} 651 run: | 652 sudo apt-get install -y gcc-8 g++-8 653 654 - name: Install GCC 11 655 id: install_gcc_11 656 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-11' ) 657 shell: bash 658 working-directory: ${{ env.HOME }} 659 run: | 660 sudo apt-get update && sudo apt-get install -y gcc-11 g++-11 661 662 - name: Install Clang 5 663 id: install_clang_5 664 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'clang++-5.0' ) 665 shell: bash 666 working-directory: ${{ env.HOME }} 667 run: | 668 sudo apt-get install -y clang-5.0 669 670 - name: Install Clang 6 671 id: install_clang_6 672 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'clang++-6.0' ) 673 shell: bash 674 working-directory: ${{ env.HOME }} 675 run: | 676 sudo apt-get install -y clang-6.0 677 678 - name: Install Clang 8 679 id: install_clang_8 680 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'clang++-8' ) 681 shell: bash 682 working-directory: ${{ env.HOME }} 683 run: | 684 sudo apt-get install -y clang-8 685 686 - name: Install Clang 9 687 id: install_clang_9 688 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'clang++-9' ) 689 shell: bash 690 working-directory: ${{ env.HOME }} 691 run: | 692 sudo apt-get install -y clang-9 693 694 - name: Install Clang 11 695 id: install_clang_11 696 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'clang++-11' ) 697 shell: bash 698 working-directory: ${{ env.HOME }} 699 run: | 700 wget https://apt.llvm.org/llvm.sh 701 chmod +x llvm.sh 702 sudo ./llvm.sh 11 703 704 - name: Install Clang 12 705 id: install_clang_12 706 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'clang++-12' ) 707 shell: bash 708 working-directory: ${{ env.HOME }} 709 run: | 710 wget https://apt.llvm.org/llvm.sh 711 chmod +x llvm.sh 712 sudo ./llvm.sh 12 713 714 - name: Install libc++ 715 id: install_libcxx 716 if: matrix.config.libcxx 717 shell: bash 718 working-directory: ${{ env.HOME }} 719 env: 720 CC: ${{ matrix.config.cc }} 721 CXX: ${{ matrix.config.cxx }} 722 run: | 723 $GITHUB_WORKSPACE/install_libcxx.sh 724 725 - name: Install kcov 726 if: startsWith(matrix.config.os, 'ubuntu') 727 run: | 728 sudo apt-get install -y kcov 729 730 - name: Verify compilation errors 731 if: (!startsWith(matrix.config.os, 'windows')) 732 shell: bash 733 run: | 734 CXX=${{ matrix.config.cxx }} CXXFLAGS="-std=c++${{ matrix.config.cxx_standard }}" ./check_errors.sh || 735 { 736 FAILURES="$?" ; 737 if [[ "${{ matrix.config.cxx_standard }}" == "11" ]]; then 738 if [[ ${FAILURES} != "4" ]]; then 739 echo "Expected four failures from C++11 check_errors.sh, got ${FAILURES}" ; 740 exit 1 ; 741 fi ; 742 else 743 echo "Expected zero failures from check_errors.sh, got ${FAILURES}" ; 744 exit 1 ; 745 fi ; 746 } 747 748 749 - name: Configure 750 shell: bash 751 env: 752 CC: ${{ matrix.config.cc }} 753 CXX: ${{ matrix.config.cxx }} 754 run: | 755 if [ "x${{ matrix.config.libcxx }}" == "xtrue" ] 756 then 757 cxx_flags="${cxx_flags} -stdlib=libc++ -nostdinc++ -cxx-isystem ${GITHUB_WORKSPACE}/llvm/include/c++/v1/ -Wno-unused-command-line-argument" 758 link_flags="${link_flags} -L ${GITHUB_WORKSPACE}/llvm/lib -Wl,-rpath,${GITHUB_WORKSPACE}/llvm/lib -lc++abi" 759 fi 760 761 if [ "x${{ matrix.config.cxx_asan }}" == "xtrue" ] 762 then 763 cxx_flags="${cxx_flags} -fno-omit-frame-pointer" 764 fi 765 766 cmake \ 767 -S . \ 768 -B build \ 769 -D CMAKE_BUILD_TYPE=Debug \ 770 -D CMAKE_VERBOSE_MAKEFILE=ON \ 771 -D CXX_STANDARD:STRING=${{ matrix.config.cxx_standard }} \ 772 -D "CMAKE_CXX_FLAGS:STRING=${cxx_flags}" \ 773 -D "CMAKE_EXE_LINKER_FLAGS:STRING=${link_flags}" \ 774 -D SANITIZE=${{matrix.config.cxx_asan}} \ 775 ${{ matrix.config.cmake_args }} \ 776 ${extra_cmake_args} 777 778 - name: Build 779 shell: bash 780 run: | 781 cmake --build build --parallel 4 --target self_test custom_recursive_mutex 782 783 - name: Run tests 784 shell: bash 785 run: | 786 cmake --build build --target run_self_test 787 788 - name: Collect coverage 789 if: (startsWith(matrix.config.os, 'ubuntu')) 790 shell: bash 791 run: | 792 cmake --build build --target run_coverage || true 793 794 - name: Upload coverage 795 if: startsWith(matrix.config.os, 'ubuntu') && github.repository == 'rollbear/trompeloeil' 796 uses: codecov/codecov-action@v1 797 with: 798 directory: build/coverage 799 files: self_test*/cobertura.xml 800 name: ${{ matrix.config.name }} 801 fail_ci_if_error: true 802 verbose: true