This PR introduces a new libbitcoin_kernel
internal library. It completes the internal library design as laid out in doc/design/libraries.md. Since the util
library contains a bunch of modules that are not required by the kernel library, a new kernel_util
library is introduced as well that only consists of the modules required by the kernel library. The external libbitcoinkernel
library now re-uses the compiled objects from the internal libraries.
There is a trade-off to this. Since we don’t manually export symbols from the kernel library yet, this would make the library unusable if REDUCE_EXPORTS=ON
. For now, this patch here prohibits compiling the kernel library if REDUCDE_EXPORTS=ON
. This should be acceptable, since this option is usually used in the context of releases, and we probably won’t be releasing the kernel library until a header with explicitly exported symbols for external use is defined. However, it does lock us into using the same compiler flags for both the internal and external libraries.