Add a clean logger infrastructure.
[tatoo.git] / configure.in
1 AC_INIT([TAToo],
2         [0.0.1],
3         [Kim Nguyễn <kn@lri.fr>],
4         [tatoo])
5
6
7 #detect ocamlfind
8 OCAMLFIND=ocamlfind
9 AC_ARG_WITH([ocamlfind],
10             AS_HELP_STRING([--with-ocamlfind=PATH], [location of the ocamlfind binary]),
11         [OCAMLFIND="$withval"])
12 AC_MSG_CHECKING([for ocamlfind ($OCAMLFIND)])
13 $OCAMLFIND list >/dev/null 2>&1
14 if test $? ; then
15    AC_MSG_RESULT([found])
16    OCAMLC="$OCAMLFIND ocamlc"
17    OCAMLOPT="$OCAMLFIND ocamlopt"
18    OCAMLDEP="$OCAMLFIND ocamldep"
19 else
20    AC_MSG_RESULT([not found])
21    AC_MSG_ERROR([Cannot find ocamlfind.])
22 fi
23
24 AC_SUBST([OCAMLFIND])
25
26 #check ocamlc
27 AC_MSG_CHECKING([for $OCAMLC])
28 $OCAMLC >/dev/null 2>&1
29 if test $? ; then
30         AC_MSG_RESULT([ok])
31 else
32         AC_MSG_RESULT([failed])
33         AC_MSG_ERROR(Cannot find ocamlc.)
34 fi
35 AC_SUBST([OCAMLC])
36
37 #check ocamlopt
38 AC_MSG_CHECKING([for $OCAMLOPT])
39 $OCAMLOPT >/dev/null 2>&1
40 if test $? ; then
41         AC_MSG_RESULT([ok])
42 else
43         AC_MSG_RESULT([failed])
44         AC_MSG_ERROR(Cannot find ocamlopt.)
45 fi
46 AC_SUBST([OCAMLOPT])
47
48 #check ocamldep
49 AC_MSG_CHECKING([for $OCAMLDEP])
50 $OCAMLDEP >/dev/null 2>&1
51 if test $? ; then
52         AC_MSG_RESULT([ok])
53 else
54         AC_MSG_RESULT([failed])
55         AC_MSG_ERROR(Cannot find ocamldep.)
56 fi
57 AC_SUBST([OCAMLDEP])
58
59 #ocaml version
60 OCAMLVERSION=$($OCAMLC -version)
61 AC_MSG_CHECKING([ocaml version])
62 AC_MSG_RESULT([$OCAMLVERSION])
63
64 case "$OCAMLVERSION" in
65      3.12.*) ;; 4.*) ;;
66      *) AC_MSG_ERROR([OCaml $OCAMLVERSION is too old])
67      ;;
68 esac
69
70 AC_SUBST(OCAMLVERSION)
71
72 #detect ocamlyacc
73 OCAMLYACC=ocamlyacc
74 AC_ARG_WITH([ocamlyacc],
75             AS_HELP_STRING([--with-ocamlyacc=PATH], [location of the ocamlyacc binary]),
76         [OCAMLYACC="$withval"])
77 AC_MSG_CHECKING([for ocamlyacc ($OCAMLYACC)])
78 OCAMLYACC_VERSION=$($OCAMLYACC -version 2>/dev/null || echo foo)
79 case "$OCAMLYACC_VERSION" in
80      *$OCAMLVERSION)
81      AC_MSG_RESULT([ok])
82      ;;
83      foo)
84      AC_MSG_RESULT([failed])
85      AC_MSG_ERROR([Cannot find ocamlyacc])
86      ;;
87      *)
88      AC_MSG_RESULT([failed])
89      AC_MSG_ERROR([Bad ocamlyacc version])
90      ;;
91 esac
92 AC_SUBST([OCAMLYACC])
93
94 #detect ocamllex
95 OCAMLLEX=ocamllex
96 AC_ARG_WITH([ocamllex],
97             AS_HELP_STRING([--with-ocamllex=PATH], [location of the ocamllex binary]),
98         [OCAMLLEX="$withval"])
99 AC_MSG_CHECKING([for ocamllex ($OCAMLLEX)])
100 OCAMLLEX_VERSION=$($OCAMLLEX -version 2>/dev/null || echo foo)
101 case "$OCAMLLEX_VERSION" in
102      *$OCAMLVERSION)
103      AC_MSG_RESULT([ok])
104      ;;
105      foo)
106      AC_MSG_RESULT([failed])
107      AC_MSG_ERROR([Cannot find ocamllex])
108      ;;
109      *)
110      AC_MSG_RESULT([failed])
111      AC_MSG_ERROR([Bad ocamllex version])
112      ;;
113 esac
114 AC_SUBST([OCAMLLEX])
115
116
117 #detect camlp4
118 CAMLP4=camlp4
119 AC_ARG_WITH([camlp4],
120             AS_HELP_STRING([--with-camlp4=PATH], [location of the camlp4 binary]),
121         [CAMLP4="$withval"])
122 AC_MSG_CHECKING([for camlp4 ($CAMLP4)])
123 CAMLP4_VERSION=$($CAMLP4 -version 2>/dev/null || echo foo)
124 case "$CAMLP4_VERSION" in
125      *$OCAMLVERSION)
126      AC_MSG_RESULT([ok])
127      ;;
128      foo)
129      AC_MSG_RESULT([failed])
130      AC_MSG_ERROR([Cannot find camlp4])
131      ;;
132      *)
133      AC_MSG_RESULT([failed])
134      AC_MSG_ERROR([Bad camlp4 version])
135      ;;
136 esac
137 AC_SUBST([CAMLP4])
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 $OCAMLFIND query ulex >/dev/null 2>&1
154 if test $? ; 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 $OCAMLFIND query ulex >/dev/null 2>&1
163 if test $? ; then
164    AC_MSG_RESULT([found])
165 else
166    AC_MSG_RESULT([not found])
167    AC_MSG_ERROR([Cannot find ulex.])
168 fi
169
170 #compilation options
171 #debugging mode
172 OCAMLFLAGS=$OCAMLFLAGS
173 CAMLP4FLAGS=$CAMLP4FLAGS
174 OCAMLCFLAGS=$OCAMLCFLAGS
175 OCAMLOPTFLAGS=$OCAMLOPTFLAGS
176
177 AC_ARG_ENABLE([debug],
178               [  --enable-debug          build in debug mode],
179               [DEBUG=$enableval],
180               [DEBUG=no])
181
182 if test "x$DEBUG" = "xyes"; then
183    OCAMLFLAGS="$OCAMLFLAGS -g"
184    CAMLP4FLAGS="$CAMLP4FLAGS -DDEBUG"
185 fi
186
187 #profiling
188 AC_ARG_ENABLE([profile],
189               [  --enable-profile       compile in profiling code],
190               [PROFILE=$enableval],
191               [PROFILE=no])
192
193 if test "x$PROFILE" = "xyes"; then
194    OCAMLOPTFLAGS="$OCAMLOPTFLAGS -p"
195    OCAMLC="$OCAMLFIND ocamlcp"
196 fi
197
198 #tracing code
199 AC_ARG_ENABLE([trace],
200               [  --enable-trace         add tracing code],
201               [TRACE=$enableval],
202               [TRACE=no])
203
204 if test "x$TRACE" = "xyes"; then
205    CAMLP4FLAGS="$CAMLP4FLAGS -DHTMLTRACE"
206 fi
207
208 #inlining
209
210 AC_ARG_ENABLE([inline],
211               [  --enable-inline         set OCaml inlining level (default=100)],
212               [INLINE=$enableval],
213               [INLINE=100])
214
215 #unsafe
216 AC_ARG_ENABLE([unsafe],
217               [  --enable-unsafe         use unsafe array and string accesses],
218               [UNSAFE=1],
219               [UNSAFE=0])
220
221 if test "x$UNSAFE" = "xyes"; then
222    CAMLP4FLAGS="$CAMLP4FLAGS -unsafe"
223 fi
224
225
226 AC_PROG_CXX()
227
228
229 AC_SUBST([REMAKE], [./remake$EXE])
230 if test ! -x  "$REMAKE" -o "$REMAKE" -ot remake.cpp; then
231 AC_MSG_NOTICE([creating $REMAKE])
232 case $(uname -s) in
233 MINGW*)
234         $CXX -Wall -O2 -o remake.exe remake.cpp -lws2_32
235         if test $? != 0; then AC_MSG_FAILURE([failed]); fi
236         ;;
237 *)
238         $CXX -Wall -O2 -o remake remake.cpp
239         if test $? != 0; then AC_MSG_FAILURE([failed]); fi
240         ;;
241 esac
242 else
243 AC_MSG_NOTICE([$REMAKE exists, not rebuilding])
244 fi
245
246
247 AC_SUBST(INLINE)
248 AC_SUBST(OCAMLFLAGS)
249 AC_SUBST(OCAMLCFLAGS)
250 AC_SUBST(OCAMLOPTFLAGS)
251 AC_SUBST(CAMLP4FLAGS)
252 AC_CONFIG_FILES(Remakefile)
253 AC_OUTPUT