[Mesa-dev] [PATCH 09/20] meson: split and simplify depdendncies

Dylan Baker dylan at pnwbakers.com
Wed Oct 11 18:31:02 UTC 2017


This patch also is broken (breaks building just vulkan drivers) patch incoming.

Quoting Dylan Baker (2017-10-11 10:41:17)
> Rather than group dependencies in complex groups, use a flatter
> structure with split dependencies to avoid checking for the same
> dependencies twice.
> 
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  meson.build                | 199 ++++++++++++++++++++++-----------------------
>  src/loader/meson.build     |   5 +-
>  src/vulkan/wsi/meson.build |  10 ++-
>  3 files changed, 108 insertions(+), 106 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 8e5feecd8c0..ff48ff59d09 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -108,27 +108,6 @@ endif
>  # TODO: other OSes
>  with_dri_platform = 'drm'
>  
> -# TODO: conditionalize libdrm requirement
> -dep_libdrm = dependency('libdrm', version : '>= 2.4.75')
> -pre_args += '-DHAVE_LIBDRM'
> -
> -with_dri2 = with_dri_platform == 'drm' and dep_libdrm.found()
> -with_dri3 = get_option('dri3')
> -if with_dri3 == 'auto'
> -  if host_machine.system() == 'linux' and with_dri2
> -    with_dri3 = true
> -  else
> -    with_dri3 = false
> - endif
> -elif with_dri3 == 'yes'
> -  if not with_dri2
> -    error('dri3 support requires libdrm')
> -  endif
> -  with_dri3 = true
> -else
> -  with_dri3 = false
> -endif
> -
>  # TODO: there are more platforms required for non-vulkan drivers
>  with_platform_wayland = false
>  with_platform_x11 = false
> @@ -179,6 +158,20 @@ if with_glx != 'disabled'
>    endif
>  endif
>  
> +with_dri2 = with_dri and with_dri_platform == 'drm'
> +with_dri3 = get_option('dri3')
> +if with_dri3 == 'auto'
> +  if host_machine.system() == 'linux' and with_dri2
> +    with_dri3 = true
> +  else
> +    with_dri3 = false
> + endif
> +elif with_dri3 == 'yes'
> +  with_dri3 = true
> +else
> +  with_dri3 = false
> +endif
> +
>  with_glvnd = get_option('glvnd')
>  if with_glvnd and with_glx != 'dri'
>    message('glvnd requires dri based glx')
> @@ -214,6 +207,44 @@ if with_dri or with_gallium
>    endif
>  endif
>  
> +with_gallium_xvmc = false
> +with_gallium_vdpau = false
> +with_gallium_omx = false  # this is bellagio
> +with_gallium_va = false
> +with_gallium_media = false
> +dep_va = []
> +_drivers = get_option('gallium-media')
> +if _drivers != ''
> +  _split = _drivers.split(',')
> +  with_gallium_xvmc = _split.contains('xvmc')
> +  with_gallium_vdpau = _split.contains('vdpau')
> +  with_gallium_omx = _split.contains('omx')
> +  with_gallium_va = _split.contains('va')
> +  with_gallium_media = (with_gallium_xvmc or with_gallium_vdpau or
> +                        with_gallium_omx or with_gallium_va)
> +endif
> +
> +if with_platform_x11
> +  if with_any_vk or (with_glx == 'dri' and with_dri_platform == 'drm')
> +    pre_args += '-DHAVE_X11_PLATFORM'
> +  endif
> +  if with_glx == 'xlib'
> +    # TODO
> +    error('TODO')
> +  elif with_glx == 'gallium-xlib'
> +    # TODO
> +    error('TODO')
> +  else
> +    pre_args += '-DGLX_INDIRECT_RENDERING'
> +    if with_glx_direct
> +      pre_args += '-DGLX_DIRECT_RENDERING'
> +    endif
> +    if with_dri_platform == 'drm'
> +      pre_args += '-DGLX_USE_DRM'
> +    endif
> +  endif
> +endif
> +
>  prog_python2 = find_program('python2')
>  has_mako = run_command(prog_python2, '-c', 'import mako')
>  if has_mako.returncode() != 0
> @@ -483,10 +514,19 @@ else
>    dep_clock = cc.find_library('rt')
>  endif
>  
> +# TODO: conditionalize libdrm requirement
> +dep_libdrm = dependency('libdrm', version : '>= 2.4.75',
> +                        required : with_dri2 or with_dri3)
> +if dep_libdrm.found()
> +  pre_args += '-DHAVE_LIBDRM'
> +endif
> +
>  # TODO: some of these may be conditional
>  dep_zlib = dependency('zlib', version : '>= 1.2.3')
>  dep_thread = dependency('threads')
> -pre_args += '-DHAVE_PTHREAD'
> +if dep_thread.found() and host_machine.system() == 'linux'
> +  pre_args += '-DHAVE_PTHREAD'
> +endif
>  dep_elf = dependency('libelf', required : false)
>  if not dep_elf.found()
>    dep_elf = cc.find_library('elf', required : with_amd_vk) # TODO: clover, r600, radeonsi
> @@ -495,27 +535,19 @@ dep_expat = dependency('expat')
>  # this only exists on linux so either this is linux and it will be found, or
>  # its not linux and and wont
>  dep_m = cc.find_library('m', required : false)
> -
> -dep_libdrm_amdgpu = []
> -if with_amd_vk
> -  dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.82')
> -endif
> +dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.82', required : with_amd_vk)
>  
>  llvm_modules = ['bitwriter', 'engine', 'mcdisassembler', 'mcjit']
>  if with_amd_vk
>    llvm_modules += ['amdgpu', 'bitreader', 'ipo']
>  endif
>  dep_llvm = dependency(
> -  'llvm', version : '>= 3.9.0', required : false, modules : llvm_modules,
> +  'llvm', version : '>= 3.9.0', required : with_amd_vk, modules : llvm_modules,
>  )
> -if not dep_llvm.found()
> -  if with_amd_vk
> -    error('Radv requires llvm.')
> -  endif
> -else
> +if dep_llvm.found()
>    _llvm_version = dep_llvm.version().split('.')
>    # Development versions of LLVM have an 'svn' suffix, we don't want that for
> -  # our version checks.
> +  # our version checks. This is fixed in 0.43.0
>    _llvm_patch = _llvm_version[2]
>    if _llvm_patch.endswith('svn')
>      _llvm_patch = _llvm_patch.split('s')[0]
> @@ -577,63 +609,47 @@ else
>    dep_wayland_server = []
>  endif
>  
> +dep_x11 = []
> +dep_xext = []
> +dep_xdamage = []
> +dep_xfixes = []
> +dep_x11_xcb = []
> +dep_xcb_glx = []
>  dep_xcb_dri2 = []
>  dep_xcb_dri3 = []
>  dep_dri2proto = []
>  dep_glproto = []
> -dep_x11 = []
>  dep_xf86vm = []
> +dep_xcb_dri3 = []
> +dep_xcb_present = []
> +dep_xcb_sync = []
> +dep_xshmfence = []
>  if with_platform_x11
> -  if with_glx == 'xlib'
> -    # TODO
> -    error('TODO')
> -  elif with_glx == 'gallium-xlib'
> -    # TODO
> -    error('TODO')
> -  else
> -    pre_args += '-DGLX_INDIRECT_RENDERING'
> -    if with_glx_direct
> -      pre_args += '-DGLX_DIRECT_RENDERING'
> -    endif
> -    if with_dri_platform == 'drm'
> -      pre_args += '-DGLX_USE_DRM'
> -      dep_dri2proto = dependency('dri2proto', version : '>= 2.8')
> -      dep_x11 = [
> -        dependency('x11'),
> -        dependency('xext'),
> -        dependency('xdamage', version : '>= 1.1'),
> -        dependency('xfixes'),
> -        dependency('x11-xcb'),
> -        dependency('xcb'),
> -        dependency('xcb-glx', version : '>= 1.8.1'),
> -      ]
> -
> -      dep_xf86vm = dependency('xf86vm', required : false)
> -    endif
> -    # TODO: XF86VIDMODE
> -  endif
> -  if with_glx != 'disabled'
> -    dep_glproto = dependency('glproto', version : '>= 1.4.14')
> +  if with_glx == 'dri' and with_dri_platform == 'drm'
> +    dep_x11 = dependency('x11')
> +    dep_xext = dependency('xext')
> +    dep_xdamage = dependency('xdamage', version : '>= 1.1')
> +    dep_xfixes = dependency('xfixes')
> +    dep_x11_xcb = dependency('x11-xcb')
> +    dep_xcb = dependency('xcb')
> +    dep_xcb_glx = dependency('xcb-glx', version : '>= 1.8.1')
> +    dep_xf86vm = dependency('xf86vm', required : false)
>    endif
>    if with_any_vk or (with_glx == 'dri' and with_dri_platform == 'drm')
> -    dep_xcb_dri2 = [
> -      dependency('x11-xcb'),
> -      dependency('xcb'),
> -      dependency('xcb-dri2', version : '>= 1.8'),
> -      dependency('xcb-xfixes'),
> -    ]
> -    pre_args += '-DHAVE_X11_PLATFORM'
> +    dep_xcb_dri2 = dependency('xcb-dri2', version : '>= 1.8')
> +
>      if with_dri3
>        pre_args += '-DHAVE_DRI3'
> -      dep_xcb_dri3 = [
> -        dep_xcb_dri2,
> -        dependency('xcb-dri3'),
> -        dependency('xcb-present'),
> -        dependency('xcb-sync'),
> -        dependency('xshmfence', version : '>= 1.1'),
> -      ]
> +      dep_xcb_dri3 = dependency('xcb-dri3')
> +      dep_xcb_present = dependency('xcb-present')
> +      dep_xcb_sync = dependency('xcb-sync')
> +      dep_xshmfence = dependency('xshmfence', version : '>= 1.1')
>      endif
>    endif
> +  if with_glx != 'disabled'
> +    dep_dri2proto = dependency('dri2proto', version : '>= 2.8')
> +    dep_glproto = dependency('glproto', version : '>= 1.4.14')
> +  endif
>  endif
>  
>  # TODO: platforms for !vulkan
> @@ -649,31 +665,6 @@ endif
>  # TODO: clover
>  
>  # TODO: egl sans x11
> -
> -with_gallium_xvmc = false
> -with_gallium_vdpau = false
> -with_gallium_omx = false  # this is bellagio
> -with_gallium_va = false
> -with_gallium_media = false
> -dep_va = []
> -_drivers = get_option('gallium-media')
> -if _drivers != ''
> -  _split = _drivers.split(',')
> -  with_gallium_xvmc = _split.contains('xvmc')
> -  with_gallium_vdpau = _split.contains('vdpau')
> -  with_gallium_omx = _split.contains('omx')
> -  with_gallium_va = _split.contains('va')
> -  with_gallium_media = (with_gallium_xvmc or with_gallium_vdpau or
> -                        with_gallium_omx or with_gallium_va)
> -  if with_gallium_media
> -    dep_va = [
> -      dependency('x11-xcb'),
> -      dependency('xcb'),
> -      dependency('xcb-dri2', version : '>= 1.8'), # FIXME: dedup version
> -    ]
> -  endif
> -endif
> -
>  # TODO: gallium tests
>  
>  # TODO: various libdirs
> diff --git a/src/loader/meson.build b/src/loader/meson.build
> index 425620372aa..2f97cdc83bf 100644
> --- a/src/loader/meson.build
> +++ b/src/loader/meson.build
> @@ -26,7 +26,10 @@ if with_platform_x11 and with_dri3
>      ['loader_dri3_helper.c', 'loader_dri3_helper.h'],
>      c_args : c_vis_args,
>      include_directories : inc_include,
> -    dependencies : [dep_xcb_dri3, dep_libdrm],
> +    dependencies : [
> +      dep_xshmfence, dep_xcb_present, dep_xcb_dri3, dep_xcb_sync, dep_x11_xcb,
> +      dep_xext, dep_xdamage, dep_xcb_glx, dep_libdrm,
> +    ],
>      build_by_default : false,
>    )
>  else
> diff --git a/src/vulkan/wsi/meson.build b/src/vulkan/wsi/meson.build
> index 517f50f2158..c42af8e4cde 100644
> --- a/src/vulkan/wsi/meson.build
> +++ b/src/vulkan/wsi/meson.build
> @@ -41,7 +41,15 @@ files_vulkan_wsi = files(
>  )
>  if with_platform_x11
>    vulkan_wsi_args += ['-DVK_USE_PLATFORM_XCB_KHR', '-DVK_USE_PLATFORM_XLIB_KHR']
> -  vulkan_wsi_deps += dep_xcb_dri3
> +  vulkan_wsi_deps += [
> +    dep_xcb,
> +    dep_x11_xcb,
> +    dep_xcb_dri2,
> +    dep_xcb_dri3,
> +    dep_xcb_present,
> +    dep_xcb_sync,
> +    dep_xshmfence,
> +  ]
>    files_vulkan_wsi += files(
>      'wsi_common_x11.c',
>      'wsi_common_x11.h',
> -- 
> 2.14.2
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171011/19017d9e/attachment-0001.sig>


More information about the mesa-dev mailing list