X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fi40e%2Fmeson.build;h=3c931afeea5fd522b342a994c14350ecc460656c;hb=e4beb311d22287321711a04a8dbaa98bf5a5bc7b;hp=dcbca39bf707fb8df30f9182f7d0f2754ce8abd0;hpb=02ad704708c878f4a4670b475e15734f8f1af162;p=dpdk.git diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build index dcbca39bf7..3c931afeea 100644 --- a/drivers/net/i40e/meson.build +++ b/drivers/net/i40e/meson.build @@ -1,52 +1,81 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -version = 2 - cflags += ['-DPF_DRIVER', - '-DVF_DRIVER', - '-DINTEGRATED_VF', - '-DX722_A0_SUPPORT', - '-DALLOW_EXPERIMENTAL_API'] + '-DVF_DRIVER', + '-DINTEGRATED_VF', + '-DX722_A0_SUPPORT'] subdir('base') objs = [base_objs] sources = files( - 'i40e_ethdev.c', - 'i40e_rxtx.c', - 'i40e_ethdev_vf.c', - 'i40e_pf.c', - 'i40e_fdir.c', - 'i40e_flow.c', - 'i40e_tm.c', - 'i40e_vf_representor.c', - 'rte_pmd_i40e.c' - ) + 'i40e_ethdev.c', + 'i40e_rxtx.c', + 'i40e_ethdev_vf.c', + 'i40e_pf.c', + 'i40e_fdir.c', + 'i40e_flow.c', + 'i40e_tm.c', + 'i40e_hash.c', + 'i40e_vf_representor.c', + 'rte_pmd_i40e.c', +) deps += ['hash'] includes += include_directories('base') if arch_subdir == 'x86' - dpdk_conf.set('RTE_LIBRTE_I40E_INC_VECTOR', 1) - sources += files('i40e_rxtx_vec_sse.c') - - # compile AVX2 version if either: - # a. we have AVX supported in minimum instruction set baseline - # b. it's not minimum instruction set, but supported by compiler - if dpdk_conf.has('RTE_MACHINE_CPUFLAG_AVX2') - cflags += ['-DCC_AVX2_SUPPORT'] - sources += files('i40e_rxtx_vec_avx2.c') - elif cc.has_argument('-mavx2') - cflags += ['-DCC_AVX2_SUPPORT'] - i40e_avx2_lib = static_library('i40e_avx2_lib', - 'i40e_rxtx_vec_avx2.c', - dependencies: [static_rte_ethdev, - static_rte_kvargs, static_rte_hash], - include_directories: includes, - c_args: [cflags, '-mavx2']) - objs += i40e_avx2_lib.extract_objects('i40e_rxtx_vec_avx2.c') - endif + sources += files('i40e_rxtx_vec_sse.c') + + if is_windows and cc.get_id() != 'clang' + cflags += ['-fno-asynchronous-unwind-tables'] + endif + + # compile AVX2 version if either: + # a. we have AVX supported in minimum instruction set baseline + # b. it's not minimum instruction set, but supported by compiler + if cc.get_define('__AVX2__', args: machine_args) != '' + cflags += ['-DCC_AVX2_SUPPORT'] + sources += files('i40e_rxtx_vec_avx2.c') + elif cc.has_argument('-mavx2') + cflags += ['-DCC_AVX2_SUPPORT'] + i40e_avx2_lib = static_library('i40e_avx2_lib', + 'i40e_rxtx_vec_avx2.c', + dependencies: [static_rte_ethdev, + static_rte_kvargs, static_rte_hash], + include_directories: includes, + c_args: [cflags, '-mavx2']) + objs += i40e_avx2_lib.extract_objects('i40e_rxtx_vec_avx2.c') + endif + + i40e_avx512_cpu_support = ( + cc.get_define('__AVX512F__', args: machine_args) != '' and + cc.get_define('__AVX512BW__', args: machine_args) != '') + + i40e_avx512_cc_support = ( + not machine_args.contains('-mno-avx512f') and + cc.has_argument('-mavx512f') and + cc.has_argument('-mavx512bw')) + + if i40e_avx512_cpu_support == true or i40e_avx512_cc_support == true + cflags += ['-DCC_AVX512_SUPPORT'] + avx512_args = [cflags, '-mavx512f', '-mavx512bw'] + if cc.has_argument('-march=skylake-avx512') + avx512_args += '-march=skylake-avx512' + endif + i40e_avx512_lib = static_library('i40e_avx512_lib', + 'i40e_rxtx_vec_avx512.c', + dependencies: [static_rte_ethdev, + static_rte_kvargs, static_rte_hash], + include_directories: includes, + c_args: avx512_args) + objs += i40e_avx512_lib.extract_objects('i40e_rxtx_vec_avx512.c') + endif +elif arch_subdir == 'ppc' + sources += files('i40e_rxtx_vec_altivec.c') +elif arch_subdir == 'arm' + sources += files('i40e_rxtx_vec_neon.c') endif -install_headers('rte_pmd_i40e.h') +headers = files('rte_pmd_i40e.h')