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