From a98aa0bbbeb2ffab54e257c771657c190e293c5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Wed, 6 Jan 2016 08:46:05 +0100 Subject: [PATCH] Make joydev build using udev and evdev opt-out but blocking (linux) It is enabled by default, users have to specifically ask for it if they don't want gamepad support. If libudev or libevdev are missing, the build aborts and tells the user the reason and that they can disable gamepad support with the "gamepad=no" option. --- platform/x11/detect.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 0226c8b8c0..344545ab81 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -55,6 +55,7 @@ def get_opts(): ('use_sanitizer','Use llvm compiler sanitize address','no'), ('use_leak_sanitizer','Use llvm compiler sanitize memory leaks','no'), ('pulseaudio','Detect & Use pulseaudio','yes'), + ('gamepad','Gamepad support, requires libudev and libevdev','yes'), ('new_wm_api', 'Use experimental window management API','no'), ('debug_release', 'Add debug symbols to release version','no'), ] @@ -145,23 +146,29 @@ def configure(env): env.Append(CPPPATH=['#tools/freetype/freetype/include']) - - env.Append(CPPFLAGS=['-DOPENGL_ENABLED','-DGLEW_ENABLED']) if platform.system() == 'Linux': env.Append(CPPFLAGS=["-DALSA_ENABLED"]) env.Append(LIBS=['asound']) - if not os.system("pkg-config --exists libudev"): - if not os.system("pkg-config --exists libevdev"): - print("Enabling udev/evdev") - env.Append(CPPFLAGS=["-DJOYDEV_ENABLED"]) - env.ParseConfig('pkg-config libudev --cflags --libs') - env.ParseConfig('pkg-config libevdev --cflags --libs') - else: - print("libevdev development libraries not found, disabling gamepad support") + if (env["gamepad"]=="yes" and platform.system() == "Linux"): + # pkg-config returns 0 when the lib exists... + found_udev = not os.system("pkg-config --exists libudev") + found_evdev = not os.system("pkg-config --exists libevdev") + + if (found_udev and found_evdev): + print("Enabling gamepad support with udev/evdev") + env.Append(CPPFLAGS=["-DJOYDEV_ENABLED"]) + env.ParseConfig('pkg-config libudev --cflags --libs') + env.ParseConfig('pkg-config libevdev --cflags --libs') else: - print("libudev development libraries not found, disabling gamepad support") + if (not found_udev): + print("libudev development libraries not found") + if (not found_evdev): + print("libevdev development libraries not found") + print("Some libraries are missing for the required gamepad support, aborting!") + print("Install the mentioned libraries or build with 'gamepad=no' to disable gamepad support.") + sys.exit(255) if (env["pulseaudio"]=="yes"): if not os.system("pkg-config --exists libpulse-simple"):