meson: fix warnings about comparing unlike types

In the old days (0.42.x), when mesa's meson system was written the
recommendation for handling conditional dependencies was to define them
as empty lists. When meson would evaluate the dependencies of a target
it would recursively flatten all of the arguments, and empty lists would
be removed. There are some problems with this, among them that lists and
dependencies have different methods (namely .found()), so the
recommendation changed to use `dependency('', required : false)` for
such cases.  This has the advantage of providing a .found() method, so
there is no need to do things like `dep_foo != [] and dep_foo.found()`,
such a dependency should never exist.

I've tested this with 0.42 (the minimum we claim to support) and 0.45.
On 0.45 this removes warnings about comparing unlike types, such as:

meson.build:1337: WARNING: Trying to compare values of different types
(DependencyHolder, list) using !=.

v2: - Use dependency('', required : false) instead of
      declare_dependency(), the later will always report that it is
      found, which is not what we want.

Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
Dylan Baker
2018-03-15 13:30:22 -07:00
parent 81ed629b38
commit b5f92b6fd4
4 changed files with 49 additions and 46 deletions

View File

@@ -29,6 +29,8 @@ project(
default_options : ['buildtype=debugoptimized', 'c_std=c99', 'cpp_std=c++11'] default_options : ['buildtype=debugoptimized', 'c_std=c99', 'cpp_std=c++11']
) )
null_dep = dependency('', required : false)
system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'dragonfly', 'linux'].contains(host_machine.system()) system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'dragonfly', 'linux'].contains(host_machine.system())
# Arguments for the preprocessor, put these in a separate array from the C and # Arguments for the preprocessor, put these in a separate array from the C and
@@ -422,7 +424,7 @@ elif _vdpau == 'auto'
_vdpau = 'true' _vdpau = 'true'
endif endif
with_gallium_vdpau = _vdpau == 'true' with_gallium_vdpau = _vdpau == 'true'
dep_vdpau = [] dep_vdpau = null_dep
if with_gallium_vdpau if with_gallium_vdpau
dep_vdpau = dependency('vdpau', version : '>= 1.1') dep_vdpau = dependency('vdpau', version : '>= 1.1')
dep_vdpau = declare_dependency( dep_vdpau = declare_dependency(
@@ -461,7 +463,7 @@ elif _xvmc == 'auto'
_xvmc = 'true' _xvmc = 'true'
endif endif
with_gallium_xvmc = _xvmc == 'true' with_gallium_xvmc = _xvmc == 'true'
dep_xvmc = [] dep_xvmc = null_dep
if with_gallium_xvmc if with_gallium_xvmc
dep_xvmc = dependency('xvmc', version : '>= 1.0.6') dep_xvmc = dependency('xvmc', version : '>= 1.0.6')
endif endif
@@ -491,7 +493,8 @@ elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau)
error('OMX state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.') error('OMX state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.')
endif endif
endif endif
dep_omx = [] with_gallium_omx = _omx
dep_omx = null_dep
dep_omx_other = [] dep_omx_other = []
if ['auto', 'bellagio'].contains(_omx) if ['auto', 'bellagio'].contains(_omx)
dep_omx = dependency( dep_omx = dependency(
@@ -579,7 +582,7 @@ elif _va == 'auto'
_va = 'true' _va = 'true'
endif endif
with_gallium_va = _va == 'true' with_gallium_va = _va == 'true'
dep_va = [] dep_va = null_dep
if with_gallium_va if with_gallium_va
dep_va = dependency('libva', version : '>= 0.38.0') dep_va = dependency('libva', version : '>= 0.38.0')
dep_va_headers = declare_dependency( dep_va_headers = declare_dependency(
@@ -638,7 +641,7 @@ if _opencl != 'disabled'
with_gallium_opencl = true with_gallium_opencl = true
with_opencl_icd = _opencl == 'icd' with_opencl_icd = _opencl == 'icd'
else else
dep_clc = [] dep_clc = null_dep
with_gallium_opencl = false with_gallium_opencl = false
with_gallium_icd = false with_gallium_icd = false
endif endif
@@ -831,7 +834,7 @@ else
endif endif
# Check for GCC style atomics # Check for GCC style atomics
dep_atomic = declare_dependency() dep_atomic = null_dep
if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE); }', if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE); }',
name : 'GCC atomic builtins') name : 'GCC atomic builtins')
@@ -976,7 +979,7 @@ endif
# check for dl support # check for dl support
if cc.has_function('dlopen') if cc.has_function('dlopen')
dep_dl = [] dep_dl = null_dep
else else
dep_dl = cc.find_library('dl') dep_dl = cc.find_library('dl')
endif endif
@@ -995,7 +998,7 @@ endif
# Determine whether or not the rt library is needed for time functions # Determine whether or not the rt library is needed for time functions
if cc.has_function('clock_gettime') if cc.has_function('clock_gettime')
dep_clock = [] dep_clock = null_dep
else else
dep_clock = cc.find_library('rt') dep_clock = cc.find_library('rt')
endif endif
@@ -1013,7 +1016,7 @@ if with_amd_vk or with_gallium_radeonsi or with_gallium_r600 or with_gallium_ope
dep_elf = cc.find_library('elf') dep_elf = cc.find_library('elf')
endif endif
else else
dep_elf = [] dep_elf = null_dep
endif endif
dep_expat = dependency('expat') dep_expat = dependency('expat')
# this only exists on linux so either this is linux and it will be found, or # this only exists on linux so either this is linux and it will be found, or
@@ -1024,12 +1027,12 @@ dep_m = cc.find_library('m', required : false)
# but we always want to use the same version for all libdrm modules. That means # but we always want to use the same version for all libdrm modules. That means
# even if driver foo requires 2.4.0 and driver bar requires 2.4.3, if foo and # even if driver foo requires 2.4.0 and driver bar requires 2.4.3, if foo and
# bar are both on use 2.4.3 for both of them # bar are both on use 2.4.3 for both of them
dep_libdrm_amdgpu = [] dep_libdrm_amdgpu = null_dep
dep_libdrm_radeon = [] dep_libdrm_radeon = null_dep
dep_libdrm_nouveau = [] dep_libdrm_nouveau = null_dep
dep_libdrm_etnaviv = [] dep_libdrm_etnaviv = null_dep
dep_libdrm_freedreno = [] dep_libdrm_freedreno = null_dep
dep_libdrm_intel = [] dep_libdrm_intel = null_dep
_drm_amdgpu_ver = '2.4.91' _drm_amdgpu_ver = '2.4.91'
_drm_radeon_ver = '2.4.71' _drm_radeon_ver = '2.4.71'
@@ -1114,7 +1117,7 @@ elif _llvm == 'true'
dep_llvm = dependency('llvm', version : _llvm_version, modules : llvm_modules) dep_llvm = dependency('llvm', version : _llvm_version, modules : llvm_modules)
with_llvm = true with_llvm = true
else else
dep_llvm = [] dep_llvm = null_dep
with_llvm = false with_llvm = false
endif endif
if with_llvm if with_llvm
@@ -1144,7 +1147,7 @@ elif with_amd_vk or with_gallium_radeonsi or with_gallium_swr
error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.')
endif endif
dep_glvnd = [] dep_glvnd = null_dep
if with_glvnd if with_glvnd
dep_glvnd = dependency('libglvnd', version : '>= 0.2.0') dep_glvnd = dependency('libglvnd', version : '>= 0.2.0')
pre_args += '-DUSE_LIBGLVND=1' pre_args += '-DUSE_LIBGLVND=1'
@@ -1156,7 +1159,7 @@ if with_valgrind != 'false'
pre_args += '-DHAVE_VALGRIND' pre_args += '-DHAVE_VALGRIND'
endif endif
else else
dep_valgrind = [] dep_valgrind = null_dep
endif endif
# pthread stubs. Lets not and say we didn't # pthread stubs. Lets not and say we didn't
@@ -1164,7 +1167,7 @@ endif
prog_bison = find_program('bison', required : with_any_opengl) prog_bison = find_program('bison', required : with_any_opengl)
prog_flex = find_program('flex', required : with_any_opengl) prog_flex = find_program('flex', required : with_any_opengl)
dep_selinux = [] dep_selinux = null_dep
if get_option('selinux') if get_option('selinux')
dep_selinux = dependency('libselinux') dep_selinux = dependency('libselinux')
pre_args += '-DMESA_SELINUX' pre_args += '-DMESA_SELINUX'
@@ -1178,7 +1181,7 @@ if with_libunwind != 'false'
pre_args += '-DHAVE_LIBUNWIND' pre_args += '-DHAVE_LIBUNWIND'
endif endif
else else
dep_unwind = [] dep_unwind = null_dep
endif endif
# TODO: gallium-hud # TODO: gallium-hud
@@ -1217,29 +1220,29 @@ if with_platform_wayland
pre_args += ['-DHAVE_WAYLAND_PLATFORM', '-DWL_HIDE_DEPRECATED'] pre_args += ['-DHAVE_WAYLAND_PLATFORM', '-DWL_HIDE_DEPRECATED']
else else
prog_wl_scanner = [] prog_wl_scanner = []
dep_wl_protocols = [] dep_wl_protocols = null_dep
dep_wayland_client = [] dep_wayland_client = null_dep
dep_wayland_server = [] dep_wayland_server = null_dep
wayland_dmabuf_xml = '' wayland_dmabuf_xml = ''
endif endif
dep_x11 = [] dep_x11 = null_dep
dep_xext = [] dep_xext = null_dep
dep_xdamage = [] dep_xdamage = null_dep
dep_xfixes = [] dep_xfixes = null_dep
dep_x11_xcb = [] dep_x11_xcb = null_dep
dep_xcb = [] dep_xcb = null_dep
dep_xcb_glx = [] dep_xcb_glx = null_dep
dep_xcb_dri2 = [] dep_xcb_dri2 = null_dep
dep_xcb_dri3 = [] dep_xcb_dri3 = null_dep
dep_dri2proto = [] dep_dri2proto = null_dep
dep_glproto = [] dep_glproto = null_dep
dep_xxf86vm = [] dep_xxf86vm = null_dep
dep_xcb_dri3 = [] dep_xcb_dri3 = null_dep
dep_xcb_present = [] dep_xcb_present = null_dep
dep_xcb_sync = [] dep_xcb_sync = null_dep
dep_xcb_xfixes = [] dep_xcb_xfixes = null_dep
dep_xshmfence = [] dep_xshmfence = null_dep
if with_platform_x11 if with_platform_x11
if with_glx == 'xlib' or with_glx == 'gallium-xlib' if with_glx == 'xlib' or with_glx == 'gallium-xlib'
dep_x11 = dependency('x11') dep_x11 = dependency('x11')
@@ -1299,7 +1302,7 @@ if _sensors != 'false'
pre_args += '-DHAVE_LIBSENSORS=1' pre_args += '-DHAVE_LIBSENSORS=1'
endif endif
else else
dep_lmsensors = [] dep_lmsensors = null_dep
endif endif
# TODO: gallium tests # TODO: gallium tests
@@ -1334,7 +1337,7 @@ gl_priv_reqs = [
if dep_libdrm.found() if dep_libdrm.found()
gl_priv_reqs += 'libdrm >= 2.4.75' gl_priv_reqs += 'libdrm >= 2.4.75'
endif endif
if dep_xxf86vm != [] and dep_xxf86vm.found() if dep_xxf86vm.found()
gl_priv_reqs += 'xxf86vm' gl_priv_reqs += 'xxf86vm'
endif endif
if with_dri_platform == 'drm' if with_dri_platform == 'drm'
@@ -1348,7 +1351,7 @@ endif
if dep_m.found() if dep_m.found()
gl_priv_libs += '-lm' gl_priv_libs += '-lm'
endif endif
if dep_dl != [] and dep_dl.found() if dep_dl.found()
gl_priv_libs += '-ldl' gl_priv_libs += '-ldl'
endif endif

View File

@@ -339,7 +339,7 @@ files_libgallium = files(
'nir/tgsi_to_nir.h', 'nir/tgsi_to_nir.h',
) )
if dep_libdrm != [] and dep_libdrm.found() if dep_libdrm.found()
files_libgallium += files( files_libgallium += files(
'renderonly/renderonly.c', 'renderonly/renderonly.c',
'renderonly/renderonly.h', 'renderonly/renderonly.h',

View File

@@ -46,7 +46,7 @@ files_libappleglx = files(
'glx_empty.c', 'glx_empty.c',
) )
dep_xplugin = [] dep_xplugin = null_dep
if with_dri_platform == 'apple' if with_dri_platform == 'apple'
dep_xplugin = meson.get_compiler('c').find_library('Xplugin') dep_xplugin = meson.get_compiler('c').find_library('Xplugin')
endif endif

View File

@@ -137,7 +137,7 @@ gl_lib_cargs = [
'-DDEFAULT_DRIVER_DIR="@0@"'.format(dri_search_path), '-DDEFAULT_DRIVER_DIR="@0@"'.format(dri_search_path),
] ]
if dep_xxf86vm != [] and dep_xxf86vm.found() if dep_xxf86vm.found()
gl_lib_cargs += '-DHAVE_XF86VIDMODE' gl_lib_cargs += '-DHAVE_XF86VIDMODE'
endif endif