[PATCH weston 1/2] libweston: introduce LIBWESTON_API_VERSION macro
Emil Velikov
emil.l.velikov at gmail.com
Mon Aug 15 15:31:10 UTC 2016
From: Emil Velikov <emil.velikov at collabora.com>
Provides some ease wrt constructing the required version.
Cc: Quentin Glidic <sardemff7+git at sardemff7.net>
Suggested-by: Quentin Glidic <sardemff7+git at sardemff7.net>
Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
I've swapped ENCODE with API since it makes comparisons a lot better and
it implies a full version including PATCH/MICRO. Yes, GTK/GDK does not
have have it yet every project that has ENCODE macro on my system:
cairo, pango, nm and json-glib does. Perhaps I have the wrong software
installed for my grep search ;-)
#if REQUIRED_foo >= foo(x,y)
Can bring ENCODE back if people miss it.
Having a look at the file...
- wasn't the file meant to be installed alongside the weston binary,
since the latter exports symbols like Xorg and binaries depend on those.
- alternatively should we just rename the defines to LIBWESTON_VERS...
Personally I'm leaning that the following might be a good idea:
- move all the exports to libweston, make the compositor(s) expose as
little symbols as possible. there's a few left in weston atm.
- use LIBWESTON_VERSION... unless there's (m)any open-source users
that depend on the WESTON_VERSION... macros.
I don't have a strong preference on the route taken, just some ideas.
-Emil
---
README | 16 +++++++++-------
libweston/version.h.in | 2 ++
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/README b/README
index 37090d5..d0c8a64 100644
--- a/README
+++ b/README
@@ -96,13 +96,14 @@ version check, default to visible/hidden old/new symbols and so on.
libweston aims to guard all newly introduced API, in order to prevent subtle
breaks that a simple recompile (against a newer version) might cause.
-The macro is of the format 0x$MAJOR$MINOR and does not include PATCH version.
-As mentioned in the Versioning scheme section, the latter does not reflect any
-user visible API changes, thus should be not considered part of the API version.
+The macro must be compared against LIBWESTON_API_VERSION($MAJOR, $MINOR) and
+does not include PATCH version. As mentioned in the Versioning scheme section,
+PATCH does not reflect any user visible API changes, thus should be not
+considered part of the API version.
All new symbols should be guarded by the macro like the example given below:
-#if REQUIRE_LIBWESTON_API_VERSION >= 0x0101
+#if REQUIRE_LIBWESTON_API_VERSION >= LIBWESTON_API_VERSION(1,1)
bool
weston_ham_sandwich(void);
@@ -113,10 +114,11 @@ In order to use the said symbol, the one will have a similar code in their
configure.ac:
PKG_CHECK_MODULES(LIBWAYLAND, [libwayland-1 >= 1.1])
-AC_DEFINE(REQUIRE_LIBWESTON_API_VERSION, [0x0101])
+AC_DEFINE(REQUIRE_LIBWESTON_API_VERSION, [LIBWESTON_API_VERSION(1,1)])
-If the user is _not_ interested in forward compatibility, they can use 0xffff
-or similar high value. Yet doing so is not recommended.
+If the user is _not_ interested in forward compatibility, they can use high
+value for MAJOR/MINOR - LIBWESTON_API_VERSION(99,99) or alike. Yet doing so is
+not recommended.
Libweston design goals
diff --git a/libweston/version.h.in b/libweston/version.h.in
index b2379d0..892c5c4 100644
--- a/libweston/version.h.in
+++ b/libweston/version.h.in
@@ -26,6 +26,8 @@
#ifndef WESTON_VERSION_H
#define WESTON_VERSION_H
+#define LIBWESTON_API_VERSION(major,minor) ((major) << 16 | (minor) << 8)
+
#define WESTON_VERSION_MAJOR @WESTON_VERSION_MAJOR@
#define WESTON_VERSION_MINOR @WESTON_VERSION_MINOR@
#define WESTON_VERSION_MICRO @WESTON_VERSION_MICRO@
--
2.9.0
More information about the wayland-devel
mailing list