[Mesa-dev] [PATCH 6/7] meson: use array type options

Eric Anholt eric at anholt.net
Tue Apr 17 18:37:37 UTC 2018


Dylan Baker <dylan at pnwbakers.com> writes:

> This option type is nice since it involves less converting strings into
> lists, and because it validates the values that are provided.
>
> Signed-off-by: Dylan Baker <dylan.c.baker at intel.com>
> ---
>  meson.build       | 113 +++++++++++++++++++++++-----------------------
>  meson_options.txt |  48 ++++++++++++--------
>  2 files changed, 87 insertions(+), 74 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index beb65b314ac..b0e2bc1f625 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -51,8 +51,8 @@ with_valgrind = get_option('valgrind')
>  with_libunwind = get_option('libunwind')
>  with_asm = get_option('asm')
>  with_osmesa = get_option('osmesa')
> -with_swr_arches = get_option('swr-arches').split(',')
> -with_tools = get_option('tools').split(',')
> +with_swr_arches = get_option('swr-arches')
> +with_tools = get_option('tools')
>  if with_tools.contains('all')
>    with_tools = ['freedreno', 'glsl', 'intel', 'nir', 'nouveau']
>  endif
> @@ -101,31 +101,30 @@ with_dri_r200 = false
>  with_dri_nouveau = false
>  with_dri_swrast = false
>  _drivers = get_option('dri-drivers')
> -if _drivers == 'auto'
> +if _drivers.contains('auto')
>    if system_has_kms_drm
>      # TODO: PPC, Sparc
>      if ['x86', 'x86_64'].contains(host_machine.cpu_family())
> -      _drivers = 'i915,i965,r100,r200,nouveau'
> +      _drivers = ['i915', 'i965', 'r100', 'r200', 'nouveau']
>      elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
> -      _drivers = ''
> +      _drivers = ['']
>      else
>        error('Unknown architecture. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.')
>      endif
>    elif ['darwin', 'windows', 'cygwin', 'haiku'].contains(host_machine.system())
>      # only swrast would make sense here, but gallium swrast is a much better default
> -    _drivers = ''
> +    _drivers = ['']
>    else
>      error('Unknown OS. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.')
>    endif
>  endif
> -if _drivers != ''
> -  _split = _drivers.split(',')
> -  with_dri_i915 = _split.contains('i915')
> -  with_dri_i965 = _split.contains('i965')
> -  with_dri_r100 = _split.contains('r100')
> -  with_dri_r200 = _split.contains('r200')
> -  with_dri_nouveau = _split.contains('nouveau')
> -  with_dri_swrast = _split.contains('swrast')
> +if _drivers != ['']
> +  with_dri_i915 = _drivers.contains('i915')
> +  with_dri_i965 = _drivers.contains('i965')
> +  with_dri_r100 = _drivers.contains('r100')
> +  with_dri_r200 = _drivers.contains('r200')
> +  with_dri_nouveau = _drivers.contains('nouveau')
> +  with_dri_swrast = _drivers.contains('swrast')
>    with_dri = true
>  endif
>  
> @@ -147,40 +146,44 @@ with_gallium_svga = false
>  with_gallium_virgl = false
>  with_gallium_swr = false
>  _drivers = get_option('gallium-drivers')
> -if _drivers == 'auto'
> +if _drivers.contains('auto')
>    if system_has_kms_drm
>      # TODO: PPC, Sparc
>      if ['x86', 'x86_64'].contains(host_machine.cpu_family())
> -      _drivers = 'r300,r600,radeonsi,nouveau,virgl,svga,swrast'
> +      _drivers = [
> +        'r300', 'r600', 'radeonsi', 'nouveau', 'virgl', 'svga', 'swrast'
> +      ]
>      elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
> -      _drivers = 'pl111,vc4,vc5,freedreno,etnaviv,imx,nouveau,tegra,virgl,swrast'
> +      _drivers = [
> +        'pl111', 'vc4', 'vc5', 'freedreno', 'etnaviv', 'imx', 'nouveau',
> +        'tegra', 'virgl', 'swrast',
> +      ]
>      else
>        error('Unknown architecture. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.')
>      endif
>    elif ['darwin', 'windows', 'cygwin', 'haiku'].contains(host_machine.system())
> -    _drivers = 'swrast'
> +    _drivers = ['swrast']
>    else
>      error('Unknown OS. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.')
>    endif
>  endif
> -if _drivers != ''
> -  _split = _drivers.split(',')
> -  with_gallium_pl111 = _split.contains('pl111')
> -  with_gallium_radeonsi = _split.contains('radeonsi')
> -  with_gallium_r300 = _split.contains('r300')
> -  with_gallium_r600 = _split.contains('r600')
> -  with_gallium_nouveau = _split.contains('nouveau')
> -  with_gallium_freedreno = _split.contains('freedreno')
> -  with_gallium_softpipe = _split.contains('swrast')
> -  with_gallium_vc4 = _split.contains('vc4')
> -  with_gallium_vc5 = _split.contains('vc5')
> -  with_gallium_etnaviv = _split.contains('etnaviv')
> -  with_gallium_imx = _split.contains('imx')
> -  with_gallium_tegra = _split.contains('tegra')
> -  with_gallium_i915 = _split.contains('i915')
> -  with_gallium_svga = _split.contains('svga')
> -  with_gallium_virgl = _split.contains('virgl')
> -  with_gallium_swr = _split.contains('swr')
> +if _drivers != ['']
> +  with_gallium_pl111 = _drivers.contains('pl111')
> +  with_gallium_radeonsi = _drivers.contains('radeonsi')
> +  with_gallium_r300 = _drivers.contains('r300')
> +  with_gallium_r600 = _drivers.contains('r600')
> +  with_gallium_nouveau = _drivers.contains('nouveau')
> +  with_gallium_freedreno = _drivers.contains('freedreno')
> +  with_gallium_softpipe = _drivers.contains('swrast')
> +  with_gallium_vc4 = _drivers.contains('vc4')
> +  with_gallium_vc5 = _drivers.contains('vc5')
> +  with_gallium_etnaviv = _drivers.contains('etnaviv')
> +  with_gallium_imx = _drivers.contains('imx')
> +  with_gallium_tegra = _drivers.contains('tegra')
> +  with_gallium_i915 = _drivers.contains('i915')
> +  with_gallium_svga = _drivers.contains('svga')
> +  with_gallium_virgl = _drivers.contains('virgl')
> +  with_gallium_swr = _drivers.contains('swr')
>    with_gallium = true
>    if system_has_kms_drm
>      _glx = get_option('glx')
> @@ -195,24 +198,23 @@ with_intel_vk = false
>  with_amd_vk = false
>  with_any_vk = false
>  _vulkan_drivers = get_option('vulkan-drivers')
> -if _vulkan_drivers == 'auto'
> +if _vulkan_drivers.contains('auto')
>    if system_has_kms_drm
>      if host_machine.cpu_family().startswith('x86')
> -      _vulkan_drivers = 'amd,intel'
> +      _vulkan_drivers = ['amd', 'intel']
>      else
>        error('Unknown architecture. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.')
>      endif
>    elif ['darwin', 'windows', 'cygwin', 'haiku'].contains(host_machine.system())
>      # No vulkan driver supports windows or macOS currently
> -    _vulkan_drivers = ''
> +    _vulkan_drivers = ['']
>    else
>      error('Unknown OS. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.')
>    endif
>  endif
> -if _vulkan_drivers != ''
> -  _split = _vulkan_drivers.split(',')
> -  with_intel_vk = _split.contains('intel')
> -  with_amd_vk = _split.contains('amd')
> +if _vulkan_drivers != ['']
> +  with_intel_vk = _drivers.contains('intel')
> +  with_amd_vk = _drivers.contains('amd')
>    with_any_vk = with_amd_vk or with_intel_vk

Now that _vulkan_drivers can only contain intel or amd, maybe just set
with_any_vk=true here?

Other than that, all but patch 5 get my r-b.  I minimize my knowledge of
both C++ and LLVM, so I don't think I can review that one, but maybe if
nobody else bothers to look at it for a while then just throw my a-b on
it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180417/53a194af/attachment.sig>


More information about the mesa-dev mailing list