Fix .gitignore.
[rpmdepsize.git] / m4 / ocaml.m4
1 dnl autoconf macros for OCaml
2 dnl by Olivier Andrieu
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
6
7 dnl For documentation, please read the ocaml.m4 man page.
8
9 AC_DEFUN([AC_PROG_OCAML],
10 [dnl
11   # checking for ocamlc
12   AC_CHECK_TOOL(OCAMLC,ocamlc,no)
13
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)
19
20      AC_SUBST(OCAMLVERSION)
21      AC_SUBST(OCAMLLIB)
22
23      # checking for ocamlopt
24      AC_CHECK_TOOL(OCAMLOPT,ocamlopt,no)
25      OCAMLBEST=byte
26      if test "$OCAMLOPT" = "no"; then
27         AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.)
28      else
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.)
32             OCAMLOPT=no
33         else
34             OCAMLBEST=opt
35         fi
36      fi
37
38      AC_SUBST(OCAMLBEST)
39
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.)
46         else
47             OCAMLC=$OCAMLCDOTOPT
48         fi
49      fi
50
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.)
58            else
59               OCAMLOPT=$OCAMLOPTDOTOPT
60            fi
61         fi
62      fi
63
64      AC_SUBST(OCAMLOPT)
65   fi
66
67   AC_SUBST(OCAMLC)
68
69   # checking for ocamldep
70   AC_CHECK_TOOL(OCAMLDEP,ocamldep,no)
71
72   # checking for ocamlmktop
73   AC_CHECK_TOOL(OCAMLMKTOP,ocamlmktop,no)
74
75   # checking for ocamlmklib
76   AC_CHECK_TOOL(OCAMLMKLIB,ocamlmklib,no)
77
78   # checking for ocamldoc
79   AC_CHECK_TOOL(OCAMLDOC,ocamldoc,no)
80 ])
81
82
83 AC_DEFUN([AC_PROG_OCAMLLEX],
84 [dnl
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
91     fi
92   fi
93   AC_SUBST(OCAMLLEX)
94 ])
95
96 AC_DEFUN([AC_PROG_OCAMLYACC],
97 [dnl
98   AC_CHECK_TOOL(OCAMLYACC,ocamlyacc,no)
99   AC_SUBST(OCAMLYACC)
100 ])
101
102
103 AC_DEFUN([AC_PROG_CAMLP4],
104 [dnl
105   AC_REQUIRE([AC_PROG_OCAML])dnl
106
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)
113         CAMLP4=no
114      fi
115   fi
116   AC_SUBST(CAMLP4)
117 ])
118
119
120 AC_DEFUN([AC_PROG_FINDLIB],
121 [dnl
122   AC_REQUIRE([AC_PROG_OCAML])dnl
123
124   # checking for ocamlfind
125   AC_CHECK_TOOL(OCAMLFIND,ocamlfind,no)
126   AC_SUBST(OCAMLFIND)
127 ])
128
129
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],
134 [dnl
135   AC_REQUIRE([AC_PROG_FINDLIB])dnl
136
137   AC_MSG_CHECKING([for OCaml findlib package $1])
138
139   if $OCAMLFIND query $1 >/dev/null 2>/dev/null; then
140     AC_MSG_RESULT([found])
141     AS_TR_SH([OCAML_PKG_$1])=yes
142   else
143     AC_MSG_RESULT([not found])
144     AS_TR_SH([OCAML_PKG_$1])=no
145   fi
146
147   AC_SUBST(AS_TR_SH([OCAML_PKG_$1]))
148 ])
149
150
151 AC_DEFUN([AC_CHECK_OCAML_MODULE],
152 [dnl
153   AC_MSG_CHECKING(for OCaml module $2)
154
155   cat > conftest.ml <<EOF
156 open $3
157 EOF
158   unset found
159   for $1 in $$1 $4 ; do
160     if $OCAMLC -c -I "$$1" conftest.ml >&5 2>&5 ; then
161       found=yes
162       break
163     fi
164   done
165
166   if test "$found" ; then
167     AC_MSG_RESULT($$1)
168   else
169     AC_MSG_RESULT(not found)
170     $1=no
171   fi
172   AC_SUBST($1)
173 ])
174
175
176 dnl XXX Cross-compiling
177 AC_DEFUN([AC_CHECK_OCAML_WORD_SIZE],
178 [dnl
179   AC_MSG_CHECKING(for OCaml compiler word size)
180   cat > conftest.ml <<EOF
181   print_endline (string_of_int Sys.word_size)
182   EOF
183   OCAML_WORD_SIZE=`ocaml conftest.ml`
184   AC_MSG_RESULT($OCAML_WORD_SIZE)
185   AC_SUBST(OCAML_WORD_SIZE)
186 ])