trompeloeil

FORK: Header only C++14 mocking framework
git clone https://git.neptards.moe/u3shit/trompeloeil.git
Log | Files | Refs | README

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