blob: b204bec4ef705cd80ecc1be7f2548609fddb38ef [file] [log] [blame] [edit]
# autoconf input for Objective Caml programs
# Copyright (C) 2001 Jean-Christophe FilliĆ¢tre
# from a first script by Georges Mariano
#
# Modified to be an autoconf m4 function in 2006
# for BRLTTY [http://brltty.app/]
# by Dave Mielke <dave@mielke.cc>
#
# 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).
# the script generated by autoconf from this input will set the following
# variables:
# OCAMLC "ocamlc" if present in the path, or a failure
# or "ocamlc.opt" if present with same version number as ocamlc
# OCAMLOPT "ocamlopt" (or "ocamlopt.opt" if present), or "no"
# OCAMLMKLIB "ocamlkmlib", or "no"
# OCAMLBEST either "byte" if no native compiler was found,
# or "opt" otherwise
# OCAMLDEP "ocamldep"
# OCAMLLEX "ocamllex" (or "ocamllex.opt" if present)
# OCAMLYACC "ocamlyac"
# OCAMLLIB the path to the ocaml standard library
# OCAMLVERSION the ocaml version number
# OCAMLWEB "ocamlweb" (not mandatory)
# OCAMLWIN32 "yes"/"no" depending on Sys.os_type = "Win32"
AC_DEFUN([BRLTTY_OCAML_BINDINGS], [dnl
# 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_WARN([Cannot find ocamlc.])
OCAML_OK=false
else
# checking for ocamlmklib
AC_CHECK_PROG(OCAMLMKLIB,ocamlmklib,ocamlmklib,no)
if test "$OCAMLMKLIB" = no ; then
AC_MSG_WARN([Cannot find ocamlmklib.])
OCAML_OK=false
else
OCAML_OK=true
# we extract Ocaml version number and library path
OCAMLVERSION=`$OCAMLC -version`
AC_MSG_NOTICE([OCaml version is $OCAMLVERSION])
OCAMLLIB=`$OCAMLC -where`
AC_MSG_NOTICE([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
OCAML_NCLIB=
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
OCAML_NCLIB="\$(OCAML_LIB).cmxa"
fi
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
# platform
AC_MSG_CHECKING(platform)
if echo "let _ = Sys.os_type;;" | ocaml | grep -q Win32; then
AC_MSG_RESULT(Win32)
OCAMLWIN32=yes
OCAML_CLIBS=libbrlapi_stubs.a
elif echo "let _ = Sys.os_type;;" | ocaml | grep -q Cygwin; then
AC_MSG_RESULT(Cygwin)
OCAMLWIN32=yes
OCAML_CLIBS=libbrlapi_stubs.a
else
AC_MSG_RESULT(Unix)
OCAMLWIN32=no
OCAML_CLIBS="libbrlapi_stubs.a dllbrlapi_stubs.so"
fi
# checking for ocamlfindlib
AC_CHECK_PROG(OCAMLFIND,ocamlfind,ocamlfind,no)
if test "$OCAMLFIND" = ocamlfind; then
OCAMLC='ocamlfind ocamlc'
if test "$OCAMLOPT" = ocamlopt; then
OCAMLOPT='ocamlfind ocamlopt'
fi
OCAML_INSTALL_TARGET=install-with-findlib
OCAML_UNINSTALL_TARGET=uninstall-without-findlib
else
OCAML_INSTALL_TARGET=install-without-findlib
OCAML_UNINSTALL_TARGET=uninstall-without-findlib
AC_MSG_WARN([Cannot find ocamlfind.])
fi
fi
fi
# substitutions to perform
AC_SUBST(OCAMLC)
AC_SUBST(OCAMLOPT)
AC_SUBST(OCAMLMKLIB)
AC_SUBST(OCAMLBEST)
AC_SUBST(OCAMLVERSION)
AC_SUBST(OCAMLLIB)
AC_SUBST(OCAMLWIN32)
AC_SUBST(OCAML_CLIBS)
AC_SUBST(OCAML_NCLIB)
AC_SUBST(OCAMLFIND)
AC_SUBST(OCAML_INSTALL_TARGET)
AC_SUBST(OCAML_UNINSTALL_TARGET)
AC_SUBST([OCAML_OK])
])