These were previously capturing the absolute path of the build, causing linking against the libraries to fail unless you still have the build directory around. Signed-off-by: Jon Ludlam <jonathan.ludlam@eu.citrix.com> diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/Makefile.rules --- a/tools/ocaml/Makefile.rules +++ b/tools/ocaml/Makefile.rules @@ -58,14 +58,8 @@ # define a library target <name>.cmxa and <name>.cma define OCAML_LIBRARY_template - $(1).cmxa: lib$(1)_stubs.a $(foreach obj,$($(1)_OBJS),$(obj).cmx) - $(call mk-caml-lib-native,$$@, -cclib -l$(1)_stubs $(foreach lib,$(LIBS_$(1)),-cclib $(lib)), $(foreach obj,$($(1)_OBJS),$(obj).cmx)) - $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmo) - $(call mk-caml-lib-bytecode,$$@, -dllib dll$(1)_stubs.so -cclib -l$(1)_stubs, $$+) - $(1)_stubs.a: $(foreach obj,$$($(1)_C_OBJS),$(obj).o) - $(call mk-caml-stubs,$$@, $$+) - lib$(1)_stubs.a: $(foreach obj,$($(1)_C_OBJS),$(obj).o) - $(call mk-caml-lib-stubs,$$@, $$+) + $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) + $(OCAMLMKLIB) -o $1 -oc $(1)_stubs $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) $(foreach lib, $(LIBS_$(1)_SYSTEM), -cclib $(lib)) $(foreach arg,$(LIBS_$(1)),-ldopt $(arg)) endef define OCAML_NOC_LIBRARY_template diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/libs/eventchn/Makefile --- a/tools/ocaml/libs/eventchn/Makefile +++ b/tools/ocaml/libs/eventchn/Makefile @@ -9,6 +9,7 @@ LIBS = xeneventchn.cma xeneventchn.cmxa LIBS_xeneventchn = $(LDLIBS_libxenctrl) +LIBS_xeneventchn_SYSTEM = -lxenctrl all: $(INTF) $(LIBS) $(PROGRAMS) diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/libs/xc/Makefile --- a/tools/ocaml/libs/xc/Makefile +++ b/tools/ocaml/libs/xc/Makefile @@ -10,6 +10,7 @@ LIBS = xenctrl.cma xenctrl.cmxa LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) +LIBS_xenctrl_SYSTEM = -lxenctrl -lxenguest xenctrl_OBJS = $(OBJS) xenctrl_C_OBJS = xenctrl_stubs diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/xenstored/Makefile --- a/tools/ocaml/xenstored/Makefile +++ b/tools/ocaml/xenstored/Makefile @@ -36,7 +36,9 @@ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn $(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xc $(OCAML_TOPLEVEL)/libs/xc/xenctrl.cmxa \ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xb $(OCAML_TOPLEVEL)/libs/xb/xenbus.cmxa \ - -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc + -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc \ + $(foreach obj, $(LDLIBS_libxenctrl), -ccopt $(obj)) \ + $(foreach obj, $(LDLIBS_libxenguest), -ccopt $(obj)) PROGRAMS = oxenstored
This is a problem that affects xen-4.2.0, so it may well be worth backporting. Jon On 05/12/12 12:21, Jon Ludlam wrote:> These were previously capturing the absolute path of the build, causing > linking against the libraries to fail unless you still have the build > directory around. > > Signed-off-by: Jon Ludlam <jonathan.ludlam@eu.citrix.com> > > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/Makefile.rules > --- a/tools/ocaml/Makefile.rules > +++ b/tools/ocaml/Makefile.rules > @@ -58,14 +58,8 @@ > > # define a library target <name>.cmxa and <name>.cma > define OCAML_LIBRARY_template > - $(1).cmxa: lib$(1)_stubs.a $(foreach obj,$($(1)_OBJS),$(obj).cmx) > - $(call mk-caml-lib-native,$$@, -cclib -l$(1)_stubs $(foreach lib,$(LIBS_$(1)),-cclib $(lib)), $(foreach obj,$($(1)_OBJS),$(obj).cmx)) > - $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmo) > - $(call mk-caml-lib-bytecode,$$@, -dllib dll$(1)_stubs.so -cclib -l$(1)_stubs, $$+) > - $(1)_stubs.a: $(foreach obj,$$($(1)_C_OBJS),$(obj).o) > - $(call mk-caml-stubs,$$@, $$+) > - lib$(1)_stubs.a: $(foreach obj,$($(1)_C_OBJS),$(obj).o) > - $(call mk-caml-lib-stubs,$$@, $$+) > + $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) > + $(OCAMLMKLIB) -o $1 -oc $(1)_stubs $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) $(foreach lib, $(LIBS_$(1)_SYSTEM), -cclib $(lib)) $(foreach arg,$(LIBS_$(1)),-ldopt $(arg)) > endef > > define OCAML_NOC_LIBRARY_template > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/libs/eventchn/Makefile > --- a/tools/ocaml/libs/eventchn/Makefile > +++ b/tools/ocaml/libs/eventchn/Makefile > @@ -9,6 +9,7 @@ > LIBS = xeneventchn.cma xeneventchn.cmxa > > LIBS_xeneventchn = $(LDLIBS_libxenctrl) > +LIBS_xeneventchn_SYSTEM = -lxenctrl > > all: $(INTF) $(LIBS) $(PROGRAMS) > > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/libs/xc/Makefile > --- a/tools/ocaml/libs/xc/Makefile > +++ b/tools/ocaml/libs/xc/Makefile > @@ -10,6 +10,7 @@ > LIBS = xenctrl.cma xenctrl.cmxa > > LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) > +LIBS_xenctrl_SYSTEM = -lxenctrl -lxenguest > > xenctrl_OBJS = $(OBJS) > xenctrl_C_OBJS = xenctrl_stubs > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/xenstored/Makefile > --- a/tools/ocaml/xenstored/Makefile > +++ b/tools/ocaml/xenstored/Makefile > @@ -36,7 +36,9 @@ > -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn $(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \ > -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xc $(OCAML_TOPLEVEL)/libs/xc/xenctrl.cmxa \ > -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xb $(OCAML_TOPLEVEL)/libs/xb/xenbus.cmxa \ > - -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc > + -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc \ > + $(foreach obj, $(LDLIBS_libxenctrl), -ccopt $(obj)) \ > + $(foreach obj, $(LDLIBS_libxenguest), -ccopt $(obj)) > > PROGRAMS = oxenstored > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
On Wed, 2012-12-05 at 12:21 +0000, Jon Ludlam wrote:> These were previously capturing the absolute path of the build, causing > linking against the libraries to fail unless you still have the build > directory around.Good catch, thanks.> Signed-off-by: Jon Ludlam <jonathan.ludlam@eu.citrix.com> > > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/Makefile.rules > --- a/tools/ocaml/Makefile.rules > +++ b/tools/ocaml/Makefile.rules > @@ -58,14 +58,8 @@ > > # define a library target <name>.cmxa and <name>.cmaThis no longer produces a foo.cmxa, is that deliberate? Likewise the foo_stubs.a and libfoo_stubs.a.> define OCAML_LIBRARY_template > - $(1).cmxa: lib$(1)_stubs.a $(foreach obj,$($(1)_OBJS),$(obj).cmx) > - $(call mk-caml-lib-native,$$@, -cclib -l$(1)_stubs $(foreach lib,$(LIBS_$(1)),-cclib $(lib)), $(foreach obj,$($(1)_OBJS),$(obj).cmx)) > - $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmo) > - $(call mk-caml-lib-bytecode,$$@, -dllib dll$(1)_stubs.so -cclib -l$(1)_stubs, $$+) > - $(1)_stubs.a: $(foreach obj,$$($(1)_C_OBJS),$(obj).o) > - $(call mk-caml-stubs,$$@, $$+) > - lib$(1)_stubs.a: $(foreach obj,$($(1)_C_OBJS),$(obj).o) > - $(call mk-caml-lib-stubs,$$@, $$+) > + $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) > + $(OCAMLMKLIB) -o $1 -oc $(1)_stubs $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) $(foreach lib, $(LIBS_$(1)_SYSTEM), -cclib $(lib)) $(foreach arg,$(LIBS_$(1)),-ldopt $(arg))Can this change be made part of mk-caml-lib-bytecode ? I don''t much like it but the existing caml build stuff uses that quiet-command stuff so I think this new command will end up standing out like a sore thumb. If you want to fix this by nuking all that stuff then that is fine by me ;-)> endef > > define OCAML_NOC_LIBRARY_template > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/libs/eventchn/Makefile > --- a/tools/ocaml/libs/eventchn/Makefile > +++ b/tools/ocaml/libs/eventchn/Makefile > @@ -9,6 +9,7 @@ > LIBS = xeneventchn.cma xeneventchn.cmxa > > LIBS_xeneventchn = $(LDLIBS_libxenctrl) > +LIBS_xeneventchn_SYSTEM = -lxenctrl > > all: $(INTF) $(LIBS) $(PROGRAMS) > > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/libs/xc/Makefile > --- a/tools/ocaml/libs/xc/Makefile > +++ b/tools/ocaml/libs/xc/Makefile > @@ -10,6 +10,7 @@ > LIBS = xenctrl.cma xenctrl.cmxa > > LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) > +LIBS_xenctrl_SYSTEM = -lxenctrl -lxenguest > > xenctrl_OBJS = $(OBJS) > xenctrl_C_OBJS = xenctrl_stubs > diff -r 29247e44df47 -r 575e649ad4dc tools/ocaml/xenstored/Makefile > --- a/tools/ocaml/xenstored/Makefile > +++ b/tools/ocaml/xenstored/Makefile > @@ -36,7 +36,9 @@ > -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn $(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \ > -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xc $(OCAML_TOPLEVEL)/libs/xc/xenctrl.cmxa \ > -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xb $(OCAML_TOPLEVEL)/libs/xb/xenbus.cmxa \ > - -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc > + -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc \ > + $(foreach obj, $(LDLIBS_libxenctrl), -ccopt $(obj)) \ > + $(foreach obj, $(LDLIBS_libxenguest), -ccopt $(obj)) > > PROGRAMS = oxenstored > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel-- Ian Campbell