build: enable BSD features visibility for FreeBSD
authorMarcin Smoczynski <marcinx.smoczynski@intel.com>
Tue, 14 May 2019 14:04:16 +0000 (16:04 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 26 Jun 2019 14:50:33 +0000 (16:50 +0200)
commit28188cee2aa0b72d401d3e56942d0db9c7b9e654
tree468edb60fdde6137df522a966cafb8791b9f3329
parentfabeca044ffc0233d7f072233001c19b300a0f81
build: enable BSD features visibility for FreeBSD

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>
app/meson.build
config/meson.build
drivers/meson.build
examples/meson.build
lib/meson.build
meson.build
mk/target/generic/rte.vars.mk