In configure.ac, `_DARWIN_C_SOURCE` is defined to `900000L`.
```
297 *-apple-darwin*)
298 AC_DEFINE(_DARWIN_C_SOURCE, 900000L,
299 Expose all libc features (__DARWIN_C_FULL).)
```
This was done as part of commit 654024081cfa103c87bb163b117ea3568171d408.
Later in configure.ac, `-Werror` is activated, to detect unknown attributes.
```
1077 # Following attribute tests depend on warnings to cause compile to fail,
1078 # so set -Werror temporarily.
1079 _gcc_cflags_save=$CFLAGS
1080 CFLAGS="$CFLAGS -Werror"
```
This is used to detect, for example, support for aligned.
The new cipher-gcm-intel-pclmul implementation does not work unless `NEED_16BYTE_ALIGNED_CONTEXT` is set (otherwise, there is a gpf accessing the context's key); this is, in turn, only set if `HAVE_GCC_ATTRIBUTE_ALIGNED` has been defined by the configure scripts. (BTW, that this is as brittle as it is--crashing at runtime if you are using a compiler that doesn't support this particular attribute--is maybe worth looking at: if aligned isn't supported, this new gcm implementation must be avoided, as the alignment is no longer merely a performance improvement.)
However, this test fails on macOS due to the following:
```
configure:16651: checking whether the GCC style aligned attribute is supported
configure:16662: clang -mmacosx-version-min=10.14 -isysroot /Applications/Xcode_11.3.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -resource-dir /Applications/Xcode_11.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0 -B./ -fno-strict-return -arch x86_64 -target x86_64-apple-darwin18.5.0 -c -gfull -Os -fno-omit-frame-pointer -DPIC -fPIC -fno-ident -Werror conftest.c >&5
conftest.c:40:9: error: '_DARWIN_C_SOURCE' macro redefined [-Werror,-Wmacro-redefined]
#define _DARWIN_C_SOURCE 900000L
^
conftest.c:23:9: note: previous definition is here
#define _DARWIN_C_SOURCE 1
^
1 error generated.
configure:16662: $? = 1
```
The issue is that configure already sets `_DARWIN_C_SOURCE`.
```
5638 printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
```
This is in specific.m4, and it is using `AC_DEFINE`'s default of `1`.
```
502 AC_DEFINE([_DARWIN_C_SOURCE])
```
This define is new, as of autoconf 2.71, and was not done by 2.69.
https://sources.debian.org/src/autoconf/2.71-1/lib/autoconf/specific.m4/#L502
FWIW, I've never heard of `_DARWIN_C_SOURCE` being non-`1`. If you grep Apple's SDK, it only ever checks whether this variable is defined.
Searching for `900000L`, I believe there was some confusion with respect to `_DARWIN_C_LEVEL`: if you set `_DARWIN_C_SOURCE`, it sets `__DARWIN_C_LEVEL` to `__DARWIN_C_FULL`, which is 900000L; however, this is different from setting `_DARWIN_C_SOURCE`, which should only be set to 1.
```
/*
* Set a single macro which will always be defined and can be used to determine
* the appropriate namespace. For POSIX, these values will correspond to
* _POSIX_C_SOURCE value. Currently there are two additional levels corresponding
* to ANSI (_ANSI_SOURCE) and Darwin extensions (_DARWIN_C_SOURCE)
*/
#define __DARWIN_C_ANSI 010000L
#define __DARWIN_C_FULL 900000L
#if defined(_ANSI_SOURCE)
#define __DARWIN_C_LEVEL __DARWIN_C_ANSI
#elif defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE) && !defined(_NONSTD_SOURCE)
#define __DARWIN_C_LEVEL _POSIX_C_SOURCE
#else
#define __DARWIN_C_LEVEL __DARWIN_C_FULL
#endif
```
If libgcrypt sets this variable to `1`, everything works correctly again.
```
diff --git a/configure.ac b/configure.ac
index a874c411..37947ecb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -295,7 +295,7 @@ case "${host}" in
m68k-atari-mint)
;;
*-apple-darwin*)
- AC_DEFINE(_DARWIN_C_SOURCE, 900000L,
+ AC_DEFINE(_DARWIN_C_SOURCE, 1,
Expose all libc features (__DARWIN_C_FULL).)
AC_DEFINE(USE_POSIX_SPAWN_FOR_TESTS, 1,
[defined if we use posix_spawn in test program])
```
In the meantime, developers must pass `-Wno-macro-redefined` through `CPPFLAGS` as a workaround.