1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

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
This commit is contained in:
Nintorch
2025-07-30 19:59:46 +05:00
parent 2a9ff39264
commit 0e19ad507e
13 changed files with 171 additions and 1406 deletions

View File

@@ -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"])

View File

@@ -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

View File

@@ -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")

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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`.

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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>

View File

@@ -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"

View File

@@ -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;

View File

@@ -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;