|
|
|
dnl Copyright (c) 2015 - present Facebook, Inc.
|
|
|
|
dnl All rights reserved.
|
|
|
|
dnl
|
|
|
|
dnl This source code is licensed under the BSD style license found in the
|
|
|
|
dnl LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
dnl of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
|
|
|
|
dnl this adds the following features to AC_CHECK_OCAML_PKG:
|
|
|
|
dnl - supports an optional version argument in $3
|
|
|
|
dnl - sets OCAML_PKG_PATH_$1 to be the path where the package is
|
|
|
|
dnl installed
|
|
|
|
AC_DEFUN([AC_CHECK_OCAML_PKG_PATH],
|
|
|
|
[dnl
|
|
|
|
AC_REQUIRE([AC_PROG_FINDLIB])
|
|
|
|
AC_CHECK_OCAML_PKG([$1], [$2])
|
|
|
|
|
|
|
|
unset version_msg
|
|
|
|
version_msg=""
|
|
|
|
AS_IF([test "x$3" != "x"], [version_msg=" version $3"])
|
|
|
|
AC_MSG_CHECKING([for OCaml findlib package $1$version_msg])
|
|
|
|
|
|
|
|
unset path
|
|
|
|
unset pkg
|
|
|
|
unset version
|
|
|
|
pkg=$AS_TR_SH([OCAML_PKG_$1])
|
|
|
|
found=no
|
|
|
|
if test "x$pkg" != "xno"; then
|
|
|
|
path=`$OCAMLFIND query $pkg 2>/dev/null`
|
|
|
|
if test "x$3" != "x"; then
|
|
|
|
version=`$OCAMLFIND query -format '%v' $pkg 2>/dev/null`
|
|
|
|
unset major_req
|
|
|
|
unset minor_req
|
|
|
|
unset patch_req
|
|
|
|
unset major_inst
|
|
|
|
unset minor_inst
|
|
|
|
unset patch_inst
|
|
|
|
|
|
|
|
major_req=$(printf $3 | cut -d . -f 1)
|
|
|
|
minor_req=$(printf $3 | cut -d . -f 2)
|
|
|
|
patch_req=$(printf $3 | cut -d . -f 3)
|
|
|
|
|
|
|
|
major_inst=$(printf $version | cut -d . -f 1)
|
|
|
|
minor_inst=$(printf $version | cut -d . -f 2)
|
|
|
|
# discard trailing characters after patch number, eg 1.2.3+4~5 -> 3
|
|
|
|
patch_inst=$(printf $version | cut -d . -f 3 | grep -o -e '^[[:digit:]]*')
|
|
|
|
if test $major_inst -gt $major_req || \
|
|
|
|
(test $major_inst -eq $major_req && \
|
|
|
|
(test $minor_inst -gt $minor_req || \
|
|
|
|
(test $minor_inst -eq $minor_req && \
|
|
|
|
test $path_inst -ge $path_req))); then
|
|
|
|
found=yes
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
found=yes
|
|
|
|
fi
|
|
|
|
if test "$found" = "yes" ; then
|
|
|
|
AC_MSG_RESULT([$path])
|
|
|
|
AS_TR_SH([OCAML_PKG_$1])=$pkg
|
|
|
|
AS_TR_SH([OCAML_PKG_PATH_$1])=$path
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$found" = "no" ; then
|
|
|
|
AC_MSG_RESULT([not found])
|
|
|
|
AS_TR_SH([OCAML_PKG_$1])=no
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_SUBST(AS_TR_SH([OCAML_PKG_$1]))
|
|
|
|
AC_SUBST(AS_TR_SH([OCAML_PKG_PATH_$1]))
|
|
|
|
])
|