Autogenerated FFI definitions for various GNOME libraries.
This repository contains the "sys" crates – FFI definitions intended for use in the actual bindings (e.g. gtk).
Each crate expects the development files of the respective library to be installed on the system.
The installed library version is detected via pkg-config
in the build
script, which controls conditional compilation so only the functions
availiable in that library version are visible.
For instance, if the gdk-sys
crate's build script detects libgdk3
version 3.12
, it sets a number of cfg
directives
gdk_3_4
, gdk_3_6
, ..., up togdk_3_12
.
Correspondingly, the definitions of functions introduced
in version x.y
carry #[cfg(gdk_x_y)]
attributes.
(The build script actually contains a complete list of the versions
it knows, 3.4
doesn't have any special meaning, it's just the first
in that list in that crate).
The build script passes that set of directives on to its dependencies, so
a depenendent crate's build script will see
env::var("DEP_GDK_CFG").unwrap() == "gdk_3_4 gdk_3_6 gdk_3_8 gdk_3_10 gdk_3_12"
> make
will build the generator in gir
and
generate the crates using specifications from conf
and
GIR definitions from gir-files
.
Currently gir-files
is populated from the
gnome-staging ppa.
Using a single set of GIR definitions for all platforms and versions
is considered good enough at this point.