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