1 dnl autoconf macros for OCaml
3 dnl modified by Richard W.M. Jones
4 dnl from a configure.in by Jean-Christophe FilliĆ¢tre,
5 dnl from a first script by Georges Mariano
7 dnl defines AC_PROG_OCAML that will check the OCaml compiler
8 dnl and set the following variables :
9 dnl OCAMLC "ocamlc" if present in the path, or a failure
10 dnl or "ocamlc.opt" if present with same version number as ocamlc
11 dnl OCAMLOPT "ocamlopt" (or "ocamlopt.opt" if present), or "no"
12 dnl OCAMLBEST either "byte" if no native compiler was found,
13 dnl or "opt" otherwise
14 dnl OCAMLDEP "ocamldep"
15 dnl OCAMLLIB the path to the ocaml standard library
16 dnl OCAMLVERSION the ocaml version number
17 AC_DEFUN(AC_PROG_OCAML,
20 AC_CHECK_PROG(OCAMLC,ocamlc,ocamlc,AC_MSG_ERROR(Cannot find ocamlc.))
21 OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
22 AC_MSG_RESULT(OCaml version is $OCAMLVERSION)
23 OCAMLLIB=`$OCAMLC -where 2>/dev/null || $OCAMLC -v|tail -1|cut -d ' ' -f 4`
24 AC_MSG_RESULT(OCaml library path is $OCAMLLIB)
25 # checking for ocamlopt
26 AC_CHECK_PROG(OCAMLOPT,ocamlopt,ocamlopt)
28 if test -z "$OCAMLOPT"; then
29 AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.)
31 TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
32 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
33 AC_MSG_RESULT(versions differs from ocamlc; ocamlopt discarded.)
39 # checking for ocamlc.opt
40 AC_CHECK_PROG(OCAMLCDOTOPT,ocamlc.opt,ocamlc.opt)
41 if test -z "$OCAMLCDOTOPT"; then
42 TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
43 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
44 AC_MSG_RESULT(versions differs from ocamlc; ocamlc.opt discarded.)
49 # checking for ocamlopt.opt
50 if test "$OCAMLOPT" ; then
51 AC_CHECK_PROG(OCAMLOPTDOTOPT,ocamlopt.opt,ocamlopt.opt)
52 if test "$OCAMLOPTDOTOPT"; then
53 TMPVER=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
54 if test "$TMPVER" != "$OCAMLVERSION" ; then
55 AC_MSG_RESULT(version differs from ocamlc; ocamlopt.opt discarded.)
57 OCAMLOPT=$OCAMLOPTDOTOPT
61 # checking for ocamldep
62 AC_CHECK_PROG(OCAMLDEP,ocamldep,ocamldep,AC_MSG_ERROR(Cannot find ocamldep.))
64 #checking for ocamlmktop
65 AC_CHECK_PROG(OCAMLMKTOP,ocamlmktop,ocamlmktop, AC_MSG_WARN(Cannot find ocamlmktop.))
66 #checking for ocamlmklib
67 AC_CHECK_PROG(OCAMLMKLIB,ocamlmklib,ocamlmklib, AC_MSG_WARN(Cannot find ocamlmklib.))
68 # checking for ocamldoc
69 AC_CHECK_PROG(OCAMLDOC,ocamldoc,ocamldoc, AC_MSG_WARN(Cannot find ocamldoc.))
76 AC_SUBST(OCAMLVERSION)
84 dnl macro AC_PROG_OCAML_TOOLS will check OCamllex and OCamlyacc :
85 dnl OCAMLLEX "ocamllex" or "ocamllex.opt" if present
86 dnl OCAMLYACC "ocamlyac"
87 AC_DEFUN(AC_PROG_OCAML_TOOLS,
89 # checking for ocamllex and ocamlyacc
90 AC_CHECK_PROG(OCAMLLEX,ocamllex,ocamllex)
91 if test "$OCAMLLEX"; then
92 AC_CHECK_PROG(OCAMLLEXDOTOPT,ocamllex.opt,ocamllex.opt)
93 if test "$OCAMLLEXDOTOPT"; then
94 OCAMLLEX=$OCAMLLEXDOTOPT
97 AC_MSG_ERROR(Cannot find ocamllex.)
99 AC_CHECK_PROG(OCAMLYACC,ocamlyacc,ocamlyacc,AC_MSG_ERROR(Cannot find ocamlyacc.))
106 dnl AC_PROG_CAMLP4 checks for Camlp4
107 AC_DEFUN(AC_PROG_CAMLP4,
109 AC_REQUIRE([AC_PROG_OCAML])
110 # checking for camlp4
111 AC_CHECK_PROG(CAMLP4,camlp4,camlp4)
112 if test "$CAMLP4"; then
113 TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'`
114 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
115 AC_MSG_RESULT(versions differs from ocamlc)
122 dnl macro AC_PROG_FINDLIB will check for the presence of
124 AC_DEFUN(AC_PROG_FINDLIB,
126 # checking for ocamlfind
127 AC_CHECK_PROG(OCAMLFIND,ocamlfind,ocamlfind,
128 AC_MSG_ERROR(ocamlfind not found))
134 dnl AC_CHECK_OCAML_PKG checks wether a findlib package is present
135 dnl defines pkg_name to "yes"
136 AC_DEFUN(AC_CHECK_OCAML_PKG,
138 AC_REQUIRE([AC_PROG_FINDLIB])
139 AC_MSG_CHECKING(findlib package $1)
140 if $OCAMLFIND query $1 >/dev/null 2>/dev/null; then
142 eval "pkg_`echo $1 | tr - _`=yes"
144 AC_MSG_RESULT(not found)
145 eval "pkg_`echo $1 | tr - _`=no"