Macro: ac_define_versionlevel

Back to the Main Page. | # ac_define_versionlevel | Download the M4 Source.

Synopsis

  `AC_DEFINE_VERSIONLEVEL(VARNAME [,VERSION [, DESCRIPTION]])`

Version

  1.2 (2001/11/02) guidod @ ac-archive-0.5.39

Author

  Guido Draheim <guidod@gmx.de>

Description

  if the VERSION is ommitted, shellvar $VERSION is used as defined by AM_INIT_AUTOMAKE's second argument.

  The versionlevel is the numeric representation of the given version string, thereby assuming the inputversion is a string with (maximal) three decimal numbers seperated by "."-dots. A "-patch" adds a percent.

  typical usage: AM_INIT_AUTOMAKE(mypkg,4.12.3) AC_DEFINE_VERSIONLEVEL(MYPKG_VERSION)

  the config.h created from autoheader's config.h.in will contain... /* mypkg versionlevel */ #define MYPKG_VERSION 4120003

  the MYKG_VERSION will be defined as both a shell-variable and AC_DEFINE

  examples:
  `3.0-beta1 3000001`
  `3.1 3010000`
  `3.11 3110000`
  `3.11-dirpatch 3111000`
  `3.11-patch6 3110006`
  `2.2.18 2020018`
  `2.0.112 2000112`
  `2.4.2 2040002`
  `2.4.2-pre 2040003`
  `2.4.2-pre5 2040003`
  `5.0-build125 5000125`
  `5.0 5000000`
  `0.30.17 30017`

M4 Source Code

      AC_DEFUN(AC_DEFINE_VERSIONLEVEL,
      [
      ac_versionlevel_strdf=`echo ifelse($2, , $VERSION, $2) | sed -e 's:[[A-Z-]]*:.:' -e 's:[[^0-9.]]::g' -e 's:^[[.]]*::'`
      AC_MSG_CHECKING(versionlevel $ac_versionlevel_strdf)
      case $ac_versionlevel_strdf in
       *.*.*.|*.*.*.*) :
       ac_versionlevel_major=`echo $ac_versionlevel_strdf`
       ac_versionlevel_minor=`echo $ac_versionlevel_major | sed -e 's/[[^.]]*[[.]]//'`
       ac_versionlevel_patch=`echo $ac_versionlevel_minor | sed -e 's/[[^.]]*[[.]]//'`
       ac_versionlevel_major=`echo $ac_versionlevel_major | sed -e 's/[[.]].*//'`
       ac_versionlevel_minor=`echo $ac_versionlevel_minor | sed -e 's/[[.]].*//'`
       ac_versionlevel_patch=`echo $ac_versionlevel_patch | sed -e 's/[[.]].*//'`
       $1=`expr $ac_versionlevel_major '*' 1000000 \
              + $ac_versionlevel_minor '*'   10000 \
              + $ac_versionlevel_patch \
      	+ 1` ;;
       *.*.*) :
       ac_versionlevel_major=`echo $ac_versionlevel_strdf`
       ac_versionlevel_minor=`echo $ac_versionlevel_major | sed -e 's/[[^.]]*[[.]]//'`
       ac_versionlevel_patch=`echo $ac_versionlevel_minor | sed -e 's/[[^.]]*[[.]]//'`
       ac_versionlevel_major=`echo $ac_versionlevel_major | sed -e 's/[[.]].*//'`
       ac_versionlevel_minor=`echo $ac_versionlevel_minor | sed -e 's/[[.]].*//'`
       ac_versionlevel_patch=`echo $ac_versionlevel_patch | sed -e 's/[[.]].*//'`
       $1=`expr $ac_versionlevel_major '*' 1000000 \
              + $ac_versionlevel_minor '*'   10000 \
              + $ac_versionlevel_patch`               ;;
       *.*.) :
       ac_versionlevel_major=`echo $ac_versionlevel_strdf`
       ac_versionlevel_minor=`echo $ac_versionlevel_major | sed -e 's/[[^.]]*[[.]]//'`
       ac_versionlevel_major=`echo $ac_versionlevel_major | sed -e 's/[[.]].*//'`
       ac_versionlevel_minor=`echo $ac_versionlevel_minor | sed -e 's/[[.]].*//'`
       ac_versionlevel_patch=0
       $1=`expr $ac_versionlevel_major '*' 1000000 \
              + $ac_versionlevel_minor '*'   10000 \
      	+ 1000 \
              + $ac_versionlevel_patch`               ;;
       *.*) :
       ac_versionlevel_major=`echo $ac_versionlevel_strdf`
       ac_versionlevel_minor=`echo $ac_versionlevel_major | sed -e 's/[[^.]]*[[.]]//'`
       ac_versionlevel_major=`echo $ac_versionlevel_major | sed -e 's/[[.]].*//'`
       ac_versionlevel_minor=`echo $ac_versionlevel_minor | sed -e 's/[[.]].*//'`
       ac_versionlevel_patch=0
       $1=`expr $ac_versionlevel_major '*' 1000000 \
              + $ac_versionlevel_minor '*'   10000 \
              + $ac_versionlevel_patch`               ;;
       *.) :
       ac_versionlevel_major=0
       ac_versionlevel_minor=`echo $ac_versionlevel_strdf`
       ac_versionlevel_minor=`echo $ac_versionlevel_minor | sed -e 's/[[.]].*//'`
       ac_versionlevel_patch=0
       $1=`expr $ac_versionlevel_major '*' 1000000 \
              + $ac_versionlevel_minor '*'   10000 \
      	+ 1000 \
              + $ac_versionlevel_patch`               ;;
       *) :
       ac_versionlevel_major=0
       ac_versionlevel_minor=`echo $ac_versionlevel_strdf`
       ac_versionlevel_minor=`echo $ac_versionlevel_minor | sed -e 's/[[.]].*//'`
       ac_versionlevel_patch=0
       $1=`expr $ac_versionlevel_major '*' 1000000 \
              + $ac_versionlevel_minor '*'   10000 \
              + $ac_versionlevel_patch`               ;;
      esac
      AC_MSG_RESULT($[$1])
      AC_DEFINE_UNQUOTED( $1, $[$1], ifelse( $3, , $PACKAGE versionlevel, $3))
      ])