99a2dd955f
There is no reason for the DPDK libraries to all have 'librte_' prefix on the directory names. This prefix makes the directory names longer and also makes it awkward to add features referring to individual libraries in the build - should the lib names be specified with or without the prefix. Therefore, we can just remove the library prefix and use the library's unique name as the directory name, i.e. 'eal' rather than 'librte_eal' Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
59 lines
2.4 KiB
Meson
59 lines
2.4 KiB
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2018 Vladimir Medvedkin <medvedkinv@gmail.com>
|
|
# Copyright(c) 2019 Intel Corporation
|
|
|
|
sources = files('rte_fib.c', 'rte_fib6.c', 'dir24_8.c', 'trie.c')
|
|
headers = files('rte_fib.h', 'rte_fib6.h')
|
|
deps += ['rib']
|
|
|
|
# compile AVX512 version if:
|
|
# we are building 64-bit binary AND binutils can generate proper code
|
|
if dpdk_conf.has('RTE_ARCH_X86_64') and binutils_ok.returncode() == 0
|
|
# compile AVX512 version if either:
|
|
# a. we have AVX512F supported in minimum instruction set baseline
|
|
# b. it's not minimum instruction set, but supported by compiler
|
|
#
|
|
# in former case, just add avx512 C file to files list
|
|
# in latter case, compile c file to static lib, using correct
|
|
# compiler flags, and then have the .o file from static lib
|
|
# linked into main lib.
|
|
|
|
# check if all required flags already enabled (variant a).
|
|
acl_avx512_flags = ['__AVX512F__','__AVX512DQ__']
|
|
acl_avx512_on = true
|
|
foreach f:acl_avx512_flags
|
|
if cc.get_define(f, args: machine_args) == ''
|
|
acl_avx512_on = false
|
|
endif
|
|
endforeach
|
|
|
|
if acl_avx512_on == true
|
|
cflags += ['-DCC_DIR24_8_AVX512_SUPPORT']
|
|
sources += files('dir24_8_avx512.c')
|
|
# TRIE AVX512 implementation uses avx512bw intrinsics along with
|
|
# avx512f and avx512dq
|
|
if cc.get_define('__AVX512BW__', args: machine_args) != ''
|
|
cflags += ['-DCC_TRIE_AVX512_SUPPORT']
|
|
sources += files('trie_avx512.c')
|
|
endif
|
|
elif cc.has_multi_arguments('-mavx512f', '-mavx512dq')
|
|
dir24_8_avx512_tmp = static_library('dir24_8_avx512_tmp',
|
|
'dir24_8_avx512.c',
|
|
dependencies: static_rte_eal,
|
|
c_args: cflags + ['-mavx512f', '-mavx512dq'])
|
|
objs += dir24_8_avx512_tmp.extract_objects('dir24_8_avx512.c')
|
|
cflags += ['-DCC_DIR24_8_AVX512_SUPPORT']
|
|
# TRIE AVX512 implementation uses avx512bw intrinsics along with
|
|
# avx512f and avx512dq
|
|
if cc.has_argument('-mavx512bw')
|
|
trie_avx512_tmp = static_library('trie_avx512_tmp',
|
|
'trie_avx512.c',
|
|
dependencies: static_rte_eal,
|
|
c_args: cflags + ['-mavx512f', \
|
|
'-mavx512dq', '-mavx512bw'])
|
|
objs += trie_avx512_tmp.extract_objects('trie_avx512.c')
|
|
cflags += ['-DCC_TRIE_AVX512_SUPPORT']
|
|
endif
|
|
endif
|
|
endif
|