X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fmeson.build;h=33087330f986b9e282d88ead9da0491b45893e46;hb=af397b3c93f82b0803c0890874d7ee3b5127522d;hp=1c6451938ae8f4e307d099d13539aeb1ad75149e;hpb=dd45b8805b6607c2c167df508c231b21199ffffb;p=dpdk.git diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build index 1c6451938a..33087330f9 100644 --- a/drivers/net/sfc/meson.build +++ b/drivers/net/sfc/meson.build @@ -1,14 +1,21 @@ # SPDX-License-Identifier: BSD-3-Clause # -# Copyright(c) 2019-2020 Xilinx, Inc. +# 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 not dpdk_conf.get('RTE_ARCH_64') - build = false - reason = 'only supported on x86_64' +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + +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 = [] @@ -18,38 +25,79 @@ extra_flags += '-Wno-strict-aliasing' # Enable more warnings extra_flags += [ - '-Wdisabled-optimization' + '-Wdisabled-optimization', ] # Compiler and version dependent flags extra_flags += [ - '-Waggregate-return', - '-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 -deps += ['common_sfc_efx'] +# 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_sriov.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_flow_tunnel.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', + 'sfc_repr_proxy.c', + 'sfc_repr.c', )