name: clang-c++17
on:
  push:
    branches: [ master, development, pull-request/* ]
  pull_request:
    branches: [ master, pull-request/* ]

jobs:

  build-clang-cpp17-linux-stl:
    name: Clang C++17 Linux - STL
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-22.04]

    steps:
    - uses: actions/checkout@v4

    - name: Build
      run: |
        export CC=clang
        export CXX=clang++
        export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
        cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
        clang --version
        make -j $(getconf _NPROCESSORS_ONLN)

    - name: Run tests
      run: ./test/etl_tests

  build-clang-cpp17-linux-no-stl:
    name: Clang C++17 Linux - No STL
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-22.04]

    steps:
    - uses: actions/checkout@v4

    - name: Build
      run: |
        export CC=clang
        export CXX=clang++
        export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
        cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
        clang --version
        make -j $(getconf _NPROCESSORS_ONLN)

    - name: Run tests
      run: ./test/etl_tests