[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