From 3b3df731e60d604794538d0b9f6cb5b802a8745d Mon Sep 17 00:00:00 2001 From: Martin Lucina Date: Fri, 15 Oct 2010 15:05:54 +0200 Subject: configure.in: Extract API version from zmq.h * 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 --- 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@.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@lists.zeromq.org]) +AC_INIT([zeromq], + m4_esyscmd([./version.sh | tr -d '\n']), + [zeromq-dev@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 + -- cgit v1.2.3