LLVM 11 libcxxabi has some flags to support usage in the Darwin stdenv,
in particular, `standalone` and `withLibunwind`.
Darwin stdenv needs the `standalone` flag because its `hostPlatform` set
doesn't have `useLLVM` set to true. And it needs `withLibunwind` to
explicitly disable including `libunwind` as a build input.
We also prefix `install_name_tool` in case we're cross-compiling.
LLVM 11 libcxxabi has some flags to support usage in the Darwin stdenv,
in particular, `standalone` and `withLibunwind`.
Darwin stdenv needs the `standalone` flag because its `hostPlatform` set
doesn't have `useLLVM` set to true. And it needs `withLibunwind` to
explicitly disable including `libunwind` as a build input.
We also prefix `install_name_tool` in case we're cross-compiling.
The original problem with the normalization of the filename only
occurred because it was in NFC. However, when trying to fix it by
`mv`ing the file to a normalization-indifferent name, I used the NFD
normalized name from my file system. This means it only works on
normalizing file systems. The filename must be in the original encoding
and will be normalized by normalizing file systems like HFS+.
The original problem with the normalization of the filename only
occurred because it was in NFC. However, when trying to fix it by
`mv`ing the file to a normalization-indifferent name, I used the NFD
normalized name from my file system. This means it only works on
normalizing file systems. The filename must be in the original encoding
and will be normalized by normalizing file systems like HFS+.
The build was falling back on impure paths because pkg-config was
missing. This caused a mismatch between headers picked up at
compile-time and run-time, specifically `ffi.h` from libffi and then one
in `/usr/include/ffi` on macOS.