# Comment line(s) preceding each configuration document the main
# intent behind that configuration, so that we can correctly judge
# whether to preserve that during maintenance decisions.
#
# Other configurations might coincidentally test such configurations
# (e.g. because they are the current default), but it is appropriate
# to intend to teach each feature (or a feature combination) exactly
# once, and for the intent to be reflected precisely in the
# configuration syntax, so that the configurations are stable even
# if the defaults change in future.
#
# The phrase "at time of release" refers to either the initial
# GROMACS release from that branch, or the next expected release
# from that branch. (We will tend not to retroactively support
# newer infrastructure in CI, unless it's either easy or of
# high impact.)

# Test oldest supported gcc
# Test oldest supported CUDA
# Test oldest supported Ubuntu
# Test MPI with CUDA
# Test MPI with gcc
# Test MPMD PME with library MPI
gcc-5 gpuhw=nvidia cuda-9.0 cmake-3.9.6 mpi npme=1 nranks=2 openmp

# Test newest cmake at time of release
# Test non-default use of mdrun -gpu_id
# Test newest gcc supported by newest CUDA at time of release
# Test thread-MPI with CUDA
# Test SIMD implementation of pair search for GPU code-path
# Test hwloc-2 support
gcc-8 gpuhw=nvidia gpu_id=1 cuda-10.1 thread-mpi openmp cmake-3.15.1 release-with-assert simd=avx2_256 hwloc libhwloc-2.0.4

# Test with libcxx
# Test with ThreadSanitizer + OpenMP + SIMD
clang-7 no-hwloc tsan libcxx-7 openmp cmake-3.12.1 simd=avx2_256

# Test on MacOS (the gcc-8 and/or x11 flags implicitly steer jobs to the OSX agent)
# Test X11 build
# Test gcc in double precision
# Test without TNG support
# Test 128-bit SIMD in double precision (to cover SimdInt32 support better)
# Test fftpack fallback
gcc-8 double x11 no-tng fftpack simd=sse4.1

# Test oldest supported clang (while avoiding AVX codegen issues in it)
# Test without OpenMP
# Test thread-MPI
# Test with TNG support
clang-3.6 simd=sse2 thread-mpi no-openmp fftpack cmake-3.11.4 tng

# Test newest clang at time of release
# Test with AddressSanitizer (without OpenMP, see below)
clang-8 no-openmp asan cmake-3.11.4

# Test with clang-tidy (without OpenMP)
clang-8 no-openmp cmake-3.12.1 tidy

# Test oldest supported MSVC on Windows
# Test newest supported MSVC on Windows
msvc-2017 openmp release-with-assert

# Test newest icc at the time of release
# Test icc without SIMD in double precision in release mode
# Test MKL
# Test without any MPI
# Test on CentOS (because cmake-3.9.6 is available there)
icc-19 no-thread-mpi double openmp mkl cmake-3.9.6 simd=none release

# Test oldest supported cmake
# Test NVIDIA OpenCL
# Test external clFFT (for build speed)
# Test MPI + OpenCL
# Test AVX2_256 SIMD
# Test without MPI_IN_PLACE
gcc-6 openmp gpuhw=nvidia opencl-1.2 clFFT-2.14 cmake-3.9.6 mpi no-mpiinplace simd=avx2_256

# Test AMD OpenCL
# Test external clFFT (for build speed)
# Test AVX2_256 SIMD
# Test newest gcc at time of release
# Test hwloc-1 support
gcc-9 openmp simd=avx2_256 gpuhw=amd opencl-1.2 clFFT-2.14 hwloc libhwloc-1.11.2 cmake-3.14.5

# TODO
# Add OpenMP support to ASAN build (but libomp.so in clang-4 reports leaks, so might need a suitable build or suppression)
# Test newest supported LTS Ubuntu
# Test AVX-512 when hardware is available
