genode/repos/base/lib/mk
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
..
spec ldso: Fix RISC-V support with 21.05 tool chain 2021-06-25 11:56:22 +02:00
base-common.inc base: remove entrypoint.cc from core 2023-07-14 12:06:31 +02:00
base.inc base: remove entrypoint.cc from core 2023-07-14 12:06:31 +02:00
base.mk Build dynamically linked executables by default 2016-12-14 11:22:27 +01:00
cxx.mk cxx: localize operator new(unsigned long) in supc++.o 2021-02-23 12:02:41 +01:00
ld-platform.inc base: ld-<platform>.abi.so depends on symbol.map 2022-12-01 11:47:32 +01:00
ld.mk mk: remove implicit build of shared libraries 2023-11-28 14:44:29 +01:00
ldso_so_support.mk Cleanup shared-object support mechanics 2020-05-18 10:16:13 +02:00
README Update README files 2023-03-13 14:32:53 +01:00
startup.inc startup: merge init_main_thread.cc into _main.cc 2023-07-14 12:06:31 +02:00
timeout-arm.mk base-hw: problems with timeout lib in src recipe 2022-10-12 11:59:08 +02:00
timeout.mk base-hw: problems with timeout lib in src recipe 2022-10-12 11:59:08 +02: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.