check ocaml version in configure script

Summary:
public
Infer depends on OCaml >= 4.02.3 now.

Reviewed By: jberdine

Differential Revision: D2865159

fb-gh-sync-id: 5ec45e5
master
Jules Villard 9 years ago committed by facebook-github-bot-7
parent 099821f279
commit 07d71d2370

@ -37,6 +37,7 @@ function usage() {
BUILD_CLANG=no BUILD_CLANG=no
BUILD_JAVA=no BUILD_JAVA=no
INTERACTIVE=yes INTERACTIVE=yes
ORIG_ARGS="$*"
while [[ $# > 0 ]]; do while [[ $# > 0 ]]; do
opt_key="$1" opt_key="$1"
@ -166,4 +167,11 @@ echo " *************************"
echo echo
./configure $CONFIGURE_ARGS ./configure $CONFIGURE_ARGS
make -j $TARGETS || (echo 'compilation failure; try running "make clean"'; exit 1) make -j $TARGETS || (
echo
echo ' compilation failure; you can try running'
echo
echo ' make clean'
echo " $0 $ORIG_ARGS"
echo
exit 1)

@ -151,6 +151,8 @@ fi
# OCaml dependencies # OCaml dependencies
AC_PROG_OCAML AC_PROG_OCAML
AC_ASSERT_PROG([ocamlc], [$OCAMLC]) AC_ASSERT_PROG([ocamlc], [$OCAMLC])
# check the version of OCaml
AC_ASSERT_OCAML_MIN_VERSION([4.02.0])
AC_ASSERT_PROG([ocamlopt], [$OCAMLOPT]) AC_ASSERT_PROG([ocamlopt], [$OCAMLOPT])
AC_ASSERT_PROG([ocamlbuild], [$OCAMLBUILD]) AC_ASSERT_PROG([ocamlbuild], [$OCAMLBUILD])
AC_PROG_FINDLIB AC_PROG_FINDLIB

@ -0,0 +1,22 @@
dnl Copyright (c) 2016 - 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.
AC_DEFUN([AC_ASSERT_OCAML_MIN_VERSION],
[dnl
AC_REQUIRE([AC_PROG_OCAML])
AC_MSG_CHECKING([if OCaml version is >= $1])
AC_COMPARE_VERSION_STRINGS([$1], [$OCAMLVERSION],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([m4_join([],[found version $OCAMLVERSION.
m4_newline([ Please upgrade to OCaml >= $1. If you are using opam, you can run])
m4_newline([dnl
opam switch $1
eval \$(opam config env)])
])])])
])

@ -28,28 +28,10 @@ AC_DEFUN([AC_CHECK_OCAML_PKG_PATH],
path=`$OCAMLFIND query $pkg 2>/dev/null` path=`$OCAMLFIND query $pkg 2>/dev/null`
if test "x$3" != "x"; then if test "x$3" != "x"; then
version=`$OCAMLFIND query -format '%v' $pkg 2>/dev/null` version=`$OCAMLFIND query -format '%v' $pkg 2>/dev/null`
unset major_req AC_COMPARE_VERSION_STRINGS([$3], [$version],
unset minor_req [found=yes],
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 else
found=yes found=yes
fi fi

@ -0,0 +1,32 @@
dnl Copyright (c) 2016 - 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.
AC_DEFUN([AC_COMPARE_VERSION_STRINGS],
[dnl
unset major_req
unset minor_req
unset patch_req
unset major_inst
unset minor_inst
unset patch_inst
major_req=$(printf "$1" | cut -d . -f 1)
minor_req=$(printf "$1" | cut -d . -f 2)
patch_req=$(printf "$1" | cut -d . -f 3)
major_inst=$(printf "$2" | cut -d . -f 1)
minor_inst=$(printf "$2" | cut -d . -f 2)
# discard trailing characters after patch number, eg 1.2.3+4~5 -> 3
patch_inst=$(printf "$2" | cut -d . -f 3 | grep -o -e '^[[[:digit:]]]*')
AS_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 $patch_inst -ge $patch_req)))],
$3,
$4)
])
Loading…
Cancel
Save