Eric Blake
2018-Nov-29 22:35 UTC
[Libguestfs] [nbdkit PATCH] ocaml: Make build VPATH aware
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@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 $< + $(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 $< \ -- 2.17.2
Richard W.M. Jones
2018-Nov-29 22:42 UTC
Re: [Libguestfs] [nbdkit PATCH] ocaml: Make build VPATH aware
On Thu, Nov 29, 2018 at 04:35:22PM -0600, Eric Blake wrote:> 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@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 $< > + $(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 $< \ > --This is fine, ACK. Thanks, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/
Seemingly Similar Threads
- [nbdkit PATCH] maint: Adjust cleaning rules
- [nbdkit PATCH] build: Install ocaml files relative to --prefix
- [PATCH] build: add simple custom silent rules for automake
- [PATCH] Fix building on architectures where ocamlopt is not available
- enable build for ocaml bytecode