numam-dpdk/drivers/net/hns3/meson.build
Chengwen Feng 699fa1d40e net/hns3: fix Arm SVE build with GCC 8.3
If the target machine has SVE feature (e.g. '-march=armv8.2-a+sve'),
and compiler is gcc-8.3, it will fail, the error is arm_sve.h:
no such file or directory.

The solution:
a. If RTE_HAS_SVE_ACLE defined (it means the minimum instruction set
support SVE ACLE) then compiles it.
b. Else if the compiler support SVE ACLE then compiles it.
c. Otherwise don't compile it.

Fixes: 8c25b02b08 ("net/hns3: fix enabling SVE Rx/Tx")
Fixes: 952ebacce4 ("net/hns3: support SVE Rx")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Ruifeng Wang <ruifeng.wang@arm.com>
2021-07-09 22:25:31 +02:00

60 lines
1.8 KiB
Meson

# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018-2021 Hisilicon Limited
if not is_linux
build = false
reason = 'only supported on Linux'
subdir_done()
endif
if arch_subdir != 'x86' and arch_subdir != 'arm' or not dpdk_conf.get('RTE_ARCH_64')
build = false
reason = 'only supported on x86_64 and aarch64'
subdir_done()
endif
sources = files(
'hns3_cmd.c',
'hns3_dcb.c',
'hns3_intr.c',
'hns3_ethdev.c',
'hns3_ethdev_vf.c',
'hns3_fdir.c',
'hns3_flow.c',
'hns3_mbx.c',
'hns3_regs.c',
'hns3_rss.c',
'hns3_rxtx.c',
'hns3_stats.c',
'hns3_mp.c',
'hns3_tm.c',
'hns3_ptp.c',
)
deps += ['hash']
if arch_subdir == 'arm' and dpdk_conf.get('RTE_ARCH_64')
sources += files('hns3_rxtx_vec.c')
# compile SVE when:
# a. support SVE in minimum instruction set baseline
# b. it's not minimum instruction set, but compiler support
if dpdk_conf.has('RTE_HAS_SVE_ACLE')
sources += files('hns3_rxtx_vec_sve.c')
elif cc.has_argument('-march=armv8.2-a+sve') and cc.check_header('arm_sve.h')
cflags += ['-DRTE_HAS_SVE_ACLE=1']
sve_cflags = []
foreach flag: cflags
if not (flag.startswith('-march=') or flag.startswith('-mcpu=') or flag.startswith('-mtune='))
sve_cflags += flag
endif
endforeach
hns3_sve_lib = static_library('hns3_sve_lib',
'hns3_rxtx_vec_sve.c',
dependencies: [static_rte_ethdev],
include_directories: includes,
c_args: [sve_cflags, '-march=armv8.2-a+sve'])
objs += hns3_sve_lib.extract_objects('hns3_rxtx_vec_sve.c')
endif
endif