[Spice-devel] [PATCH spice-gtk] Add a SPICE_GTK_CHECK_VERSION macro
Marc-André Lureau
marcandre.lureau at gmail.com
Mon Feb 24 06:03:56 PST 2014
---
configure.ac | 10 ++++++
doc/reference/spice-gtk-sections.txt | 4 +++
gtk/Makefile.am | 4 +++
gtk/spice-client.h | 1 +
gtk/spice-version.h.in | 70 ++++++++++++++++++++++++++++++++++++
5 files changed, 89 insertions(+)
create mode 100644 gtk/spice-version.h.in
diff --git a/configure.ac b/configure.ac
index 6e4b29a..192d748 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,6 +75,15 @@ AC_CONFIG_SUBDIRS([spice-common])
COMMON_CFLAGS='-I ${top_srcdir}/spice-common/ -I ${top_srcdir}/spice-common/spice-protocol/'
AC_SUBST(COMMON_CFLAGS)
+SPICE_GTK_MAJOR_VERSION=`echo $PACKAGE_VERSION | cut -d. -f1`
+SPICE_GTK_MINOR_VERSION=`echo $PACKAGE_VERSION | cut -d. -f2`
+SPICE_GTK_MICRO_VERSION=`echo $PACKAGE_VERSION | cut -d. -f3 | cut -d- -f1`
+[ "x$SPICE_GTK_MICRO_VERSION" = "x" ] && SPICE_GTK_MICRO_VERSION = 0
+
+AC_SUBST(SPICE_GTK_MAJOR_VERSION)
+AC_SUBST(SPICE_GTK_MINOR_VERSION)
+AC_SUBST(SPICE_GTK_MICRO_VERSION)
+
dnl =========================================================================
dnl Chek optional features
@@ -709,6 +718,7 @@ data/spicy.desktop.in
data/spicy.nsis
po/Makefile.in
gtk/Makefile
+gtk/spice-version.h
gtk/controller/Makefile
doc/Makefile
doc/reference/Makefile
diff --git a/doc/reference/spice-gtk-sections.txt b/doc/reference/spice-gtk-sections.txt
index 08b1b4e..9232a23 100644
--- a/doc/reference/spice-gtk-sections.txt
+++ b/doc/reference/spice-gtk-sections.txt
@@ -402,6 +402,10 @@ SpiceGtkBoxClass
<FILE>spice-util</FILE>
spice_util_set_debug
spice_util_get_version_string
+SPICE_GTK_CHECK_VERSION
+SPICE_GTK_MAJOR_VERSION
+SPICE_GTK_MICRO_VERSION
+SPICE_GTK_MINOR_VERSION
<SUBSECTION Private>
SPICE_DEBUG
spice_util_get_debug
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 61ed88e..8a16120 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -41,8 +41,11 @@ EXTRA_DIST = \
spice-client-gtk-manual.defs \
spice-client-gtk.override \
spice-marshal.txt \
+ spice-version.h.in \
$(NULL)
+DISTCLEANFILES = spice-version.h
+
bin_PROGRAMS = spicy spicy-stats spicy-screenshot
if WITH_POLKIT
acldir = $(ACL_HELPER_DIR)
@@ -290,6 +293,7 @@ libspice_client_glibinclude_HEADERS = \
spice-channel.h \
spice-util.h \
spice-option.h \
+ spice-version.h \
channel-cursor.h \
channel-display.h \
channel-inputs.h \
diff --git a/gtk/spice-client.h b/gtk/spice-client.h
index 975259a..98aaffe 100644
--- a/gtk/spice-client.h
+++ b/gtk/spice-client.h
@@ -32,6 +32,7 @@
#include "spice-channel.h"
#include "spice-option.h"
#include "spice-uri.h"
+#include "spice-version.h"
#include "channel-main.h"
#include "channel-display.h"
diff --git a/gtk/spice-version.h.in b/gtk/spice-version.h.in
new file mode 100644
index 0000000..8856914
--- /dev/null
+++ b/gtk/spice-version.h.in
@@ -0,0 +1,70 @@
+/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ Copyright (C) 2014 Red Hat, Inc.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef __SPICE_VERSION_H__
+#define __SPICE_VERSION_H__
+
+/**
+ * SECTION:spice-version
+ * @short_description: Spice-Gtk version checking
+ *
+ * Spice-Gtk provides macros to check the version of the library
+ * at compile-time
+ */
+
+/**
+ * SPICE_GTK_MAJOR_VERSION:
+ *
+ * Spice-Gtk major version component (e.g. 1 if version is 1.2.3)
+ * Since: 0.24
+ */
+#define SPICE_GTK_MAJOR_VERSION (@SPICE_GTK_MAJOR_VERSION@)
+
+/**
+ * SPICE_GTK_MINOR_VERSION:
+ *
+ * Spice-Gtk minor version component (e.g. 2 if version is 1.2.3)
+ * Since: 0.24
+ */
+#define SPICE_GTK_MINOR_VERSION (@SPICE_GTK_MINOR_VERSION@)
+
+/**
+ * SPICE_GTK_MICRO_VERSION:
+ *
+ * Spice-Gtk micro version component (e.g. 3 if version is 1.2.3)
+ * Since: 0.24
+ */
+#define SPICE_GTK_MICRO_VERSION (@SPICE_GTK_MICRO_VERSION@)
+
+/**
+ * SPICE_GTK_CHECK_VERSION:
+ * @major: required major version
+ * @minor: required minor version
+ * @micro: required micro version
+ *
+ * Compile-time version checking. Evaluates to %TRUE if the version
+ * of Spice-Gtk is greater than the required one.
+ * Since: 0.24
+ */
+#define SPICE_GTK_CHECK_VERSION(major,minor,micro) \
+ (SPICE_GTK_MAJOR_VERSION > (major) || \
+ (SPICE_GTK_MAJOR_VERSION == (major) && SPICE_GTK_MINOR_VERSION >= (minor)) || \
+ (SPICE_GTK_MAJOR_VERSION == (major) && SPICE_GTK_MINOR_VERSION == (minor) && \
+ SPICE_GTK_MICRO_VERSION >= (micro)))
+
+
+#endif /* __SPICE_VERSION_H__ */
--
1.8.5.3
More information about the Spice-devel
mailing list