From 4b6e2aadff4633552b29088a1084f8d137ddbb76 Mon Sep 17 00:00:00 2001 From: stefan11111 Date: Mon, 28 Jul 2025 20:57:40 +0300 Subject: [PATCH] meson.build: Check for libudev directly, instead of our flimsy os-speciffic guessing Implement what was discussed in X11Libre#478 Use dependency() instead of cc.check_header(), as the former is the intended way to check for dependencies. cc.check_headers would turn udev on on systems where libudev.h is present, but libudev.pc isn't. Thos would do the wrong thing on systems where the admin wants to have that header for some reason, but doesn't want programs to use libudev. We also keep udev and udev_kms a tristate, so we try to do the right thing when the user doesn't explicitly pass values for udev and udev_kms. Signed-off-by: stefan11111 --- meson.build | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/meson.build b/meson.build index bd72f400a1..0afe919ee6 100644 --- a/meson.build +++ b/meson.build @@ -184,27 +184,13 @@ endif udev_option = get_option('udev') udev_kms_option = get_option('udev_kms') -if ['windows', 'darwin', 'netbsd', 'openbsd', 'sunos'].contains(host_machine.system()) - if udev_option == 'auto' - udev_option = 'false' - endif - if udev_kms_option == 'auto' - udev_kms_option = 'false' - endif - if udev_option == 'true' or udev_kms_option == 'true' - message('WARNING: udev is not supported on your platform') - endif -else - if udev_option == 'auto' - udev_option = 'true' - endif - if udev_kms_option == 'auto' - udev_kms_option = 'true' - endif +if not dependency('libudev', required: (udev_option == 'true' or udev_kms_option == 'true')).found() + udev_option = 'false' + udev_kms_option = 'false' endif -build_udev = (udev_option == 'true') -build_udev_kms = (udev_kms_option == 'true') +build_udev = (udev_option != 'false') +build_udev_kms = (udev_kms_option != 'false') if get_option('systemd_logind') == 'auto' build_systemd_logind = build_udev_kms and dbus_dep.found()