Update to master version of remake.
[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 #detect ocamllex
94 OCAMLLEX=ocamllex
95 AC_ARG_WITH([ocamllex],
96             AS_HELP_STRING([--with-ocamllex=PATH], [location of the ocamllex binary]),
97         [OCAMLLEX="$withval"])
98 AC_MSG_CHECKING([for ocamllex ($OCAMLLEX)])
99 OCAMLLEX_VERSION=$($OCAMLLEX -version 2>/dev/null || echo foo)
100 case "$OCAMLLEX_VERSION" in
101      *$OCAMLVERSION)
102      AC_MSG_RESULT([ok])
103      ;;
104      foo)
105      AC_MSG_RESULT([failed])
106      AC_MSG_ERROR([Cannot find ocamllex])
107      ;;
108      *)
109      AC_MSG_RESULT([failed])
110      AC_MSG_ERROR([Bad ocamllex version])
111      ;;
112 esac
113 AC_SUBST([OCAMLLEX])
114
115
116 #detect camlp4
117 CAMLP4=camlp4
118 AC_ARG_WITH([camlp4],
119             AS_HELP_STRING([--with-camlp4=PATH], [location of the camlp4 binary]),
120         [CAMLP4="$withval"])
121 AC_MSG_CHECKING([for camlp4 ($CAMLP4)])
122 CAMLP4_VERSION=$($CAMLP4 -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 camlp4])
130      ;;
131      *)
132      AC_MSG_RESULT([failed])
133      AC_MSG_ERROR([Bad camlp4 version])
134      ;;
135 esac
136 AC_SUBST([CAMLP4])
137
138 # platform
139 AC_MSG_CHECKING([platform])
140 OCAML_PLATFORM=$(echo 'print_endline Sys.os_type;;' | ocaml -noprompt | grep '^@<:@A-Z@:>@')
141 AC_MSG_RESULT([$OCAML_PLATFORM])
142 if test "$OCAML_PLATFORM" = "Win32"; then
143          EXE=.exe
144 else
145          EXE=
146 fi
147 AC_SUBST(OCAML_PLATFORM)
148 AC_SUBST(EXE)
149
150 # required libraries
151 AC_MSG_CHECKING([for ulex])
152 ulex_path=`$OCAMLFIND query ulex 2>/dev/null`
153 if test "$ulex_path" ; then
154    AC_MSG_RESULT([found])
155 else
156    AC_MSG_RESULT([not found])
157    AC_MSG_ERROR([Cannot find ulex.])
158 fi
159
160 AC_MSG_CHECKING([for expat])
161 expat_path=`$OCAMLFIND query expat 2>/dev/null`
162 if test "$expat_path" ; then
163    AC_MSG_RESULT([found])
164 else
165    AC_MSG_RESULT([not found])
166    AC_MSG_ERROR([Cannot find expat.])
167 fi
168
169 #compilation options
170 #debugging mode
171 OCAMLFLAGS=$OCAMLFLAGS
172 CAMLP4FLAGS=$CAMLP4FLAGS
173 OCAMLCFLAGS=$OCAMLCFLAGS
174 OCAMLOPTFLAGS=$OCAMLOPTFLAGS
175
176 AC_ARG_ENABLE([debug],
177               [  --enable-debug          build in debug mode],
178               [DEBUG=$enableval],
179               [DEBUG=no])
180
181 if test "x$DEBUG" = "xyes"; then
182    OCAMLFLAGS="$OCAMLFLAGS -g"
183    CAMLP4FLAGS="$CAMLP4FLAGS -DDEBUG"
184 fi
185
186 #profiling
187 AC_ARG_ENABLE([profile],
188               [  --enable-profile       compile in profiling code],
189               [PROFILE=$enableval],
190               [PROFILE=no])
191
192 if test "x$PROFILE" = "xyes"; then
193    OCAMLOPTFLAGS="$OCAMLOPTFLAGS -p"
194    OCAMLC="$OCAMLFIND ocamlcp"
195 fi
196
197 #tracing code
198 AC_ARG_ENABLE([trace],
199               [  --enable-trace         add tracing code],
200               [TRACE=$enableval],
201               [TRACE=no])
202
203 if test "x$TRACE" = "xyes"; then
204    CAMLP4FLAGS="$CAMLP4FLAGS -DHTMLTRACE"
205 fi
206
207 #inlining
208
209 AC_ARG_ENABLE([inline],
210               [  --enable-inline         set OCaml inlining level (default=100)],
211               [INLINE=$enableval],
212               [INLINE=100])
213
214 #unsafe
215 AC_ARG_ENABLE([unsafe],
216               [  --enable-unsafe         use unsafe array and string accesses],
217               [UNSAFE=1],
218               [UNSAFE=0])
219
220 if test "x$UNSAFE" = "xyes"; then
221    CAMLP4FLAGS="$CAMLP4FLAGS -unsafe"
222 fi
223
224
225 AC_PROG_CXX()
226
227
228 AC_SUBST([REMAKE], [./remake$EXE])
229 if test ! -x  "$REMAKE" -o "$REMAKE" -ot remake.cpp; then
230 AC_MSG_NOTICE([creating $REMAKE])
231 case $(uname -s) in
232 MINGW*)
233         $CXX -Wall -O2 -o remake.exe remake.cpp -lws2_32
234         if test $? != 0; then AC_MSG_FAILURE([failed]); fi
235         ;;
236 *)
237         $CXX -Wall -O2 -o remake remake.cpp
238         if test $? != 0; then AC_MSG_FAILURE([failed]); fi
239         ;;
240 esac
241 else
242 AC_MSG_NOTICE([$REMAKE exists, not rebuilding])
243 fi
244
245
246 AC_SUBST(INLINE)
247 AC_SUBST(OCAMLFLAGS)
248 AC_SUBST(OCAMLCFLAGS)
249 AC_SUBST(OCAMLOPTFLAGS)
250 AC_SUBST(CAMLP4FLAGS)
251 AC_CONFIG_FILES(Remakefile)
252 AC_CONFIG_FILES(Makefile)
253 AC_OUTPUT