[dpdk-dev] [PATCH] build: enable BSD features visibility for FreeBSD

Smoczynski, MarcinX marcinx.smoczynski at intel.com
Tue May 14 15:15:04 CEST 2019



> -----Original Message-----
> From: Richardson, Bruce
> Sent: Tuesday, May 14, 2019 2:20 PM
> To: Smoczynski, MarcinX <marcinx.smoczynski at intel.com>
> Cc: thomas at monjalon.net; dev at dpdk.org; Ananyev, Konstantin
> <konstantin.ananyev at intel.com>; adrien.mazarguil at 6wind.com
> Subject: Re: [PATCH] build: enable BSD features visibility for FreeBSD
> 
> On Tue, May 14, 2019 at 01:43:54PM +0200, Marcin Smoczynski wrote:
> > 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.
> >
> > 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 at intel.com>
> > ---
> >  app/meson.build               | 5 +++++
> >  drivers/meson.build           | 5 +++++
> >  examples/meson.build          | 5 +++++
> >  lib/meson.build               | 5 +++++
> >  mk/target/generic/rte.vars.mk | 5 +++++
> >  5 files changed, 25 insertions(+)
> >
> Rather than adding this in 4 places to the meson build, would it break
> anything to just add it using add_project_arguments() in
> config/meson.build?

Sounds good to me. I was following the way -D_GNU_SOURCE was added.
Should I move -D_GNU_SOURCE to config/meson.build too? It looks like
it is the same situation as it is with __BSD_VISIBLE.

> 
> Also, does this flag need to be used by external apps when compiling against
> DPDK headers? If so, we need to add this to the pkg-config file for DPDK on
> BSD.

Lack of this flag may break external applications builds for FreeBSD depending
of other feature flags they use. I'll add it then to the pc file.

Marcin


More information about the dev mailing list