Arm Optimized Routines
----------------------

This repository contains implementations of library functions
provided by Arm under MIT License (See LICENSE). Contributions
to this project are accepted, but the terms will need negotiation (so
relicensing and copyright assignment to the FSF is possible later).

Regular quarterly releases are tagged as vYY.MM (e.g. v19.11).

Source code layout:

build/          - build directory (created by make).
math/           - math subproject sources.
math/include/   - math library public headers.
math/test/      - math test and benchmark related sources.
math/tools/     - tools used for designing the algorithms.
string/         - string routines subproject sources.
string/include/ - string library public headers.
string/test/    - string test and benchmark related sources.

The steps to build the target libraries and run the tests:

cp config.mk.dist config.mk
# edit config.mk if necessary ...
make
make check

Or building outside of the source directory:

ln -s path/to/src/Makefile Makefile
cp path/to/src/config.mk.dist config.mk
echo 'srcdir = path/to/src' >> config.mk
# further edits to config.mk
make
make check

Or building and testing the math subproject only:

make all-math
make check-math

The test system requires libmpfr and libmpc.
For example on debian linux they can be installed as:

sudo apt-get install libmpfr-dev libmpc-dev

For cross build, CROSS_COMPILE should be set in config.mk and EMULATOR
should be set for cross testing (e.g. using qemu-user or remote access
to a target machine), see the examples in config.mk.dist.
