xref: /f-stack/dpdk/lib/librte_net/meson.build (revision 2d9fd380)
1# SPDX-License-Identifier: BSD-3-Clause
2# Copyright(c) 2017-2020 Intel Corporation
3
4headers = files('rte_ip.h',
5	'rte_tcp.h',
6	'rte_udp.h',
7	'rte_esp.h',
8	'rte_sctp.h',
9	'rte_icmp.h',
10	'rte_arp.h',
11	'rte_ether.h',
12	'rte_vxlan.h',
13	'rte_gre.h',
14	'rte_gtp.h',
15	'rte_net.h',
16	'rte_net_crc.h',
17	'rte_mpls.h',
18	'rte_higig.h',
19	'rte_ecpri.h',
20	'rte_geneve.h')
21
22sources = files('rte_arp.c', 'rte_ether.c', 'rte_net.c', 'rte_net_crc.c')
23deps += ['mbuf']
24
25if dpdk_conf.has('RTE_ARCH_X86_64')
26	net_crc_sse42_cpu_support = (
27		cc.get_define('__PCLMUL__', args: machine_args) != '')
28	net_crc_avx512_cpu_support = (
29		cc.get_define('__AVX512F__', args: machine_args) != '' and
30		cc.get_define('__AVX512BW__', args: machine_args) != '' and
31		cc.get_define('__AVX512DQ__', args: machine_args) != '' and
32		cc.get_define('__AVX512VL__', args: machine_args) != '' and
33		cc.get_define('__VPCLMULQDQ__', args: machine_args) != '')
34
35	net_crc_sse42_cc_support = (
36		cc.has_argument('-mpclmul') and cc.has_argument('-maes'))
37	net_crc_avx512_cc_support = (
38		not machine_args.contains('-mno-avx512f') and
39		cc.has_argument('-mavx512f') and
40		cc.has_argument('-mavx512bw') and
41		cc.has_argument('-mavx512dq') and
42		cc.has_argument('-mavx512vl') and
43		cc.has_argument('-mvpclmulqdq') and
44		cc.has_argument('-mavx2') and
45		cc.has_argument('-mavx'))
46
47	build_static_net_crc_sse42_lib = 0
48	build_static_net_crc_avx512_lib = 0
49
50	if net_crc_sse42_cpu_support == true
51		sources += files('net_crc_sse.c')
52		cflags += ['-DCC_X86_64_SSE42_PCLMULQDQ_SUPPORT']
53		if net_crc_avx512_cpu_support == true
54			sources += files('net_crc_avx512.c')
55			cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT']
56		elif net_crc_avx512_cc_support == true
57			build_static_net_crc_avx512_lib = 1
58			net_crc_avx512_lib_cflags = ['-mavx512f',
59							'-mavx512bw',
60							'-mavx512dq',
61							'-mavx512vl',
62							'-mvpclmulqdq',
63							'-mavx2',
64							'-mavx']
65			cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT']
66		endif
67	elif net_crc_sse42_cc_support == true
68		build_static_net_crc_sse42_lib = 1
69		net_crc_sse42_lib_cflags = ['-mpclmul', '-maes']
70		cflags += ['-DCC_X86_64_SSE42_PCLMULQDQ_SUPPORT']
71		if net_crc_avx512_cc_support == true
72			build_static_net_crc_avx512_lib = 1
73			net_crc_avx512_lib_cflags = ['-mpclmul',
74							'-maes',
75							'-mavx512f',
76							'-mavx512bw',
77							'-mavx512dq',
78							'-mavx512vl',
79							'-mvpclmulqdq',
80							'-mavx2',
81							'-mavx']
82			cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT']
83		endif
84	endif
85
86	if build_static_net_crc_sse42_lib == 1
87		net_crc_sse42_lib = static_library(
88					'net_crc_sse42_lib',
89					'net_crc_sse.c',
90					dependencies: static_rte_eal,
91					c_args: [cflags,
92						net_crc_sse42_lib_cflags])
93		objs += net_crc_sse42_lib.extract_objects('net_crc_sse.c')
94	endif
95
96	if build_static_net_crc_avx512_lib == 1
97		net_crc_avx512_lib = static_library(
98					'net_crc_avx512_lib',
99					'net_crc_avx512.c',
100					dependencies: static_rte_eal,
101					c_args: [cflags,
102						net_crc_avx512_lib_cflags])
103		objs += net_crc_avx512_lib.extract_objects('net_crc_avx512.c')
104	endif
105
106elif (dpdk_conf.has('RTE_ARCH_ARM64') and
107		cc.get_define('__ARM_FEATURE_CRYPTO', args: machine_args) != '')
108	sources += files('net_crc_neon.c')
109	cflags += ['-DCC_ARM64_NEON_PMULL_SUPPORT']
110endif
111