Browse Source

Fix the usage of libudev and dbus with SDL

Previously, libudev was ignored if SOWRAP_ENABLED was defined (it is defined by default) because otherwise it would crash CI builds due to a missing header, and dbus was always linked dynamically. This commit should fix this issue and make libudev usable again
Nintorch 1 tháng trước cách đây
mục cha
commit
0e19ad507e

+ 1 - 0
drivers/sdl/SCsub

@@ -145,6 +145,7 @@ if env["builtin_sdl"]:
             "thread/pthread/SDL_systls.c",
             "timer/unix/SDL_systimer.c",
         ]
+        env_sdl.Prepend(CPPPATH=[thirdparty_dir + "core/linux"])
 
     elif env["platform"] == "macos":
         env_sdl.Append(CPPDEFINES=["SDL_PLATFORM_MACOS"])

+ 7 - 5
drivers/sdl/SDL_build_config_private.h

@@ -92,16 +92,18 @@
 #define HAVE_UNSETENV 1
 #endif
 
-// TODO: handle dynamic loading with SOWRAP_ENABLED
-
-// (even though DBus can also be loaded with SOWRAP_ENABLED, we load it
-// statically regardless of SOWRAP_ENABLED, because otherwise SDL won't compile)
 #ifdef DBUS_ENABLED
 #define HAVE_DBUS_DBUS_H 1
+#define SDL_USE_LIBDBUS 1
+// SOWRAP_ENABLED is handled in thirdparty/sdl/core/linux/SDL_dbus.c
 #endif
 
-#if defined(UDEV_ENABLED) && !defined(SOWRAP_ENABLED)
+#ifdef UDEV_ENABLED
 #define HAVE_LIBUDEV_H 1
+#define SDL_USE_LIBUDEV
+#ifdef SOWRAP_ENABLED
+#define SDL_UDEV_DYNAMIC "libudev.so.1"
+#endif
 #endif
 
 #define SDL_LOADSO_DLOPEN 1

+ 0 - 4
platform/linuxbsd/SCsub

@@ -31,10 +31,6 @@ if env["fontconfig"]:
     if env["use_sowrap"]:
         common_linuxbsd.append("fontconfig-so_wrap.c")
 
-if env["udev"]:
-    if env["use_sowrap"]:
-        common_linuxbsd.append("libudev-so_wrap.c")
-
 if env["dbus"]:
     if env["use_sowrap"]:
         common_linuxbsd.append("dbus-so_wrap.c")

+ 0 - 1
platform/linuxbsd/detect.py

@@ -380,7 +380,6 @@ def configure(env: "SConsEnvironment"):
         env.Append(CPPDEFINES=["XKB_ENABLED"])
 
     if platform.system() == "Linux":
-        env.Append(CPPDEFINES=["JOYDEV_ENABLED"])
         if env["udev"]:
             if not env["use_sowrap"]:
                 if os.system("pkg-config --exists libudev") == 0:  # 0 means found

+ 0 - 1013
platform/linuxbsd/libudev-so_wrap.c

@@ -1,1013 +0,0 @@
-// This file is generated. Do not edit!
-// see https://github.com/hpvb/dynload-wrapper for details
-// generated by generate-wrapper.py 0.3 on 2023-01-12 10:23:01
-// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/udev/libudev.h --sys-include "thirdparty/linuxbsd_headers/udev/libudev.h" --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header ./platform/linuxbsd/libudev-so_wrap.h --output-implementation ./platform/linuxbsd/libudev-so_wrap.c
-//
-#include <stdint.h>
-
-#define udev_ref udev_ref_dylibloader_orig_libudev
-#define udev_unref udev_unref_dylibloader_orig_libudev
-#define udev_new udev_new_dylibloader_orig_libudev
-#define udev_set_log_fn udev_set_log_fn_dylibloader_orig_libudev
-#define udev_get_log_priority udev_get_log_priority_dylibloader_orig_libudev
-#define udev_set_log_priority udev_set_log_priority_dylibloader_orig_libudev
-#define udev_get_userdata udev_get_userdata_dylibloader_orig_libudev
-#define udev_set_userdata udev_set_userdata_dylibloader_orig_libudev
-#define udev_list_entry_get_next udev_list_entry_get_next_dylibloader_orig_libudev
-#define udev_list_entry_get_by_name udev_list_entry_get_by_name_dylibloader_orig_libudev
-#define udev_list_entry_get_name udev_list_entry_get_name_dylibloader_orig_libudev
-#define udev_list_entry_get_value udev_list_entry_get_value_dylibloader_orig_libudev
-#define udev_device_ref udev_device_ref_dylibloader_orig_libudev
-#define udev_device_unref udev_device_unref_dylibloader_orig_libudev
-#define udev_device_get_udev udev_device_get_udev_dylibloader_orig_libudev
-#define udev_device_new_from_syspath udev_device_new_from_syspath_dylibloader_orig_libudev
-#define udev_device_new_from_devnum udev_device_new_from_devnum_dylibloader_orig_libudev
-#define udev_device_new_from_subsystem_sysname udev_device_new_from_subsystem_sysname_dylibloader_orig_libudev
-#define udev_device_new_from_device_id udev_device_new_from_device_id_dylibloader_orig_libudev
-#define udev_device_new_from_environment udev_device_new_from_environment_dylibloader_orig_libudev
-#define udev_device_get_parent udev_device_get_parent_dylibloader_orig_libudev
-#define udev_device_get_parent_with_subsystem_devtype udev_device_get_parent_with_subsystem_devtype_dylibloader_orig_libudev
-#define udev_device_get_devpath udev_device_get_devpath_dylibloader_orig_libudev
-#define udev_device_get_subsystem udev_device_get_subsystem_dylibloader_orig_libudev
-#define udev_device_get_devtype udev_device_get_devtype_dylibloader_orig_libudev
-#define udev_device_get_syspath udev_device_get_syspath_dylibloader_orig_libudev
-#define udev_device_get_sysname udev_device_get_sysname_dylibloader_orig_libudev
-#define udev_device_get_sysnum udev_device_get_sysnum_dylibloader_orig_libudev
-#define udev_device_get_devnode udev_device_get_devnode_dylibloader_orig_libudev
-#define udev_device_get_is_initialized udev_device_get_is_initialized_dylibloader_orig_libudev
-#define udev_device_get_devlinks_list_entry udev_device_get_devlinks_list_entry_dylibloader_orig_libudev
-#define udev_device_get_properties_list_entry udev_device_get_properties_list_entry_dylibloader_orig_libudev
-#define udev_device_get_tags_list_entry udev_device_get_tags_list_entry_dylibloader_orig_libudev
-#define udev_device_get_sysattr_list_entry udev_device_get_sysattr_list_entry_dylibloader_orig_libudev
-#define udev_device_get_property_value udev_device_get_property_value_dylibloader_orig_libudev
-#define udev_device_get_driver udev_device_get_driver_dylibloader_orig_libudev
-#define udev_device_get_devnum udev_device_get_devnum_dylibloader_orig_libudev
-#define udev_device_get_action udev_device_get_action_dylibloader_orig_libudev
-#define udev_device_get_seqnum udev_device_get_seqnum_dylibloader_orig_libudev
-#define udev_device_get_usec_since_initialized udev_device_get_usec_since_initialized_dylibloader_orig_libudev
-#define udev_device_get_sysattr_value udev_device_get_sysattr_value_dylibloader_orig_libudev
-#define udev_device_set_sysattr_value udev_device_set_sysattr_value_dylibloader_orig_libudev
-#define udev_device_has_tag udev_device_has_tag_dylibloader_orig_libudev
-#define udev_monitor_ref udev_monitor_ref_dylibloader_orig_libudev
-#define udev_monitor_unref udev_monitor_unref_dylibloader_orig_libudev
-#define udev_monitor_get_udev udev_monitor_get_udev_dylibloader_orig_libudev
-#define udev_monitor_new_from_netlink udev_monitor_new_from_netlink_dylibloader_orig_libudev
-#define udev_monitor_enable_receiving udev_monitor_enable_receiving_dylibloader_orig_libudev
-#define udev_monitor_set_receive_buffer_size udev_monitor_set_receive_buffer_size_dylibloader_orig_libudev
-#define udev_monitor_get_fd udev_monitor_get_fd_dylibloader_orig_libudev
-#define udev_monitor_receive_device udev_monitor_receive_device_dylibloader_orig_libudev
-#define udev_monitor_filter_add_match_subsystem_devtype udev_monitor_filter_add_match_subsystem_devtype_dylibloader_orig_libudev
-#define udev_monitor_filter_add_match_tag udev_monitor_filter_add_match_tag_dylibloader_orig_libudev
-#define udev_monitor_filter_update udev_monitor_filter_update_dylibloader_orig_libudev
-#define udev_monitor_filter_remove udev_monitor_filter_remove_dylibloader_orig_libudev
-#define udev_enumerate_ref udev_enumerate_ref_dylibloader_orig_libudev
-#define udev_enumerate_unref udev_enumerate_unref_dylibloader_orig_libudev
-#define udev_enumerate_get_udev udev_enumerate_get_udev_dylibloader_orig_libudev
-#define udev_enumerate_new udev_enumerate_new_dylibloader_orig_libudev
-#define udev_enumerate_add_match_subsystem udev_enumerate_add_match_subsystem_dylibloader_orig_libudev
-#define udev_enumerate_add_nomatch_subsystem udev_enumerate_add_nomatch_subsystem_dylibloader_orig_libudev
-#define udev_enumerate_add_match_sysattr udev_enumerate_add_match_sysattr_dylibloader_orig_libudev
-#define udev_enumerate_add_nomatch_sysattr udev_enumerate_add_nomatch_sysattr_dylibloader_orig_libudev
-#define udev_enumerate_add_match_property udev_enumerate_add_match_property_dylibloader_orig_libudev
-#define udev_enumerate_add_match_sysname udev_enumerate_add_match_sysname_dylibloader_orig_libudev
-#define udev_enumerate_add_match_tag udev_enumerate_add_match_tag_dylibloader_orig_libudev
-#define udev_enumerate_add_match_parent udev_enumerate_add_match_parent_dylibloader_orig_libudev
-#define udev_enumerate_add_match_is_initialized udev_enumerate_add_match_is_initialized_dylibloader_orig_libudev
-#define udev_enumerate_add_syspath udev_enumerate_add_syspath_dylibloader_orig_libudev
-#define udev_enumerate_scan_devices udev_enumerate_scan_devices_dylibloader_orig_libudev
-#define udev_enumerate_scan_subsystems udev_enumerate_scan_subsystems_dylibloader_orig_libudev
-#define udev_enumerate_get_list_entry udev_enumerate_get_list_entry_dylibloader_orig_libudev
-#define udev_queue_ref udev_queue_ref_dylibloader_orig_libudev
-#define udev_queue_unref udev_queue_unref_dylibloader_orig_libudev
-#define udev_queue_get_udev udev_queue_get_udev_dylibloader_orig_libudev
-#define udev_queue_new udev_queue_new_dylibloader_orig_libudev
-#define udev_queue_get_kernel_seqnum udev_queue_get_kernel_seqnum_dylibloader_orig_libudev
-#define udev_queue_get_udev_seqnum udev_queue_get_udev_seqnum_dylibloader_orig_libudev
-#define udev_queue_get_udev_is_active udev_queue_get_udev_is_active_dylibloader_orig_libudev
-#define udev_queue_get_queue_is_empty udev_queue_get_queue_is_empty_dylibloader_orig_libudev
-#define udev_queue_get_seqnum_is_finished udev_queue_get_seqnum_is_finished_dylibloader_orig_libudev
-#define udev_queue_get_seqnum_sequence_is_finished udev_queue_get_seqnum_sequence_is_finished_dylibloader_orig_libudev
-#define udev_queue_get_fd udev_queue_get_fd_dylibloader_orig_libudev
-#define udev_queue_flush udev_queue_flush_dylibloader_orig_libudev
-#define udev_queue_get_queued_list_entry udev_queue_get_queued_list_entry_dylibloader_orig_libudev
-#define udev_hwdb_new udev_hwdb_new_dylibloader_orig_libudev
-#define udev_hwdb_ref udev_hwdb_ref_dylibloader_orig_libudev
-#define udev_hwdb_unref udev_hwdb_unref_dylibloader_orig_libudev
-#define udev_hwdb_get_properties_list_entry udev_hwdb_get_properties_list_entry_dylibloader_orig_libudev
-#define udev_util_encode_string udev_util_encode_string_dylibloader_orig_libudev
-#include "thirdparty/linuxbsd_headers/udev/libudev.h"
-#undef udev_ref
-#undef udev_unref
-#undef udev_new
-#undef udev_set_log_fn
-#undef udev_get_log_priority
-#undef udev_set_log_priority
-#undef udev_get_userdata
-#undef udev_set_userdata
-#undef udev_list_entry_get_next
-#undef udev_list_entry_get_by_name
-#undef udev_list_entry_get_name
-#undef udev_list_entry_get_value
-#undef udev_device_ref
-#undef udev_device_unref
-#undef udev_device_get_udev
-#undef udev_device_new_from_syspath
-#undef udev_device_new_from_devnum
-#undef udev_device_new_from_subsystem_sysname
-#undef udev_device_new_from_device_id
-#undef udev_device_new_from_environment
-#undef udev_device_get_parent
-#undef udev_device_get_parent_with_subsystem_devtype
-#undef udev_device_get_devpath
-#undef udev_device_get_subsystem
-#undef udev_device_get_devtype
-#undef udev_device_get_syspath
-#undef udev_device_get_sysname
-#undef udev_device_get_sysnum
-#undef udev_device_get_devnode
-#undef udev_device_get_is_initialized
-#undef udev_device_get_devlinks_list_entry
-#undef udev_device_get_properties_list_entry
-#undef udev_device_get_tags_list_entry
-#undef udev_device_get_sysattr_list_entry
-#undef udev_device_get_property_value
-#undef udev_device_get_driver
-#undef udev_device_get_devnum
-#undef udev_device_get_action
-#undef udev_device_get_seqnum
-#undef udev_device_get_usec_since_initialized
-#undef udev_device_get_sysattr_value
-#undef udev_device_set_sysattr_value
-#undef udev_device_has_tag
-#undef udev_monitor_ref
-#undef udev_monitor_unref
-#undef udev_monitor_get_udev
-#undef udev_monitor_new_from_netlink
-#undef udev_monitor_enable_receiving
-#undef udev_monitor_set_receive_buffer_size
-#undef udev_monitor_get_fd
-#undef udev_monitor_receive_device
-#undef udev_monitor_filter_add_match_subsystem_devtype
-#undef udev_monitor_filter_add_match_tag
-#undef udev_monitor_filter_update
-#undef udev_monitor_filter_remove
-#undef udev_enumerate_ref
-#undef udev_enumerate_unref
-#undef udev_enumerate_get_udev
-#undef udev_enumerate_new
-#undef udev_enumerate_add_match_subsystem
-#undef udev_enumerate_add_nomatch_subsystem
-#undef udev_enumerate_add_match_sysattr
-#undef udev_enumerate_add_nomatch_sysattr
-#undef udev_enumerate_add_match_property
-#undef udev_enumerate_add_match_sysname
-#undef udev_enumerate_add_match_tag
-#undef udev_enumerate_add_match_parent
-#undef udev_enumerate_add_match_is_initialized
-#undef udev_enumerate_add_syspath
-#undef udev_enumerate_scan_devices
-#undef udev_enumerate_scan_subsystems
-#undef udev_enumerate_get_list_entry
-#undef udev_queue_ref
-#undef udev_queue_unref
-#undef udev_queue_get_udev
-#undef udev_queue_new
-#undef udev_queue_get_kernel_seqnum
-#undef udev_queue_get_udev_seqnum
-#undef udev_queue_get_udev_is_active
-#undef udev_queue_get_queue_is_empty
-#undef udev_queue_get_seqnum_is_finished
-#undef udev_queue_get_seqnum_sequence_is_finished
-#undef udev_queue_get_fd
-#undef udev_queue_flush
-#undef udev_queue_get_queued_list_entry
-#undef udev_hwdb_new
-#undef udev_hwdb_ref
-#undef udev_hwdb_unref
-#undef udev_hwdb_get_properties_list_entry
-#undef udev_util_encode_string
-#include <dlfcn.h>
-#include <stdio.h>
-struct udev* (*udev_ref_dylibloader_wrapper_libudev)(struct udev*);
-struct udev* (*udev_unref_dylibloader_wrapper_libudev)(struct udev*);
-struct udev* (*udev_new_dylibloader_wrapper_libudev)( void);
-void (*udev_set_log_fn_dylibloader_wrapper_libudev)(struct udev*, void*);
-int (*udev_get_log_priority_dylibloader_wrapper_libudev)(struct udev*);
-void (*udev_set_log_priority_dylibloader_wrapper_libudev)(struct udev*, int);
-void* (*udev_get_userdata_dylibloader_wrapper_libudev)(struct udev*);
-void (*udev_set_userdata_dylibloader_wrapper_libudev)(struct udev*, void*);
-struct udev_list_entry* (*udev_list_entry_get_next_dylibloader_wrapper_libudev)(struct udev_list_entry*);
-struct udev_list_entry* (*udev_list_entry_get_by_name_dylibloader_wrapper_libudev)(struct udev_list_entry*,const char*);
-const char* (*udev_list_entry_get_name_dylibloader_wrapper_libudev)(struct udev_list_entry*);
-const char* (*udev_list_entry_get_value_dylibloader_wrapper_libudev)(struct udev_list_entry*);
-struct udev_device* (*udev_device_ref_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_device* (*udev_device_unref_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev* (*udev_device_get_udev_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_device* (*udev_device_new_from_syspath_dylibloader_wrapper_libudev)(struct udev*,const char*);
-struct udev_device* (*udev_device_new_from_devnum_dylibloader_wrapper_libudev)(struct udev*, char, dev_t);
-struct udev_device* (*udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev)(struct udev*,const char*,const char*);
-struct udev_device* (*udev_device_new_from_device_id_dylibloader_wrapper_libudev)(struct udev*,const char*);
-struct udev_device* (*udev_device_new_from_environment_dylibloader_wrapper_libudev)(struct udev*);
-struct udev_device* (*udev_device_get_parent_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_device* (*udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_device*,const char*,const char*);
-const char* (*udev_device_get_devpath_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_subsystem_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_devtype_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_syspath_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_sysname_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_sysnum_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_devnode_dylibloader_wrapper_libudev)(struct udev_device*);
-int (*udev_device_get_is_initialized_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_list_entry* (*udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_list_entry* (*udev_device_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_list_entry* (*udev_device_get_tags_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-struct udev_list_entry* (*udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_property_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*);
-const char* (*udev_device_get_driver_dylibloader_wrapper_libudev)(struct udev_device*);
-dev_t (*udev_device_get_devnum_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_action_dylibloader_wrapper_libudev)(struct udev_device*);
-unsigned long long int (*udev_device_get_seqnum_dylibloader_wrapper_libudev)(struct udev_device*);
-unsigned long long int (*udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev)(struct udev_device*);
-const char* (*udev_device_get_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*);
-int (*udev_device_set_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*, char*);
-int (*udev_device_has_tag_dylibloader_wrapper_libudev)(struct udev_device*,const char*);
-struct udev_monitor* (*udev_monitor_ref_dylibloader_wrapper_libudev)(struct udev_monitor*);
-struct udev_monitor* (*udev_monitor_unref_dylibloader_wrapper_libudev)(struct udev_monitor*);
-struct udev* (*udev_monitor_get_udev_dylibloader_wrapper_libudev)(struct udev_monitor*);
-struct udev_monitor* (*udev_monitor_new_from_netlink_dylibloader_wrapper_libudev)(struct udev*,const char*);
-int (*udev_monitor_enable_receiving_dylibloader_wrapper_libudev)(struct udev_monitor*);
-int (*udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev)(struct udev_monitor*, int);
-int (*udev_monitor_get_fd_dylibloader_wrapper_libudev)(struct udev_monitor*);
-struct udev_device* (*udev_monitor_receive_device_dylibloader_wrapper_libudev)(struct udev_monitor*);
-int (*udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*,const char*);
-int (*udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*);
-int (*udev_monitor_filter_update_dylibloader_wrapper_libudev)(struct udev_monitor*);
-int (*udev_monitor_filter_remove_dylibloader_wrapper_libudev)(struct udev_monitor*);
-struct udev_enumerate* (*udev_enumerate_ref_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-struct udev_enumerate* (*udev_enumerate_unref_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-struct udev* (*udev_enumerate_get_udev_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-struct udev_enumerate* (*udev_enumerate_new_dylibloader_wrapper_libudev)(struct udev*);
-int (*udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-int (*udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-int (*udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*);
-int (*udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*);
-int (*udev_enumerate_add_match_property_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*);
-int (*udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-int (*udev_enumerate_add_match_tag_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-int (*udev_enumerate_add_match_parent_dylibloader_wrapper_libudev)(struct udev_enumerate*,struct udev_device*);
-int (*udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-int (*udev_enumerate_add_syspath_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-int (*udev_enumerate_scan_devices_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-int (*udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-struct udev_list_entry* (*udev_enumerate_get_list_entry_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-struct udev_queue* (*udev_queue_ref_dylibloader_wrapper_libudev)(struct udev_queue*);
-struct udev_queue* (*udev_queue_unref_dylibloader_wrapper_libudev)(struct udev_queue*);
-struct udev* (*udev_queue_get_udev_dylibloader_wrapper_libudev)(struct udev_queue*);
-struct udev_queue* (*udev_queue_new_dylibloader_wrapper_libudev)(struct udev*);
-unsigned long long int (*udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*);
-unsigned long long int (*udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*);
-int (*udev_queue_get_udev_is_active_dylibloader_wrapper_libudev)(struct udev_queue*);
-int (*udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev)(struct udev_queue*);
-int (*udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int);
-int (*udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int, unsigned long long int);
-int (*udev_queue_get_fd_dylibloader_wrapper_libudev)(struct udev_queue*);
-int (*udev_queue_flush_dylibloader_wrapper_libudev)(struct udev_queue*);
-struct udev_list_entry* (*udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev)(struct udev_queue*);
-struct udev_hwdb* (*udev_hwdb_new_dylibloader_wrapper_libudev)(struct udev*);
-struct udev_hwdb* (*udev_hwdb_ref_dylibloader_wrapper_libudev)(struct udev_hwdb*);
-struct udev_hwdb* (*udev_hwdb_unref_dylibloader_wrapper_libudev)(struct udev_hwdb*);
-struct udev_list_entry* (*udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_hwdb*,const char*, unsigned int);
-int (*udev_util_encode_string_dylibloader_wrapper_libudev)(const char*, char*, size_t);
-int initialize_libudev(int verbose) {
-  void *handle;
-  char *error;
-  handle = dlopen("libudev.so.1", RTLD_LAZY);
-  if (!handle) {
-    if (verbose) {
-      fprintf(stderr, "%s\n", dlerror());
-    }
-    return(1);
-  }
-  dlerror();
-// udev_ref
-  *(void **) (&udev_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_ref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_unref
-  *(void **) (&udev_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_unref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_new
-  *(void **) (&udev_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_new");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_set_log_fn
-  *(void **) (&udev_set_log_fn_dylibloader_wrapper_libudev) = dlsym(handle, "udev_set_log_fn");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_get_log_priority
-  *(void **) (&udev_get_log_priority_dylibloader_wrapper_libudev) = dlsym(handle, "udev_get_log_priority");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_set_log_priority
-  *(void **) (&udev_set_log_priority_dylibloader_wrapper_libudev) = dlsym(handle, "udev_set_log_priority");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_get_userdata
-  *(void **) (&udev_get_userdata_dylibloader_wrapper_libudev) = dlsym(handle, "udev_get_userdata");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_set_userdata
-  *(void **) (&udev_set_userdata_dylibloader_wrapper_libudev) = dlsym(handle, "udev_set_userdata");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_list_entry_get_next
-  *(void **) (&udev_list_entry_get_next_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_next");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_list_entry_get_by_name
-  *(void **) (&udev_list_entry_get_by_name_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_by_name");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_list_entry_get_name
-  *(void **) (&udev_list_entry_get_name_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_name");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_list_entry_get_value
-  *(void **) (&udev_list_entry_get_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_value");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_ref
-  *(void **) (&udev_device_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_ref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_unref
-  *(void **) (&udev_device_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_unref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_udev
-  *(void **) (&udev_device_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_udev");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_new_from_syspath
-  *(void **) (&udev_device_new_from_syspath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_syspath");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_new_from_devnum
-  *(void **) (&udev_device_new_from_devnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_devnum");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_new_from_subsystem_sysname
-  *(void **) (&udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_subsystem_sysname");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_new_from_device_id
-  *(void **) (&udev_device_new_from_device_id_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_device_id");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_new_from_environment
-  *(void **) (&udev_device_new_from_environment_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_environment");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_parent
-  *(void **) (&udev_device_get_parent_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_parent");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_parent_with_subsystem_devtype
-  *(void **) (&udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_parent_with_subsystem_devtype");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_devpath
-  *(void **) (&udev_device_get_devpath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devpath");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_subsystem
-  *(void **) (&udev_device_get_subsystem_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_subsystem");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_devtype
-  *(void **) (&udev_device_get_devtype_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devtype");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_syspath
-  *(void **) (&udev_device_get_syspath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_syspath");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_sysname
-  *(void **) (&udev_device_get_sysname_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysname");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_sysnum
-  *(void **) (&udev_device_get_sysnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysnum");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_devnode
-  *(void **) (&udev_device_get_devnode_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devnode");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_is_initialized
-  *(void **) (&udev_device_get_is_initialized_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_is_initialized");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_devlinks_list_entry
-  *(void **) (&udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devlinks_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_properties_list_entry
-  *(void **) (&udev_device_get_properties_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_properties_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_tags_list_entry
-  *(void **) (&udev_device_get_tags_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_tags_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_sysattr_list_entry
-  *(void **) (&udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysattr_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_property_value
-  *(void **) (&udev_device_get_property_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_property_value");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_driver
-  *(void **) (&udev_device_get_driver_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_driver");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_devnum
-  *(void **) (&udev_device_get_devnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devnum");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_action
-  *(void **) (&udev_device_get_action_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_action");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_seqnum
-  *(void **) (&udev_device_get_seqnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_seqnum");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_usec_since_initialized
-  *(void **) (&udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_usec_since_initialized");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_get_sysattr_value
-  *(void **) (&udev_device_get_sysattr_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysattr_value");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_set_sysattr_value
-  *(void **) (&udev_device_set_sysattr_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_set_sysattr_value");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_device_has_tag
-  *(void **) (&udev_device_has_tag_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_has_tag");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_ref
-  *(void **) (&udev_monitor_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_ref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_unref
-  *(void **) (&udev_monitor_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_unref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_get_udev
-  *(void **) (&udev_monitor_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_get_udev");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_new_from_netlink
-  *(void **) (&udev_monitor_new_from_netlink_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_new_from_netlink");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_enable_receiving
-  *(void **) (&udev_monitor_enable_receiving_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_enable_receiving");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_set_receive_buffer_size
-  *(void **) (&udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_set_receive_buffer_size");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_get_fd
-  *(void **) (&udev_monitor_get_fd_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_get_fd");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_receive_device
-  *(void **) (&udev_monitor_receive_device_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_receive_device");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_filter_add_match_subsystem_devtype
-  *(void **) (&udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_add_match_subsystem_devtype");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_filter_add_match_tag
-  *(void **) (&udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_add_match_tag");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_filter_update
-  *(void **) (&udev_monitor_filter_update_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_update");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_monitor_filter_remove
-  *(void **) (&udev_monitor_filter_remove_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_remove");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_ref
-  *(void **) (&udev_enumerate_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_ref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_unref
-  *(void **) (&udev_enumerate_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_unref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_get_udev
-  *(void **) (&udev_enumerate_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_get_udev");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_new
-  *(void **) (&udev_enumerate_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_new");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_subsystem
-  *(void **) (&udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_subsystem");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_nomatch_subsystem
-  *(void **) (&udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_nomatch_subsystem");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_sysattr
-  *(void **) (&udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_sysattr");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_nomatch_sysattr
-  *(void **) (&udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_nomatch_sysattr");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_property
-  *(void **) (&udev_enumerate_add_match_property_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_property");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_sysname
-  *(void **) (&udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_sysname");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_tag
-  *(void **) (&udev_enumerate_add_match_tag_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_tag");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_parent
-  *(void **) (&udev_enumerate_add_match_parent_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_parent");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_match_is_initialized
-  *(void **) (&udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_is_initialized");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_add_syspath
-  *(void **) (&udev_enumerate_add_syspath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_syspath");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_scan_devices
-  *(void **) (&udev_enumerate_scan_devices_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_scan_devices");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_scan_subsystems
-  *(void **) (&udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_scan_subsystems");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_enumerate_get_list_entry
-  *(void **) (&udev_enumerate_get_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_get_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_ref
-  *(void **) (&udev_queue_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_ref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_unref
-  *(void **) (&udev_queue_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_unref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_udev
-  *(void **) (&udev_queue_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_udev");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_new
-  *(void **) (&udev_queue_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_new");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_kernel_seqnum
-  *(void **) (&udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_kernel_seqnum");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_udev_seqnum
-  *(void **) (&udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_udev_seqnum");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_udev_is_active
-  *(void **) (&udev_queue_get_udev_is_active_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_udev_is_active");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_queue_is_empty
-  *(void **) (&udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_queue_is_empty");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_seqnum_is_finished
-  *(void **) (&udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_seqnum_is_finished");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_seqnum_sequence_is_finished
-  *(void **) (&udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_seqnum_sequence_is_finished");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_fd
-  *(void **) (&udev_queue_get_fd_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_fd");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_flush
-  *(void **) (&udev_queue_flush_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_flush");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_queue_get_queued_list_entry
-  *(void **) (&udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_queued_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_hwdb_new
-  *(void **) (&udev_hwdb_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_new");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_hwdb_ref
-  *(void **) (&udev_hwdb_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_ref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_hwdb_unref
-  *(void **) (&udev_hwdb_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_unref");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_hwdb_get_properties_list_entry
-  *(void **) (&udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_get_properties_list_entry");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-// udev_util_encode_string
-  *(void **) (&udev_util_encode_string_dylibloader_wrapper_libudev) = dlsym(handle, "udev_util_encode_string");
-  if (verbose) {
-    error = dlerror();
-    if (error != NULL) {
-      fprintf(stderr, "%s\n", error);
-    }
-  }
-return 0;
-}

+ 0 - 378
platform/linuxbsd/libudev-so_wrap.h

@@ -1,378 +0,0 @@
-#ifndef DYLIBLOAD_WRAPPER_LIBUDEV
-#define DYLIBLOAD_WRAPPER_LIBUDEV
-// This file is generated. Do not edit!
-// see https://github.com/hpvb/dynload-wrapper for details
-// generated by generate-wrapper.py 0.3 on 2023-01-12 10:23:01
-// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/udev/libudev.h --sys-include "thirdparty/linuxbsd_headers/udev/libudev.h" --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header ./platform/linuxbsd/libudev-so_wrap.h --output-implementation ./platform/linuxbsd/libudev-so_wrap.c
-//
-#include <stdint.h>
-
-#define udev_ref udev_ref_dylibloader_orig_libudev
-#define udev_unref udev_unref_dylibloader_orig_libudev
-#define udev_new udev_new_dylibloader_orig_libudev
-#define udev_set_log_fn udev_set_log_fn_dylibloader_orig_libudev
-#define udev_get_log_priority udev_get_log_priority_dylibloader_orig_libudev
-#define udev_set_log_priority udev_set_log_priority_dylibloader_orig_libudev
-#define udev_get_userdata udev_get_userdata_dylibloader_orig_libudev
-#define udev_set_userdata udev_set_userdata_dylibloader_orig_libudev
-#define udev_list_entry_get_next udev_list_entry_get_next_dylibloader_orig_libudev
-#define udev_list_entry_get_by_name udev_list_entry_get_by_name_dylibloader_orig_libudev
-#define udev_list_entry_get_name udev_list_entry_get_name_dylibloader_orig_libudev
-#define udev_list_entry_get_value udev_list_entry_get_value_dylibloader_orig_libudev
-#define udev_device_ref udev_device_ref_dylibloader_orig_libudev
-#define udev_device_unref udev_device_unref_dylibloader_orig_libudev
-#define udev_device_get_udev udev_device_get_udev_dylibloader_orig_libudev
-#define udev_device_new_from_syspath udev_device_new_from_syspath_dylibloader_orig_libudev
-#define udev_device_new_from_devnum udev_device_new_from_devnum_dylibloader_orig_libudev
-#define udev_device_new_from_subsystem_sysname udev_device_new_from_subsystem_sysname_dylibloader_orig_libudev
-#define udev_device_new_from_device_id udev_device_new_from_device_id_dylibloader_orig_libudev
-#define udev_device_new_from_environment udev_device_new_from_environment_dylibloader_orig_libudev
-#define udev_device_get_parent udev_device_get_parent_dylibloader_orig_libudev
-#define udev_device_get_parent_with_subsystem_devtype udev_device_get_parent_with_subsystem_devtype_dylibloader_orig_libudev
-#define udev_device_get_devpath udev_device_get_devpath_dylibloader_orig_libudev
-#define udev_device_get_subsystem udev_device_get_subsystem_dylibloader_orig_libudev
-#define udev_device_get_devtype udev_device_get_devtype_dylibloader_orig_libudev
-#define udev_device_get_syspath udev_device_get_syspath_dylibloader_orig_libudev
-#define udev_device_get_sysname udev_device_get_sysname_dylibloader_orig_libudev
-#define udev_device_get_sysnum udev_device_get_sysnum_dylibloader_orig_libudev
-#define udev_device_get_devnode udev_device_get_devnode_dylibloader_orig_libudev
-#define udev_device_get_is_initialized udev_device_get_is_initialized_dylibloader_orig_libudev
-#define udev_device_get_devlinks_list_entry udev_device_get_devlinks_list_entry_dylibloader_orig_libudev
-#define udev_device_get_properties_list_entry udev_device_get_properties_list_entry_dylibloader_orig_libudev
-#define udev_device_get_tags_list_entry udev_device_get_tags_list_entry_dylibloader_orig_libudev
-#define udev_device_get_sysattr_list_entry udev_device_get_sysattr_list_entry_dylibloader_orig_libudev
-#define udev_device_get_property_value udev_device_get_property_value_dylibloader_orig_libudev
-#define udev_device_get_driver udev_device_get_driver_dylibloader_orig_libudev
-#define udev_device_get_devnum udev_device_get_devnum_dylibloader_orig_libudev
-#define udev_device_get_action udev_device_get_action_dylibloader_orig_libudev
-#define udev_device_get_seqnum udev_device_get_seqnum_dylibloader_orig_libudev
-#define udev_device_get_usec_since_initialized udev_device_get_usec_since_initialized_dylibloader_orig_libudev
-#define udev_device_get_sysattr_value udev_device_get_sysattr_value_dylibloader_orig_libudev
-#define udev_device_set_sysattr_value udev_device_set_sysattr_value_dylibloader_orig_libudev
-#define udev_device_has_tag udev_device_has_tag_dylibloader_orig_libudev
-#define udev_monitor_ref udev_monitor_ref_dylibloader_orig_libudev
-#define udev_monitor_unref udev_monitor_unref_dylibloader_orig_libudev
-#define udev_monitor_get_udev udev_monitor_get_udev_dylibloader_orig_libudev
-#define udev_monitor_new_from_netlink udev_monitor_new_from_netlink_dylibloader_orig_libudev
-#define udev_monitor_enable_receiving udev_monitor_enable_receiving_dylibloader_orig_libudev
-#define udev_monitor_set_receive_buffer_size udev_monitor_set_receive_buffer_size_dylibloader_orig_libudev
-#define udev_monitor_get_fd udev_monitor_get_fd_dylibloader_orig_libudev
-#define udev_monitor_receive_device udev_monitor_receive_device_dylibloader_orig_libudev
-#define udev_monitor_filter_add_match_subsystem_devtype udev_monitor_filter_add_match_subsystem_devtype_dylibloader_orig_libudev
-#define udev_monitor_filter_add_match_tag udev_monitor_filter_add_match_tag_dylibloader_orig_libudev
-#define udev_monitor_filter_update udev_monitor_filter_update_dylibloader_orig_libudev
-#define udev_monitor_filter_remove udev_monitor_filter_remove_dylibloader_orig_libudev
-#define udev_enumerate_ref udev_enumerate_ref_dylibloader_orig_libudev
-#define udev_enumerate_unref udev_enumerate_unref_dylibloader_orig_libudev
-#define udev_enumerate_get_udev udev_enumerate_get_udev_dylibloader_orig_libudev
-#define udev_enumerate_new udev_enumerate_new_dylibloader_orig_libudev
-#define udev_enumerate_add_match_subsystem udev_enumerate_add_match_subsystem_dylibloader_orig_libudev
-#define udev_enumerate_add_nomatch_subsystem udev_enumerate_add_nomatch_subsystem_dylibloader_orig_libudev
-#define udev_enumerate_add_match_sysattr udev_enumerate_add_match_sysattr_dylibloader_orig_libudev
-#define udev_enumerate_add_nomatch_sysattr udev_enumerate_add_nomatch_sysattr_dylibloader_orig_libudev
-#define udev_enumerate_add_match_property udev_enumerate_add_match_property_dylibloader_orig_libudev
-#define udev_enumerate_add_match_sysname udev_enumerate_add_match_sysname_dylibloader_orig_libudev
-#define udev_enumerate_add_match_tag udev_enumerate_add_match_tag_dylibloader_orig_libudev
-#define udev_enumerate_add_match_parent udev_enumerate_add_match_parent_dylibloader_orig_libudev
-#define udev_enumerate_add_match_is_initialized udev_enumerate_add_match_is_initialized_dylibloader_orig_libudev
-#define udev_enumerate_add_syspath udev_enumerate_add_syspath_dylibloader_orig_libudev
-#define udev_enumerate_scan_devices udev_enumerate_scan_devices_dylibloader_orig_libudev
-#define udev_enumerate_scan_subsystems udev_enumerate_scan_subsystems_dylibloader_orig_libudev
-#define udev_enumerate_get_list_entry udev_enumerate_get_list_entry_dylibloader_orig_libudev
-#define udev_queue_ref udev_queue_ref_dylibloader_orig_libudev
-#define udev_queue_unref udev_queue_unref_dylibloader_orig_libudev
-#define udev_queue_get_udev udev_queue_get_udev_dylibloader_orig_libudev
-#define udev_queue_new udev_queue_new_dylibloader_orig_libudev
-#define udev_queue_get_kernel_seqnum udev_queue_get_kernel_seqnum_dylibloader_orig_libudev
-#define udev_queue_get_udev_seqnum udev_queue_get_udev_seqnum_dylibloader_orig_libudev
-#define udev_queue_get_udev_is_active udev_queue_get_udev_is_active_dylibloader_orig_libudev
-#define udev_queue_get_queue_is_empty udev_queue_get_queue_is_empty_dylibloader_orig_libudev
-#define udev_queue_get_seqnum_is_finished udev_queue_get_seqnum_is_finished_dylibloader_orig_libudev
-#define udev_queue_get_seqnum_sequence_is_finished udev_queue_get_seqnum_sequence_is_finished_dylibloader_orig_libudev
-#define udev_queue_get_fd udev_queue_get_fd_dylibloader_orig_libudev
-#define udev_queue_flush udev_queue_flush_dylibloader_orig_libudev
-#define udev_queue_get_queued_list_entry udev_queue_get_queued_list_entry_dylibloader_orig_libudev
-#define udev_hwdb_new udev_hwdb_new_dylibloader_orig_libudev
-#define udev_hwdb_ref udev_hwdb_ref_dylibloader_orig_libudev
-#define udev_hwdb_unref udev_hwdb_unref_dylibloader_orig_libudev
-#define udev_hwdb_get_properties_list_entry udev_hwdb_get_properties_list_entry_dylibloader_orig_libudev
-#define udev_util_encode_string udev_util_encode_string_dylibloader_orig_libudev
-#include "thirdparty/linuxbsd_headers/udev/libudev.h"
-#undef udev_ref
-#undef udev_unref
-#undef udev_new
-#undef udev_set_log_fn
-#undef udev_get_log_priority
-#undef udev_set_log_priority
-#undef udev_get_userdata
-#undef udev_set_userdata
-#undef udev_list_entry_get_next
-#undef udev_list_entry_get_by_name
-#undef udev_list_entry_get_name
-#undef udev_list_entry_get_value
-#undef udev_device_ref
-#undef udev_device_unref
-#undef udev_device_get_udev
-#undef udev_device_new_from_syspath
-#undef udev_device_new_from_devnum
-#undef udev_device_new_from_subsystem_sysname
-#undef udev_device_new_from_device_id
-#undef udev_device_new_from_environment
-#undef udev_device_get_parent
-#undef udev_device_get_parent_with_subsystem_devtype
-#undef udev_device_get_devpath
-#undef udev_device_get_subsystem
-#undef udev_device_get_devtype
-#undef udev_device_get_syspath
-#undef udev_device_get_sysname
-#undef udev_device_get_sysnum
-#undef udev_device_get_devnode
-#undef udev_device_get_is_initialized
-#undef udev_device_get_devlinks_list_entry
-#undef udev_device_get_properties_list_entry
-#undef udev_device_get_tags_list_entry
-#undef udev_device_get_sysattr_list_entry
-#undef udev_device_get_property_value
-#undef udev_device_get_driver
-#undef udev_device_get_devnum
-#undef udev_device_get_action
-#undef udev_device_get_seqnum
-#undef udev_device_get_usec_since_initialized
-#undef udev_device_get_sysattr_value
-#undef udev_device_set_sysattr_value
-#undef udev_device_has_tag
-#undef udev_monitor_ref
-#undef udev_monitor_unref
-#undef udev_monitor_get_udev
-#undef udev_monitor_new_from_netlink
-#undef udev_monitor_enable_receiving
-#undef udev_monitor_set_receive_buffer_size
-#undef udev_monitor_get_fd
-#undef udev_monitor_receive_device
-#undef udev_monitor_filter_add_match_subsystem_devtype
-#undef udev_monitor_filter_add_match_tag
-#undef udev_monitor_filter_update
-#undef udev_monitor_filter_remove
-#undef udev_enumerate_ref
-#undef udev_enumerate_unref
-#undef udev_enumerate_get_udev
-#undef udev_enumerate_new
-#undef udev_enumerate_add_match_subsystem
-#undef udev_enumerate_add_nomatch_subsystem
-#undef udev_enumerate_add_match_sysattr
-#undef udev_enumerate_add_nomatch_sysattr
-#undef udev_enumerate_add_match_property
-#undef udev_enumerate_add_match_sysname
-#undef udev_enumerate_add_match_tag
-#undef udev_enumerate_add_match_parent
-#undef udev_enumerate_add_match_is_initialized
-#undef udev_enumerate_add_syspath
-#undef udev_enumerate_scan_devices
-#undef udev_enumerate_scan_subsystems
-#undef udev_enumerate_get_list_entry
-#undef udev_queue_ref
-#undef udev_queue_unref
-#undef udev_queue_get_udev
-#undef udev_queue_new
-#undef udev_queue_get_kernel_seqnum
-#undef udev_queue_get_udev_seqnum
-#undef udev_queue_get_udev_is_active
-#undef udev_queue_get_queue_is_empty
-#undef udev_queue_get_seqnum_is_finished
-#undef udev_queue_get_seqnum_sequence_is_finished
-#undef udev_queue_get_fd
-#undef udev_queue_flush
-#undef udev_queue_get_queued_list_entry
-#undef udev_hwdb_new
-#undef udev_hwdb_ref
-#undef udev_hwdb_unref
-#undef udev_hwdb_get_properties_list_entry
-#undef udev_util_encode_string
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define udev_ref udev_ref_dylibloader_wrapper_libudev
-#define udev_unref udev_unref_dylibloader_wrapper_libudev
-#define udev_new udev_new_dylibloader_wrapper_libudev
-#define udev_set_log_fn udev_set_log_fn_dylibloader_wrapper_libudev
-#define udev_get_log_priority udev_get_log_priority_dylibloader_wrapper_libudev
-#define udev_set_log_priority udev_set_log_priority_dylibloader_wrapper_libudev
-#define udev_get_userdata udev_get_userdata_dylibloader_wrapper_libudev
-#define udev_set_userdata udev_set_userdata_dylibloader_wrapper_libudev
-#define udev_list_entry_get_next udev_list_entry_get_next_dylibloader_wrapper_libudev
-#define udev_list_entry_get_by_name udev_list_entry_get_by_name_dylibloader_wrapper_libudev
-#define udev_list_entry_get_name udev_list_entry_get_name_dylibloader_wrapper_libudev
-#define udev_list_entry_get_value udev_list_entry_get_value_dylibloader_wrapper_libudev
-#define udev_device_ref udev_device_ref_dylibloader_wrapper_libudev
-#define udev_device_unref udev_device_unref_dylibloader_wrapper_libudev
-#define udev_device_get_udev udev_device_get_udev_dylibloader_wrapper_libudev
-#define udev_device_new_from_syspath udev_device_new_from_syspath_dylibloader_wrapper_libudev
-#define udev_device_new_from_devnum udev_device_new_from_devnum_dylibloader_wrapper_libudev
-#define udev_device_new_from_subsystem_sysname udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev
-#define udev_device_new_from_device_id udev_device_new_from_device_id_dylibloader_wrapper_libudev
-#define udev_device_new_from_environment udev_device_new_from_environment_dylibloader_wrapper_libudev
-#define udev_device_get_parent udev_device_get_parent_dylibloader_wrapper_libudev
-#define udev_device_get_parent_with_subsystem_devtype udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev
-#define udev_device_get_devpath udev_device_get_devpath_dylibloader_wrapper_libudev
-#define udev_device_get_subsystem udev_device_get_subsystem_dylibloader_wrapper_libudev
-#define udev_device_get_devtype udev_device_get_devtype_dylibloader_wrapper_libudev
-#define udev_device_get_syspath udev_device_get_syspath_dylibloader_wrapper_libudev
-#define udev_device_get_sysname udev_device_get_sysname_dylibloader_wrapper_libudev
-#define udev_device_get_sysnum udev_device_get_sysnum_dylibloader_wrapper_libudev
-#define udev_device_get_devnode udev_device_get_devnode_dylibloader_wrapper_libudev
-#define udev_device_get_is_initialized udev_device_get_is_initialized_dylibloader_wrapper_libudev
-#define udev_device_get_devlinks_list_entry udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev
-#define udev_device_get_properties_list_entry udev_device_get_properties_list_entry_dylibloader_wrapper_libudev
-#define udev_device_get_tags_list_entry udev_device_get_tags_list_entry_dylibloader_wrapper_libudev
-#define udev_device_get_sysattr_list_entry udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev
-#define udev_device_get_property_value udev_device_get_property_value_dylibloader_wrapper_libudev
-#define udev_device_get_driver udev_device_get_driver_dylibloader_wrapper_libudev
-#define udev_device_get_devnum udev_device_get_devnum_dylibloader_wrapper_libudev
-#define udev_device_get_action udev_device_get_action_dylibloader_wrapper_libudev
-#define udev_device_get_seqnum udev_device_get_seqnum_dylibloader_wrapper_libudev
-#define udev_device_get_usec_since_initialized udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev
-#define udev_device_get_sysattr_value udev_device_get_sysattr_value_dylibloader_wrapper_libudev
-#define udev_device_set_sysattr_value udev_device_set_sysattr_value_dylibloader_wrapper_libudev
-#define udev_device_has_tag udev_device_has_tag_dylibloader_wrapper_libudev
-#define udev_monitor_ref udev_monitor_ref_dylibloader_wrapper_libudev
-#define udev_monitor_unref udev_monitor_unref_dylibloader_wrapper_libudev
-#define udev_monitor_get_udev udev_monitor_get_udev_dylibloader_wrapper_libudev
-#define udev_monitor_new_from_netlink udev_monitor_new_from_netlink_dylibloader_wrapper_libudev
-#define udev_monitor_enable_receiving udev_monitor_enable_receiving_dylibloader_wrapper_libudev
-#define udev_monitor_set_receive_buffer_size udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev
-#define udev_monitor_get_fd udev_monitor_get_fd_dylibloader_wrapper_libudev
-#define udev_monitor_receive_device udev_monitor_receive_device_dylibloader_wrapper_libudev
-#define udev_monitor_filter_add_match_subsystem_devtype udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev
-#define udev_monitor_filter_add_match_tag udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev
-#define udev_monitor_filter_update udev_monitor_filter_update_dylibloader_wrapper_libudev
-#define udev_monitor_filter_remove udev_monitor_filter_remove_dylibloader_wrapper_libudev
-#define udev_enumerate_ref udev_enumerate_ref_dylibloader_wrapper_libudev
-#define udev_enumerate_unref udev_enumerate_unref_dylibloader_wrapper_libudev
-#define udev_enumerate_get_udev udev_enumerate_get_udev_dylibloader_wrapper_libudev
-#define udev_enumerate_new udev_enumerate_new_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_subsystem udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev
-#define udev_enumerate_add_nomatch_subsystem udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_sysattr udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev
-#define udev_enumerate_add_nomatch_sysattr udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_property udev_enumerate_add_match_property_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_sysname udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_tag udev_enumerate_add_match_tag_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_parent udev_enumerate_add_match_parent_dylibloader_wrapper_libudev
-#define udev_enumerate_add_match_is_initialized udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev
-#define udev_enumerate_add_syspath udev_enumerate_add_syspath_dylibloader_wrapper_libudev
-#define udev_enumerate_scan_devices udev_enumerate_scan_devices_dylibloader_wrapper_libudev
-#define udev_enumerate_scan_subsystems udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev
-#define udev_enumerate_get_list_entry udev_enumerate_get_list_entry_dylibloader_wrapper_libudev
-#define udev_queue_ref udev_queue_ref_dylibloader_wrapper_libudev
-#define udev_queue_unref udev_queue_unref_dylibloader_wrapper_libudev
-#define udev_queue_get_udev udev_queue_get_udev_dylibloader_wrapper_libudev
-#define udev_queue_new udev_queue_new_dylibloader_wrapper_libudev
-#define udev_queue_get_kernel_seqnum udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev
-#define udev_queue_get_udev_seqnum udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev
-#define udev_queue_get_udev_is_active udev_queue_get_udev_is_active_dylibloader_wrapper_libudev
-#define udev_queue_get_queue_is_empty udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev
-#define udev_queue_get_seqnum_is_finished udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev
-#define udev_queue_get_seqnum_sequence_is_finished udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev
-#define udev_queue_get_fd udev_queue_get_fd_dylibloader_wrapper_libudev
-#define udev_queue_flush udev_queue_flush_dylibloader_wrapper_libudev
-#define udev_queue_get_queued_list_entry udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev
-#define udev_hwdb_new udev_hwdb_new_dylibloader_wrapper_libudev
-#define udev_hwdb_ref udev_hwdb_ref_dylibloader_wrapper_libudev
-#define udev_hwdb_unref udev_hwdb_unref_dylibloader_wrapper_libudev
-#define udev_hwdb_get_properties_list_entry udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev
-#define udev_util_encode_string udev_util_encode_string_dylibloader_wrapper_libudev
-extern struct udev* (*udev_ref_dylibloader_wrapper_libudev)(struct udev*);
-extern struct udev* (*udev_unref_dylibloader_wrapper_libudev)(struct udev*);
-extern struct udev* (*udev_new_dylibloader_wrapper_libudev)( void);
-extern void (*udev_set_log_fn_dylibloader_wrapper_libudev)(struct udev*, void*);
-extern int (*udev_get_log_priority_dylibloader_wrapper_libudev)(struct udev*);
-extern void (*udev_set_log_priority_dylibloader_wrapper_libudev)(struct udev*, int);
-extern void* (*udev_get_userdata_dylibloader_wrapper_libudev)(struct udev*);
-extern void (*udev_set_userdata_dylibloader_wrapper_libudev)(struct udev*, void*);
-extern struct udev_list_entry* (*udev_list_entry_get_next_dylibloader_wrapper_libudev)(struct udev_list_entry*);
-extern struct udev_list_entry* (*udev_list_entry_get_by_name_dylibloader_wrapper_libudev)(struct udev_list_entry*,const char*);
-extern const char* (*udev_list_entry_get_name_dylibloader_wrapper_libudev)(struct udev_list_entry*);
-extern const char* (*udev_list_entry_get_value_dylibloader_wrapper_libudev)(struct udev_list_entry*);
-extern struct udev_device* (*udev_device_ref_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_device* (*udev_device_unref_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev* (*udev_device_get_udev_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_device* (*udev_device_new_from_syspath_dylibloader_wrapper_libudev)(struct udev*,const char*);
-extern struct udev_device* (*udev_device_new_from_devnum_dylibloader_wrapper_libudev)(struct udev*, char, dev_t);
-extern struct udev_device* (*udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev)(struct udev*,const char*,const char*);
-extern struct udev_device* (*udev_device_new_from_device_id_dylibloader_wrapper_libudev)(struct udev*,const char*);
-extern struct udev_device* (*udev_device_new_from_environment_dylibloader_wrapper_libudev)(struct udev*);
-extern struct udev_device* (*udev_device_get_parent_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_device* (*udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_device*,const char*,const char*);
-extern const char* (*udev_device_get_devpath_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_subsystem_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_devtype_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_syspath_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_sysname_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_sysnum_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_devnode_dylibloader_wrapper_libudev)(struct udev_device*);
-extern int (*udev_device_get_is_initialized_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_list_entry* (*udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_list_entry* (*udev_device_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_list_entry* (*udev_device_get_tags_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-extern struct udev_list_entry* (*udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_property_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*);
-extern const char* (*udev_device_get_driver_dylibloader_wrapper_libudev)(struct udev_device*);
-extern dev_t (*udev_device_get_devnum_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_action_dylibloader_wrapper_libudev)(struct udev_device*);
-extern unsigned long long int (*udev_device_get_seqnum_dylibloader_wrapper_libudev)(struct udev_device*);
-extern unsigned long long int (*udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev)(struct udev_device*);
-extern const char* (*udev_device_get_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*);
-extern int (*udev_device_set_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*, char*);
-extern int (*udev_device_has_tag_dylibloader_wrapper_libudev)(struct udev_device*,const char*);
-extern struct udev_monitor* (*udev_monitor_ref_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern struct udev_monitor* (*udev_monitor_unref_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern struct udev* (*udev_monitor_get_udev_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern struct udev_monitor* (*udev_monitor_new_from_netlink_dylibloader_wrapper_libudev)(struct udev*,const char*);
-extern int (*udev_monitor_enable_receiving_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern int (*udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev)(struct udev_monitor*, int);
-extern int (*udev_monitor_get_fd_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern struct udev_device* (*udev_monitor_receive_device_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern int (*udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*,const char*);
-extern int (*udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*);
-extern int (*udev_monitor_filter_update_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern int (*udev_monitor_filter_remove_dylibloader_wrapper_libudev)(struct udev_monitor*);
-extern struct udev_enumerate* (*udev_enumerate_ref_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern struct udev_enumerate* (*udev_enumerate_unref_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern struct udev* (*udev_enumerate_get_udev_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern struct udev_enumerate* (*udev_enumerate_new_dylibloader_wrapper_libudev)(struct udev*);
-extern int (*udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-extern int (*udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-extern int (*udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*);
-extern int (*udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*);
-extern int (*udev_enumerate_add_match_property_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*);
-extern int (*udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-extern int (*udev_enumerate_add_match_tag_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-extern int (*udev_enumerate_add_match_parent_dylibloader_wrapper_libudev)(struct udev_enumerate*,struct udev_device*);
-extern int (*udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern int (*udev_enumerate_add_syspath_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*);
-extern int (*udev_enumerate_scan_devices_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern int (*udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern struct udev_list_entry* (*udev_enumerate_get_list_entry_dylibloader_wrapper_libudev)(struct udev_enumerate*);
-extern struct udev_queue* (*udev_queue_ref_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern struct udev_queue* (*udev_queue_unref_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern struct udev* (*udev_queue_get_udev_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern struct udev_queue* (*udev_queue_new_dylibloader_wrapper_libudev)(struct udev*);
-extern unsigned long long int (*udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern unsigned long long int (*udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern int (*udev_queue_get_udev_is_active_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern int (*udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern int (*udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int);
-extern int (*udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int, unsigned long long int);
-extern int (*udev_queue_get_fd_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern int (*udev_queue_flush_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern struct udev_list_entry* (*udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev)(struct udev_queue*);
-extern struct udev_hwdb* (*udev_hwdb_new_dylibloader_wrapper_libudev)(struct udev*);
-extern struct udev_hwdb* (*udev_hwdb_ref_dylibloader_wrapper_libudev)(struct udev_hwdb*);
-extern struct udev_hwdb* (*udev_hwdb_unref_dylibloader_wrapper_libudev)(struct udev_hwdb*);
-extern struct udev_list_entry* (*udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_hwdb*,const char*, unsigned int);
-extern int (*udev_util_encode_string_dylibloader_wrapper_libudev)(const char*, char*, size_t);
-int initialize_libudev(int verbose);
-#ifdef __cplusplus
-}
-#endif
-#endif

+ 1 - 0
thirdparty/README.md

@@ -971,6 +971,7 @@ Patches:
 - `0002-msvc-constants-fpstrict.patch` (GH-106218)
 - `0003-std-include.patch` (GH-108144)
 - `0004-errno-include.patch` (GH-108354)
+- `0005-fix-libudev-dbus.patch` (GH-108373)
 
 The SDL source code folder includes `hidapi` library inside of folder `thirdparty/sdl/hidapi/`.
 Its version and license is described in this file under `hidapi`.

+ 6 - 0
thirdparty/sdl/core/linux/SDL_dbus.c

@@ -97,15 +97,18 @@ static bool LoadDBUSSyms(void)
 
 static void UnloadDBUSLibrary(void)
 {
+#ifdef SOWRAP_ENABLED // Godot build system constant
     if (dbus_handle) {
         SDL_UnloadObject(dbus_handle);
         dbus_handle = NULL;
     }
+#endif
 }
 
 static bool LoadDBUSLibrary(void)
 {
     bool result = true;
+#ifdef SOWRAP_ENABLED // Godot build system constant
     if (!dbus_handle) {
         dbus_handle = SDL_LoadObject(dbus_library);
         if (!dbus_handle) {
@@ -118,6 +121,9 @@ static bool LoadDBUSLibrary(void)
             }
         }
     }
+#else
+    result = LoadDBUSSyms();
+#endif
     return result;
 }
 

+ 2 - 1
thirdparty/sdl/core/linux/SDL_udev.c

@@ -38,7 +38,8 @@
 
 static const char *SDL_UDEV_LIBS[] = { "libudev.so.1", "libudev.so.0" };
 
-static SDL_UDEV_PrivateData *_this = NULL;
+SDL_UDEV_PrivateData *SDL_UDEV_PrivateData_this = NULL;
+#define _this SDL_UDEV_PrivateData_this
 
 static bool SDL_UDEV_load_sym(const char *fn, void **addr);
 static bool SDL_UDEV_load_syms(void);

+ 2 - 1
thirdparty/sdl/core/linux/SDL_udev.h

@@ -30,7 +30,8 @@
 #define SDL_USE_LIBUDEV 1
 #endif
 
-#include <libudev.h>
+//#include <libudev.h>
+#include "thirdparty/linuxbsd_headers/udev/libudev.h"
 #include <sys/time.h>
 #include <sys/types.h>
 

+ 31 - 1
thirdparty/sdl/hidapi/linux/hid.c

@@ -40,7 +40,37 @@
 #include <linux/hidraw.h>
 #include <linux/version.h>
 #include <linux/input.h>
-#include <libudev.h>
+//#include <libudev.h>
+#include "SDL_udev.h"
+extern SDL_UDEV_PrivateData *SDL_UDEV_PrivateData_this;
+#define udev_device_get_action (SDL_UDEV_PrivateData_this->syms.udev_device_get_action)
+#define udev_device_get_devnode (SDL_UDEV_PrivateData_this->syms.udev_device_get_devnode)
+#define udev_device_get_syspath (SDL_UDEV_PrivateData_this->syms.udev_device_get_syspath)
+#define udev_device_get_subsystem (SDL_UDEV_PrivateData_this->syms.udev_device_get_subsystem)
+#define udev_device_get_parent_with_subsystem_devtype (SDL_UDEV_PrivateData_this->syms.udev_device_get_parent_with_subsystem_devtype)
+#define udev_device_get_property_value (SDL_UDEV_PrivateData_this->syms.udev_device_get_property_value)
+#define udev_device_get_sysattr_value (SDL_UDEV_PrivateData_this->syms.udev_device_get_sysattr_value)
+#define udev_device_new_from_syspath (SDL_UDEV_PrivateData_this->syms.udev_device_new_from_syspath)
+#define udev_device_unref (SDL_UDEV_PrivateData_this->syms.udev_device_unref)
+#define udev_enumerate_add_match_property (SDL_UDEV_PrivateData_this->syms.udev_enumerate_add_match_property)
+#define udev_enumerate_add_match_subsystem (SDL_UDEV_PrivateData_this->syms.udev_enumerate_add_match_subsystem)
+#define udev_enumerate_get_list_entry (SDL_UDEV_PrivateData_this->syms.udev_enumerate_get_list_entry)
+#define udev_enumerate_new (SDL_UDEV_PrivateData_this->syms.udev_enumerate_new)
+#define udev_enumerate_scan_devices (SDL_UDEV_PrivateData_this->syms.udev_enumerate_scan_devices)
+#define udev_enumerate_unref (SDL_UDEV_PrivateData_this->syms.udev_enumerate_unref)
+#define udev_list_entry_get_name (SDL_UDEV_PrivateData_this->syms.udev_list_entry_get_name)
+#define udev_list_entry_get_next (SDL_UDEV_PrivateData_this->syms.udev_list_entry_get_next)
+#define udev_monitor_enable_receiving (SDL_UDEV_PrivateData_this->syms.udev_monitor_enable_receiving)
+#define udev_monitor_filter_add_match_subsystem_devtype (SDL_UDEV_PrivateData_this->syms.udev_monitor_filter_add_match_subsystem_devtype)
+#define udev_monitor_get_fd (SDL_UDEV_PrivateData_this->syms.udev_monitor_get_fd)
+#define udev_monitor_new_from_netlink (SDL_UDEV_PrivateData_this->syms.udev_monitor_new_from_netlink)
+#define udev_monitor_receive_device (SDL_UDEV_PrivateData_this->syms.udev_monitor_receive_device)
+#define udev_monitor_unref (SDL_UDEV_PrivateData_this->syms.udev_monitor_unref)
+#define udev_new (SDL_UDEV_PrivateData_this->syms.udev_new)
+#define udev_unref (SDL_UDEV_PrivateData_this->syms.udev_unref)
+#define udev_device_new_from_devnum (SDL_UDEV_PrivateData_this->syms.udev_device_new_from_devnum)
+#define udev_device_get_devnum (SDL_UDEV_PrivateData_this->syms.udev_device_get_devnum)
+#undef SDL_UDEV_SYM
 
 #include "../hidapi/hidapi.h"
 

+ 2 - 2
thirdparty/sdl/loadso/dlopen/SDL_sysloadso.c

@@ -65,8 +65,8 @@ SDL_FunctionPointer SDL_LoadFunction(SDL_SharedObject *handle, const char *name)
         symbol = dlsym(handle, _name);
         SDL_small_free(_name, isstack);
         if (!symbol) {
-            SDL_SetError("Failed loading %s: %s", name,
-                         (const char *)dlerror());
+            //SDL_SetError("Failed loading %s: %s", name,
+            //             (const char *)dlerror());
         }
     }
     return symbol;

+ 119 - 0
thirdparty/sdl/patches/0005-fix-libudev-dbus.patch

@@ -0,0 +1,119 @@
+diff --git a/thirdparty/sdl/core/linux/SDL_dbus.c b/thirdparty/sdl/core/linux/SDL_dbus.c
+index 9a2fc1ea531..9dc5c266732 100644
+--- a/thirdparty/sdl/core/linux/SDL_dbus.c
++++ b/thirdparty/sdl/core/linux/SDL_dbus.c
+@@ -97,15 +97,18 @@ static bool LoadDBUSSyms(void)
+ 
+ static void UnloadDBUSLibrary(void)
+ {
++#ifdef SOWRAP_ENABLED // Godot build system constant
+     if (dbus_handle) {
+         SDL_UnloadObject(dbus_handle);
+         dbus_handle = NULL;
+     }
++#endif
+ }
+ 
+ static bool LoadDBUSLibrary(void)
+ {
+     bool result = true;
++#ifdef SOWRAP_ENABLED // Godot build system constant
+     if (!dbus_handle) {
+         dbus_handle = SDL_LoadObject(dbus_library);
+         if (!dbus_handle) {
+@@ -118,6 +121,9 @@ static bool LoadDBUSLibrary(void)
+             }
+         }
+     }
++#else
++    result = LoadDBUSSyms();
++#endif
+     return result;
+ }
+ 
+diff --git a/thirdparty/sdl/core/linux/SDL_udev.c b/thirdparty/sdl/core/linux/SDL_udev.c
+index 907c34c7f66..fbf2ff04440 100644
+--- a/thirdparty/sdl/core/linux/SDL_udev.c
++++ b/thirdparty/sdl/core/linux/SDL_udev.c
+@@ -38,7 +38,8 @@
+ 
+ static const char *SDL_UDEV_LIBS[] = { "libudev.so.1", "libudev.so.0" };
+ 
+-static SDL_UDEV_PrivateData *_this = NULL;
++SDL_UDEV_PrivateData *SDL_UDEV_PrivateData_this = NULL;
++#define _this SDL_UDEV_PrivateData_this
+ 
+ static bool SDL_UDEV_load_sym(const char *fn, void **addr);
+ static bool SDL_UDEV_load_syms(void);
+diff --git a/thirdparty/sdl/core/linux/SDL_udev.h b/thirdparty/sdl/core/linux/SDL_udev.h
+index 738f4bafe3f..50bed36248e 100644
+--- a/thirdparty/sdl/core/linux/SDL_udev.h
++++ b/thirdparty/sdl/core/linux/SDL_udev.h
+@@ -30,7 +30,8 @@
+ #define SDL_USE_LIBUDEV 1
+ #endif
+ 
+-#include <libudev.h>
++//#include <libudev.h>
++#include "thirdparty/linuxbsd_headers/udev/libudev.h"
+ #include <sys/time.h>
+ #include <sys/types.h>
+ 
+diff --git a/thirdparty/sdl/hidapi/linux/hid.c b/thirdparty/sdl/hidapi/linux/hid.c
+index dbbb3277854..51a32ef892f 100644
+--- a/thirdparty/sdl/hidapi/linux/hid.c
++++ b/thirdparty/sdl/hidapi/linux/hid.c
+@@ -40,7 +40,37 @@
+ #include <linux/hidraw.h>
+ #include <linux/version.h>
+ #include <linux/input.h>
+-#include <libudev.h>
++//#include <libudev.h>
++#include "SDL_udev.h"
++extern SDL_UDEV_PrivateData *SDL_UDEV_PrivateData_this;
++#define udev_device_get_action (SDL_UDEV_PrivateData_this->syms.udev_device_get_action)
++#define udev_device_get_devnode (SDL_UDEV_PrivateData_this->syms.udev_device_get_devnode)
++#define udev_device_get_syspath (SDL_UDEV_PrivateData_this->syms.udev_device_get_syspath)
++#define udev_device_get_subsystem (SDL_UDEV_PrivateData_this->syms.udev_device_get_subsystem)
++#define udev_device_get_parent_with_subsystem_devtype (SDL_UDEV_PrivateData_this->syms.udev_device_get_parent_with_subsystem_devtype)
++#define udev_device_get_property_value (SDL_UDEV_PrivateData_this->syms.udev_device_get_property_value)
++#define udev_device_get_sysattr_value (SDL_UDEV_PrivateData_this->syms.udev_device_get_sysattr_value)
++#define udev_device_new_from_syspath (SDL_UDEV_PrivateData_this->syms.udev_device_new_from_syspath)
++#define udev_device_unref (SDL_UDEV_PrivateData_this->syms.udev_device_unref)
++#define udev_enumerate_add_match_property (SDL_UDEV_PrivateData_this->syms.udev_enumerate_add_match_property)
++#define udev_enumerate_add_match_subsystem (SDL_UDEV_PrivateData_this->syms.udev_enumerate_add_match_subsystem)
++#define udev_enumerate_get_list_entry (SDL_UDEV_PrivateData_this->syms.udev_enumerate_get_list_entry)
++#define udev_enumerate_new (SDL_UDEV_PrivateData_this->syms.udev_enumerate_new)
++#define udev_enumerate_scan_devices (SDL_UDEV_PrivateData_this->syms.udev_enumerate_scan_devices)
++#define udev_enumerate_unref (SDL_UDEV_PrivateData_this->syms.udev_enumerate_unref)
++#define udev_list_entry_get_name (SDL_UDEV_PrivateData_this->syms.udev_list_entry_get_name)
++#define udev_list_entry_get_next (SDL_UDEV_PrivateData_this->syms.udev_list_entry_get_next)
++#define udev_monitor_enable_receiving (SDL_UDEV_PrivateData_this->syms.udev_monitor_enable_receiving)
++#define udev_monitor_filter_add_match_subsystem_devtype (SDL_UDEV_PrivateData_this->syms.udev_monitor_filter_add_match_subsystem_devtype)
++#define udev_monitor_get_fd (SDL_UDEV_PrivateData_this->syms.udev_monitor_get_fd)
++#define udev_monitor_new_from_netlink (SDL_UDEV_PrivateData_this->syms.udev_monitor_new_from_netlink)
++#define udev_monitor_receive_device (SDL_UDEV_PrivateData_this->syms.udev_monitor_receive_device)
++#define udev_monitor_unref (SDL_UDEV_PrivateData_this->syms.udev_monitor_unref)
++#define udev_new (SDL_UDEV_PrivateData_this->syms.udev_new)
++#define udev_unref (SDL_UDEV_PrivateData_this->syms.udev_unref)
++#define udev_device_new_from_devnum (SDL_UDEV_PrivateData_this->syms.udev_device_new_from_devnum)
++#define udev_device_get_devnum (SDL_UDEV_PrivateData_this->syms.udev_device_get_devnum)
++#undef SDL_UDEV_SYM
+ 
+ #include "../hidapi/hidapi.h"
+ 
+diff --git a/thirdparty/sdl/loadso/dlopen/SDL_sysloadso.c b/thirdparty/sdl/loadso/dlopen/SDL_sysloadso.c
+index c84d1a1b5f9..e09c09080cd 100644
+--- a/thirdparty/sdl/loadso/dlopen/SDL_sysloadso.c
++++ b/thirdparty/sdl/loadso/dlopen/SDL_sysloadso.c
+@@ -65,8 +65,8 @@ SDL_FunctionPointer SDL_LoadFunction(SDL_SharedObject *handle, const char *name)
+         symbol = dlsym(handle, _name);
+         SDL_small_free(_name, isstack);
+         if (!symbol) {
+-            SDL_SetError("Failed loading %s: %s", name,
+-                         (const char *)dlerror());
++            //SDL_SetError("Failed loading %s: %s", name,
++            //             (const char *)dlerror());
+         }
+     }
+     return symbol;