From 6e2c2306f9339694074c7436b4b832c96fb49820 Mon Sep 17 00:00:00 2001 From: Jacek Kalwas Date: Wed, 10 Feb 2021 10:28:48 -0500 Subject: [PATCH] build: install generated pkg-config files Signed-off-by: Jacek Kalwas Change-Id: I191ad5e3b153fb563256eba1aa695716f66db788 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6377 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki --- Makefile | 2 +- lib/env_dpdk/Makefile | 13 +++++++++++-- mk/spdk.common.mk | 12 ++++++++++++ mk/spdk.lib.mk | 20 ++++++++++++++++---- module/Makefile | 6 ++++++ scripts/pc.sh | 4 ++-- 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index ca52c0d5b..2bff27ae3 100644 --- a/Makefile +++ b/Makefile @@ -128,7 +128,7 @@ mk/cc.mk: false build_dir: mk/cc.mk - $(Q)mkdir -p build/lib/pkgconfig + $(Q)mkdir -p build/lib/pkgconfig/tmp $(Q)mkdir -p build/bin $(Q)mkdir -p build/fio $(Q)mkdir -p build/examples diff --git a/lib/env_dpdk/Makefile b/lib/env_dpdk/Makefile index a99648108..73c4aa48f 100644 --- a/lib/env_dpdk/Makefile +++ b/lib/env_dpdk/Makefile @@ -48,9 +48,18 @@ include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk LIBDPDK_PKGCONFIG = $(call pkgconfig_filename,spdk_dpdklibs) -$(LIBDPDK_PKGCONFIG): $(PKGCONFIG) +$(LIBDPDK_PKGCONFIG): $(PKGCONFIG) $(PKGCONFIG_INST) $(Q)$(SPDK_ROOT_DIR)/scripts/pc_libs.sh \ "-L$(DPDK_ABS_DIR)/lib $(DPDK_LIB_LIST:%=-l%)" "" DPDK spdk_dpdklibs > $@ $(Q)sed -i.bak '5s,.*,Requires: $(DEPDIRS-$(LIBNAME):%=spdk_%) spdk_dpdklibs,' $(PKGCONFIG) ; rm $(PKGCONFIG).bak + $(Q)sed -i.bak '5s,.*,Requires: $(DEPDIRS-$(LIBNAME):%=spdk_%) spdk_dpdklibs,' $(PKGCONFIG_INST) ; rm $(PKGCONFIG_INST).bak -all : $(LIBDPDK_PKGCONFIG) +_install_dpdklibs: $(LIBDPDK_PKGCONFIG) + @$(call pkgconfig_install,$(LIBDPDK_PKGCONFIG)) + +_uninstall_dpdklibs: $(LIBDPDK_PKGCONFIG) + @$(call pkgconfig_uninstall,$(LIBDPDK_PKGCONFIG)) + +all: $(LIBDPDK_PKGCONFIG) +install: _install_dpdklibs +uninstall: _uninstall_dpdklibs diff --git a/mk/spdk.common.mk b/mk/spdk.common.mk index e64d8a17d..236b2c37b 100644 --- a/mk/spdk.common.mk +++ b/mk/spdk.common.mk @@ -369,6 +369,18 @@ UNINSTALL_LIB=\ rm -f "$(DESTDIR)$(libdir)/$(notdir $(LIB))"; \ if [ -d "$(DESTDIR)$(libdir)" ] && [ $$(ls -A "$(DESTDIR)$(libdir)" | wc -l) -eq 0 ]; then rm -rf "$(DESTDIR)$(libdir)"; fi +define pkgconfig_install + echo " INSTALL $(DESTDIR)$(libdir)/pkgconfig/$(notdir $(1))"; + install -d -m 755 "$(DESTDIR)$(libdir)/pkgconfig"; + install -m 644 "$(1)" "$(DESTDIR)$(libdir)/pkgconfig"; +endef + +define pkgconfig_uninstall + echo " UNINSTALL $(DESTDIR)$(libdir)/pkgconfig/$(notdir $(1))"; + rm -f "$(DESTDIR)$(libdir)/pkgconfig/$(notdir $(1))"; + if [ -d "$(DESTDIR)$(libdir)/pkgconfig" ] && [ $$(ls -A "$(DESTDIR)$(libdir)/pkgconfig" | wc -l) -eq 0 ]; then rm -rf "$(DESTDIR)$(libdir)/pkgconfig"; fi; +endef + ifeq ($(OS),FreeBSD) INSTALL_REL_SYMLINK := install -l rs else diff --git a/mk/spdk.lib.mk b/mk/spdk.lib.mk index 75af2d9a5..915e9d825 100644 --- a/mk/spdk.lib.mk +++ b/mk/spdk.lib.mk @@ -54,13 +54,16 @@ SHARED_LINKED_LIB := $(LIB:.a=.so) SHARED_REALNAME_LIB := $(SHARED_LINKED_LIB:.so=.so.$(SO_SUFFIX)) PKGCONFIG = $(call pkgconfig_filename,spdk_$(LIBNAME)) +PKGCONFIG_INST = $(call pkgconfig_filename,tmp/spdk_$(LIBNAME)) ifeq ($(CONFIG_SHARED),y) -DEP := $(SHARED_LINKED_LIB) $(PKGCONFIG) +DEP := $(SHARED_LINKED_LIB) else -DEP := $(LIB) $(PKGCONFIG) +DEP := $(LIB) endif +DEP += $(PKGCONFIG) ${PKGCONFIG_INST} + ifeq ($(OS),FreeBSD) LOCAL_SYS_LIBS += -L/usr/local/lib endif @@ -104,22 +107,31 @@ $(SHARED_REALNAME_LIB): $(LIB) $(Q)echo " SO $(notdir $@)"; \ $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS),$(SPDK_DEP_LIBS)) -$(PKGCONFIG): $(LIB) - $(Q)$(SPDK_ROOT_DIR)/scripts/pc.sh $(SPDK_ROOT_DIR) $(LIBNAME) $(SO_SUFFIX) \ +define pkgconfig_create + $(Q)$(SPDK_ROOT_DIR)/scripts/pc.sh $(1) $(LIBNAME) $(SO_SUFFIX) \ "$(DEPDIRS-$(LIBNAME):%=spdk_%) $(MODULES-$(LIBNAME))" \ "" > $@ +endef + +$(PKGCONFIG): $(LIB) + $(call pkgconfig_create,$(SPDK_ROOT_DIR)/build) + +$(PKGCONFIG_INST): $(LIB) + $(call pkgconfig_create,$(CONFIG_PREFIX)) $(LIB): $(OBJS) $(LIB_C) install: all $(INSTALL_LIB) + @$(call pkgconfig_install,$(PKGCONFIG_INST)) ifeq ($(CONFIG_SHARED),y) $(INSTALL_SHARED_LIB) endif uninstall: $(DIRS-y) $(UNINSTALL_LIB) + @$(call pkgconfig_uninstall,$(PKGCONFIG_INST)) ifeq ($(CONFIG_SHARED),y) $(UNINSTALL_SHARED_LIB) endif diff --git a/module/Makefile b/module/Makefile index 45badef25..98b4b7757 100644 --- a/module/Makefile +++ b/module/Makefile @@ -77,6 +77,12 @@ $(SYSLIBS_PKGCONFIG): all: $(DIRS-y) $(MODULES_PKGCONFIG) +install: all + @$(foreach mod, $(MODULES_PKGCONFIG), $(call pkgconfig_install,$(mod))) + +uninstall: $(DIRS-y) + @$(foreach mod, $(MODULES_PKGCONFIG), $(call pkgconfig_uninstall,$(mod))) + clean: $(DIRS-y) include $(SPDK_ROOT_DIR)/mk/spdk.subdirs.mk diff --git a/scripts/pc.sh b/scripts/pc.sh index 53bff26d1..b8d64da10 100755 --- a/scripts/pc.sh +++ b/scripts/pc.sh @@ -3,8 +3,8 @@ cat << EOF Description: SPDK $2 library Name: spdk_$2 Version: $3 -Libs: -L$1/build/lib -lspdk_$2 +Libs: -L$1/lib -lspdk_$2 Requires: $4 Libs.private: $5 -Cflags: -I$1/build/include +Cflags: -I$1/include EOF