d9a91330143d7e35ae31bc5c34a3ef771184bfc2
[tatoo.git] / configure.in
1 AC_INIT([TAToo],
2         [0.0.1],
3         [Kim Nguyễn <kn@lri.fr>],
4         [tatoo])
5
6 #detect ocamlfind
7 OCAMLFIND=ocamlfind
8 AC_ARG_WITH([ocamlfind],
9             AS_HELP_STRING([--with-ocamlfind=PATH], [location of the ocamlfind binary]),
10         [OCAMLFIND="$withval"])
11 AC_MSG_CHECKING([for ocamlfind ($OCAMLFIND)])
12 $OCAMLFIND list >/dev/null 2>&1
13 if test $? ; then
14    AC_MSG_RESULT([found])
15    OCAMLC="$OCAMLFIND ocamlc"
16    OCAMLOPT="$OCAMLFIND ocamlopt"
17    OCAMLDEP="$OCAMLFIND ocamldep"
18 else
19    AC_MSG_RESULT([not found])
20    AC_MSG_ERROR([Cannot find ocamlfind.])
21 fi
22
23 AC_SUBST([OCAMLFIND])
24
25 #check ocamlc
26 AC_MSG_CHECKING([for $OCAMLC])
27 $OCAMLC >/dev/null 2>&1
28 if test $? ; then
29         AC_MSG_RESULT([ok])
30 else
31         AC_MSG_RESULT([failed])
32         AC_MSG_ERROR(Cannot find ocamlc.)
33 fi
34 AC_SUBST([OCAMLC])
35
36 #check ocamlopt
37 AC_MSG_CHECKING([for $OCAMLOPT])
38 $OCAMLOPT >/dev/null 2>&1
39 if test $? ; then
40         AC_MSG_RESULT([ok])
41 else
42         AC_MSG_RESULT([failed])
43         AC_MSG_ERROR(Cannot find ocamlopt.)
44 fi
45 AC_SUBST([OCAMLOPT])
46
47 #check ocamldep
48 AC_MSG_CHECKING([for $OCAMLDEP])
49 $OCAMLDEP >/dev/null 2>&1
50 if test $? ; then
51         AC_MSG_RESULT([ok])
52 else
53         AC_MSG_RESULT([failed])
54         AC_MSG_ERROR(Cannot find ocamldep.)
55 fi
56 AC_SUBST([OCAMLDEP])
57
58 #ocaml version
59 OCAMLVERSION=$($OCAMLC -version)
60 AC_MSG_CHECKING([ocaml version])
61 AC_MSG_RESULT([$OCAMLVERSION])
62
63 case "$OCAMLVERSION" in
64      3.12.*) ;; 4.*) ;;
65      *) AC_MSG_ERROR([OCaml $OCAMLVERSION is too old])
66      ;;
67 esac
68
69 AC_SUBST(OCAMLVERSION)
70
71 #detect ocamlyacc
72 OCAMLYACC=ocamlyacc
73 AC_ARG_WITH([ocamlyacc],
74             AS_HELP_STRING([--with-ocamlyacc=PATH], [location of the ocamlyacc binary]),
75         [OCAMLYACC="$withval"])
76 AC_MSG_CHECKING([for ocamlyacc ($OCAMLYACC)])
77 OCAMLYACC_VERSION=$($OCAMLYACC -version 2>/dev/null || echo foo)
78 case "$OCAMLYACC_VERSION" in
79      *$OCAMLVERSION)
80      AC_MSG_RESULT([ok])
81      ;;
82      foo)
83      AC_MSG_RESULT([failed])
84      AC_MSG_ERROR([Cannot find ocamlyacc])
85      ;;
86      *)
87      AC_MSG_RESULT([failed])
88      AC_MSG_ERROR([Bad ocamlyacc version])
89      ;;
90 esac
91 AC_SUBST([OCAMLYACC])
92
93
94 #detect camlp4
95 CAMLP4=camlp4
96 AC_ARG_WITH([camlp4],
97             AS_HELP_STRING([--with-camlp4=PATH], [location of the camlp4 binary]),
98         [CAMLP4="$withval"])
99 AC_MSG_CHECKING([for camlp4 ($CAMLP4)])
100 CAMLP4_VERSION=$($CAMLP4 -version 2>/dev/null || echo foo)
101 case "$CAMLP4_VERSION" in
102      *$OCAMLVERSION)
103      AC_MSG_RESULT([ok])
104      ;;
105      foo)
106      AC_MSG_RESULT([failed])
107      AC_MSG_ERROR([Cannot find camlp4])
108      ;;
109      *)
110      AC_MSG_RESULT([failed])
111      AC_MSG_ERROR([Bad camlp4 version])
112      ;;
113 esac
114 AC_SUBST([CAMLP4])
115
116 #detect ocamlbuild
117 OCAMLBUILD=ocamlbuild
118 AC_ARG_WITH([ocamlbuild],
119             AS_HELP_STRING([--with-ocamlbuild=PATH], [location of the ocamlbuild binary]),
120         [CAMLP4="$withval"])
121 AC_MSG_CHECKING([for ocamlbuild ($OCAMLBUILD)])
122 OCAMLBUILD_VERSION=$($OCAMLBUILD -version 2>/dev/null || echo foo)
123 case "$CAMLP4_VERSION" in
124      *$OCAMLVERSION)
125      AC_MSG_RESULT([ok])
126      ;;
127      foo)
128      AC_MSG_RESULT([failed])
129      AC_MSG_ERROR([Cannot find ocamlbuild])
130      ;;
131      *)
132      AC_MSG_RESULT([failed])
133      AC_MSG_ERROR([Bad ocamlbuild version])
134      ;;
135 esac
136 AC_SUBST([OCAMLBUILD])
137
138
139 # platform
140 AC_MSG_CHECKING([platform])
141 OCAML_PLATFORM=$(echo 'print_endline Sys.os_type;;' | ocaml -noprompt | grep '^@<:@A-Z@:>@')
142 AC_MSG_RESULT([$OCAML_PLATFORM])
143 if test "$OCAML_PLATFORM" = "Win32"; then
144          EXE=.exe
145 else
146          EXE=
147 fi
148 AC_SUBST(OCAML_PLATFORM)
149 AC_SUBST(EXE)
150
151 # required libraries
152 AC_MSG_CHECKING([for ulex])
153 ulex_path=`$OCAMLFIND query ulex 2>/dev/null`
154 if test "$ulex_path" ; then
155    AC_MSG_RESULT([found])
156 else
157    AC_MSG_RESULT([not found])
158    AC_MSG_ERROR([Cannot find ulex.])
159 fi
160
161 AC_MSG_CHECKING([for expat])
162 expat_path=`$OCAMLFIND query expat 2>/dev/null`
163 if test "$expat_path" ; then
164    AC_MSG_RESULT([found])
165 else
166    AC_MSG_RESULT([not found])
167    AC_MSG_ERROR([Cannot find expat.])
168 fi
169
170 #compilation options
171 #debugging mode
172 CAMLP4FLAGS=$CAMLP4FLAGS
173 OCAMLBUILDFLAGS=$OCAMLBUILDFLAGS
174
175 AC_ARG_ENABLE([debug],
176               [  --enable-debug          build in debug mode],
177               [DEBUG=$enableval],
178               [DEBUG=no])
179
180 if test "x$DEBUG" = "xyes"; then
181    OCAMLBUILDFLAGS="$OCAMLBUILDFLAGS -tag debug"
182    CAMLP4FLAGS="$CAMLP4FLAGS -D DEBUG"
183 fi
184
185 #profiling
186 AC_ARG_ENABLE([profile],
187               [  --enable-profile       compile in profiling code],
188               [PROFILE=$enableval],
189               [PROFILE=no])
190
191 if test "x$PROFILE" = "xyes"; then
192    OCAMLBUILDFLAGS="$OCAMLBUILDFLAGS -tag profile"
193    OCAMLC="$OCAMLFIND ocamlcp"
194 fi
195
196 #tracing code
197 AC_ARG_ENABLE([trace],
198               [  --enable-trace         add tracing code],
199               [TRACE=$enableval],
200               [TRACE=no])
201
202 if test "x$TRACE" = "xyes"; then
203    CAMLP4FLAGS="$CAMLP4FLAGS -D HTMLTRACE"
204 fi
205
206 #inlining
207
208 AC_ARG_ENABLE([inline],
209               [  --enable-inline         set OCaml inlining level (default=100)],
210               [INLINE=$enableval],
211               [INLINE=100])
212
213 #unsafe
214 AC_ARG_ENABLE([unsafe],
215               [  --enable-unsafe         use unsafe array and string accesses],
216               [UNSAFE=1],
217               [UNSAFE=0])
218
219 if test "x$UNSAFE" = "xyes"; then
220    CAMLP4FLAGS="$CAMLP4FLAGS -unsafe"
221 fi
222
223
224
225 AC_SUBST(INLINE)
226 AC_SUBST(OCAMLBUILDFLAGS)
227 AC_SUBST(CAMLP4FLAGS)
228 AC_CONFIG_FILES(Makefile)
229 AC_OUTPUT