glib: enforce the minimum required version and warn about old APIs
commite71e8cc035558eabd6b3e19f6d3254c754c027ef
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 4 May 2018 15:25:00 +0000 (4 16:25 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 29 Jun 2018 11:22:28 +0000 (29 12:22 +0100)
tree1bb21ef5769d36b96c1616ff90a7949044d9f51b
parente7b3af81597db1a6b55f2c15d030d703c6b2c6ac
glib: enforce the minimum required version and warn about old APIs

There are two useful macros that can be defined before including
glib.h that are related to the min required glib version

 - GLIB_VERSION_MIN_REQUIRED

   When this is defined, if code uses an API that was deprecated
   in this version, or older, a compiler warning will be emitted.
   This alerts maintainers to update their code to whatever new
   replacement API is now recommended best practice.

 - GLIB_VERSION_MAX_ALLOWED

   When this is defined, if code uses an API that was introduced
   in a version that is newer than the declared version, a compiler
   warning will be emitted. This alerts maintainers if new code
   accidentally uses functionality that won't be available on some
   supported platforms.

The GLIB_VERSION_MAX_ALLOWED constant makes it a bit harder to opt
in to using specific new APIs with a GLIB_CHECK_VERSION conditional.
To workaround this Pragmas can be used to temporarily turn off the
-Wdeprecated-declarations compiler warning, while a static inline
compat function is implemented. This workaround is illustrated with the
implementation of the g_strv_contains method to satisfy the test suite.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
include/glib-compat.h
tests/test-qga.c