[zeromq-dev] [PATCH 1/2] configure.in: Extract API version from zmq.h

Martin Lucina mato at kotelna.sk
Fri Oct 15 15:35:32 CEST 2010


* Added a version.sh and relevant changes to configure.in to extract the API
  version from zmq.h at the time autogen.sh is run.
* Moved the version macros to be next to zmq_version in zmq.h and improved
  the comments.
* Modified ZMQ_MAKE_VERSION to use (x) instead of plain x when expanding
  macro parameters.

Signed-off-by: Martin Lucina <mato at kotelna.sk>
---
 Makefile.am   |    1 +
 configure.in  |    8 +++++---
 include/zmq.h |   21 +++++++++++----------
 version.sh    |   21 +++++++++++++++++++++
 4 files changed, 38 insertions(+), 13 deletions(-)
 create mode 100755 version.sh

diff --git a/Makefile.am b/Makefile.am
index bea07e9..409be66 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,6 +4,7 @@ SUBDIRS = src doc perf devices
 DIST_SUBDIRS = src doc perf devices builds/msvc
 
 EXTRA_DIST = \
+$(top_srcdir)/version.sh \
 $(top_srcdir)/foreign/openpgm/@pgm_basename at .tar.gz \
 $(top_srcdir)/foreign/xmlParser/xmlParser.cpp \
 $(top_srcdir)/foreign/xmlParser/xmlParser.hpp
diff --git a/configure.in b/configure.in
index 405f27c..e36ac3f 100644
--- a/configure.in
+++ b/configure.in
@@ -2,11 +2,13 @@
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.61)
 #
-# Change the version number below after doing a public release.
+# The 0MQ version number is extracted from include/zmq.h using
+# the version.sh script. Hence, it should be updated there.
 # The version in git should reflect the *next* version planned.
-# Version must be MAJOR.MINOR.PATCH otherwise things will break.
 #
-AC_INIT([zeromq],[2.0.10],[zeromq-dev at lists.zeromq.org])
+AC_INIT([zeromq],
+        m4_esyscmd([./version.sh | tr -d '\n']),
+        [zeromq-dev at lists.zeromq.org])
 
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(config)
diff --git a/include/zmq.h b/include/zmq.h
index efa3edb..1cb6c03 100644
--- a/include/zmq.h
+++ b/include/zmq.h
@@ -30,16 +30,6 @@ extern "C" {
 #include "winsock2.h"
 #endif
 
-/*  Version macros                                                            */
-#define ZMQ_VERSION_MAJOR 2
-#define ZMQ_VERSION_MINOR 0
-#define ZMQ_VERSION_PATCH 10
-
-#define ZMQ_MAKE_VERSION(major, minor, patch) \
-    (major * 10000 + minor * 100 + patch)
-#define ZMQ_VERSION \
-    ZMQ_MAKE_VERSION(ZMQ_VERSION_MAJOR, ZMQ_VERSION_MINOR, ZMQ_VERSION_PATCH)
-
 /*  Win32 needs special handling for DLL exports                              */
 #if defined _WIN32
 #   if defined DLL_EXPORT
@@ -55,6 +45,17 @@ extern "C" {
 /*  0MQ versioning support.                                                   */
 /******************************************************************************/
 
+/*  Version macros for compile-time API version detection                     */
+#define ZMQ_VERSION_MAJOR 2
+#define ZMQ_VERSION_MINOR 0
+#define ZMQ_VERSION_PATCH 10
+
+#define ZMQ_MAKE_VERSION(major, minor, patch) \
+    ((major) * 10000 + (minor) * 100 + (patch))
+#define ZMQ_VERSION \
+    ZMQ_MAKE_VERSION(ZMQ_VERSION_MAJOR, ZMQ_VERSION_MINOR, ZMQ_VERSION_PATCH)
+
+/*  Run-time API version detection                                            */
 ZMQ_EXPORT void zmq_version (int *major, int *minor, int *patch);
 
 /******************************************************************************/
diff --git a/version.sh b/version.sh
new file mode 100755
index 0000000..b88bb61
--- /dev/null
+++ b/version.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# This script extracts the 0MQ version from include/zmq.h, which is the master
+# location for this information.
+#
+if [ ! -f include/zmq.h ]; then
+    echo "version.sh: error: include/zmq.h does not exist" 1>&2
+    exit 1
+fi
+MAJOR=`egrep '^#define +ZMQ_VERSION_MAJOR +[0-9]+$' include/zmq.h`
+MINOR=`egrep '^#define +ZMQ_VERSION_MINOR +[0-9]+$' include/zmq.h`
+PATCH=`egrep '^#define +ZMQ_VERSION_PATCH +[0-9]+$' include/zmq.h`
+if [ -z "$MAJOR" -o -z "$MINOR" -o -z "$PATCH" ]; then
+    echo "version.sh: error: could not extract version from include/zmq.h" 1>&2
+    exit 1
+fi
+MAJOR=`echo $MAJOR | awk '{ print $3 }'`
+MINOR=`echo $MINOR | awk '{ print $3 }'`
+PATCH=`echo $PATCH | awk '{ print $3 }'`
+echo $MAJOR.$MINOR.$PATCH
+
-- 
1.7.1




More information about the zeromq-dev mailing list