From: Bruce Richardson Date: Tue, 30 Jun 2020 14:14:27 +0000 (+0100) Subject: build: always link whole DPDK static libraries X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=e2db26f76673762532c0b830502bf37aee20d1a8 build: always link whole DPDK static libraries To ensure all constructors are included in static build, we need to pass the --whole-archive flag when linking, which is used with the "link_whole" meson option. Since we use link_whole for all libs, we no longer need to track the lib as part of the static dependency, just the path to the headers for compiling. After this patch is applied, all DPDK .a files are inside --whole-archive/--no-whole-archive flags, but external dependencies and shared libs being linked against remain outside. Signed-off-by: Bruce Richardson Tested-by: Andrzej Ostruszka Acked-by: Luca Boccassi Acked-by: Sunil Pai G Acked-by: Thomas Monjalon --- diff --git a/app/test/meson.build b/app/test/meson.build index 10f23d53b8..b224d6f2bb 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -417,7 +417,7 @@ test_dep_objs += cc.find_library('execinfo', required: false) link_libs = [] link_nodes = [] if get_option('default_library') == 'static' - link_libs = dpdk_drivers + link_libs = dpdk_static_libraries + dpdk_drivers link_nodes = dpdk_graph_nodes endif diff --git a/drivers/meson.build b/drivers/meson.build index 01c860c068..e78c76c55c 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -200,7 +200,7 @@ foreach class:dpdk_driver_classes shared_dep = declare_dependency(link_with: shared_lib, include_directories: includes, dependencies: shared_deps) - static_dep = declare_dependency(link_with: static_lib, + static_dep = declare_dependency( include_directories: includes, dependencies: static_deps) diff --git a/examples/meson.build b/examples/meson.build index 3b540012f9..120eebf716 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -1,10 +1,10 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017-2019 Intel Corporation -driver_libs = [] +link_whole_libs = [] node_libs = [] if get_option('default_library') == 'static' - driver_libs = dpdk_drivers + link_whole_libs = dpdk_static_libraries + dpdk_drivers node_libs = dpdk_graph_nodes endif @@ -101,7 +101,7 @@ foreach example: examples endif executable('dpdk-' + name, sources, include_directories: includes, - link_whole: driver_libs + node_libs, + link_whole: link_whole_libs + node_libs, link_args: dpdk_extra_ldflags, c_args: cflags, dependencies: dep_objs) diff --git a/lib/meson.build b/lib/meson.build index 4cbbca041a..c1b9e1633f 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -134,7 +134,7 @@ foreach l:libraries dependencies: static_deps, include_directories: includes, install: true) - static_dep = declare_dependency(link_with: static_lib, + static_dep = declare_dependency( include_directories: includes, dependencies: static_deps)