summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-03-01 17:44:00 +0000
committerRichard Jones <rjones@redhat.com>2010-03-01 17:44:00 +0000
commited7b31aa62abd7ffa77f402f3b74cccad369d0a5 (patch)
tree740318b78c3d0a9433863866229be6bc13d26fec
parent22368ef43611a1cdc8975833f21e07ed570669fc (diff)
downloadhivex-ed7b31aa62abd7ffa77f402f3b74cccad369d0a5.tar.gz
hivex-ed7b31aa62abd7ffa77f402f3b74cccad369d0a5.tar.xz
hivex-ed7b31aa62abd7ffa77f402f3b74cccad369d0a5.zip
RHEL 5: Fixes for old version of OCaml in EPEL 5.
-rw-r--r--configure.ac29
-rwxr-xr-xgenerator/generator.ml22
2 files changed, 51 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index eb4a847..853cf40 100644
--- a/configure.ac
+++ b/configure.ac
@@ -167,6 +167,35 @@ AC_PROG_OCAML
AC_PROG_FINDLIB
AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
+if test "x$OCAMLC" != "xno"; then
+ dnl Check if we have caml/unixsupport.h header (OCaml bindings only).
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -I$OCAMLLIB"
+ AC_CHECK_HEADERS([caml/unixsupport.h],[],[],
+ [
+ #include <caml/config.h>
+ #include <caml/mlvalues.h>
+ ])
+ CFLAGS="$old_CFLAGS"
+
+ dnl Do we have function caml_raise_with_args?
+ f=caml_raise_with_args
+ AC_MSG_CHECKING([for function $f])
+ echo "char $f (); char foo() { return $f (); }" > conftest.c
+ rm -f conftest_ml.ml
+ touch conftest_ml.ml
+ if $OCAMLOPT -c conftest.c 2>/dev/null && \
+ $OCAMLOPT -c conftest_ml.ml 2>/dev/null && \
+ $OCAMLOPT conftest.o conftest_ml.cmx -o conftest 2>/dev/null ; then
+ AC_DEFINE([HAVE_CAML_RAISE_WITH_ARGS],[1],
+ [Defined if function caml_raise_with_args exists.])
+ AC_MSG_RESULT([found])
+ else
+ AC_MSG_RESULT([not found])
+ fi
+ rm -f conftest conftest.* conftest_ml.*
+fi
+
dnl Check for Perl (optional, for Perl bindings).
dnl XXX This isn't quite right, we should check for Perl devel library.
AC_CHECK_PROG([PERL],[perl],[perl],[no])
diff --git a/generator/generator.ml b/generator/generator.ml
index 1131f54..7728973 100755
--- a/generator/generator.ml
+++ b/generator/generator.ml
@@ -1493,7 +1493,29 @@ and generate_ocaml_c () =
#include <caml/memory.h>
#include <caml/mlvalues.h>
#include <caml/signals.h>
+
+#ifdef HAVE_CAML_UNIXSUPPORT_H
#include <caml/unixsupport.h>
+#else
+extern value unix_error_of_code (int errcode);
+#endif
+
+#ifndef HAVE_CAML_RAISE_WITH_ARGS
+static void
+caml_raise_with_args (value tag, int nargs, value args[])
+{
+ CAMLparam1 (tag);
+ CAMLxparamN (args, nargs);
+ value bucket;
+ int i;
+
+ bucket = caml_alloc_small (1 + nargs, 0);
+ Field(bucket, 0) = tag;
+ for (i = 0; i < nargs; i++) Field(bucket, 1 + i) = args[i];
+ caml_raise(bucket);
+ CAMLnoreturn;
+}
+#endif
#include <hivex.h>