dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2016      IBM Corporation.  All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl

# Parameters: (use a version "1.1.4rc2" as the example)
# * prefix
#   Will export a variable $prefix_version_cmp
#   - action_if_less         => "less"
#   - action_if_equal        => "equal"
#   - action_if_equal_series => "series"
#   - action_if_greater      => "greater"
# * version_actual
#   Actual version string
# * version_desired
#   Desired version string to check against
# * action_if_less
#   Action to take if the version is strictly less than
#   "1.1.3" < "1.1.4rc2"
# * action_if_equal
#   Action to take if the version matches exactly
#   "1.1.4rc2" = "1.1.4rc2"
# * action_if_equal_series
#   Action to take if the version matches to this series
#   "1.1.4rc1" ~=~ "1.1.4rc2"
#   "1.1.4" ~=~ "1.1.4rc2"
# * action_if_greater
#   Action to take if the version is strictly greater than
#   "1.1.5" > "1.1.4rc2"
#   "2.0" > "1.1.4rc2"
#
# See documentation on m4_version_compare and AS_VERSION_COMPARE for more
# precise definitions
# OPAL_CHECK_VERSION(prefix, version_actual, version_desired,
#                    action_if_less, action_if_equal, action_if_equal_series,
#                    action_if_greater)
# ----------------------------------------------------
AC_DEFUN([OPAL_CHECK_VERSION],[
    version_actual=$2
    version_desired=$3

    AC_MSG_CHECKING([Checking library version is $version_desired])
    #
    # Example: If version_desired=1.1.4 and
    # version_actual=1.1.3    -> -1
    # version_actual=1.1.4    ->  0
    # version_actual=1.1.4rc1 ->  1
    # version_actual=1.1.5    ->  1 (need further check)
    #
    AS_VERSION_COMPARE(["$version_actual"], [$version_desired],
            [AC_MSG_RESULT([Earlier than expected ($version_actual < $$version_desired)])
             $1_version_cmp="less"
             $4],
            [AC_MSG_RESULT([Equal])
             $1_version_cmp="equal"
             $5],
            [
             # Need further check to make sure we are < 1.1.5
             # version_actual=1.1.4rc1 ->  -1
             # version_actual=1.1.4    ->   0 (caught above)
             # version_actual=1.1.5    ->   1
             AS_VERSION_COMPARE(["$version_actual"], [$version_desired"zzzz"],
                 [AC_MSG_RESULT([Within release series ($version_actual)])
                  $1_version_cmp="series"
                  $6],
                 [AC_MSG_RESULT([Within release series ($version_actual)])
                  $1_version_cmp="series"
                  $6],
                 [AC_MSG_RESULT([Later than expected ($version_actual > $$version_desired)])
                  $1_version_cmp="greater"
                  $7]
             )]
         )
])dnl