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