cf12defd28
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
86 lines
3.8 KiB
TOML
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
|
|
"""
|