## Building

Usual Makefile project. This project does not require a configure phase.

### Special optional variables

# `PLATFORM`

Darwin version to target against. Detected automatically, but can also 
be overridden manually to test builds for other OS versions.
(This is not the macOS version.)

# `FORCE_ARCH`

Architecture to build for. Accepts a single value, not a list.

If your `lipo` binary is new enough and supports the `-archs` flag, you will
not need to use this variable. Instead, directly build the software
universally in one pass using the usual `-arch` compiler flags. The
autodetection, split and merge features will then handle the different
architectures automatically.

Older versions of `lipo` do not support the `-archs` flag, so automatic
architecture detection via binary/object file inspection is not be possible
on older platforms.

In order to avoid an additional dependency on the `cctools` port 
to provide a newer `lipo` version, this variable was introduced. 
It disables the automatic architecture detection feature and instead 
hardcodes the contained value as the target architecture.

Within `MacPorts`, we use it in multi-architecture builds with one
pass per architecture. Finally, the `MacPorts ``muniversal` PortGroup
will merge the resulting binaries into one fat/universal binary automatically.

Some symbols must be built multiple times. Each variant will use a different
data layout and have a special postfix appended to it. The data layouts
supported and needed depend upon the architecture and (target) OS version.
