[dpdk-dev] meson build fail for i40e

Bruce Richardson bruce.richardson at intel.com
Thu May 3 17:49:16 CEST 2018


On Thu, May 03, 2018 at 06:59:48PM +0530, Shreyansh Jain wrote:
> Bruce, Beilei,
> 
> Can you help me here?
> 
> Build targets in project: 263
> Found ninja-1.8.2 at /usr/bin/ninja
> [585/940] Compiling C object
> 'drivers/net/i40e/i40e_avx2_lib at sta/i40e_rxtx_vec_avx2.c.o'.
> FAILED: drivers/net/i40e/i40e_avx2_lib at sta/i40e_rxtx_vec_avx2.c.o
> ccache cc  -Idrivers/net/i40e/i40e_avx2_lib at sta -Idrivers/net/i40e
> -I../drivers/net/i40e -Ilib/librte_ethdev -I../lib/librte_ethdev -Iconfig
> -I../config -I. -I../ -Ilib/librte_eal/common/include/arch/x86
> -I../lib/librte_eal/common/include/arch/x86 -Ilib/librte_eal/common/include
> -I../lib/librte_eal/common/include -Ilib/librte_eal/common
> -I../lib/librte_eal/common
> -Ilib/librte_eal/linuxapp/eal/../../../librte_compat
> -I../lib/librte_eal/linuxapp/eal/../../../librte_compat
> -I../lib/librte_eal/linuxapp/eal/include -Ilib/librte_eal
> -I../lib/librte_eal -Ilib/librte_compat -I../lib/librte_compat
> -Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf
> -Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring
> -I../lib/librte_ring -Ilib/librte_kvargs -I../lib/librte_kvargs
> -Ilib/librte_hash -I../lib/librte_hash -fdiagnostics-color=always -pipe
> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -include rte_config.h
> -Wsign-compare -Wcast-qual -Wno-address-of-packed-member
> -Wno-format-truncation -fPIC -mavx2 -MMD -MQ
> 'drivers/net/i40e/i40e_avx2_lib at sta/i40e_rxtx_vec_avx2.c.o' -MF
> 'drivers/net/i40e/i40e_avx2_lib at sta/i40e_rxtx_vec_avx2.c.o.d' -o
> 'drivers/net/i40e/i40e_avx2_lib at sta/i40e_rxtx_vec_avx2.c.o' -c
> ../drivers/net/i40e/i40e_rxtx_vec_avx2.c
> In file included from ../drivers/net/i40e/i40e_rxtx_vec_avx2.c:40:0:
> ../drivers/net/i40e/i40e_ethdev.h:888:42: error: ‘I40E_PFQF_HKEY_MAX_INDEX’
> undeclared here (not in a function); did you mean
> ‘I40E_VFQF_HKEY_MAX_INDEX’?
>   uint8_t key[(I40E_VFQF_HKEY_MAX_INDEX > I40E_PFQF_HKEY_MAX_INDEX ?
>                                           ^~~~~~~~~~~~~~~~~~~~~~~~
>                                           I40E_VFQF_HKEY_MAX_INDEX
> cc1: warning: unrecognized command line option
> ‘-Wno-address-of-packed-member’
> [590/940] Compiling C object
> 'drivers/net/sfc/base/sfc_base at sta/efx_filter.c.o'.
> ninja: build stopped: subcommand failed.
> 
> --
> 
> This is the ninja configuration:
> 
> --->8---
> The Meson build system
> Version: 0.44.0
> Source dir: /home/shreyansh/build/DPDK/03_dpdk
> Build dir: /home/shreyansh/build/DPDK/03_dpdk/generic_build
> Build type: native build
> Project name: DPDK
> Native C compiler: ccache cc (gcc 7.3.0)
> Build machine cpu family: x86_64
> Build machine cpu: x86_64
> Library numa found: YES
> Has header "numaif.h": YES
> Library bsd found: NO
> --->8---
> 
> And I am pretty sure it was appearing on gcc 7.2 as well.

Yes, the error is due to missing cflags when compiling the avx2 code on a
non-AVX2 platform. The branch for doing an independent AVX2 static library
is missing proper cflags and include directory references. The below patch
should fix things. If you can confirm it fixes the issue, I'll upstream it
as a proper patch.

Thanks for reporting,
/Bruce

diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build
index f2129df07..d783f3626 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -25,6 +25,7 @@ sources = files(
        )

 deps += ['hash']
+includes += include_directories('base')

 if arch_subdir == 'x86'
        dpdk_conf.set('RTE_LIBRTE_I40E_INC_VECTOR', 1)
@@ -40,11 +41,10 @@ if arch_subdir == 'x86'
                                'i40e_rxtx_vec_avx2.c',
                                dependencies: [static_rte_ethdev,
                                        static_rte_kvargs, static_rte_hash],
-                               c_args: '-mavx2')
+                               include_directories: includes,
+                               c_args: [cflags, '-mavx2'])
                objs += i40e_avx2_lib.extract_objects('i40e_rxtx_vec_avx2.c')
        endif
 endif

-includes += include_directories('base')
-
 install_headers('rte_pmd_i40e.h')



More information about the dev mailing list