dnl as-version.m4 0.2.0

dnl autostars m4 macro for versioning

dnl Thomas Vander Stichele <thomas at apestaart dot org>

dnl $Id: as-version.m4,v 1.15 2006/04/01 09:40:24 thomasvs Exp $

dnl AS_VERSION

dnl example
dnl AS_VERSION

dnl this macro
dnl - AC_SUBST's PACKAGE_VERSION_MAJOR, _MINOR, _MICRO
dnl - AC_SUBST's PACKAGE_VERSION_RELEASE,
dnl    which can be used for rpm release fields
dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents
dnl   maintainer mode from running correctly
dnl
dnl don't forget to put #undef PACKAGE_VERSION_RELEASE in acconfig.h
dnl if you use acconfig.h

AC_DEFUN([AS_VERSION],
[
  PACKAGE_VERSION_MAJOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f1)
  PACKAGE_VERSION_MINOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f2)
  PACKAGE_VERSION_MICRO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f3)

  AC_SUBST(PACKAGE_VERSION_MAJOR)
  AC_SUBST(PACKAGE_VERSION_MINOR)
  AC_SUBST(PACKAGE_VERSION_MICRO)
])

dnl AS_NANO(ACTION-IF-NANO-NON-NULL, [ACTION-IF-NANO-NULL])

dnl requires AC_INIT to be called before
dnl For projects using a fourth or nano number in your versioning to indicate
dnl development or prerelease snapshots, this macro allows the build to be
dnl set up differently accordingly.

dnl this macro:
dnl - parses AC_PACKAGE_VERSION, set by AC_INIT, and extracts the nano number
dnl - sets the variable PACKAGE_VERSION_NANO
dnl - sets the variable PACKAGE_VERSION_RELEASE, which can be used
dnl   for rpm release fields
dnl - executes ACTION-IF-NANO-NON-NULL or ACTION-IF-NANO-NULL

dnl example:
dnl AS_NANO(RELEASE="yes", RELEASE="no")

AC_DEFUN([AS_NANO],
[
  AC_MSG_CHECKING(nano version)

  NANO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f4)

  if test x"$NANO" = x || test "x$NANO" = "x0" ; then
    AC_MSG_RESULT([0 (release)])
    NANO=0
    PACKAGE_VERSION_RELEASE=1
    ifelse([$1], , :, [$1])
  else
    AC_MSG_RESULT($NANO)
    PACKAGE_VERSION_RELEASE=0.`date +%Y%m%d.%H%M%S`
    if test "x$NANO" != "x1" ; then
       ifelse([$1], , :, [$1])
    else
       ifelse([$2], , :, [$2])
    fi
  fi
  PACKAGE_VERSION_NANO=$NANO
  AC_SUBST(PACKAGE_VERSION_NANO)
  AC_SUBST(PACKAGE_VERSION_RELEASE)
])
