> -----Original Message----- > From: Ferruh Yigit <ferruh.yi...@intel.com> > Sent: Wednesday, June 3, 2020 1:41 PM > To: Thomas Monjalon <tho...@monjalon.net>; Juraj Linkeš > <juraj.lin...@pantheon.tech> > Cc: arybche...@solarflare.com; dev@dpdk.org > Subject: Re: [PATCH] ethdev: fix dpdk gcc build on Arm > > On 6/3/2020 11:16 AM, Thomas Monjalon wrote: > > 03/06/2020 11:48, Juraj Linkeš: > >> Directive #include <file> in gcc implementation searches for files in > >> a standard list of system directories, which leads to a sporadici > >> build error on Taishan arm machines: > >> /tmp/openvpp-testing/dpdk/lib/librte_ethdev/rte_ethdev.h:4287:10: > >> fatal error: rte_ethdev_core.h: > >> No such file or directory #include <rte_ethdev_core.h> > > > > Would be interesting to know why nobody else hit such error? > > > I can't see why this is happening, in the 'mk/rte.lib.mk' we have following: > > " > install: _preinstall build _postinstall > build: _preinstall > " > > Which should cause the library header files installed before building .c > files in > that library. > So when compiling 'rte_class_eth.c', the header files should be already in > install > folder. > > > I can see how/why changing to "" fixes the issue but I am not sure about this > fix. > "rte_ethdev.h" is a public header file, that applications will include it in > their > applications. In the public library it is more proper to have other includes > from > system folder, using format <>. > Again, I can't see why it is failing but I believe we should find another > solution > for _internal_ build error. > > > A very simple solution can be following, but that is also not good, since it > solves > the issue by creating a dependency to the order of the header includes: > diff --git a/lib/librte_ethdev/rte_class_eth.c > b/lib/librte_ethdev/rte_class_eth.c > index 6338355e25..3030c49020 100644 > --- a/lib/librte_ethdev/rte_class_eth.c > +++ b/lib/librte_ethdev/rte_class_eth.c > @@ -10,8 +10,8 @@ > #include <rte_kvargs.h> > #include <rte_log.h> > > -#include "rte_ethdev.h" > #include "rte_ethdev_core.h" > +#include "rte_ethdev.h" > #include "rte_ethdev_driver.h" > #include "ethdev_private.h" >
Thomas, Ferruh, what should be the solution? I'm not an expert on this and I can't really offer anything better, but I'd like that this gets fixed. > > > > > >> Fix this by replacing the directive with #include "file" which > >> searches for files first in the directory containing the current file > >> and other directories only after that. > >> > >> Signed-off-by: Juraj Linkeš <juraj.lin...@pantheon.tech> > > > > What about #include <rte_ethdev_trace.h> ? > > > > Except this, > > Acked-by: Thomas Monjalon <tho...@monjalon.net> > > > > > > I would change the title to be more generic (nothing specific to gcc or Arm > here): > > ethdev: fix local include > > > > It needs to be backported, so these lines are required: > > Fixes: 7f0a669e7b04 ("ethdev: add allocation helper for virtual > > drivers") > > Fixes: dcd5c8112bc3 ("ethdev: add PCI driver helpers") > > Fixes: ffc905f3b856 ("ethdev: separate driver APIs") > > Fixes: 331c447ad913 ("ethdev: separate internal structures into own > header") > > Cc: sta...@dpdk.org > > > > > >