[dpdk-dev] [PATCH v3 1/7] build: always link-whole DPDK static libraries
Bruce Richardson
bruce.richardson at intel.com
Tue Jun 30 16:14:27 CEST 2020
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 <bruce.richardson at intel.com>
Tested-by: Andrzej Ostruszka <aostruszka at marvell.com>
Acked-by: Luca Boccassi <bluca at debian.org>
Acked-by: Sunil Pai G <sunil.pai.g at intel.com>
---
app/test/meson.build | 2 +-
drivers/meson.build | 2 +-
examples/meson.build | 6 +++---
lib/meson.build | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/app/test/meson.build b/app/test/meson.build
index 5233ead46..b2a1c1273 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -415,7 +415,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 01c860c06..e78c76c55 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 3b540012f..120eebf71 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 4cbbca041..c1b9e1633 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)
--
2.25.1
More information about the dev
mailing list