ffadd933ac
The meson build never checked for the presence of rdrand and rdseed instructions, while make build never checked for rdseed. Ensure builds always have the appropriate checks - and therefore defines - for these instructions. For runtime, we also add in rdseed to the list of known bits returned from cpuid() instruction, so we can confirm its presence at application init time. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Tested-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
57 lines
1.7 KiB
Meson
57 lines
1.7 KiB
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2017-2019 Intel Corporation
|
|
|
|
# get binutils version for the workaround of Bug 97
|
|
if not is_windows
|
|
ldver = run_command('ld', '-v').stdout().strip()
|
|
if ldver.contains('2.30') and cc.has_argument('-mno-avx512f')
|
|
machine_args += '-mno-avx512f'
|
|
message('Binutils 2.30 detected, disabling AVX512 support as workaround for bug #97')
|
|
endif
|
|
if ldver.contains('2.31') and cc.has_argument('-mno-avx512f')
|
|
machine_args += '-mno-avx512f'
|
|
message('Binutils 2.31 detected, disabling AVX512 support as workaround for bug #249')
|
|
endif
|
|
endif
|
|
|
|
# we require SSE4.2 for DPDK
|
|
sse_errormsg = '''SSE4.2 instruction set is required for DPDK.
|
|
Please set the machine type to "nehalem" or "corei7" or higher value'''
|
|
|
|
if cc.get_define('__SSE4_2__', args: machine_args) == ''
|
|
error(sse_errormsg)
|
|
endif
|
|
|
|
base_flags = ['SSE', 'SSE2', 'SSE3','SSSE3', 'SSE4_1', 'SSE4_2']
|
|
foreach f:base_flags
|
|
dpdk_conf.set('RTE_MACHINE_CPUFLAG_' + f, 1)
|
|
compile_time_cpuflags += ['RTE_CPUFLAG_' + f]
|
|
endforeach
|
|
|
|
optional_flags = ['AES', 'PCLMUL',
|
|
'AVX', 'AVX2', 'AVX512F',
|
|
'RDRND', 'RDSEED']
|
|
foreach f:optional_flags
|
|
if cc.get_define('__@0@__'.format(f), args: machine_args) == '1'
|
|
if f == 'PCLMUL' # special case flags with different defines
|
|
f = 'PCLMULQDQ'
|
|
elif f == 'RDRND'
|
|
f = 'RDRAND'
|
|
endif
|
|
dpdk_conf.set('RTE_MACHINE_CPUFLAG_' + f, 1)
|
|
compile_time_cpuflags += ['RTE_CPUFLAG_' + f]
|
|
endif
|
|
endforeach
|
|
|
|
|
|
dpdk_conf.set('RTE_ARCH_X86', 1)
|
|
if dpdk_conf.get('RTE_ARCH_64')
|
|
dpdk_conf.set('RTE_ARCH_X86_64', 1)
|
|
dpdk_conf.set('RTE_ARCH', 'x86_64')
|
|
else
|
|
dpdk_conf.set('RTE_ARCH_I686', 1)
|
|
dpdk_conf.set('RTE_ARCH', 'i686')
|
|
endif
|
|
|
|
dpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)
|