The library execinfo and its header file can be installed on Alpine Linux
where the backtrace feature is not part of musl libc:
apk add libexecinfo-dev
As a consequence, this library should not be restricted to BSD only.
At the same time, the library and header are detected once and added
globally to be linked with any application, internal or external.
Fixes: 9065b1fac65f ("build: fix dependency on execinfo for BSD meson builds")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: David Marchand <david.marchand@redhat.com>
---
app/meson.build | 4 ----
app/test/meson.build | 1 -
config/meson.build | 9 ++++++---
examples/meson.build | 4 +---
4 files changed, 7 insertions(+), 11 deletions(-)
@@ -21,9 +21,6 @@ apps = [
'test-regex',
'test-sad']
-# for BSD only
-lib_execinfo = cc.find_library('execinfo', required: false)
-
default_cflags = machine_args + ['-DALLOW_EXPERIMENTAL_API']
default_ldflags = []
if get_option('default_library') == 'static' and not is_windows
@@ -53,7 +50,6 @@ foreach app:apps
dep_objs += get_variable(get_option('default_library')
+ '_rte_' + d)
endforeach
- dep_objs += lib_execinfo
link_libs = []
if get_option('default_library') == 'static'
@@ -426,7 +426,6 @@ foreach d:test_deps
def_lib = get_option('default_library')
test_dep_objs += get_variable(def_lib + '_rte_' + d)
endforeach
-test_dep_objs += cc.find_library('execinfo', required: false)
link_libs = []
if get_option('default_library') == 'static'
@@ -125,11 +125,8 @@ if cc.find_library('m', required : false).found()
dpdk_extra_ldflags += '-lm'
endif
-# for linux link against dl, for bsd execinfo
if is_linux
link_lib = 'dl'
-elif is_freebsd
- link_lib = 'execinfo'
else
link_lib = ''
endif
@@ -166,6 +163,12 @@ if fdt_dep.found() and cc.has_header('fdt.h')
dpdk_extra_ldflags += '-lfdt'
endif
+libexecinfo = cc.find_library('libexecinfo', required: false)
+if libexecinfo.found() and cc.has_header('execinfo.h')
+ add_project_link_arguments('-lexecinfo', language: 'c')
+ dpdk_extra_ldflags += '-lexecinfo'
+endif
+
# check for libbsd
libbsd = dependency('libbsd', required: false, method: 'pkg-config')
if libbsd.found()
@@ -6,8 +6,6 @@ if get_option('default_library') == 'static'
link_whole_libs = dpdk_static_libraries + dpdk_drivers
endif
-execinfo = cc.find_library('execinfo', required: false)
-
# list of all example apps. Keep 1-3 per line, in alphabetical order.
all_examples = [
'bbdev_app', 'bond',
@@ -82,7 +80,7 @@ foreach example: examples
cflags = default_cflags
ldflags = default_ldflags
- ext_deps = [execinfo]
+ ext_deps = []
includes = [include_directories(example)]
deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
subdir(example)