Skip to content

Cross platform development wiki

b-aaz edited this page Sep 17, 2025 · 8 revisions

What is this?

This is a central hub for useful quick information about different platforms that XLibre runs on. If you are unsure whether to add something or make a change to this page, just talk about it.

FreeBSD

udev support:

Udev APIs are supported by a wrapper around devd.

Filesystem hierarchy. hier(7)

Prefix:

  • All 3rd party packages get installed to /usr/local/ (XLibre is a 3rd party package).
  • The 3rd party include and lib files are also installed in /usr/local/lib and /usr/local/include/.

APIs:

epoll

epoll is available on FreeBSD through libepoll-shim which is a wrapper around the native kqueue facilities.

IMPORTANT NOTE: The epoll.h header is located at /usr/local/libepoll-shim/sys/epoll.h, this means that the path /usr/local/libepoll-shim/ should be added to the compiler include search paths when using this header.

minor, major, makedev

These functions are included in <sys/types.h>..

DragonFlyBSD

APIs:

epoll

Same as FreeBSD above.

USB headers:

USB headers like usb.h, usbhid.c and ... are not in their usual location at <dev/usb/usb.h> but they are at <bus/u4b/usb.h>.

Build-systems:

Meson:

host_machine.system():

On DragonFlyBSD host_machine.system() returns 'dragonfly' not 'dragonflybsd' this means a naive check for BSDs like

if host_machine.system().endswith('bsd')

leaves DragonFlyBSD out.

Clone this wiki locally