[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] tools: Introduce $(xenlibs-rpath,..) to replace $(SHDEPS_lib*)
commit d2b396d47bd9071232c103501aadb32d7b83fdbb Author: Anthony PERARD <anthony.perard@xxxxxxxxxx> AuthorDate: Mon Aug 22 12:09:05 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Mon Aug 22 12:09:05 2022 +0200 tools: Introduce $(xenlibs-rpath,..) to replace $(SHDEPS_lib*) This patch introduce a new macro $(xenlibs-dependencies,) to generate a list of all the xen library that a library is list against, and they are listed only once. We use the side effect of $(sort ) which remove duplicates. This is used by another macro $(xenlibs-rpath,) which is to replace $(SHDEPS_libxen*). In libs.mk, we don't need to $(sort ) SHLIB_lib* anymore as this was used to remove duplicates and they are no more duplicates. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> Reviewed-by: Juergen Gross <jgross@xxxxxxxx> --- tools/Rules.mk | 29 ++++++++++++++++------------- tools/libs/libs.mk | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/tools/Rules.mk b/tools/Rules.mk index 47424935ba..23979ed254 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -61,13 +61,8 @@ endif # public headers. Users of libfoo are therefore transitively # using libbaz's header but not linking against libbaz. # -# SHDEPS_libfoo: Flags for linking recursive dependencies of -# libfoo. Must contain SHLIB for every library which -# libfoo links against. So must contain both -# $(SHLIB_libbar) and $(SHLIB_libbaz). -# # SHLIB_libfoo: Flags for recursively linking against libfoo. Must -# contains SHDEPS_libfoo and: +# contains $(call xenlibs-rpath,foo) and: # -Wl,-rpath-link=<directory containing libfoo.so> # # CFLAGS_libfoo: Flags for compiling against libfoo. Must add the @@ -79,23 +74,31 @@ endif # libfoo. # # LDLIBS_libfoo: Flags for linking against libfoo. Must contain -# $(SHDEPS_libfoo) and the path to libfoo.so +# $(call xenlibs-rpath,foo) and the path to libfoo.so # # Consumers of libfoo should include $(CFLAGS_libfoo) and # $(LDLIBS_libfoo) in their appropriate directories. They should not # include any CFLAGS or LDLIBS relating to libbar or libbaz unless # they use those libraries directly (not via libfoo) too. -# -# Consumers of libfoo should not directly use $(SHDEPS_libfoo) or -# $(SHLIB_libfoo) + +# Give the list of Xen library that the libraries in $(1) are linked against, +# directly or indirectly. +define xenlibs-dependencies + $(sort $(foreach lib,$(1), \ + $(USELIBS_$(lib)) $(call xenlibs-dependencies,$(USELIBS_$(lib))))) +endef + +# Flags for linking recursive dependencies of Xen libraries in $(1) +define xenlibs-rpath + $(addprefix -Wl$(comma)-rpath-link=$(XEN_ROOT)/tools/libs/,$(call xenlibs-dependencies,$(1))) +endef define LIB_defs FILENAME_$(1) ?= xen$(1) XEN_libxen$(1) = $$(XEN_ROOT)/tools/libs/$(1) CFLAGS_libxen$(1) = $$(CFLAGS_xeninclude) - SHDEPS_libxen$(1) = $$(foreach use,$$(USELIBS_$(1)),$$(SHLIB_libxen$$(use))) - LDLIBS_libxen$(1) = $$(SHDEPS_libxen$(1)) $$(XEN_libxen$(1))/lib$$(FILENAME_$(1))$$(libextension) - SHLIB_libxen$(1) = $$(SHDEPS_libxen$(1)) -Wl,-rpath-link=$$(XEN_libxen$(1)) + SHLIB_libxen$(1) = $$(call xenlibs-rpath,$(1)) -Wl,-rpath-link=$$(XEN_libxen$(1)) + LDLIBS_libxen$(1) = $$(call xenlibs-rpath,$(1)) $$(XEN_libxen$(1))/lib$$(FILENAME_$(1))$$(libextension) endef $(foreach lib,$(LIBS_LIBS),$(eval $(call LIB_defs,$(lib)))) diff --git a/tools/libs/libs.mk b/tools/libs/libs.mk index f778a7df82..d7e1274249 100644 --- a/tools/libs/libs.mk +++ b/tools/libs/libs.mk @@ -32,7 +32,7 @@ PKG_CONFIG ?= $(LIB_FILE_NAME).pc PKG_CONFIG_NAME ?= Xen$(LIBNAME) PKG_CONFIG_DESC ?= The $(PKG_CONFIG_NAME) library for Xen hypervisor PKG_CONFIG_VERSION := $(MAJOR).$(MINOR) -PKG_CONFIG_USELIBS := $(sort $(SHLIB_libxen$(LIBNAME))) +PKG_CONFIG_USELIBS := $(SHLIB_libxen$(LIBNAME)) PKG_CONFIG_LIB := $(LIB_FILE_NAME) PKG_CONFIG_REQPRIV := $(subst $(space),$(comma),$(strip $(foreach lib,$(patsubst ctrl,control,$(USELIBS_$(LIBNAME))),xen$(lib)))) -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |