Better test whether standard library supports aligned_alloc()
This fixes #111 (closed)
Summary
Added a cmake compile-test to check whether the used standard library provides the function aligned_alloc()
. The Dune::AlignedAllocator
implementation is adapted, using the introduced config variable DUNE_HAVE_C_ALIGNED_ALLOC
.
Motivation
I have added a cmake test for standard library function aligned_alloc()
since it cannot be detected in the code whether this function exists. The old test #if __APPLE__
was not enough. E.g. on our cluster, the standard library does not support aligned_alloc()
for some reasons and thus, the compile fails to compile the AlignedAllocator
, although there are alternatives already implemented.
TODO
Additionally, I've added an error message if neither aligned_alloc
nor posix_memalign
is available on a system. But, since I do not have an Apple system I cannot test this completely.
The branch can be merged when someone confirms, that the condition
#if !(DUNE_HAVE_C_ALIGNED_ALLOC || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))
works fine on systems with Apple's standard library. This test assumes that a posix library of a minimal version always provides the posix_memalign()
function.
Maybe an additional cmake compile-test should be added to test for this function as well.