Norman Feske 5ae0dab6c5 mk: remove implicit build of shared libraries
This patch removes the implicit build of all shared libraries a target
depends on. Targets only depend on the respective ABIs instead. This
alleviates the need to locally build complex shared libraries (think of
Qt) when developing applications. Instead, application developers can
use binary depot archives.

The implementation splits the mk/lib.mk file into three files:
- mk/a.mk   for building one static library (.lib.a)
- mk/so.mk  for building one shared object  (.lib.so)
- mk/abi.mk for building one ABI stub       (.abi.so)

Furthermore, the commit moves messages and the collection of build
artifacts to var/libdeps, triggers the build of kernel-specific
ld-<kernel>.lib.so, and prunes the lib-dependency tree at ABIs.

Fixes #5061
2023-11-28 14:44:29 +01:00
..
2023-07-14 12:06:31 +02:00
2023-03-13 14:32:53 +01:00

This directory contains library-description files.  Each _<libname>.mk_ file
contains the instructions for building the library _<libname>_. The .mk files
are never used directly but they are implicitely processed by the build
system.

Libraries implementing one interface may have specialized implementations for
different CPU architectures. Such architecture-specific _<libname>.mk_ files
are located in corresponding _spec/_ subdirectories. For example, the .mk
files of ARM-specific library variants reside in the _spec/arm/_ subdirectory.
The build system automatically finds the appropriate _<libname>.mk_ file by
evaluating the 'SPECS' build-configuration variable. Whenever the 'SPECS'
variable contains 'arm', the build system considers the _spec/arm/_ directory.