1
AC_INIT([[stdcompat]], [10], [[Thierry.Martinez@inria.fr]], [[stdcompat]],
2
[[https://github.com/thierry.martinez/stdcompat/]])
5
AC_DEFUN([AC_OCAMLFIND_PKG],
6
[AC_MSG_CHECKING([for ocamlfind package $2])
7
AS_IF([$OCAMLFIND query $2 >/dev/null 2>&1],
11
AC_SUBST([$1], [])])])
13
AC_CHECK_TOOL([OCAMLFIND], [ocamlfind], [])
14
AS_IF([test "x$OCAMLFIND" = "x"],
15
[AC_CHECK_TOOL([OCAMLC], [ocamlc.opt], [])
16
AS_IF([test "x$OCAMLC" = "x"],
17
[AC_CHECK_TOOL([OCAMLC], [ocamlc], [])])
18
AC_CHECK_TOOL([OCAMLOPT], [ocamlopt.opt], [])
19
AS_IF([test "x$OCAMLOPT" = "x"],
20
[AC_CHECK_TOOL([OCAMLOPT], [ocamlopt], [])])
21
AC_CHECK_TOOL([OCAMLDOC], [ocamldoc.opt], [])
22
AS_IF([test "x$OCAMLDOC" = "x"],
23
[AC_CHECK_TOOL([OCAMLDOC], [ocamldoc], [])])
24
AC_CHECK_TOOL([OCAMLDEP], [ocamldep.opt], [])
25
AS_IF([test "x$OCAMLDEP" = "x"],
26
[AC_CHECK_TOOL([OCAMLDEP], [ocamldep], [])])
27
AC_CHECK_TOOL([OCAMLMKLIB], [ocamlmklib.opt], [])
28
AS_IF([test "x$OCAMLMKLIB" = "x"],
29
[AC_CHECK_TOOL([OCAMLMKLIB], [ocamlmklib], [])])
30
AC_SUBST([RESULT_PKG], [])
31
AC_SUBST([SEQ_PKG], [])
32
AC_SUBST([UCHAR_PKG], [])],
33
[AC_SUBST([OCAMLC], [["$OCAMLFIND ocamlc"]])
34
AC_SUBST([OCAMLOPT], [["$OCAMLFIND ocamlopt"]])
35
AC_SUBST([OCAMLDOC], [["$OCAMLFIND ocamldoc"]])
36
AC_SUBST([OCAMLDEP], [["$OCAMLFIND ocamldep"]])
37
AC_SUBST([OCAMLMKLIB], [["$OCAMLFIND ocamlmklib"]])
38
AC_OCAMLFIND_PKG([RESULT_PKG], [result])
39
AC_OCAMLFIND_PKG([SEQ_PKG], [seq])
40
AC_OCAMLFIND_PKG([UCHAR_PKG], [uchar])])
42
AS_IF([test "x$OCAMLOPT" = "x"],
43
[AS_IF([test "x$OCAMLC" = "x"],
44
[AC_MSG_ERROR([[No OCaml compiler available]])],
45
[AC_SUBST([OCAMLBEST], [["$OCAMLC"]])
46
AC_SUBST([CMAX], [["cma"]])])],
47
[AC_SUBST([OCAMLBEST], [["$OCAMLOPT"]])
48
AC_SUBST([CMAX], [["cmxa"]])])
50
AS_IF([test "x$OCAMLDEP" = "x"],
51
[AC_MSG_ERROR([[No ocamldep available]])])
54
[AC_SUBST([BIG_ENDIAN], [[true]])],
55
[AC_SUBST([BIG_ENDIAN], [[false]])],
56
[AC_MSG_ERROR([[Unknown endianness]])])
58
AC_MSG_CHECKING([OCaml version])
59
AC_SUBST([OCAMLVERSION],
60
[[`$OCAMLBEST -v | sed -n 's/^.*version \(.*\)$/\1/p'`]])
61
AC_MSG_RESULT([$OCAMLVERSION])
63
AC_ARG_ENABLE([magic],
64
[AS_HELP_STRING([--enable-magic],
65
[[use Obj.magic in redefinitions when possible (default)]]),
66
AS_HELP_STRING([--disable-magic],
67
[[use only pure redefinitions (without Obj.magic)]])],
69
[AC_SUBST([enable_magic], [yes])])
71
AC_DEFUN([AC_DISABLE_BLOCK],
72
[AC_SUBST([BEGIN_$1], [['(*']])
73
AC_SUBST([END_$1], [['*)']])
74
AC_SUBST([C_BEGIN_$1], [['/*']])
75
AC_SUBST([C_END_$1], [['*/']])])
77
AC_DEFUN([AC_ENABLE_BLOCK],
78
[AC_SUBST([BEGIN_$1], [])
79
AC_SUBST([END_$1], [])
80
AC_SUBST([C_BEGIN_$1], [])
81
AC_SUBST([C_END_$1], [])])
83
AC_DEFUN([AC_WITH_BLOCK],
84
[AC_ENABLE_BLOCK([WITH_$1])
85
AC_DISABLE_BLOCK([WITHOUT_$1])])
87
AC_DEFUN([AC_WITHOUT_BLOCK],
88
[AC_DISABLE_BLOCK([WITH_$1])
89
AC_ENABLE_BLOCK([WITHOUT_$1])])
91
AC_DEFUN([AC_WITH_BLOCK_PKG],
92
[AS_IF([test "x$$1_PKG" = "x"],
93
[AC_WITHOUT_BLOCK($1_PKG)],
94
[AC_WITH_BLOCK($1_PKG)])])
96
AC_DEFUN([AC_WITH_OCAML_VERSION],
97
[AS_IF([test `printf "$OCAMLVERSION\n$2" | sort | head -n1` = $2],
98
[AC_ENABLE_BLOCK([FROM_$1])
99
AC_DISABLE_BLOCK([BEFORE_$1])],
100
[AC_DISABLE_BLOCK([FROM_$1])
101
AC_ENABLE_BLOCK([BEFORE_$1])])])
103
AS_IF([test "x$enable_magic" = "xno"],
104
[AC_WITHOUT_BLOCK([MAGIC])],
105
[AC_WITH_BLOCK([MAGIC])])
107
AC_WITH_BLOCK_PKG([RESULT])
108
AC_WITH_BLOCK_PKG([SEQ])
109
AC_WITH_BLOCK_PKG([UCHAR])
111
AC_WITH_OCAML_VERSION([3_07_0], [3.07])
112
AC_WITH_OCAML_VERSION([3_08_0], [3.08.0])
113
AC_WITH_OCAML_VERSION([3_09_0], [3.09.0])
114
AC_WITH_OCAML_VERSION([3_10_0], [3.10.0])
115
AC_WITH_OCAML_VERSION([3_11_0], [3.11.0])
116
AC_WITH_OCAML_VERSION([3_12_0], [3.12.0])
117
AC_WITH_OCAML_VERSION([4_00_0], [4.00.0])
118
AC_WITH_OCAML_VERSION([4_01_0], [4.01.0])
119
AC_WITH_OCAML_VERSION([4_02_0], [4.02.0])
120
AC_WITH_OCAML_VERSION([4_03_0], [4.03.0])
121
AC_WITH_OCAML_VERSION([4_04_0], [4.04.0])
122
AC_WITH_OCAML_VERSION([4_05_0], [4.05.0])
123
AC_WITH_OCAML_VERSION([4_06_0], [4.06.0])
124
AC_WITH_OCAML_VERSION([4_07_0], [4.07.0])
125
AC_WITH_OCAML_VERSION([4_07_1], [4.07.1])
126
AC_WITH_OCAML_VERSION([4_08_0], [4.08.0])
128
AM_CONDITIONAL(OCAML_SUPPORTS_BYTECODE, [test "x$OCAMLC" != "x"])
130
AM_CONDITIONAL(OCAML_SUPPORTS_NATIVE, [test "x$OCAMLOPT" != "x"])
132
AM_CONDITIONAL(OCAML_SUPPORTS_SHARED,
133
[test `printf "$OCAMLVERSION\n3.11.1" | sort | head -n1` = 3.11.1])
135
AM_CONDITIONAL(OCAML_SUPPORTS_NO_ALIAS_DEPS,
136
[test `printf "$OCAMLVERSION\n4.02.0" | sort | head -n1` = 4.02.0])
138
AM_CONDITIONAL(OCAML_SUPPORTS_BIN_ANNOT,
139
[test `printf "$OCAMLVERSION\n4.00.0" | sort | head -n1` = 4.00.0])
141
AC_SUBST([INCLUDE_DEPEND],[['
142
ifneq ($(MAKECMDGOALS),clean)
143
ifneq ($(MAKECMDGOALS),distclean)
151
stdcompat__hashtbl_ext.mli
152
stdcompat__hashtbl_ext.ml
159
stdcompat__native.ml_byte
160
stdcompat__native.ml_native
163
stdcompat__pervasives_s.mli
165
stdcompat__array_s.mli
166
stdcompat__arrayLabels_s.mli
167
stdcompat__bool_s.mli
168
stdcompat__buffer_s.mli
169
stdcompat__bytes_s.mli
170
stdcompat__bytesLabels_s.mli
171
stdcompat__char_s.mli
172
stdcompat__digest_s.mli
173
stdcompat__ephemeron_s.mli
174
stdcompat__filename_s.mli
175
stdcompat__float_s.mli
176
stdcompat__format_s.mli
178
stdcompat__hashtbl_s.mli
180
stdcompat__int32_s.mli
181
stdcompat__int64_s.mli
182
stdcompat__lazy_s.mli
183
stdcompat__lexing_s.mli
184
stdcompat__list_s.mli
185
stdcompat__listLabels_s.mli
187
stdcompat__moreLabels_s.mli
188
stdcompat__nativeint_s.mli
189
stdcompat__option_s.mli
190
stdcompat__printexc_s.mli
191
stdcompat__printf_s.mli
192
stdcompat__queue_s.mli
193
stdcompat__result_s.mli
196
stdcompat__spacetime_s.mli
197
stdcompat__stack_s.mli
198
stdcompat__stream_s.mli
199
stdcompat__string_s.mli
200
stdcompat__stringLabels_s.mli
202
stdcompat__uchar_s.mli
203
stdcompat__weak_s.mli
204
stdcompat__stdlib_s.mli
205
stdcompat__pervasives_s.ml:stdcompat__pervasives_s.mli.in
206
stdcompat__arg_s.ml:stdcompat__arg_s.mli.in
207
stdcompat__array_s.ml:stdcompat__array_s.mli.in
208
stdcompat__arrayLabels_s.ml:stdcompat__arrayLabels_s.mli.in
209
stdcompat__bool_s.ml:stdcompat__bool_s.mli.in
210
stdcompat__buffer_s.ml:stdcompat__buffer_s.mli.in
211
stdcompat__bytes_s.ml:stdcompat__bytes_s.mli.in
212
stdcompat__bytesLabels_s.ml:stdcompat__bytesLabels_s.mli.in
213
stdcompat__char_s.ml:stdcompat__char_s.mli.in
214
stdcompat__digest_s.ml:stdcompat__digest_s.mli.in
215
stdcompat__ephemeron_s.ml:stdcompat__ephemeron_s.mli.in
216
stdcompat__filename_s.ml:stdcompat__filename_s.mli.in
217
stdcompat__float_s.ml:stdcompat__float_s.mli.in
218
stdcompat__format_s.ml:stdcompat__format_s.mli.in
219
stdcompat__fun_s.ml:stdcompat__fun_s.mli.in
220
stdcompat__hashtbl_s.ml:stdcompat__hashtbl_s.mli.in
221
stdcompat__int_s.ml:stdcompat__int_s.mli.in
222
stdcompat__int32_s.ml:stdcompat__int32_s.mli.in
223
stdcompat__int64_s.ml:stdcompat__int64_s.mli.in
224
stdcompat__lazy_s.ml:stdcompat__lazy_s.mli.in
225
stdcompat__lexing_s.ml:stdcompat__lexing_s.mli.in
226
stdcompat__list_s.ml:stdcompat__list_s.mli.in
227
stdcompat__listLabels_s.ml:stdcompat__listLabels_s.mli.in
228
stdcompat__map_s.ml:stdcompat__map_s.mli.in
229
stdcompat__moreLabels_s.ml:stdcompat__moreLabels_s.mli.in
230
stdcompat__nativeint_s.ml:stdcompat__nativeint_s.mli.in
231
stdcompat__option_s.ml:stdcompat__option_s.mli.in
232
stdcompat__printexc_s.ml:stdcompat__printexc_s.mli.in
233
stdcompat__printf_s.ml:stdcompat__printf_s.mli.in
234
stdcompat__queue_s.ml:stdcompat__queue_s.mli.in
235
stdcompat__result_s.ml:stdcompat__result_s.mli.in
236
stdcompat__seq_s.ml:stdcompat__seq_s.mli.in
237
stdcompat__set_s.ml:stdcompat__set_s.mli.in
238
stdcompat__spacetime_s.ml:stdcompat__spacetime_s.mli.in
239
stdcompat__stack_s.ml:stdcompat__stack_s.mli.in
240
stdcompat__stdlib_s.ml:stdcompat__stdlib_s.mli.in
241
stdcompat__stream_s.ml:stdcompat__stream_s.mli.in
242
stdcompat__string_s.ml:stdcompat__string_s.mli.in
243
stdcompat__stringLabels_s.ml:stdcompat__stringLabels_s.mli.in
244
stdcompat__sys_s.ml:stdcompat__sys_s.mli.in
245
stdcompat__uchar_s.ml:stdcompat__uchar_s.mli.in
246
stdcompat__weak_s.ml:stdcompat__weak_s.mli.in
247
stdcompat__pervasives.ml
250
stdcompat__arrayLabels.ml
254
stdcompat__bytesLabels.ml
257
stdcompat__ephemeron.ml
258
stdcompat__filename.ml
262
stdcompat__hashtbl.ml
269
stdcompat__listLabels.ml
271
stdcompat__moreLabels.ml
272
stdcompat__nativeint.ml
274
stdcompat__printexc.ml
280
stdcompat__spacetime.ml
285
stdcompat__stringLabels.ml
289
stdcompat__pervasives.mli
292
stdcompat__arrayLabels.mli
294
stdcompat__buffer.mli
296
stdcompat__bytesLabels.mli
298
stdcompat__digest.mli
299
stdcompat__ephemeron.mli
300
stdcompat__filename.mli
302
stdcompat__format.mli
304
stdcompat__hashtbl.mli
309
stdcompat__lexing.mli
311
stdcompat__listLabels.mli
313
stdcompat__moreLabels.mli
314
stdcompat__nativeint.mli
315
stdcompat__option.mli
316
stdcompat__printexc.mli
317
stdcompat__printf.mli
319
stdcompat__result.mli
322
stdcompat__spacetime.mli
324
stdcompat__stdlib.mli
325
stdcompat__stream.mli
326
stdcompat__string.mli
327
stdcompat__stringLabels.mli
337
AC_MSG_NOTICE([OCaml version is $OCAMLVERSION])
338
AS_IF([test "x$enable_magic" = "xno"],
340
[[Only pure redefinitions will be used ]]
341
[[(--disable-magic: no use of Obj.magic).]])],
343
[[Obj.magic will be used in redefinition when possible ]]
344
[[(add --disable-magic for pure redefinitions).]])])