[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN PATCH for-4.17 v5 17/17] tools: Rework linking options for ocaml binding libraries
Using a full path to the C libraries when preparing one of the ocaml binding for those libraries make the binding unusable by external project. The full path is somehow embedded and reused by the external project when linking against the binding. Instead, we will use the proper way to link a library, by using '-l'. For in-tree build, we also need to provide the search directory via '-L'. (The search path -L are still be embedded, but at least that doesn't prevent the ocaml binding from been used.) Related-to: xen-project/xen#96 Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- Notes: This patch only partially resolve xen-project/xen#96. At least with this patch, the ocaml binding can be used by external project, but those project will still "see" and try to use the rpath and lib search path as the -L and -W,-rpath-link are still embedded in the ocaml binding. I'm working on a more involve series of patch which would remove the unnecessary flags. (This would mean that oxenstored and the ocaml test will need those ldflags, instead of the binding.) v5: - new patch tools/ocaml/libs/eventchn/Makefile | 2 +- tools/ocaml/libs/xc/Makefile | 2 +- tools/ocaml/libs/xentoollog/Makefile | 2 +- tools/ocaml/libs/xl/Makefile | 2 +- tools/Rules.mk | 8 ++++++++ 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/ocaml/libs/eventchn/Makefile b/tools/ocaml/libs/eventchn/Makefile index 7362a28d9e..dc560ba49b 100644 --- a/tools/ocaml/libs/eventchn/Makefile +++ b/tools/ocaml/libs/eventchn/Makefile @@ -8,7 +8,7 @@ OBJS = xeneventchn INTF = $(foreach obj, $(OBJS),$(obj).cmi) LIBS = xeneventchn.cma xeneventchn.cmxa -LIBS_xeneventchn = $(LDLIBS_libxenevtchn) +LIBS_xeneventchn = $(call xenlibs-ldflags-ldlibs,evtchn) all: $(INTF) $(LIBS) $(PROGRAMS) diff --git a/tools/ocaml/libs/xc/Makefile b/tools/ocaml/libs/xc/Makefile index 67acc46bee..3b76e9ad7b 100644 --- a/tools/ocaml/libs/xc/Makefile +++ b/tools/ocaml/libs/xc/Makefile @@ -10,7 +10,7 @@ OBJS = xenctrl INTF = xenctrl.cmi LIBS = xenctrl.cma xenctrl.cmxa -LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) +LIBS_xenctrl = $(call xenlibs-ldflags-ldlibs,ctrl guest) xenctrl_OBJS = $(OBJS) xenctrl_C_OBJS = xenctrl_stubs diff --git a/tools/ocaml/libs/xentoollog/Makefile b/tools/ocaml/libs/xentoollog/Makefile index 9ede2fd124..1645b40faf 100644 --- a/tools/ocaml/libs/xentoollog/Makefile +++ b/tools/ocaml/libs/xentoollog/Makefile @@ -13,7 +13,7 @@ OBJS = xentoollog INTF = xentoollog.cmi LIBS = xentoollog.cma xentoollog.cmxa -LIBS_xentoollog = $(LDLIBS_libxentoollog) +LIBS_xentoollog = $(call xenlibs-ldflags-ldlibs,toollog) xentoollog_OBJS = $(OBJS) xentoollog_C_OBJS = xentoollog_stubs diff --git a/tools/ocaml/libs/xl/Makefile b/tools/ocaml/libs/xl/Makefile index 7c1c4edced..22d6c93aae 100644 --- a/tools/ocaml/libs/xl/Makefile +++ b/tools/ocaml/libs/xl/Makefile @@ -15,7 +15,7 @@ LIBS = xenlight.cma xenlight.cmxa OCAMLINCLUDE += -I ../xentoollog -LIBS_xenlight = $(LDLIBS_libxenlight) +LIBS_xenlight = $(call xenlibs-ldflags-ldlibs,light) xenlight_OBJS = $(OBJS) xenlight_C_OBJS = xenlight_stubs diff --git a/tools/Rules.mk b/tools/Rules.mk index a165dc4bda..34d495fff7 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -113,6 +113,14 @@ define xenlibs-ldflags $(foreach lib,$(1),-L$(XEN_ROOT)/tools/libs/$(lib)) endef +# Flags for linking against all Xen libraries listed in $(1) but by making use +# of -L and -l instead of providing a path to the shared library. +define xenlibs-ldflags-ldlibs + $(call xenlibs-ldflags,$(1)) \ + $(foreach lib,$(1), -l$(FILENAME_$(lib))) \ + $(foreach lib,$(1),$(xenlibs-ldlibs-$(lib))) +endef + define LIB_defs FILENAME_$(1) ?= xen$(1) XEN_libxen$(1) = $$(XEN_ROOT)/tools/libs/$(1) -- Anthony PERARD
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |