Skip to content

Include LDFLAGS in gtkdoc-scangobj command line

When a library provides no way to find linker flags for linking with it, the build system usually depends on the user to necessary put -L flags in LDFLAGS environment variable in order to find it. However, GtkDoc module constructs the command line by itself, and it forgets to add LDFLAGS to the command line of gtkdoc-scangobj.

It is especially important to include LDFLAGS on non-GNU systems. For example, FreeBSD libc doesn't include a gettext implementation. GLib requires gettext, and it pulls in an external gettext runtime for it. However, gettext-runtime doesn't include a .pc file, so LDFLAGS is required if gettext-runtime isn't installed in the same prefix as GLib. Failing to include LDFLAGS in --ldflags passed to gtkdoc-scangobj can result in a linking error because -lintl cannot be found.

In evolution-data-server we are lucky most of the time because it depends on a lot of external libraries. These external libraries are likely to be installed in the same prefix as gettext-runtime, so not using LDFLAGS doesn't cause linking failure because required flags are already pulled in by other libraries. In fact, this problem was found when building libical, which uses a similar GtkDoc.cmake file.

In addition to the change to include LDFLAGS, this commit also changes the following things:

  • Instead of constructing _scangobj_ldflags in reverse order, do it in normal order. Appending is easier to understand than prepending, and the linker also interprets -L and -l flags in normal order.

  • Move -L${LIB_INSTALL_DIR} to the bottom. This is what the comment says, and it is expected to work because we no longer constructs _scangobj_ldflags in reverse order.


Link to libical pull request: https://github.com/libical/libical/pull/402.

Merge request reports