Files
RedBear-OS/local/recipes/libs/libudev-stub/recipe.toml
T
2026-04-14 10:51:06 +01:00

86 lines
3.8 KiB
TOML

#TODO: libudev stub — provides UDev::UDev cmake target for KWin linking
[source]
path = "source"
[build]
template = "custom"
script = """
DYNAMIC_INIT
mkdir -p "${COOKBOOK_STAGE}/usr/include"
mkdir -p "${COOKBOOK_STAGE}/usr/lib/cmake/UDev"
mkdir -p "${COOKBOOK_STAGE}/usr/lib/pkgconfig"
cat > "${COOKBOOK_STAGE}/usr/include/libudev.h" << 'EOF'
#pragma once
#include <sys/types.h>
void *udev_new(void) __attribute__((weak));
void udev_unref(void *udev) __attribute__((weak));
void *udev_enumerate_new(void *udev) __attribute__((weak));
void udev_enumerate_unref(void *udev_enumerate) __attribute__((weak));
int udev_enumerate_add_match_subsystem(void *udev_enumerate, const char *subsystem) __attribute__((weak));
int udev_enumerate_scan_devices(void *udev_enumerate) __attribute__((weak));
void *udev_enumerate_get_list_entry(void *udev_enumerate) __attribute__((weak));
void *udev_list_entry_get_next(void *list_entry) __attribute__((weak));
const char *udev_list_entry_get_name(void *list_entry) __attribute__((weak));
void *udev_device_new_from_syspath(void *udev, const char *syspath) __attribute__((weak));
void udev_device_unref(void *udev_device) __attribute__((weak));
const char *udev_device_get_devnode(void *udev_device) __attribute__((weak));
const char *udev_device_get_action(void *udev_device) __attribute__((weak));
void *udev_monitor_new_from_netlink(void *udev, const char *name) __attribute__((weak));
void udev_monitor_unref(void *udev_monitor) __attribute__((weak));
int udev_monitor_enable_receiving(void *udev_monitor) __attribute__((weak));
int udev_monitor_get_fd(void *udev_monitor) __attribute__((weak));
void *udev_monitor_receive_device(void *udev_monitor) __attribute__((weak));
int udev_monitor_filter_add_match_subsystem_devtype(void *udev_monitor, const char *subsystem, const char *devtype) __attribute__((weak));
EOF
cat > stub_udev.c << 'CEOF'
void *udev_new(void) { return 0; }
void udev_unref(void *u) { (void)u; }
void *udev_enumerate_new(void *u) { (void)u; return 0; }
void udev_enumerate_unref(void *e) { (void)e; }
int udev_enumerate_add_match_subsystem(void *e, const char *s) { (void)e; (void)s; return -1; }
int udev_enumerate_scan_devices(void *e) { (void)e; return 0; }
void *udev_enumerate_get_list_entry(void *e) { (void)e; return 0; }
void *udev_list_entry_get_next(void *l) { (void)l; return 0; }
const char *udev_list_entry_get_name(void *l) { (void)l; return 0; }
void *udev_device_new_from_syspath(void *u, const char *s) { (void)u; (void)s; return 0; }
void udev_device_unref(void *d) { (void)d; }
const char *udev_device_get_devnode(void *d) { (void)d; return 0; }
const char *udev_device_get_action(void *d) { (void)d; return 0; }
void *udev_monitor_new_from_netlink(void *u, const char *n) { (void)u; (void)n; return 0; }
void udev_monitor_unref(void *m) { (void)m; }
int udev_monitor_enable_receiving(void *m) { (void)m; return -1; }
int udev_monitor_get_fd(void *m) { (void)m; return -1; }
void *udev_monitor_receive_device(void *m) { (void)m; return 0; }
int udev_monitor_filter_add_match_subsystem_devtype(void *m, const char *s, const char *d) { (void)m; (void)s; (void)d; return -1; }
CEOF
x86_64-unknown-redox-gcc -shared -fPIC -o "${COOKBOOK_STAGE}/usr/lib/libudev.so" stub_udev.c
cat > "${COOKBOOK_STAGE}/usr/lib/cmake/UDev/UDevConfig.cmake" << 'EOF'
if(NOT TARGET UDev::UDev)
add_library(UDev::UDev SHARED IMPORTED)
set_target_properties(UDev::UDev PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/../../../lib/libudev.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/../../../include"
)
endif()
set(UDev_FOUND TRUE)
EOF
cat > "${COOKBOOK_STAGE}/usr/lib/pkgconfig/libudev.pc" << 'EOF'
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: libudev
Description: udev stub for Redox
Version: 1.0.0
Libs: -L${libdir} -ludev
Cflags: -I${includedir}
EOF
"""