| dnl @synopsis AC_COMPARE_VERSION\ |
| dnl (version-a, version-b, action-if-greater, action-if-equal, action-if-less) |
| dnl |
| dnl This macro compares two version numbers and executes the indicated action |
| dnl based on whether they're equal or one is greater than the other. |
| dnl It's needed to determine whether ocaml is new enough that the incompatible |
| dnl change 'loc' -> '_loc' is present in this version of camlp4. |
| dnl |
| dnl It's implemented from scratch just for SWIG by arty. |
| dnl |
| dnl @category Misc |
| dnl @author arty |
| dnl @version 2006-11-02 |
| dnl @license GPLWithACException |
| |
| AC_DEFUN([AC_COMPARE_VERSION], [ |
| # Split the version into units. |
| ver_a="[$1]" |
| ver_b="[$2]" |
| nodots_a=`echo $ver_a | sed -e 's/\./ /g'` |
| condition="equal" |
| isolate_b_regex='\([[0-9]]\+\).*' |
| for ver_part in $nodots_a ; do |
| b_ver_part=`echo "$ver_b" | sed -e 's/'"$isolate_b_regex"'/\1/'` |
| if test \( "$ver_part" -lt "$b_ver_part" \) -a \( "x$condition" == "xequal" \) ; then |
| condition=less |
| elif test \( "$ver_part" -gt "$b_ver_part" \) -a \( "x$condition" == "xequal" \) ; then |
| condition=greater |
| fi |
| isolate_b_regex='[[0-9]]\+\.'"$isolate_b_regex" |
| done |
| |
| if test "x$condition" == "xequal" ; then |
| [$4] |
| elif test "x$condition" == "xless" ; then |
| [$3] |
| elif test "x$condition" == "xgreater" ; then |
| [$5] |
| fi |
| ]) |