numam-dpdk/buildtools
Bruce Richardson f9c0b1f431 build/pkg-config: output drivers first for static build
When calling pkg-config --static --libs, pkg-config will always output the
regular libs first, and then the extra libs from Libs.private field,
since the assumption is that those are additional dependencies for building
statically that the .a files depend upon.

However, for DPDK, we only link the driver files for static builds, and
those need to come *before* the regular libraries. To get this result, we
need two pkgconfig files for DPDK, one for the shared libs, and a second
for the static libs and drivers, which depends upon the first. Using a
dependency means that the shared libs are printed only after the
Libs.private field rather than before.

Without this patch, the linking works in DPDK because in all cases we
specify the libraries after the drivers in the Libs.private line, ensuring
that the references to the libs from the drivers can be resolved. The
current output is therefore of the form, "(shared)libs, drivers,
(static)libs", while after this patch the output is, "drivers,
(static)libs, (shared)libs". The former case will not work if we use the
--whole-archive flag on the static libs as it will lead to duplicate
definitions due to some references having been previously resolved from the
shared libraries. By ensuring the shared libraries come last in the link
link, this issue does not occur, as duplicate references when linking the
shared libs will be ignored.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Sunil Pai G <sunil.pai.g@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
2020-07-01 19:30:52 +02:00
..
pkg-config build/pkg-config: output drivers first for static build 2020-07-01 19:30:52 +02:00
pmdinfogen build: replace meson OS detection with variable 2020-06-30 15:29:59 +02:00
auto-config-h.sh buildtools: fix build for some mktemp 2018-10-27 15:30:25 +02:00
call-sphinx-build.py doc: rebuild with meson whenever a file changes 2020-01-15 08:50:28 +01:00
check-symbols.sh compat: provide experimental alias for matured ABI 2020-05-18 19:46:25 +02:00
gen-build-mk.sh mk: allow renaming of build directories 2018-11-14 01:46:00 +01:00
gen-config-h.sh tools: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
gen-pmdinfo-cfile.sh buildtools: allow pedantic empty pmdinfo 2020-02-05 18:19:00 +01:00
list-dir-globs.py build: allow using wildcards to disable drivers 2020-02-06 09:17:24 +01:00
Makefile buildtools: change license to SPDX 2018-07-26 22:45:17 +02:00
map_to_win.py build: generate version map file for MinGW 2020-06-30 00:02:53 +02:00
map-list-symbol.sh buildtools: detect discrepancies for experimental symbols 2019-06-29 19:04:32 +02:00
meson.build build: generate version map file for MinGW 2020-06-30 00:02:53 +02:00
options-ibverbs-static.sh buildtools: get static mlx dependencies for meson 2020-02-14 12:42:13 +01:00
relpath.sh tools: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
symlink-drivers-solibs.sh build: fix ninja install on FreeBSD 2019-05-02 23:07:04 +02:00