699fa1d40e
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>
60 lines
1.8 KiB
Meson
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
|