Skip to content
Snippets Groups Projects
Select Git revision
  • 877a32448fa9933d6f60ae1f25551751d4d651a8
  • master default protected
  • exam
  • exper
  • klee
  • simple
  • v0.3.2
  • v0.3.1
  • v0.3.0
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.1
  • v0.1.0
14 results

lib.rs

Blame
  • configure.in 27.98 KiB
    ####################################################################
    #                                                                  #
    #  The Why3 Verification Platform   /   The Why3 Development Team  #
    #  Copyright 2010-2018   --   Inria - CNRS - Paris-Sud University  #
    #                                                                  #
    #  This software is distributed under the terms of the GNU Lesser  #
    #  General Public License version 2.1, with the special exception  #
    #  on linking described in file LICENSE.                           #
    #                                                                  #
    ####################################################################
    
    #
    # autoconf input for Objective Caml programs
    # Copyright (C) 2001 Jean-Christophe Filliâtre
    #   from a first script by Georges Mariano
    #
    # This library is free software; you can redistribute it and/or
    # modify it under the terms of the GNU Library General Public
    # License version 2, as published by the Free Software Foundation.
    #
    # This library is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    #
    # See the GNU Library General Public License version 2 for more details
    # (enclosed in the file LGPL).
    
    AC_INIT([Why3], m4_esyscmd([. ./Version; printf "$VERSION"]))
    
    # verbosemake
    
    AC_ARG_ENABLE(verbose-make,
        AS_HELP_STRING([--enable-verbose-make], [verbose makefile recipes]),,
        enable_verbose_make=no)
    
    # LOCAL_CONF
    
    AC_ARG_ENABLE(local,
        AS_HELP_STRING([--enable-local], [use Why3 in the build directory (no installation)]),,
        enable_local=no)
    
    # RELOCATABLE INSTALLATION
    
    AC_ARG_ENABLE(relocation,
        AS_HELP_STRING([--enable-relocation], [allow for later relocation of Why3 installation]),,
        enable_relocation=no)
    
    # NATIVE
    
    AC_ARG_ENABLE(native-code,
        AS_HELP_STRING([--disable-native-code], [use only the byte-code compiler]),,
        enable_native_code=yes)
    
    # WHY3LIB
    
    AC_ARG_ENABLE(why3-lib,
        AS_HELP_STRING([--disable-why3-lib], [use an already installed Why3]),,
        enable_why3_lib=yes)
    
    # Zarith
    
    AC_ARG_ENABLE(zarith,
        AS_HELP_STRING([--disable-zarith], [use Nums instead of Zarith for computations]),,
        enable_zarith=yes)
    
    
    # camlzip
    
    AC_ARG_ENABLE(zip,
        AS_HELP_STRING([--disable-zip], [do not use LZ compression to store session files]),,
        enable_zip=yes)
    
    # js_of_ocaml
    
    AC_ARG_ENABLE(js_of_ocaml,
        AS_HELP_STRING([--disable-js-of-ocaml], [do not use js-of-ocaml]),,
        enable_js_of_ocaml=yes)
    
    # IDE
    
    AC_ARG_ENABLE(ide,
        AS_HELP_STRING([--disable-ide], [do not build Why3 IDE]),,
        enable_ide=yes)
    
    AC_ARG_ENABLE(web_ide,
        AS_HELP_STRING([--disable-web-ide], [do not build Why3 Web IDE]),,
        enable_web_ide=yes)
    
    # Coq libraries
    
    AC_ARG_ENABLE(coq-libs,
        AS_HELP_STRING([--disable-coq-libs], [do not build Coq realizations]),,
        enable_coq_libs=yes)
    
    # PVS libraries
    
    AC_ARG_ENABLE(pvs-libs,
        AS_HELP_STRING([--disable-pvs-libs], [do not build PVS realizations]),,
        enable_pvs_libs=yes)
    
    # Isabelle libraries
    
    AC_ARG_ENABLE(isabelle-libs,
        AS_HELP_STRING([--disable-isabelle-libs], [do not build Isabelle realizations]),,
        enable_isabelle_libs=yes)
    
    # hypothesis selection
    
    AC_ARG_ENABLE(hypothesis-selection,
        AS_HELP_STRING([--disable-hypothesis-selection], [do not support hypothesis selection]),,
        enable_hypothesis_selection=yes)
    
    # documentation
    
    AC_ARG_ENABLE(doc,
        AS_HELP_STRING([--disable-doc], [do not build documentation]),,
        enable_doc=yes)
    
    AC_ARG_ENABLE(html-doc,
        AS_HELP_STRING([--disable-html-doc], [do not build HTML documentation]),,
        enable_html_doc=yes)
    
    # Experimental Jessie3 Frama-C plugin, disabled by default
    
    AC_ARG_ENABLE(frama-c,
        AS_HELP_STRING([--enable-frama-c], [enable Frama-C plugin]),,
        [enable_frama_c=no
         reason_frama_c=" (disabled by default)"])
    
    # profiling
    
    AC_ARG_ENABLE(profiling,
        AS_HELP_STRING([--enable-profiling], [enable profiling]),,
        enable_profiling=no)
    
    # Emacs compilation
    
    AC_ARG_ENABLE(emacs-compilation,
        AS_HELP_STRING([--disable-emacs-compilation], [do not compile why3.elc]),,
        enable_emacs_compilation=yes)
    
    # either relocation or local, not both
    if test "$enable_relocation" = yes ; then
    if test "$enable_local" = yes ; then
        AC_MSG_ERROR(cannot use --enable-relocation and --enable-local at the same time.)
    fi
    fi
    
    # Check for arch/OS
    
    AC_MSG_CHECKING(executable suffix)
    if uname -s | grep -q CYGWIN ; then
      EXE=.exe
      STRIP='echo "no strip "'
      AC_MSG_RESULT(.exe <Cygwin>)
    else
    if uname -s | grep -q MINGW ; then
      EXE=.exe
      STRIP=strip
      AC_MSG_RESULT(.exe <MinGW>)
    else
      EXE=
      STRIP=strip
      AC_MSG_RESULT(<none>)
    fi
    fi
    
    AC_PROG_CC
    # Add compatibility for C99
    AC_PROG_CC_STDC
    AC_PROG_MKDIR_P
    AC_PROG_INSTALL
    
    AC_DEFUN([AX_VERSION_GE], [AS_VERSION_COMPARE([$1],[$2],[$4],[$3],[$3])])
    
    # Check for Ocaml compilers
    
    # we first look for ocamlc in the path; if not present, we fail
    AC_CHECK_PROG(OCAMLC,ocamlc,ocamlc,no)
    if test "$OCAMLC" = no ; then
    	AC_MSG_ERROR(Cannot find ocamlc.)
    fi
    
    # we extract Ocaml version number
    OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version *\(.*\)$|\1|p'`
    echo "ocaml version is $OCAMLVERSION"
    
    AX_VERSION_GE([$OCAMLVERSION], 4.02.3, [],
      [AC_MSG_ERROR(You need Objective Caml 4.02.3 or higher.)])
    
    # Ocaml library path
    # old way: OCAMLLIB=`$OCAMLC -v | tail -1 | cut -f 4 -d ' ' | tr -d '\\r'`
    OCAMLLIB=`$OCAMLC -where | tr -d '\\r'`
    echo "ocaml library path is $OCAMLLIB"
    
    # then we look for ocamlopt; if not present, we issue a warning
    # if the version is not the same, we also discard it
    # we set OCAMLBEST to "opt" or "byte", whether ocamlopt is available or not
    AC_CHECK_PROG(OCAMLOPT,ocamlopt,ocamlopt,no)
    OCAMLBEST=byte
    if test "$OCAMLOPT" = no ; then
    	AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.)
    else
    	AC_MSG_CHECKING(ocamlopt version)
    	TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p'`
    	if test "$TMPVERSION" != "$OCAMLVERSION" ; then
    	    AC_MSG_RESULT(differs from ocamlc; ocamlopt discarded.)
    	    OCAMLOPT=no
    	else
    	    AC_MSG_RESULT(ok)
    	    OCAMLBEST=opt
    	fi
    fi
    
    # checking for native-code
    if test "$enable_native_code" != yes || test "$OCAMLBEST" = byte ; then
        enable_native_code=no
        OCAMLBEST=byte
        OCAMLOPT=no
    fi
    
    # checking for ocamlc.opt
    AC_CHECK_PROG(OCAMLCDOTOPT,ocamlc.opt,ocamlc.opt,no)
    if test "$OCAMLCDOTOPT" != no ; then
    	AC_MSG_CHECKING(ocamlc.opt version)
    	TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p'`
    	if test "$TMPVERSION" != "$OCAMLVERSION" ; then
    	    AC_MSG_RESULT(differs from ocamlc; ocamlc.opt discarded.)
    	else
    	    AC_MSG_RESULT(ok)
    	    OCAMLC=$OCAMLCDOTOPT
    	fi
    fi
    
    # checking for ocamlopt.opt
    if test "$OCAMLOPT" != no ; then
        AC_CHECK_PROG(OCAMLOPTDOTOPT,ocamlopt.opt,ocamlopt.opt,no)
        if test "$OCAMLOPTDOTOPT" != no ; then
    	AC_MSG_CHECKING(ocamlc.opt version)
    	TMPVER=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p'`
    	if test "$TMPVER" != "$OCAMLVERSION" ; then
    	    AC_MSG_RESULT(differs from ocamlc; ocamlopt.opt discarded.)
    	else
    	    AC_MSG_RESULT(ok)
    	    OCAMLOPT=$OCAMLOPTDOTOPT
    	fi
        fi
    fi
    
    # ocamldep, ocamllex and ocamlyacc should also be present in the path
    AC_CHECK_PROG(OCAMLDEP,ocamldep,ocamldep,no)
    if test "$OCAMLDEP" = no ; then
       AC_MSG_ERROR(Cannot find ocamldep.)
    else
       AC_CHECK_PROG(OCAMLDEPDOTOPT,ocamldep.opt,ocamldep.opt,no)
       if test "$OCAMLDEPDOTOPT" != no ; then
          OCAMLDEP=$OCAMLDEPDOTOPT
       fi
    fi
    
    AC_CHECK_PROG(OCAMLLEX,ocamllex,ocamllex,no)
    if test "$OCAMLLEX" = no ; then
    	AC_MSG_ERROR(Cannot find ocamllex.)
    else
        AC_CHECK_PROG(OCAMLLEXDOTOPT,ocamllex.opt,ocamllex.opt,no)
        if test "$OCAMLLEXDOTOPT" != no ; then
    	OCAMLLEX=$OCAMLLEXDOTOPT
        fi
    fi
    
    AC_CHECK_PROG(OCAMLYACC,ocamlyacc,ocamlyacc,no)
    if test "$OCAMLYACC" = no ; then
    	AC_MSG_ERROR(Cannot find ocamlyacc.)
    fi
    
    AC_CHECK_PROG(OCAMLDOC,ocamldoc,ocamldoc,true)
    if test "$OCAMLDOC" = true ; then
        AC_MSG_WARN(Cannot find ocamldoc)
    else
        AC_CHECK_PROG(OCAMLDOCOPT,ocamldoc.opt,ocamldoc.opt,no)
        if test "$OCAMLDOCOPT" != no ; then
    	OCAMLDOC=$OCAMLDOCOPT
        fi
    fi
    
    AC_CHECK_PROG(MENHIR,menhir,menhir,no)
    if test "$MENHIR" = no ; then
    	AC_MSG_ERROR(Cannot find menhir.)
    fi
    
    MENHIRVERSION=`$MENHIR --version | sed -n -e 's,.*version *\(.*\)$,\1,p'`
    AX_VERSION_GE([$MENHIRVERSION], 20151112, [],
      [AC_MSG_ERROR(You need Menhir 20151112 or higher.)])
    
    ## Where are the library we need
    # we look for ocamlfind; if not present, we just don't use it to find
    # libraries
    AC_CHECK_PROG(USEOCAMLFIND,ocamlfind,yes,no)
    
    if test "$USEOCAMLFIND" = yes; then
       OCAMLFINDLIB=$(ocamlfind printconf stdlib)
       OCAMLFIND=$(which ocamlfind)
       if test "$OCAMLFINDLIB" != "$OCAMLLIB"; then
       USEOCAMLFIND=no;
       echo "but your ocamlfind is not compatible with your ocamlc:"
       echo "ocamlfind : $OCAMLFINDLIB, ocamlc : $OCAMLLIB"
       fi
    fi
    
    if test "$enable_why3_lib" = yes ; then
       WHY3LIB=
       WHY3INCLUDE="-I lib/why3"
    else
       AC_MSG_CHECKING([For Why3])
       if test "$USEOCAMLFIND" = no; then
          AC_MSG_RESULT([no])
          AC_MSG_ERROR([Cannot use --disable-why3-lib without ocamlfind.])
       fi
       WHY3LIB=why3
       WHY3INCLUDE=$(ocamlfind query why3)
       if test -n "$WHY3INCLUDE"; then
          AC_MSG_RESULT([$WHY3INCLUDE])
          WHY3INCLUDE="-I $WHY3INCLUDE"
       else
          AC_MSG_RESULT([no])
          AC_MSG_ERROR([Cannot use --disable-why3-lib without an installed Why3.])
       fi
    fi
    
    if test "$enable_local" = no; then
       LOCALDIR=''
    else
       LOCALDIR="${PWD}"
    fi
    
    #if ocamlfind is used it gives the install path for ocaml library
    if test "$USEOCAMLFIND" = yes; then
       OCAMLINSTALLLIB=$(ocamlfind printconf destdir)
    else
       OCAMLINSTALLLIB=$OCAMLLIB
    fi
    
    # compiler plugins
    
    AX_VERSION_GE([$OCAMLVERSION], 4.05.0,
      [if test "$USEOCAMLFIND" = yes; then
         COMPILERLIBS=$(ocamlfind query compiler-libs)
       fi
       if test -n "$COMPILERLIBS"; then
         echo "ocamlfind found compiler-libs in $COMPILERLIBS"
         enable_compiler_plugins="yes"
       else
         COMPILERLIBS="+compiler-libs"
         AC_CHECK_FILE($OCAMLLIB/compiler-libs/,
                       enable_compiler_plugins=yes,
                       enable_compiler_plugins=no)
         if test "$enable_compiler_plugins" = no; then
           reason_compiler_plugins=" (compiler-libs not found)"
         fi
       fi],
      [enable_compiler_plugins="no"
       reason_compiler_plugins=" (Ocaml version 4.05.0 required)"])
    
    if test "$enable_compiler_plugins" = yes; then
      COMPILERLIBSPKG="compiler-libs"
    else
      COMPILERLIBSPKG=
    fi
    
    # checking for rubber
    if test "$enable_doc" = yes ; then
       AC_CHECK_PROG(RUBBER,rubber,rubber,no)
       if test "$RUBBER" = no ; then
          enable_doc=no
          enable_html_doc=no
          reason_doc=" (rubber not found)"
          AC_MSG_WARN([Cannot find rubber, documentation disabled.])
       fi
    else
       enable_html_doc=no
    fi
    
    # checking for hevea (note that the pdf documentation DOES NOT use hevea.sty)
    if test "$enable_html_doc" = yes ; then
       AC_CHECK_PROG(HEVEA,hevea,hevea,no)
       if test "$HEVEA" = no ; then
          enable_html_doc=no
          reason_html_doc=" (hevea not found)"
          AC_MSG_WARN([Cannot find hevea, HTML documentation disabled.])
       fi
    fi
    
    # checking for hacha
    if test "$enable_html_doc" = yes ; then
       AC_CHECK_PROG(HACHA,hacha,hacha,no)
       if test "$HACHA" = no ; then
          enable_html_doc=no
          reason_html_doc=" (hacha not found)"
          AC_MSG_WARN([Cannot find hacha, HTML documentation disabled.])
       fi
    fi
    
    # checking for emacs
    if test "$enable_emacs_compilation" = yes ; then
       AC_CHECK_PROG(EMACS,emacs,emacs,no)
       if test "$EMACS" = no ; then
          enable_emacs_compilation=no
          AC_MSG_WARN([Cannot find emacs, compilation of why3.elc disabled.])
       fi
    fi
    
    # checking for Num
    # (ocamlfind cannot be trusted here, since the default installation path is $OCAMLLIB)
    found_num=no
    if test "$USEOCAMLFIND" = yes; then
       DIR=$(ocamlfind query num)
       if test -n "$DIR"; then
          echo "ocamlfind found num in $DIR"
          NUMINCLUDE="-I $DIR"
          found_num=yes
          AC_CHECK_FILE($DIR/nums.cma,,found_num=no)
          AC_CHECK_FILE($DIR/num.cmi,,found_num=no)
       fi
    fi
    if test "$found_num" = no; then
       DIR="$OCAMLLIB"
       NUMINCLUDE=
       found_num=yes
       AC_CHECK_FILE($DIR/nums.cma,,found_num=no)
       AC_CHECK_FILE($DIR/num.cmi,,found_num=no)
    fi
    if test "$found_num" = no; then
       AC_MSG_ERROR([Library Num not found.])
    fi
    
    # checking for Zarith
    if test "$enable_zarith" = yes; then
       DIR=
       if test "$USEOCAMLFIND" = yes; then
          DIR=$(ocamlfind query zarith)
          if test -n "$DIR"; then
             echo "ocamlfind found zarith in $DIR"
             BIGINTINCLUDE="-I $DIR"
          fi
       fi
       if test -z "$DIR"; then
          BIGINTINCLUDE="-I +zarith"
          DIR="$OCAMLLIB/zarith"
          AC_CHECK_FILE($DIR/zarith.cma,,enable_zarith=no)
       fi
       AC_CHECK_FILE($DIR/z.cmi,,enable_zarith=no)
       if test "$enable_zarith" = no; then
          AC_MSG_WARN([Lib Zarith not found, using Nums instead.])
          reason_zarith=" (zarith not found)"
       fi
    fi
    
    if test "$enable_zarith" = yes; then
       BIGINTLIB=zarith
       BIGINTPKG=zarith
    else
       BIGINTLIB=nums
       BIGINTPKG=num
       BIGINTINCLUDE="$NUMINCLUDE"
    fi
    
    # checking for camlzip
    if test "$enable_zip" = yes; then
       DIR=
       if test "$USEOCAMLFIND" = yes; then
          DIR=$(ocamlfind query zip)
          if test -n "DIR"; then
             echo "ocamlfind found camlzip in $DIR"
             ZIPINCLUDE="-I $DIR"
          fi
       fi
       if test -z "$DIR"; then
          ZIPINCLUDE="-I +zip"
          DIR="$OCAMLLIB/zip"
          AC_CHECK_FILE($DIR/zip.cma,,enable_zip=no)
       fi
       AC_CHECK_FILE($DIR/zip.cmi,,enable_zip=no)
       if test "$enable_zip" = no; then
          AC_MSG_WARN([Lib camlzip not found, sessions files will not be compressed.])
          reason_zip=" (camlzip not found)"
       fi
    fi
    
    if test "$enable_zip" = yes; then
       ZIPLIB=zip
    else
       ZIPLIB=
       ZIPINCLUDE=
    fi
    
    # checking for menhirlib
    found_menhirlib=yes
    DIR=
    if test "$USEOCAMLFIND" = yes; then
       DIR=$(ocamlfind query menhirLib)
       if test -n "$DIR"; then
          echo "ocamlfind found menhirLib in $DIR"
          MENHIRINCLUDE="-I $DIR"
       fi
    fi
    if test -z "$DIR"; then
       MENHIRINCLUDE="-I +menhirLib"
       DIR="$OCAMLLIB/menhirLib"
       AC_CHECK_FILE($DIR/menhirLib.cmx,,found_menhirlib=no)
    fi
    AC_CHECK_FILE($DIR/menhirLib.cmi,,found_menhirlib=no)
    if test "$found_menhirlib" = no; then
       AC_MSG_ERROR([Library menhirLib not found.])
    fi
    
    # checking for lablgtk2
    if test "$enable_ide" != yes ; then
       reason_ide=" (disabled by user)"
    else
       DIR=
       if test "$USEOCAMLFIND" = yes; then
          DIR=$(ocamlfind query lablgtk2)
          if test -n "$DIR"; then
             echo "ocamlfind found lablgtk2 in $DIR"
             LABLGTK2LIB="$DIR"
          fi
       fi
       if test -z "$DIR"; then
          LABLGTK2LIB="+lablgtk2"
          DIR="$OCAMLLIB/lablgtk2"
          AC_CHECK_FILE($DIR/lablgtk.cma,,enable_ide=no)
       fi
       AC_CHECK_FILE($DIR/gtkButton.cmi,,enable_ide=no)
       if test "$enable_ide" = no; then
          AC_MSG_WARN([Lib lablgtk2 not found, IDE disabled.])
          reason_ide=" (lablgtk2 not found)"
       fi
    fi
    
    # checking for lablgtksourceview2
    if test "$enable_ide" = yes ; then
       DIR=
       if test "$USEOCAMLFIND" = yes; then
          DIR=$(ocamlfind query lablgtk2.sourceview2)
          if test -z "$DIR"; then
             DIR=$(ocamlfind query lablgtksourceview2)
          fi
          if test -n "$DIR";then
             echo "ocamlfind found lablgtksourceview2 in $DIR"
             LABLGTKSV2LIB="$DIR"
          fi
       fi
       if test -z "$DIR"; then
          DIR="$OCAMLLIB/lablgtk2"
          AC_CHECK_FILE($DIR/lablgtksourceview2.cma,,enable_ide=no)
       fi
       AC_CHECK_FILE($DIR/gSourceView2.cmi,,enable_ide=no)
       if test "$enable_ide" = no; then
          AC_MSG_WARN([Lib lablgtksourceview2 not found, IDE disabled.])
          reason_ide=" (lablgtksourceview2 not found)"
       fi
    fi
    
    if test "$enable_ide" = yes ; then
       LABLGTK2PKG="lablgtk2 lablgtk2.init lablgtk2.sourceview2"
    else
       LABLGTK2PKG=
       LABLGTK2LIB=
    fi
    
    dnl AC_CHECK_PROG(enable_ide,lablgtk2,yes,no) not always available (Win32)
    
    dnl AC_CHECK_PROG(OCAMLWEB,ocamlweb,ocamlweb,true)
    
    # checking for ocamlgraph
    if test "$enable_hypothesis_selection" = yes; then
       DIR=
       if test "$USEOCAMLFIND" = yes; then
          DIR=$(ocamlfind query ocamlgraph)
          if test -n "$DIR"; then
             echo "ocamlfind found ocamlgraph in $DIR"
             OCAMLGRAPHLIB="$DIR"
          fi
       fi
       if test -z "$DIR"; then
          OCAMLGRAPHLIB="+ocamlgraph"
          DIR="$OCAMLLIB/ocamlgraph"
          AC_CHECK_FILE($DIR/graph.cma,,enable_hypothesis_selection=no)
       fi
       AC_CHECK_FILE($DIR/graph.cmi,,enable_hypothesis_selection=no)
       if test "$enable_hypothesis_selection" = no; then
          reason_hypothesis_selection=" (ocamlgraph not found)"
          AC_MSG_WARN([Lib ocamlgraph not found, hypothesis selection disabled.])
       fi
    fi
    
    if test "$enable_hypothesis_selection" = yes; then
       META_OCAMLGRAPH="ocamlgraph"
    else
       META_OCAMLGRAPH=
       OCAMLGRAPHLIB=
    fi
    
    # checking for js_of_ocaml
    if test "$enable_js_of_ocaml" != yes; then
       reason_js_of_ocaml=" (disabled by user)"
    elif test "$USEOCAMLFIND" != yes; then
       enable_js_of_ocaml=no
       reason_js_of_ocaml=" (ocamlfind not available)"
    else
       JSOFOCAML=$(ocamlfind query js_of_ocaml)
       if test -z "$JSOFOCAML"; then
          enable_js_of_ocaml=no
          reason_js_of_ocaml=" (js_of_ocaml not found)"
       else
          JSOFOCAMLPPX=$(ocamlfind query js_of_ocaml-ppx)
          if test -z "$JSOFOCAMLPPX"; then
             enable_js_of_ocaml=no
             reason_js_of_ocaml=" (js_of_ocaml-ppx not found)"
          fi
       fi
    fi
    
    if test "$enable_web_ide" != yes; then
       reason_web_ide=" (disabled by user)"
    elif test "$enable_js_of_ocaml" != yes; then
       enable_web_ide=no
       reason_web_ide=" (js_of_ocaml not available)"
    fi
    
    # Coq
    
    enable_coq_support=yes
    enable_coq_fp_libs=yes
    
    coq_compat_version=
    
    if test "$enable_coq_libs" = no; then
       enable_coq_support=no
       reason_coq_support=" (disabled by user)"
    fi
    
    if test "$enable_coq_support" = yes; then
       AC_CHECK_PROG(COQC,coqc,coqc,no)
       if test "$COQC" = no ; then
          enable_coq_support=no
          AC_MSG_WARN(Cannot find coqc.)
          reason_coq_support=" (coqc not found)"
       fi
    fi
    
    if test "$enable_coq_support" = yes; then
       COQLIB=`$COQC -where | sed -e 's|\\\|/|g' -e 's| |\\ |g'`
       AC_MSG_CHECKING(Coq version)
       COQVERSION=[`$COQC -v | sed -n -e 's|.*version *\([^ ]*\) .*$|\1|p'`]
       AC_MSG_RESULT($COQVERSION)
    
       case $COQVERSION in
          8.5*)
             coq_compat_version="COQ85"
             ;;
          8.6*)
             coq_compat_version="COQ86"
             ;;
          8.7*)
             coq_compat_version="COQ87"
             ;;
          8.8*)
             coq_compat_version="COQ88"
             ;;
          *)
             enable_coq_support=no
             AC_MSG_WARN(You need Coq 8.5 or later; Coq discarded)
             reason_coq_support=" (version is $COQVERSION but need version 8.5 or later)"
             ;;
       esac
    fi
    
    if test "$enable_coq_support" = yes; then
       AC_CHECK_PROG(COQDEP,coqdep,coqdep,no)
       if test "$COQDEP" = no; then
          enable_coq_support=no
          AC_MSG_WARN(Cannot find coqdep.)
          reason_coq_support=" (coqdep not found)"
       fi
    fi
    
    if test "$enable_coq_support" = no; then
       enable_coq_libs=no
       COQVERSION=
    fi
    
    if test "$enable_coq_libs" = yes; then
       AC_MSG_CHECKING([for Flocq])
       AS_IF(
         [ echo "Require Import Flocq.Flocq_version BinNat." \
                "Goal (20500 <= Flocq_version)%N. easy. Qed." > conftest.v
           "$COQC" conftest.v > conftest.err ],
         [ AC_MSG_RESULT(yes) ],
         [ AC_MSG_RESULT(no)
           enable_coq_fp_libs=no
           AC_MSG_WARN(Cannot find Flocq.)
           reason_coq_fp_libs=" (Flocq >= 2.5 not found)" ])
       rm -f conftest.v conftest.vo conftest.err
    fi
    
    # PVS
    
    if test "$enable_pvs_libs" = no; then
        enable_pvs_support=no
        reason_pvs_support=" (disabled by user)"
    else
        AC_CHECK_PROG(PVS,pvs,pvs,no)
        if test "$PVS" = no ; then
            enable_pvs_support=no
            AC_MSG_WARN(Cannot find pvs.)
            reason_pvs_support=" (pvs not found)"
        else
            PVSLIB=`$PVS -where`
            AC_MSG_CHECKING(PVS version)
            PVSVERSION=[`$PVS -version | sed -n -e 's|.*Version *\([^ ]*\)$|\1|p'`]
    
            case $PVSVERSION in
              6.*)
    	        enable_pvs_support=yes
                    AC_MSG_RESULT($PVSVERSION)
                    ;;
              *)
                    AC_MSG_RESULT($PVSVERSION)
                    enable_pvs_support=no
    	        AC_MSG_WARN(You need PVS 6.0 or higher; PVS discarded)
                    reason_pvs_support=" (need version 6.0 or higher)"
                    ;;
            esac
        fi
    fi
    
    if test "$enable_pvs_support" = no; then
       enable_pvs_libs=no
       PVSVERSION=
    fi
    
    # Isabelle
    
    # Default version used for generation of realization in the case Isabelle is not
    # detected or Why3 is compiled with disable-isabelle.
    ISABELLEVERSION=2017
    
    if test "$enable_isabelle_libs" = no; then
        enable_isabelle_support=no
        reason_isabelle_support=" (disabled by user)"
    else
        AC_CHECK_PROG(ISABELLE,isabelle,isabelle,no)
        if test "$ISABELLE" = no ; then
           enable_isabelle_support=no
           AC_MSG_WARN(Cannot find isabelle.)
           reason_isabelle_support=" (isabelle not found)"
        else
            AC_MSG_CHECKING(Isabelle version)
            ISABELLEDETECTEDVERSION=[`$ISABELLE version | sed -n -e 's|Isabelle\([^:]*\).*$|\1|p'`]
    
            case $ISABELLEDETECTEDVERSION in
              2016-1*)
    	        enable_isabelle_support=yes
                    ISABELLEVERSION=2016-1
                    AC_MSG_RESULT($ISABELLEDETECTEDVERSION)
                    ;;
              2017*)
    	        enable_isabelle_support=yes
                    ISABELLEVERSION=2017
                    AC_MSG_RESULT($ISABELLEDETECTEDVERSION)
                    ;;
              *)
                    AC_MSG_RESULT($ISABELLEDETECTEDVERSION)
                    enable_isabelle_support=no
    	        AC_MSG_WARN(You need Isabelle 2016-1 or later; Isabelle discarded)
                    reason_isabelle_support=" (need version >= 2016-1)"
                    ;;
            esac
        fi
    fi
    
    if test "$enable_isabelle_support" = no; then
       enable_isabelle_libs=no
    fi
    
    if test "$enable_pvs_libs" = yes; then
       AC_MSG_CHECKING([for NASA PVS library])
       enable_pvs_libs=no
       reason_pvs_libs=" (no NASA PVS library in PVS_LIBRARY_PATH)"
       for dir in  `echo $PVS_LIBRARY_PATH | tr ':' ' '`; do
           if test -f $dir/nasalib-version; then
              enable_pvs_libs=yes
              reason_pvs_libs=""
           fi
       done
       AC_MSG_RESULT($enable_pvs_libs)
    fi
    
    #check frama-c
    FRAMAC_SUPPORTED=Sulfur
    if test "$enable_frama_c" = yes ; then
       AC_CHECK_PROG(FRAMAC,frama-c,frama-c,no)
       if test "$FRAMAC" = no ; then
            AC_MSG_WARN(Cannot find Frama-C.)
            enable_frama_c="no"
            reason_frama_c=" (frama-c not found)"
       else
          AC_MSG_CHECKING(Frama-C version)
          FRAMAC_VERSION=`$FRAMAC -version | sed -n -e 's|\(Version: \)\?\(.*\)$|\2|p'`
          AC_MSG_RESULT($FRAMAC_VERSION)
          case $FRAMAC_VERSION in
             $FRAMAC_SUPPORTED-*) ;;
             *) AC_MSG_WARN(Version $FRAMAC_SUPPORTED required.)
                enable_frama_c=no
                reason_frama_c=" (version $FRAMAC_SUPPORTED required)"
                ;;
          esac
       fi
    fi
    
    if test "$enable_frama_c" = yes; then
       FRAMAC_SHARE=`$FRAMAC -print-path`
       FRAMAC_LIBDIR=`$FRAMAC -print-libpath`
       FRAMAC_INCLUDE="-I $FRAMAC_LIBDIR"
    fi
    
    #Viewer for ps and pdf
    dnl AC_CHECK_PROGS(PSVIEWER,gv evince)
    dnl AC_CHECK_PROGS(PDFVIEWER,xpdf acroread evince)
    
    VERSION=$PACKAGE_VERSION
    
    # substitutions to perform
    AC_SUBST(VERSION)
    
    AC_SUBST(enable_verbose_make)
    
    AC_SUBST(EXE)
    AC_SUBST(STRIP)
    
    AC_SUBST(OCAMLC)
    AC_SUBST(OCAMLOPT)
    AC_SUBST(OCAMLDEP)
    AC_SUBST(OCAMLLEX)
    AC_SUBST(OCAMLYACC)
    AC_SUBST(OCAMLDOC)
    AC_SUBST(OCAMLBEST)
    AC_SUBST(OCAMLVERSION)
    AC_SUBST(OCAMLLIB)
    AC_SUBST(OCAMLINSTALLLIB)
    dnl AC_SUBST(OCAMLV)
    dnl AC_SUBST(FORPACK)
    AC_SUBST(OCAMLGRAPHLIB)
    dnl AC_SUBST(OCAMLWEB)
    AC_SUBST(MENHIR)
    
    AC_SUBST(enable_profiling)
    
    AC_SUBST(enable_ide)
    AC_SUBST(LABLGTK2LIB)
    AC_SUBST(LABLGTK2PKG)
    
    AC_SUBST(enable_web_ide)
    AC_SUBST(enable_js_of_ocaml)
    
    AC_SUBST(META_OCAMLGRAPH)
    
    AC_SUBST(enable_compiler_plugins)
    AC_SUBST(COMPILERLIBS)
    AC_SUBST(COMPILERLIBSPKG)
    
    AC_SUBST(NUMINCLUDE)
    
    AC_SUBST(enable_zarith)
    AC_SUBST(BIGINTINCLUDE)
    AC_SUBST(BIGINTLIB)
    AC_SUBST(BIGINTPKG)
    
    AC_SUBST(enable_zip)
    AC_SUBST(ZIPINCLUDE)
    AC_SUBST(ZIPLIB)
    
    AC_SUBST(MENHIRINCLUDE)
    
    AC_SUBST(enable_coq_libs)
    AC_SUBST(enable_coq_fp_libs)
    AC_SUBST(coq_compat_version)
    
    AC_SUBST(COQC)
    AC_SUBST(COQDEP)
    AC_SUBST(COQLIB)
    AC_SUBST(COQVERSION)
    
    AC_SUBST(enable_pvs_libs)
    AC_SUBST(PVS)
    AC_SUBST(PVSVERSION)
    
    AC_SUBST(enable_isabelle_libs)
    AC_SUBST(ISABELLE)
    AC_SUBST(ISABELLEVERSION)
    
    AC_SUBST(enable_hypothesis_selection)
    
    AC_SUBST(enable_doc)
    AC_SUBST(enable_html_doc)
    
    AC_SUBST(RUBBER)
    AC_SUBST(HEVEA)
    AC_SUBST(HACHA)
    
    AC_SUBST(enable_emacs_compilation)
    AC_SUBST(EMACS)
    
    AC_SUBST(enable_frama_c)
    
    AC_SUBST(FRAMAC)
    AC_SUBST(FRAMAC_VERSION)
    AC_SUBST(FRAMAC_SHARE)
    AC_SUBST(FRAMAC_LIBDIR)
    AC_SUBST(FRAMAC_INCLUDE)
    
    AC_SUBST(enable_local)
    AC_SUBST(LOCALDIR)
    
    AC_SUBST(enable_why3_lib)
    AC_SUBST(WHY3LIB)
    AC_SUBST(WHY3INCLUDE)
    
    AC_SUBST(enable_relocation)
    
    dnl AC_SUBST(PSVIEWER)
    dnl AC_SUBST(PDFVIEWER)
    
    # Finally create the Makefile from Makefile.in
    AC_CONFIG_FILES(Makefile)
    AC_CONFIG_FILES(src/config.sh doc/version.tex)
    AC_CONFIG_FILES(lib/why3/META)
    AC_CONFIG_FILES(.merlin)
    AC_CONFIG_FILES(src/jessie/Makefile)
    AC_CONFIG_FILES(src/jessie/.merlin)
    AC_CONFIG_FILES(lib/coq/version lib/pvs/version)
    AC_CONFIG_COMMANDS([chmod],
    chmod a-w Makefile src/jessie/Makefile;
    chmod a-w src/config.sh doc/version.tex;
    chmod a-w lib/why3/META;
    chmod a-w .merlin;
    chmod a-w src/jessie/Makefile;
    chmod a-w src/jessie/.merlin;
    chmod a-w lib/coq/version lib/pvs/version;
    chmod u+x src/config.sh)
    
    AC_OUTPUT
    
    
    # Summary
    
    echo
    echo "                 Summary"
    echo "-----------------------------------------"
    echo "Verbose make                : $enable_verbose_make"
    echo "OCaml compiler              : yes"
    echo "    Version                 : $OCAMLVERSION"
    echo "    Library path            : $OCAMLLIB"
    echo "    Native compilation      : $enable_native_code"
    echo "    Profiling               : $enable_profiling"
    echo "    Compiler plugins        : $enable_compiler_plugins$reason_compiler_plugins"
    echo "    Javascript support      : $enable_js_of_ocaml$reason_js_of_ocaml"
    echo "Components"
    echo "    Why3 library            : $enable_why3_lib"
    echo "    GTK IDE                 : $enable_ide$reason_ide"
    echo "    Web IDE                 : $enable_web_ide$reason_web_ide"
    echo "    GMP arithmetic          : $enable_zarith$reason_zarith"
    echo "    Compressed sessions     : $enable_zip$reason_zip"
    echo "    Hypothesis selection    : $enable_hypothesis_selection$reason_hypothesis_selection"
    echo "    Frama-C support         : $enable_frama_c$reason_frama_c"
    if test "$enable_frama_c" = yes ; then
       echo "        Version             : $FRAMAC_VERSION"
       echo "        Share path          : $FRAMAC_SHARE"
       echo "        Library path        : $FRAMAC_LIBDIR"
    fi
    echo "Documentation               : $enable_doc$reason_doc"
    if test "$enable_doc" = yes ; then
       echo "    PDF                     : yes"
       echo "    HTML                    : $enable_html_doc$reason_html_doc"
    fi
    echo "Support for interactive proof assistants"
    echo "    Coq                     : $enable_coq_support$reason_coq_support"
    if test "$enable_coq_support" = yes ; then
       echo "        Version             : $COQVERSION"
       echo "        Library path        : $COQLIB"
       echo "        Realization support : $enable_coq_libs$reason_coq_libs"
       if test "$enable_coq_libs" = yes ; then
          echo "            FP arithmetic   : $enable_coq_fp_libs$reason_coq_fp_libs"
       fi
    fi
    echo "    PVS                     : $enable_pvs_support$reason_pvs_support"
    if test "$enable_pvs_support" = yes ; then
       echo "        Version             : $PVSVERSION"
       echo "        Library path        : $PVSLIB"
       echo "        Realization support : $enable_pvs_libs$reason_pvs_libs"
    fi
    echo "    Isabelle                : $enable_isabelle_support$reason_isabelle_support"
    if test "$enable_isabelle_support" = yes ; then
       echo "        Version             : $ISABELLEVERSION ($ISABELLEDETECTEDVERSION)"
       echo "        Realization support : $enable_isabelle_libs$reason_isabelle_libs"
    fi
    if test "$enable_local" = yes ; then
       echo "Installable                 : no"
       echo "    OCaml library path      : $OCAMLINSTALLLIB/why3"
    else
       echo "Installable                 : yes"
       echo "    Binary path             : $bindir"
       echo "    Library path            : $libdir/why3"
       echo "    Data path               : $datarootdir/why3"
       echo "    OCaml library path      : $OCAMLINSTALLLIB/why3"
       echo "    Relocatable             : $enable_relocation"
    fi