summaryrefslogtreecommitdiffstats
path: root/ocaml
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-02-23 10:36:51 +0000
committerRichard Jones <rjones@redhat.com>2010-02-24 18:51:04 +0000
commitaa5d6c138b55e25994ac723e94f32b009366927c (patch)
tree7f44afd830cd788d9ff99a8ddb7881da083e5ef3 /ocaml
parentffd32d61d4fad969a6a0baec8c15774eac5ea2e2 (diff)
downloadhivex-aa5d6c138b55e25994ac723e94f32b009366927c.tar.gz
hivex-aa5d6c138b55e25994ac723e94f32b009366927c.tar.xz
hivex-aa5d6c138b55e25994ac723e94f32b009366927c.zip
Add build framework for OCaml, Perl, Python bindings.
(No bindings are actually built, this just adds the build, test and generator framework for them).
Diffstat (limited to 'ocaml')
-rw-r--r--ocaml/.depend3
-rw-r--r--ocaml/META.in6
-rw-r--r--ocaml/Makefile.am97
-rw-r--r--ocaml/t/hivex_005_load.ml20
4 files changed, 126 insertions, 0 deletions
diff --git a/ocaml/.depend b/ocaml/.depend
new file mode 100644
index 0000000..64a531f
--- /dev/null
+++ b/ocaml/.depend
@@ -0,0 +1,3 @@
+hivex.cmi:
+hivex.cmo: hivex.cmi
+hivex.cmx: hivex.cmi
diff --git a/ocaml/META.in b/ocaml/META.in
new file mode 100644
index 0000000..45b0a92
--- /dev/null
+++ b/ocaml/META.in
@@ -0,0 +1,6 @@
+name="hivex"
+version="@PACKAGE_VERSION@"
+description="Windows Registry hive file bindings for OCaml"
+requires="unix"
+archive(byte)="mlhivex.cma"
+archive(native)="mlhivex.cmxa"
diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am
new file mode 100644
index 0000000..f7d26ce
--- /dev/null
+++ b/ocaml/Makefile.am
@@ -0,0 +1,97 @@
+# hivex OCaml bindings
+# Copyright (C) 2009-2010 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+EXTRA_DIST = \
+ .depend META.in \
+ hivex.mli hivex.ml \
+ hivex_c.c \
+ t/*.ml
+
+CLEANFILES = *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a *.so
+CLEANFILES += t/*.cmi t/*.cmo t/*.cmx t/*.o t/*.a t/*.so
+
+AM_CPPFLAGS = \
+ -I$(top_builddir) -I$(OCAMLLIB) -I$(top_srcdir)/ocaml \
+ -I$(top_srcdir)/lib \
+ $(WARN_CFLAGS) $(WERROR_CFLAGS)
+
+if HAVE_OCAML
+
+noinst_DATA = mlhivex.cma mlhivex.cmxa META
+
+OBJS = hivex_c.o hivex.cmo
+XOBJS = $(OBJS:.cmo=.cmx)
+
+mlhivex.cma: $(OBJS)
+ $(OCAMLMKLIB) -o mlhivex $^ -L$(top_builddir)/lib/.libs -lhivex
+
+mlhivex.cmxa: $(XOBJS)
+ $(OCAMLMKLIB) -o mlhivex $^ -L$(top_builddir)/lib/.libs -lhivex
+
+hivex_c.o: hivex_c.c
+ $(CC) $(AM_CPPFLAGS) $(CFLAGS) -fPIC -Wall -c $<
+
+TESTS_ENVIRONMENT = \
+ LD_LIBRARY_PATH=$(top_builddir)/lib/.libs \
+ $(VG)
+
+TESTS = t/hivex_005_load
+noinst_DATA += $(TESTS)
+
+t/hivex_005_load: t/hivex_005_load.cmx mlhivex.cmxa
+ mkdir -p t
+ $(OCAMLFIND) ocamlopt -cclib -L$(top_builddir)/lib/.libs -I . -package unix -linkpkg mlhivex.cmxa $< -o $@
+
+# Need to rebuild the tests from source if the main library has
+# changed at all, otherwise we get inconsistent assumptions.
+t/%.cmx: t/%.ml mlhivex.cmxa
+ $(OCAMLFIND) ocamlopt -package unix -linkpkg -c $< -o $@
+
+.mli.cmi:
+ $(OCAMLFIND) ocamlc -package unix -c $< -o $@
+.ml.cmo:
+ $(OCAMLFIND) ocamlc -package unix -c $< -o $@
+.ml.cmx:
+ $(OCAMLFIND) ocamlopt -package unix -c $< -o $@
+
+depend: .depend
+
+.depend: $(wildcard *.mli) $(wildcard *.ml)
+ rm -f $@ $@-t
+ $(OCAMLFIND) ocamldep $^ | sed 's/ *$$//' | sort > $@-t
+ mv $@-t $@
+
+include .depend
+
+SUFFIXES = .cmo .cmi .cmx .ml .mli .mll .mly
+
+# Do the installation by hand, because we want to run ocamlfind.
+install-data-hook:
+ mkdir -p $(DESTDIR)$(OCAMLLIB)
+ mkdir -p $(DESTDIR)$(OCAMLLIB)/stublibs
+ $(OCAMLFIND) install \
+ -ldconf ignore -destdir $(DESTDIR)$(OCAMLLIB) \
+ hivex \
+ META *.so *.a *.cma *.cmx *.cmxa *.cmi *.mli
+
+CLEANFILES += $(noinst_DATA)
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel. (See RHBZ#502309).
+.NOTPARALLEL:
diff --git a/ocaml/t/hivex_005_load.ml b/ocaml/t/hivex_005_load.ml
new file mode 100644
index 0000000..704dc0b
--- /dev/null
+++ b/ocaml/t/hivex_005_load.ml
@@ -0,0 +1,20 @@
+(* hivex OCaml bindings
+ * Copyright (C) 2009-2010 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *)
+
+(* Just links with the library, doesn't run anything. *)
+let _ = Hivex.open_file