doc: add Meson coding style to contributors guide
[dpdk.git] / lib / librte_net / meson.build
1 # SPDX-License-Identifier: BSD-3-Clause
2 # Copyright(c) 2017-2020 Intel Corporation
3
4 headers = 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
24 sources = files(
25         'rte_arp.c',
26         'rte_ether.c',
27         'rte_net.c',
28         'rte_net_crc.c',
29 )
30 deps += ['mbuf']
31
32 if 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
117 elif (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']
121 endif