1 dnl autoconf macros for OCaml
3 dnl extensively 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 For documentation, please read the ocaml.m4 man page.
9 AC_DEFUN([AC_PROG_OCAML],
12 AC_CHECK_TOOL(OCAMLC,ocamlc,no)
14 if test "$OCAMLC" != "no"; then
15 OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p'`
16 AC_MSG_RESULT(OCaml version is $OCAMLVERSION)
17 OCAMLLIB=`$OCAMLC -where 2>/dev/null || $OCAMLC -v|tail -1|cut -d ' ' -f 4`
18 AC_MSG_RESULT(OCaml library path is $OCAMLLIB)
20 AC_SUBST(OCAMLVERSION)
23 # checking for ocamlopt
24 AC_CHECK_TOOL(OCAMLOPT,ocamlopt,no)
26 if test "$OCAMLOPT" = "no"; then
27 AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.)
29 TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
30 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
31 AC_MSG_RESULT(versions differs from ocamlc; ocamlopt discarded.)
40 # checking for ocamlc.opt
41 AC_CHECK_TOOL(OCAMLCDOTOPT,ocamlc.opt,no)
42 if test "$OCAMLCDOTOPT" != "no"; then
43 TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
44 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
45 AC_MSG_RESULT(versions differs from ocamlc; ocamlc.opt discarded.)
51 # checking for ocamlopt.opt
52 if test "$OCAMLOPT" != "no" ; then
53 AC_CHECK_TOOL(OCAMLOPTDOTOPT,ocamlopt.opt,no)
54 if test "$OCAMLOPTDOTOPT" != "no"; then
55 TMPVERSION=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
56 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
57 AC_MSG_RESULT(version differs from ocamlc; ocamlopt.opt discarded.)
59 OCAMLOPT=$OCAMLOPTDOTOPT
69 # checking for ocamldep
70 AC_CHECK_TOOL(OCAMLDEP,ocamldep,no)
72 # checking for ocamlmktop
73 AC_CHECK_TOOL(OCAMLMKTOP,ocamlmktop,no)
75 # checking for ocamlmklib
76 AC_CHECK_TOOL(OCAMLMKLIB,ocamlmklib,no)
78 # checking for ocamldoc
79 AC_CHECK_TOOL(OCAMLDOC,ocamldoc,no)
83 AC_DEFUN([AC_PROG_OCAMLLEX],
85 # checking for ocamllex
86 AC_CHECK_TOOL(OCAMLLEX,ocamllex,no)
87 if test "$OCAMLLEX" != "no"; then
88 AC_CHECK_TOOL(OCAMLLEXDOTOPT,ocamllex.opt,no)
89 if test "$OCAMLLEXDOTOPT" != "no"; then
90 OCAMLLEX=$OCAMLLEXDOTOPT
96 AC_DEFUN([AC_PROG_OCAMLYACC],
98 AC_CHECK_TOOL(OCAMLYACC,ocamlyacc,no)
103 AC_DEFUN([AC_PROG_CAMLP4],
105 AC_REQUIRE([AC_PROG_OCAML])dnl
107 # checking for camlp4
108 AC_CHECK_TOOL(CAMLP4,camlp4,no)
109 if test "$CAMLP4" != "no"; then
110 TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'`
111 if test "$TMPVERSION" != "$OCAMLVERSION" ; then
112 AC_MSG_RESULT(versions differs from ocamlc)
120 AC_DEFUN([AC_PROG_FINDLIB],
122 AC_REQUIRE([AC_PROG_OCAML])dnl
124 # checking for ocamlfind
125 AC_CHECK_TOOL(OCAMLFIND,ocamlfind,no)
130 dnl Thanks to Jim Meyering for working this next bit out for us.
131 dnl XXX We should define AS_TR_SH if it's not defined already
132 dnl (eg. for old autoconf).
133 AC_DEFUN([AC_CHECK_OCAML_PKG],
135 AC_REQUIRE([AC_PROG_FINDLIB])dnl
137 AC_MSG_CHECKING([for OCaml findlib package $1])
139 if $OCAMLFIND query $1 >/dev/null 2>/dev/null; then
140 AC_MSG_RESULT([found])
141 AS_TR_SH([OCAML_PKG_$1])=yes
143 AC_MSG_RESULT([not found])
144 AS_TR_SH([OCAML_PKG_$1])=no
147 AC_SUBST(AS_TR_SH([OCAML_PKG_$1]))
151 AC_DEFUN([AC_CHECK_OCAML_MODULE],
153 AC_MSG_CHECKING(for OCaml module $2)
155 cat > conftest.ml <<EOF
159 for $1 in $$1 $4 ; do
160 if $OCAMLC -c -I "$$1" conftest.ml >&5 2>&5 ; then
166 if test "$found" ; then
169 AC_MSG_RESULT(not found)
176 dnl XXX Cross-compiling
177 AC_DEFUN([AC_CHECK_OCAML_WORD_SIZE],
179 AC_MSG_CHECKING(for OCaml compiler word size)
180 cat > conftest.ml <<EOF
181 print_endline (string_of_int Sys.word_size)
183 OCAML_WORD_SIZE=`ocaml conftest.ml`
184 AC_MSG_RESULT($OCAML_WORD_SIZE)
185 AC_SUBST(OCAML_WORD_SIZE)