On Tue, Mar 11, 2025 at 07:13:56PM -0700, Andre Muezerie wrote:
> When compiling "drivers" directory with MSVC the errors below popped up:
> 
> 1)
> LINK : warning LNK4044: unrecognized option
> '/Wl,/def:V:\github\dpdk\build\drivers\rte_bus_vdev_exports.def'; ignored
> 
> 2)
> cl : Command line warning D9002 : ignoring unknown
>     option '-fno-asynchronous-unwind-tables'
> 
> The fix is to remove the unnecessary/invalid option when using MSVC.
> 
> Signed-off-by: Andre Muezerie <andre...@linux.microsoft.com>
> ---
>  drivers/meson.build                 | 6 +++++-
>  drivers/net/intel/i40e/meson.build  | 2 +-
>  drivers/net/intel/iavf/meson.build  | 2 +-
>  drivers/net/intel/ice/meson.build   | 2 +-
>  drivers/net/intel/ixgbe/meson.build | 2 +-
>  5 files changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/meson.build b/drivers/meson.build
> index 05391a575d..fc7f7eed8c 100644
> --- a/drivers/meson.build
> +++ b/drivers/meson.build
> @@ -289,7 +289,11 @@ foreach subpath:subdirs
>                          output: '@0@_exports.def'.format(lib_name))
>                  lk_deps += [def_file]
>  
> -                lk_args = ['-Wl,/def:' + def_file.full_path()]
> +                if is_ms_compiler
> +                    lk_args = ['/def:' + def_file.full_path()]
> +                else
> +                    lk_args = ['-Wl,/def:' + def_file.full_path()]
> +                endif
>              else
>                  mingw_map = custom_target(lib_name + '_mingw',
>                          command: [map_to_win_cmd, '@INPUT@', '@OUTPUT@'],
> diff --git a/drivers/net/intel/i40e/meson.build 
> b/drivers/net/intel/i40e/meson.build
> index 2973ed1a01..fce5d997ed 100644
> --- a/drivers/net/intel/i40e/meson.build
> +++ b/drivers/net/intel/i40e/meson.build
> @@ -41,7 +41,7 @@ includes += include_directories('base')
>  if arch_subdir == 'x86'
>      sources += files('i40e_rxtx_vec_sse.c')
>  
> -    if is_windows and cc.get_id() != 'clang'
> +    if is_windows and cc.get_id() == 'gcc'
>          cflags += ['-fno-asynchronous-unwind-tables']
>      endif
>  
> diff --git a/drivers/net/intel/iavf/meson.build 
> b/drivers/net/intel/iavf/meson.build
> index f7eac7c57a..d801527ada 100644
> --- a/drivers/net/intel/iavf/meson.build
> +++ b/drivers/net/intel/iavf/meson.build
> @@ -29,7 +29,7 @@ includes += include_directories('base')
>  if arch_subdir == 'x86'
>      sources += files('iavf_rxtx_vec_sse.c')
>  
> -    if is_windows and cc.get_id() != 'clang'
> +    if is_windows and cc.get_id() == 'gcc'
>          cflags += ['-fno-asynchronous-unwind-tables']
>      endif
>  
> diff --git a/drivers/net/intel/ice/meson.build 
> b/drivers/net/intel/ice/meson.build
> index cbdf38c1c4..a28d62173c 100644
> --- a/drivers/net/intel/ice/meson.build
> +++ b/drivers/net/intel/ice/meson.build
> @@ -35,7 +35,7 @@ endif
>  if arch_subdir == 'x86'
>      sources += files('ice_rxtx_vec_sse.c')
>  
> -    if is_windows and cc.get_id() != 'clang'
> +    if is_windows and cc.get_id() == 'gcc'
>          cflags += ['-fno-asynchronous-unwind-tables']
>      endif
>  
> diff --git a/drivers/net/intel/ixgbe/meson.build 
> b/drivers/net/intel/ixgbe/meson.build
> index 0ae12dd5ff..3553b0ffe1 100644
> --- a/drivers/net/intel/ixgbe/meson.build
> +++ b/drivers/net/intel/ixgbe/meson.build
> @@ -27,7 +27,7 @@ deps += ['hash', 'security']
>  if arch_subdir == 'x86'
>      sources += files('ixgbe_rxtx_vec_sse.c')
>      sources += files('ixgbe_recycle_mbufs_vec_common.c')
> -    if is_windows and cc.get_id() != 'clang'
> +    if is_windows and cc.get_id() == 'gcc'
>          cflags += ['-fno-asynchronous-unwind-tables']
>      endif
>  elif arch_subdir == 'arm'

Out of interest I've just tried compiling up DPDK builds without these
unwind-tables flag, and they all pass, including the mingw build. This is
using:

$ x86_64-w64-mingw32-gcc --version
x86_64-w64-mingw32-gcc (GCC) 13-win32
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Therefore, I wonder if we can just remove all these flags completely for
mingw now? They may only be needed for historical versions.

/Bruce

Reply via email to