[Libguestfs] [nbdkit PATCH] ocaml: Make build VPATH aware

Eric Blake eblake at redhat.com
Thu Nov 29 22:35:22 UTC 2018

The ocaml.opt compiler defaults to building things in the same
directory as its input; we need explicit -o options to build
in a VPATH $(builddir) when $(srcdir) is read-only (as is the
case during 'make distcheck'). We also have to build any side
effect files explicitly in cases where we can't directly use -o
to control those outputs alongside the final product.

Thanks: Richard W.M. Jones
Signed-off-by: Eric Blake <eblake at redhat.com>

I'm working on getting 'make distcheck' happy (in general, it
fails because we aren't set up for VPATH builds yet). I'm pushing
the small and obvious patches when I spot them, but for stuff
where I'm less certain, I'll post to the list as well.  This is
what Rich helped me come up with on IRC for the ocaml failures.

 plugins/ocaml/Makefile.am | 4 ++--
 tests/Makefile.am         | 4 +++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/plugins/ocaml/Makefile.am b/plugins/ocaml/Makefile.am
index 484d041..b95f255 100644
--- a/plugins/ocaml/Makefile.am
+++ b/plugins/ocaml/Makefile.am
@@ -43,10 +43,10 @@ ocamllibdir = $(OCAMLLIB)
 ocamllib_DATA = NBDKit.mli NBDKit.cmi NBDKit.cmx NBDKit.o

 NBDKit.cmi: NBDKit.mli
-	$(OCAMLC) -c $<
+	$(OCAMLC) -c $< -o $@

 NBDKit.cmx: NBDKit.ml NBDKit.cmi
+	$(OCAMLOPT) $(OCAMLOPTFLAGS) -c $< -o $@
 NBDKit.o: NBDKit.cmx

 # NB: libnbdkitocaml is not plugin.  It's a library that you have to
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4e16fa9..94f3d43 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -517,7 +517,9 @@ test_ocaml_CFLAGS = \
 test_ocaml_LDADD = libtest.la $(LIBGUESTFS_LIBS)

 check_SCRIPTS += test-ocaml-plugin.so
-test-ocaml-plugin.so: test_ocaml_plugin.ml ../plugins/ocaml/libnbdkitocaml.la ../plugins/ocaml/NBDKit.cmi ../plugins/ocaml/NBDKit.cmx
+test_ocaml_plugin.cmx: test_ocaml_plugin.ml
+	$(OCAMLOPT) $(OCAMLOPTFLAGS) -I ../plugins/ocaml -c $< -o $@
+test-ocaml-plugin.so: test_ocaml_plugin.cmx ../plugins/ocaml/libnbdkitocaml.la ../plugins/ocaml/NBDKit.cmi ../plugins/ocaml/NBDKit.cmx
 	$(OCAMLOPT) $(OCAMLOPTFLAGS) -I ../plugins/ocaml \
 	  -output-obj -runtime-variant _pic -o $@ \
 	  NBDKit.cmx $< \

More information about the Libguestfs mailing list