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