Skip to content

introspection: Generate separate GIR files and documentation for platform specific APIs

Philip Withnall requested to merge pwithnall/glib:3037-split-platform-docs into main

For both GLib and GIO. (GObject, GIRepository and GModule don’t have any platform specific APIs.)

This is needed for two reasons:

  • If the same GIR file is shipped on multiple platforms, it has no way to conditionally define/not-define an API based on the platform (like an #ifdef in a C header). So we either end up shipping differing GIR APIs on different platforms, or shipping a GIR file which declares APIs which aren’t resolvable by dlopen() on certain platforms, and will cause a language runtime error.
  • The API reference documentation is now generated from the GIR, and similar problems are present there: if the GIR contains different symbols depending on the platform, there is no way to generate API documentation for the union of all of them.

The fix is to ensure that there are no conditional symbols in a GIR, by splitting out the platform specific symbols into platform specific GIR files. Platform specific documentation can then be generated from these, in addition to the main, platform agnostic, documentation.


docs: Split out platform specific GIO and GLib documentation

This creates GioUnix, GioWin32, GLibUnix and GLibWin32. These bodies of documentation are in addition to the main, platform agnostic, documentation for both libraries.

This commit necessarily includes various mechanical changes to update the repository namespace used in various existing documentation links to platform specific APIs.

Signed-off-by: Philip Withnall pwithnall@gnome.org

Helps: #3037 (closed)

Merge request reports