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