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