[Cogl] [PATCH] Add a cogl-version header

Neil Roberts neil at linux.intel.com
Mon Apr 23 06:27:11 PDT 2012


This adds a version header which is generated at configure time and
contains macros to define which version of Cogl the application is
being compiled against. This helps applications that want to support
multiple incompatible versions of Cogl at compile time.

The macros are called COGL_VERSION_{MAJOR,MINOR,MICRO}. This does not
match Clutter which names them COGL_{MAJOR,MINOR,MICRO}_VERSION but I
think the former is nicer and it at least matches Cairo and Pango.

There is also a macro for the entire version as a string called
COGL_VERSION.

Unlike in Clutter this patch does not add any runtime version
identification mechanism.
---
 .gitignore                             |    1 +
 cogl/Makefile.am                       |    6 +-
 cogl/cogl-version.h.in                 |   64 ++++++++++++++++++++++++++++++++
 cogl/cogl.h                            |    1 +
 configure.ac                           |    1 +
 doc/reference/cogl2/cogl2-docs.xml.in  |    1 +
 doc/reference/cogl2/cogl2-sections.txt |    9 ++++
 7 files changed, 80 insertions(+), 3 deletions(-)
 create mode 100644 cogl/cogl-version.h.in

diff --git a/.gitignore b/.gitignore
index da020a7..b84c2f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,7 @@ stamp-marshal
 /cogl/cogl-defines.h
 /cogl/cogl-enum-types.c
 /cogl/cogl-enum-types.h
+/cogl/cogl-version.h
 config.h
 config.h.in
 config.h.win32
diff --git a/cogl/Makefile.am b/cogl/Makefile.am
index c459140..3a19e97 100644
--- a/cogl/Makefile.am
+++ b/cogl/Makefile.am
@@ -35,8 +35,8 @@ AM_CPPFLAGS = \
 AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS)
 
 BUILT_SOURCES += cogl-defines.h cogl-gl-header.h
-DISTCLEANFILES += cogl-defines.h cogl-gl-header.h
-EXTRA_DIST += cogl-defines.h.in cogl-gl-header.h.in
+DISTCLEANFILES += cogl-defines.h cogl-gl-header.h cogl-version.h
+EXTRA_DIST += cogl-defines.h.in cogl-gl-header.h.in cogl-version.h.in
 
 pc_files = cogl2.pc
 
@@ -468,7 +468,7 @@ cogl_headers = \
 
 coglincludedir = $(includedir)/cogl2/cogl
 coglinclude_HEADERS = $(cogl_headers) $(cogl_experimental_h)
-nodist_coglinclude_HEADERS = cogl-defines.h
+nodist_coglinclude_HEADERS = cogl-defines.h cogl-version.h
 if USE_GLIB
 nodist_coglinclude_HEADERS += cogl-enum-types.h
 endif
diff --git a/cogl/cogl-version.h.in b/cogl/cogl-version.h.in
new file mode 100644
index 0000000..9d67e37
--- /dev/null
+++ b/cogl/cogl-version.h.in
@@ -0,0 +1,64 @@
+/*
+ * Cogl
+ *
+ * An object oriented GL/GLES Abstraction/Utility Layer
+ *
+ * Copyright (C) 2012 Intel Corporation.
+ *
+ * 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 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 __COGL_VERSION_H__
+#define __COGL_VERSION_H__
+
+/**
+ * SECTION:cogl-version
+ * @short_description: Macros for determining the version of Cogl being used
+ *
+ * Cogl offers a set of macros for checking the version of the library
+ * at compile time.
+ */
+
+/**
+ * COGL_VERSION_MAJOR:
+ *
+ * The major version of the Cogl library (1, if %COGL_VERSION is 1.2.3)
+ */
+#define COGL_VERSION_MAJOR @COGL_MAJOR_VERSION@
+
+/**
+ * COGL_VERSION_MINOR:
+ *
+ * The minor version of the Cogl library (2, if %COGL_VERSION is 1.2.3)
+ */
+#define COGL_VERSION_MINOR @COGL_MINOR_VERSION@
+
+/**
+ * COGL_VERSION_MICRO:
+ *
+ * The micro version of the Cogl library (3, if %COGL_VERSION is 1.2.3)
+ */
+#define COGL_VERSION_MICRO @COGL_MICRO_VERSION@
+
+/**
+ * COGL_VERSION:
+ *
+ * The full version of the Cogl library, in string form (suited for
+ * string concatenation)
+ */
+#define COGL_VERSION "@COGL_VERSION@"
+
+#endif /* __COGL_VERSION_H__ */
diff --git a/cogl/cogl.h b/cogl/cogl.h
index 80e6d9c..7ce7e32 100644
--- a/cogl/cogl.h
+++ b/cogl/cogl.h
@@ -55,6 +55,7 @@
 #include <cogl/cogl-texture.h>
 #include <cogl/cogl-types.h>
 #include <cogl/cogl-path.h>
+#include <cogl/cogl-version.h>
 
 /*
  * 1.x only api...
diff --git a/configure.ac b/configure.ac
index 7ebae5d..d51727c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1122,6 +1122,7 @@ cogl/cogl2.pc
 cogl/cogl-defines.h
 cogl/cogl-gl-header.h
 cogl/cogl.rc
+cogl/cogl-version.h
 cogl-pango/Makefile
 cogl-pango/cogl-pango2.pc
 cogl-pango/cogl-pango.rc
diff --git a/doc/reference/cogl2/cogl2-docs.xml.in b/doc/reference/cogl2/cogl2-docs.xml.in
index 6c9b91c..8e3a302 100644
--- a/doc/reference/cogl2/cogl2-docs.xml.in
+++ b/doc/reference/cogl2/cogl2-docs.xml.in
@@ -127,6 +127,7 @@
       <xi:include href="xml/cogl-vector.xml"/>
       <xi:include href="xml/cogl-quaternion.xml"/>
       <xi:include href="xml/cogl-types.xml"/>
+      <xi:include href="xml/cogl-version.xml"/>
     </section>
 
     <section id="cogl-integration">
diff --git a/doc/reference/cogl2/cogl2-sections.txt b/doc/reference/cogl2/cogl2-sections.txt
index 9c10d68..aa83eaa 100644
--- a/doc/reference/cogl2/cogl2-sections.txt
+++ b/doc/reference/cogl2/cogl2-sections.txt
@@ -761,6 +761,15 @@ cogl_vector3_distance
 </SECTION>
 
 <SECTION>
+<FILE>cogl-version</FILE>
+<TITLE>Versioning utility macros</TITLE>
+COGL_VERSION_MAJOR
+COGL_VERSION_MINOR
+COGL_VERSION_MICRO
+COGL_VERSION
+</SECTION>
+
+<SECTION>
 <FILE>cogl-types</FILE>
 <TITLE>Common Types</TITLE>
 CoglFuncPtr
-- 
1.7.3.16.g9464b



More information about the Cogl mailing list