X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fmeson.build;h=948c65968abffe5469a52afcdaae8d7488a3bedb;hb=993040daca337e78c14082d272b49b4c1c3ca451;hp=2d34e869d86ea308ae49a5700d797e3d1bc5ed0b;hpb=526ca5c6cca063c712942dc9d6bc33c3966a64a8;p=dpdk.git diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build index 2d34e869d8..948c65968a 100644 --- a/drivers/net/sfc/meson.build +++ b/drivers/net/sfc/meson.build @@ -1,16 +1,22 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Copyright (c) 2016-2018 Solarflare Communications Inc. -# All rights reserved. +# Copyright(c) 2019-2021 Xilinx, Inc. +# Copyright(c) 2016-2019 Solarflare Communications Inc. # # This software was jointly developed between OKTET Labs (under contract # for Solarflare) and Solarflare Communications, Inc. -if arch_subdir != 'x86' or cc.sizeof('void *') == 4 - build = false +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() endif -allow_experimental_apis = true +if (arch_subdir != 'x86' and arch_subdir != 'arm') or (not dpdk_conf.get('RTE_ARCH_64')) + build = false + reason = 'only supported on x86_64 and aarch64' + subdir_done() +endif extra_flags = [] @@ -19,43 +25,76 @@ extra_flags += '-Wno-strict-aliasing' # Enable more warnings extra_flags += [ - '-Wextra', - '-Wdisabled-optimization' + '-Wdisabled-optimization', ] # Compiler and version dependent flags extra_flags += [ - '-Waggregate-return', - '-Wnested-externs', - '-Wbad-function-cast' + '-Waggregate-return', + '-Wbad-function-cast', ] foreach flag: extra_flags - if cc.has_argument(flag) - cflags += flag - endif + if cc.has_argument(flag) + cflags += flag + endif endforeach -subdir('base') -objs = [base_objs] +# for gcc and old Clang compiles we need -latomic for 128-bit atomic ops +atomic_check_code = ''' +int main(void) +{ + __int128 a = 0; + __int128 b; + + b = __atomic_load_n(&a, __ATOMIC_RELAXED); + __atomic_store(&b, &a, __ATOMIC_RELAXED); + __atomic_store_n(&b, a, __ATOMIC_RELAXED); + return 0; +} +''' +if not cc.links(atomic_check_code) + libatomic_dep = cc.find_library('atomic', required: false) + if not libatomic_dep.found() + build = false + reason = 'missing dependency, "libatomic"' + subdir_done() + endif + # libatomic could be half-installed when above check finds it but + # linkage fails + if not cc.links(atomic_check_code, dependencies: libatomic_dep) + build = false + reason = 'broken dependency, "libatomic"' + subdir_done() + endif + ext_deps += libatomic_dep +endif + +deps += ['common_sfc_efx', 'bus_pci'] sources = files( - 'sfc_ethdev.c', - 'sfc_kvargs.c', - 'sfc.c', - 'sfc_mcdi.c', - 'sfc_intr.c', - 'sfc_ev.c', - 'sfc_port.c', - 'sfc_rx.c', - 'sfc_tx.c', - 'sfc_tso.c', - 'sfc_filter.c', - 'sfc_flow.c', - 'sfc_dp.c', - 'sfc_ef10_rx.c', - 'sfc_ef10_essb_rx.c', - 'sfc_ef10_tx.c' + 'sfc_ethdev.c', + 'sfc_kvargs.c', + 'sfc.c', + 'sfc_mcdi.c', + 'sfc_sriov.c', + 'sfc_sw_stats.c', + 'sfc_intr.c', + 'sfc_ev.c', + 'sfc_port.c', + 'sfc_rx.c', + 'sfc_tx.c', + 'sfc_tso.c', + 'sfc_filter.c', + 'sfc_switch.c', + 'sfc_mae.c', + 'sfc_mae_counter.c', + 'sfc_flow.c', + 'sfc_dp.c', + 'sfc_ef10_rx.c', + 'sfc_ef10_essb_rx.c', + 'sfc_ef10_tx.c', + 'sfc_ef100_rx.c', + 'sfc_ef100_tx.c', + 'sfc_service.c', ) - -includes += include_directories('base')