A lot of build.h is completely for internal use. It contains:
Version information (needs to be public)
BOTAN_MP_WORD_BITS
Installation paths
Path to the system cert bundle
Definition of BOTAN_DLL (only reason that ffi.h depends on build.h is this)
Botan target OS info / flags
If we can use GCC inline asm
CPU info / flags
Valgrind toggle
Debug asserts option
The BOTAN_HAS_FOO list (needs to be public)
%{local_config} (we should probably just remove this)
Some things that are nominally editable but really should just be const size_ts in some appropriate header.
From an API perspective the only things that the user needs to see is the version info and the HAS_FOO feature macros.
Some other things probably need to be visible since we use them in headers somehow (eg BOTAN_MP_WORD_BITS defines size of word and we use that in headers)
A lot of
build.h
is completely for internal use. It contains:BOTAN_MP_WORD_BITS
BOTAN_DLL
(only reason thatffi.h
depends onbuild.h
is this)BOTAN_HAS_FOO
list (needs to be public)%{local_config}
(we should probably just remove this)const size_t
s in some appropriate header.From an API perspective the only things that the user needs to see is the version info and the HAS_FOO feature macros.
Some other things probably need to be visible since we use them in headers somehow (eg
BOTAN_MP_WORD_BITS
defines size ofword
and we use that in headers)