28188cee2a
When a component uses either XOPEN_SOURCE or POSIX_C_SOURCE macro explicitly in its build recipe, it restricts visibility of a non POSIX features subset, such as IANA protocol numbers (IPPROTO_* macros). Non standard features are enabled by default for DPDK both for Linux thanks to _GNU_SOURCE and for FreeBSD thanks to __BSD_VISIBLE. However using XOPEN_SOURCE or POSIX_(C_)SOURCE in a component causes __BSD_VISIBLE to be defined to 0 for FreeBSD, causing different feature sets visibility for Linux and FreeBSD. It restricts from using IPPROTO macros in public headers, such as rte_ip.h, despite the fact they are already widely used in sources. Add __BSD_VISIBLE macro specified unconditionally for FreeBSD targets which enforces feature sets visibility unification between Linux and FreeBSD. Add single -D_GNU_SOURCE to config/meson.build as a project argument instead of adding separate directive for each project subtree. This patch solves the problem of build breaks for [1] on FreeBSD [2] following the discussion [3]. [1] https://mails.dpdk.org/archives/dev/2019-May/131885.html [2] http://mails.dpdk.org/archives/test-report/2019-May/082263.html [3] https://mails.dpdk.org/archives/dev/2019-May/132110.html Signed-off-by: Marcin Smoczynski <marcinx.smoczynski@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
72 lines
1.4 KiB
Meson
72 lines
1.4 KiB
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2017-2019 Intel Corporation
|
|
|
|
if is_windows
|
|
subdir_done()
|
|
endif
|
|
|
|
apps = [
|
|
'pdump',
|
|
'proc-info',
|
|
'test-acl',
|
|
'test-bbdev',
|
|
'test-cmdline',
|
|
'test-compress-perf',
|
|
'test-crypto-perf',
|
|
'test-eventdev',
|
|
'test-pipeline',
|
|
'test-pmd']
|
|
|
|
# for BSD only
|
|
lib_execinfo = cc.find_library('execinfo', required: false)
|
|
|
|
default_cflags = machine_args
|
|
|
|
foreach app:apps
|
|
build = true
|
|
name = app
|
|
allow_experimental_apis = false
|
|
sources = []
|
|
includes = []
|
|
cflags = default_cflags
|
|
objs = [] # other object files to link against, used e.g. for
|
|
# instruction-set optimized versions of code
|
|
|
|
# use "deps" for internal DPDK dependencies, and "ext_deps" for
|
|
# external package/library requirements
|
|
ext_deps = []
|
|
deps = dpdk_app_link_libraries
|
|
|
|
subdir(name)
|
|
|
|
if build
|
|
dep_objs = []
|
|
foreach d:deps
|
|
dep_objs += get_variable(get_option('default_library')
|
|
+ '_rte_' + d)
|
|
endforeach
|
|
dep_objs += lib_execinfo
|
|
|
|
link_libs = []
|
|
if get_option('default_library') == 'static'
|
|
link_libs = dpdk_static_libraries + dpdk_drivers
|
|
endif
|
|
|
|
if allow_experimental_apis
|
|
cflags += '-DALLOW_EXPERIMENTAL_API'
|
|
endif
|
|
|
|
executable('dpdk-' + name,
|
|
sources,
|
|
c_args: cflags,
|
|
link_whole: link_libs,
|
|
dependencies: dep_objs,
|
|
install_rpath: join_paths(get_option('prefix'),
|
|
driver_install_path),
|
|
install: true)
|
|
endif
|
|
endforeach
|
|
|
|
# special case the autotests
|
|
subdir('test')
|