genode/repos/base/lib/mk
Norman Feske f54c85e045 Genode application binary interface (ABI)
This patch decouples the kernel-specific implementation of the dynamic
linker from its kernel-agnostic binary interface. The name of the
kernel-specific dynamic linker binary now corresponds to the kernel,
e.g., 'ld-linux.lib.so' or 'ld-nova.lib.so'. Applications are no longer
linked directly against a concrete instance of the dynamic linker but
against a shallow stub called 'ld.lib.so'. This stub contains nothing
but the symbols provided by the dynamic linker. It thereby represents
the Genode ABI.

At system-integration time, the kernel-specific run/boot_dir back ends
integrate the matching the kernel-specific variant of the dynamic linker
as 'ld.lib.so' into the boot image.

The ABI symbol file for the dynamic linker is located at
'base/lib/symbols/ld'. It contains the joint ABI of all supported
architectures. The new utility 'tool/abi_symbols' eases the creation of
such an ABI symbol file for a given shared library. Its result should be
manually inspected and edited as needed.

The patch removes the 'syscall' library from 'base_libs.mk' to avoid
polluting the kernel-agnostic ABI with kernel-specific interfaces.

Issue #2190
Issue #2195
2016-12-23 16:50:28 +01:00
..
spec Genode application binary interface (ABI) 2016-12-23 16:50:28 +01:00
README Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
base-common.inc Remove blocking calls from root and parent RPCs 2016-11-25 16:06:42 +01:00
base.inc Build dynamically linked executables by default 2016-12-14 11:22:27 +01:00
base.mk Build dynamically linked executables by default 2016-12-14 11:22:27 +01:00
component_entry_point.mk Move server API concept to base framework 2016-04-11 11:51:46 +02:00
cxx.mk Clean ldso from using deprecated APIs 2016-11-08 15:26:32 +01:00
ld-platform.inc Genode application binary interface (ABI) 2016-12-23 16:50:28 +01:00
ld.mk Genode application binary interface (ABI) 2016-12-23 16:50:28 +01:00
ldso-startup.mk ldso-startup: support build from non-base repos 2016-07-15 11:38:27 +02:00
platform.mk Genode application binary interface (ABI) 2016-12-23 16:50:28 +01:00
startup.inc Move server API concept to base framework 2016-04-11 11:51:46 +02:00
syscall.mk Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00

README

This directory contains library description files.  Each '<libname>.mk' file
holds the instruction for building the library '<libname>'. These makefiles are
never used directly but they are called from the build system when required.
When called, the build system passes the following variables:

:'BASE_DIR': This is the base directory of the source tree.

Source codes are specified by setting the 'SRC_CC' and 'SRC_C' variables.
The source code locations must be specified via 'vpath'.
A library can include other libraries by setting the 'LIBS'
variable.

Each '<libname>.mk' file must include the 'lib.mk' role file:

! include $(BASE_DIR)/mk/lib.mk

Libraries implementing one and the same library interface may have specific
implementations for different platforms. Such platform-specific '<libname>.mk'
files should be placed into corresponding subdirectories. For example, the
'linux'-specific implementation of the 'server' library resides in the 'linux/'
subdirectory. The build system automatically searches the right '<libname>.mk'
file by evaluating the 'SPECS' configuration variable. If 'SPECS' is set to
'host linux', the build system will look into the directories './', './host',
and './linux'.