name: gems-cpp-extension

on:
  push:
    branches: [ "master" ]
    paths:
      - '**.py'
      - '**.cpp'
      - '**.cu'
      - '**.h'
      - '**.hpp'
      - '**.cc'
      - 'CMakeLists.txt'
      - '**/*.cmake'
      - '**/*.mk'
      - 'Makefile'
      - '!src/flag_gems/experimental_ops/**'
  pull_request:
    branches: [ "master" ]
    paths:
      - '**.py'
      - '**.cpp'
      - '**.cu'
      - '**.h'
      - '**.hpp'
      - '**.cc'
      - 'CMakeLists.txt'
      - '**/*.cmake'
      - '**/*.mk'
      - 'Makefile'
      - '!src/flag_gems/experimental_ops/**'

jobs:
  build-C-extension:
    runs-on: cpp

    steps:
      - uses: actions/checkout@v4

      - name: Build FlagGems with C-extension
        shell: bash
        run: |
          SKBUILD_CMAKE_ARGS="-DFLAGGEMS_BUILD_C_EXTENSIONS=ON" pip install --no-build-isolation -v -e .

      - name: Run FlagGems CTests
        shell: bash
        run: |
          cd build/cpython-311/ctests
          export FLAGGEMS_SOURCE_DIR=$(python -c "import os;import flag_gems;print(os.path.dirname(flag_gems.__file__))")
          ctest -V