Make: Build shared libs while building static libs
This will allow us to specify more granular system dependencies for each .so file. Change-Id: I759876e09ffb36380a503962b4be8fc9d7c71b63 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/426129 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Lance Hartmann <lance.hartmann@oracle.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
460cf3e62b
commit
c779298802
@ -262,20 +262,14 @@ INSTALL_REL_SYMLINK := ln -sf -r
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
define spdk_install_lib_symlink
|
define spdk_install_lib_symlink
|
||||||
$(INSTALL_REL_SYMLINK) $(DESTDIR)$(libdir)/$(1).$(SO_SUFFIX_ALL) $(DESTDIR)$(libdir)/$(1)
|
$(INSTALL_REL_SYMLINK) $(DESTDIR)$(libdir)/$(1) $(DESTDIR)$(libdir)/$(2)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Install shared library(s)
|
INSTALL_SHARED_LIB=\
|
||||||
define spdk_install_shared_libs
|
$(Q)echo " INSTALL $(DESTDIR)$(libdir)/$(notdir $(SHARED_LINKED_LIB))"; \
|
||||||
$(Q)echo " INSTALL $(DESTDIR)$(libdir)/$(notdir $(1))"
|
install -d -m 755 "$(DESTDIR)$(libdir)"; \
|
||||||
install -d -m 755 $(DESTDIR)$(libdir)
|
install -m 755 "$(SHARED_REALNAME_LIB)" "$(DESTDIR)$(libdir)/"; \
|
||||||
@for l in $(1); do \
|
$(call spdk_install_lib_symlink,$(notdir $(SHARED_REALNAME_LIB)),$(notdir $(SHARED_LINKED_LIB)));
|
||||||
bln=$${l##*/}; \
|
|
||||||
rn=$$l.$(SO_SUFFIX_ALL); \
|
|
||||||
install -m 755 $$rn $(DESTDIR)$(libdir)/; \
|
|
||||||
$(call spdk_install_lib_symlink,$$bln); \
|
|
||||||
done
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Install an app binary
|
# Install an app binary
|
||||||
INSTALL_APP=\
|
INSTALL_APP=\
|
||||||
|
@ -33,21 +33,40 @@
|
|||||||
|
|
||||||
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
|
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
|
||||||
|
|
||||||
|
SPDK_MAP_FILE = $(SPDK_ROOT_DIR)/shared_lib/spdk.map
|
||||||
LIB := $(call spdk_lib_list_to_files,$(LIBNAME))
|
LIB := $(call spdk_lib_list_to_files,$(LIBNAME))
|
||||||
|
SHARED_LINKED_LIB := $(subst .a,.so,$(LIB))
|
||||||
|
SHARED_REALNAME_LIB := $(subst .so,.so.$(SO_SUFFIX_ALL),$(SHARED_LINKED_LIB))
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_SHARED),y)
|
||||||
|
DEP := $(SHARED_LINKED_LIB)
|
||||||
|
else
|
||||||
|
DEP := $(LIB)
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: all clean $(DIRS-y)
|
.PHONY: all clean $(DIRS-y)
|
||||||
|
|
||||||
all: $(LIB) $(DIRS-y)
|
all: $(DEP) $(DIRS-y)
|
||||||
@:
|
@:
|
||||||
|
|
||||||
clean: $(DIRS-y)
|
clean: $(DIRS-y)
|
||||||
$(CLEAN_C) $(LIB)
|
$(CLEAN_C) $(LIB) $(SHARED_LINKED_LIB) $(SHARED_REALNAME_LIB)
|
||||||
|
|
||||||
|
$(SHARED_LINKED_LIB): $(SHARED_REALNAME_LIB)
|
||||||
|
$(Q)echo " SYMLINK $(notdir $@)"; $(BUILD_LINKERNAME_LIB)
|
||||||
|
|
||||||
|
$(SHARED_REALNAME_LIB): $(LIB)
|
||||||
|
$(Q)echo " SO $(notdir $@)"; \
|
||||||
|
$(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE))
|
||||||
|
|
||||||
$(LIB): $(OBJS)
|
$(LIB): $(OBJS)
|
||||||
$(LIB_C)
|
$(LIB_C)
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
$(INSTALL_LIB)
|
$(INSTALL_LIB)
|
||||||
|
ifeq ($(CONFIG_SHARED),y)
|
||||||
|
$(INSTALL_SHARED_LIB)
|
||||||
|
endif
|
||||||
|
|
||||||
include $(SPDK_ROOT_DIR)/mk/spdk.deps.mk
|
include $(SPDK_ROOT_DIR)/mk/spdk.deps.mk
|
||||||
|
|
||||||
|
@ -37,81 +37,29 @@ include $(SPDK_ROOT_DIR)/mk/spdk.app.mk
|
|||||||
include $(SPDK_ROOT_DIR)/mk/spdk.modules.mk
|
include $(SPDK_ROOT_DIR)/mk/spdk.modules.mk
|
||||||
|
|
||||||
# Build combined libspdk.so shared library
|
# Build combined libspdk.so shared library
|
||||||
COMBINED_LINKERNAME_LIB = $(SPDK_ROOT_DIR)/build/lib/libspdk.so
|
SHARED_LINKED_LIB := $(SPDK_ROOT_DIR)/build/lib/libspdk.so
|
||||||
COMBINED_SHARED_LIB = $(COMBINED_LINKERNAME_LIB).$(SO_SUFFIX_ALL)
|
SHARED_REALNAME_LIB := $(SHARED_LINKED_LIB).$(SO_SUFFIX_ALL)
|
||||||
|
IGNORED_LIBS := libspdk.so
|
||||||
|
IGNORED_LIBS += libspdk_spdk_mock.so
|
||||||
|
IGNORED_LIBS += libspdk_env_dpdk.so
|
||||||
|
|
||||||
SPDK_LIB_LIST += app_rpc
|
SPDK_SHARED_LIBS := $(filter-out $(IGNORED_LIBS), $(sort $(notdir $(wildcard $(SPDK_ROOT_DIR)/build/lib/*.so))))
|
||||||
SPDK_LIB_LIST += bdev
|
|
||||||
SPDK_LIB_LIST += bdev_rpc
|
|
||||||
SPDK_LIB_LIST += blobfs
|
|
||||||
SPDK_LIB_LIST += conf
|
|
||||||
SPDK_LIB_LIST += copy
|
|
||||||
SPDK_LIB_LIST += event
|
|
||||||
SPDK_LIB_LIST += event_bdev
|
|
||||||
SPDK_LIB_LIST += event_copy
|
|
||||||
SPDK_LIB_LIST += event_iscsi
|
|
||||||
SPDK_LIB_LIST += event_net
|
|
||||||
SPDK_LIB_LIST += event_nvmf
|
|
||||||
SPDK_LIB_LIST += event_scsi
|
|
||||||
SPDK_LIB_LIST += iscsi
|
|
||||||
SPDK_LIB_LIST += json
|
|
||||||
SPDK_LIB_LIST += jsonrpc
|
|
||||||
SPDK_LIB_LIST += log
|
|
||||||
SPDK_LIB_LIST += log_rpc
|
|
||||||
SPDK_LIB_LIST += net
|
|
||||||
SPDK_LIB_LIST += nvmf
|
|
||||||
SPDK_LIB_LIST += rpc
|
|
||||||
SPDK_LIB_LIST += scsi
|
|
||||||
SPDK_LIB_LIST += thread
|
|
||||||
SPDK_LIB_LIST += trace
|
|
||||||
SPDK_LIB_LIST += util
|
|
||||||
|
|
||||||
ifeq ($(OS),Linux)
|
$(SHARED_REALNAME_LIB):
|
||||||
SPDK_LIB_LIST += event_nbd
|
|
||||||
SPDK_LIB_LIST += nbd
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_VHOST),y)
|
|
||||||
SPDK_LIB_LIST += event_vhost
|
|
||||||
SPDK_LIB_LIST += rte_vhost
|
|
||||||
SPDK_LIB_LIST += vhost
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
LIBS += $(BLOCKDEV_MODULES_LINKER_ARGS)
|
|
||||||
LIBS += $(COPY_MODULES_LINKER_ARGS)
|
|
||||||
LIBS += $(SOCK_MODULES_LINKER_ARGS)
|
|
||||||
LIBS += $(SPDK_LIB_LINKER_ARGS)
|
|
||||||
LIBS += $(ENV_LINKER_ARGS)
|
|
||||||
|
|
||||||
SEP_LINKERNAME_LIBS := $(patsubst %.a,%.so,$(SPDK_LIB_FILES) $(BLOCKDEV_MODULES_FILES) $(COPY_MODULES_FILES) $(SOCK_MODULES_FILES))
|
|
||||||
SEP_REALNAME_LIBS := $(patsubst %.so,%.so.$(SO_SUFFIX_ALL),$(SEP_LINKERNAME_LIBS))
|
|
||||||
|
|
||||||
comma := ,
|
|
||||||
|
|
||||||
$(COMBINED_SHARED_LIB): $(SPDK_LIB_FILES) $(SPDK_WHOLE_LIBS) $(BLOCKDEV_MODULES_FILES) $(COPY_MODULES_FILES) $(SOCK_MODULES_FILES) $(LINKER_MODULES) $(ENV_LIBS) $(MAKEFILE_LIST) spdk.map
|
|
||||||
$(Q)echo " SO $(notdir $@)"; \
|
$(Q)echo " SO $(notdir $@)"; \
|
||||||
rm -f $@; \
|
echo "GROUP ( $(SPDK_SHARED_LIBS) )" > $(SHARED_REALNAME_LIB)
|
||||||
$(call spdk_build_realname_shared_lib,$(filter-out -Wl$(comma)--no-whole-archive,$(LIBS)),spdk.map,$(SYS_LIBS))
|
|
||||||
|
|
||||||
$(COMBINED_LINKERNAME_LIB) : %.so : %.so.$(SO_SUFFIX_ALL)
|
$(SHARED_LINKED_LIB) : $(SHARED_REALNAME_LIB)
|
||||||
$(Q)echo " SYMLINK $(notdir $@)"; $(BUILD_LINKERNAME_LIB)
|
|
||||||
|
|
||||||
$(SEP_REALNAME_LIBS) : %.so.$(SO_SUFFIX_ALL) : %.a spdk.map
|
|
||||||
$(Q)echo " SO $(notdir $@)"; \
|
|
||||||
$(call spdk_build_realname_shared_lib,$(filter %.a,$^),spdk.map)
|
|
||||||
|
|
||||||
$(SEP_LINKERNAME_LIBS) : %.so : %.so.$(SO_SUFFIX_ALL)
|
|
||||||
$(Q)echo " SYMLINK $(notdir $@)"; $(BUILD_LINKERNAME_LIB)
|
$(Q)echo " SYMLINK $(notdir $@)"; $(BUILD_LINKERNAME_LIB)
|
||||||
|
|
||||||
.PHONY: all clean $(DIRS-y)
|
.PHONY: all clean $(DIRS-y)
|
||||||
|
|
||||||
all: $(COMBINED_SHARED_LIB) $(COMBINED_LINKERNAME_LIB) $(SEP_REALNAME_LIBS) $(SEP_LINKERNAME_LIBS)
|
all: $(SHARED_LINKED_LIB)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(CLEAN_C) $(COMBINED_SHARED_LIB) $(COMBINED_LINKERNAME_LIB) $(SEP_REALNAME_LIBS) $(SEP_LINKERNAME_LIBS)
|
$(CLEAN_C) $(SHARED_REALNAME_LIB) $(SHARED_LINKED_LIB)
|
||||||
|
|
||||||
install:
|
install:
|
||||||
$(call spdk_install_shared_libs, $(COMBINED_LINKERNAME_LIB) $(SEP_LINKERNAME_LIBS))
|
$(INSTALL_SHARED_LIB)
|
||||||
|
|
||||||
include $(SPDK_ROOT_DIR)/mk/spdk.subdirs.mk
|
include $(SPDK_ROOT_DIR)/mk/spdk.subdirs.mk
|
||||||
|
Loading…
Reference in New Issue
Block a user