"libnm-core/" is rather complicated. It provides a static library that
is linked into libnm.so and NetworkManager. It also contains public
headers (like "nm-setting.h") which are part of public libnm API.
Then we have helper libraries ("libnm-core/nm-libnm-core-*/") which
only rely on public API of libnm-core, but are themself static
libraries that can be used by anybody who uses libnm-core. And
"libnm-core/nm-libnm-core-intern" is used by libnm-core itself.
Move "libnm-core/" to "src/". But also split it in different
directories so that they have a clearer purpose.
The goal is to have a flat directory hierarchy. The "src/libnm-core*/"
directories correspond to the different modules (static libraries and set
of headers that we have). We have different kinds of such modules because
of how we combine various code together. The directory layout now reflects
this.
1.1 KiB
libnm-core-impl
NetworkManager provides a client library libnm.
NetworkManager core does not (dynamically) link against all of libnm.
Instead, it statically links against a part of it.
That part is the static helper library libnm-core-impl.
libnm-core-impl implements (and provides) the API from
libnm-core-public, which is part of the public
API of libnm. In this form, libnm-core-impl is part
of the implementation of libnm. It also implements (and
provides) an internal API libnm-core-intern which
can only be used by those who link statically against libnm-core-impl.
Only NetworkManager core and libnm are allowed to statically
link with libnm-core-impl. Consequently, only those are allowed to include
libnm-core-intern.
This directory should not be added to the include search path of other
components as they are only allowed to include libnm-core-public
and libnm-core-intern.