From b5f92b6fd4e4ef0358fe464d951893de20048bf6 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Thu, 15 Mar 2018 13:30:22 -0700 Subject: [PATCH] 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 Reviewed-by: Caio Marcelo de Oliveira Filho --- meson.build | 89 ++++++++++++++++--------------- src/gallium/auxiliary/meson.build | 2 +- src/glx/apple/meson.build | 2 +- src/glx/meson.build | 2 +- 4 files changed, 49 insertions(+), 46 deletions(-) diff --git a/meson.build b/meson.build index ee2b4151e2f..7b01d0ab4b7 100644 --- a/meson.build +++ b/meson.build @@ -29,6 +29,8 @@ project( 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()) # Arguments for the preprocessor, put these in a separate array from the C and @@ -422,7 +424,7 @@ elif _vdpau == 'auto' _vdpau = 'true' endif with_gallium_vdpau = _vdpau == 'true' -dep_vdpau = [] +dep_vdpau = null_dep if with_gallium_vdpau dep_vdpau = dependency('vdpau', version : '>= 1.1') dep_vdpau = declare_dependency( @@ -461,7 +463,7 @@ elif _xvmc == 'auto' _xvmc = 'true' endif with_gallium_xvmc = _xvmc == 'true' -dep_xvmc = [] +dep_xvmc = null_dep if with_gallium_xvmc dep_xvmc = dependency('xvmc', version : '>= 1.0.6') 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.') endif endif -dep_omx = [] +with_gallium_omx = _omx +dep_omx = null_dep dep_omx_other = [] if ['auto', 'bellagio'].contains(_omx) dep_omx = dependency( @@ -579,7 +582,7 @@ elif _va == 'auto' _va = 'true' endif with_gallium_va = _va == 'true' -dep_va = [] +dep_va = null_dep if with_gallium_va dep_va = dependency('libva', version : '>= 0.38.0') dep_va_headers = declare_dependency( @@ -638,7 +641,7 @@ if _opencl != 'disabled' with_gallium_opencl = true with_opencl_icd = _opencl == 'icd' else - dep_clc = [] + dep_clc = null_dep with_gallium_opencl = false with_gallium_icd = false endif @@ -831,7 +834,7 @@ else endif # 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); }', name : 'GCC atomic builtins') @@ -976,7 +979,7 @@ endif # check for dl support if cc.has_function('dlopen') - dep_dl = [] + dep_dl = null_dep else dep_dl = cc.find_library('dl') endif @@ -995,7 +998,7 @@ endif # Determine whether or not the rt library is needed for time functions if cc.has_function('clock_gettime') - dep_clock = [] + dep_clock = null_dep else dep_clock = cc.find_library('rt') 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') endif else - dep_elf = [] + dep_elf = null_dep endif dep_expat = dependency('expat') # 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 # 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 -dep_libdrm_amdgpu = [] -dep_libdrm_radeon = [] -dep_libdrm_nouveau = [] -dep_libdrm_etnaviv = [] -dep_libdrm_freedreno = [] -dep_libdrm_intel = [] +dep_libdrm_amdgpu = null_dep +dep_libdrm_radeon = null_dep +dep_libdrm_nouveau = null_dep +dep_libdrm_etnaviv = null_dep +dep_libdrm_freedreno = null_dep +dep_libdrm_intel = null_dep _drm_amdgpu_ver = '2.4.91' _drm_radeon_ver = '2.4.71' @@ -1114,7 +1117,7 @@ elif _llvm == 'true' dep_llvm = dependency('llvm', version : _llvm_version, modules : llvm_modules) with_llvm = true else - dep_llvm = [] + dep_llvm = null_dep with_llvm = false endif 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.') endif -dep_glvnd = [] +dep_glvnd = null_dep if with_glvnd dep_glvnd = dependency('libglvnd', version : '>= 0.2.0') pre_args += '-DUSE_LIBGLVND=1' @@ -1156,7 +1159,7 @@ if with_valgrind != 'false' pre_args += '-DHAVE_VALGRIND' endif else - dep_valgrind = [] + dep_valgrind = null_dep endif # pthread stubs. Lets not and say we didn't @@ -1164,7 +1167,7 @@ endif prog_bison = find_program('bison', required : with_any_opengl) prog_flex = find_program('flex', required : with_any_opengl) -dep_selinux = [] +dep_selinux = null_dep if get_option('selinux') dep_selinux = dependency('libselinux') pre_args += '-DMESA_SELINUX' @@ -1178,7 +1181,7 @@ if with_libunwind != 'false' pre_args += '-DHAVE_LIBUNWIND' endif else - dep_unwind = [] + dep_unwind = null_dep endif # TODO: gallium-hud @@ -1217,29 +1220,29 @@ if with_platform_wayland pre_args += ['-DHAVE_WAYLAND_PLATFORM', '-DWL_HIDE_DEPRECATED'] else prog_wl_scanner = [] - dep_wl_protocols = [] - dep_wayland_client = [] - dep_wayland_server = [] + dep_wl_protocols = null_dep + dep_wayland_client = null_dep + dep_wayland_server = null_dep wayland_dmabuf_xml = '' endif -dep_x11 = [] -dep_xext = [] -dep_xdamage = [] -dep_xfixes = [] -dep_x11_xcb = [] -dep_xcb = [] -dep_xcb_glx = [] -dep_xcb_dri2 = [] -dep_xcb_dri3 = [] -dep_dri2proto = [] -dep_glproto = [] -dep_xxf86vm = [] -dep_xcb_dri3 = [] -dep_xcb_present = [] -dep_xcb_sync = [] -dep_xcb_xfixes = [] -dep_xshmfence = [] +dep_x11 = null_dep +dep_xext = null_dep +dep_xdamage = null_dep +dep_xfixes = null_dep +dep_x11_xcb = null_dep +dep_xcb = null_dep +dep_xcb_glx = null_dep +dep_xcb_dri2 = null_dep +dep_xcb_dri3 = null_dep +dep_dri2proto = null_dep +dep_glproto = null_dep +dep_xxf86vm = null_dep +dep_xcb_dri3 = null_dep +dep_xcb_present = null_dep +dep_xcb_sync = null_dep +dep_xcb_xfixes = null_dep +dep_xshmfence = null_dep if with_platform_x11 if with_glx == 'xlib' or with_glx == 'gallium-xlib' dep_x11 = dependency('x11') @@ -1299,7 +1302,7 @@ if _sensors != 'false' pre_args += '-DHAVE_LIBSENSORS=1' endif else - dep_lmsensors = [] + dep_lmsensors = null_dep endif # TODO: gallium tests @@ -1334,7 +1337,7 @@ gl_priv_reqs = [ if dep_libdrm.found() gl_priv_reqs += 'libdrm >= 2.4.75' endif -if dep_xxf86vm != [] and dep_xxf86vm.found() +if dep_xxf86vm.found() gl_priv_reqs += 'xxf86vm' endif if with_dri_platform == 'drm' @@ -1348,7 +1351,7 @@ endif if dep_m.found() gl_priv_libs += '-lm' endif -if dep_dl != [] and dep_dl.found() +if dep_dl.found() gl_priv_libs += '-ldl' endif diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build index 5908f9c4309..0108b0e7567 100644 --- a/src/gallium/auxiliary/meson.build +++ b/src/gallium/auxiliary/meson.build @@ -339,7 +339,7 @@ files_libgallium = files( 'nir/tgsi_to_nir.h', ) -if dep_libdrm != [] and dep_libdrm.found() +if dep_libdrm.found() files_libgallium += files( 'renderonly/renderonly.c', 'renderonly/renderonly.h', diff --git a/src/glx/apple/meson.build b/src/glx/apple/meson.build index 2d1014da0f8..c6b1d617c4f 100644 --- a/src/glx/apple/meson.build +++ b/src/glx/apple/meson.build @@ -46,7 +46,7 @@ files_libappleglx = files( 'glx_empty.c', ) -dep_xplugin = [] +dep_xplugin = null_dep if with_dri_platform == 'apple' dep_xplugin = meson.get_compiler('c').find_library('Xplugin') endif diff --git a/src/glx/meson.build b/src/glx/meson.build index 7ac46ac0662..90ab552ac4d 100644 --- a/src/glx/meson.build +++ b/src/glx/meson.build @@ -137,7 +137,7 @@ gl_lib_cargs = [ '-DDEFAULT_DRIVER_DIR="@0@"'.format(dri_search_path), ] -if dep_xxf86vm != [] and dep_xxf86vm.found() +if dep_xxf86vm.found() gl_lib_cargs += '-DHAVE_XF86VIDMODE' endif -- 2.30.2