From 89ef21520d956204d70c67b6b4938f251f0c5fa4 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Wed, 19 Sep 2018 12:15:37 -0700 Subject: [PATCH] Make: Add deps for each shared obj individually This prevents the SPDK build from requirng unnecessary dependencies when not compiling certain features. Also, fixes github issue #434 Change-Id: I7d0520474f3656ae32670313f2290e6b741c5ca8 Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/426131 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Lance Hartmann Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/bdev/aio/Makefile | 1 + lib/bdev/lvol/Makefile | 1 + lib/bdev/malloc/Makefile | 1 + lib/iscsi/Makefile | 1 + lib/log/Makefile | 3 +++ lib/nvme/Makefile | 19 +++++++++++++++++++ lib/nvmf/Makefile | 22 ++++++++++++++++++++-- lib/util/Makefile | 1 + mk/spdk.lib.mk | 9 ++++++++- 9 files changed, 55 insertions(+), 3 deletions(-) diff --git a/lib/bdev/aio/Makefile b/lib/bdev/aio/Makefile index eacc2ef61..7a39e3d27 100644 --- a/lib/bdev/aio/Makefile +++ b/lib/bdev/aio/Makefile @@ -36,5 +36,6 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk C_SRCS = bdev_aio.c bdev_aio_rpc.c LIBNAME = bdev_aio +LOCAL_SYS_LIBS = -laio include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/bdev/lvol/Makefile b/lib/bdev/lvol/Makefile index 25a0ad7fe..569b14cf0 100644 --- a/lib/bdev/lvol/Makefile +++ b/lib/bdev/lvol/Makefile @@ -36,5 +36,6 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk C_SRCS = vbdev_lvol.c vbdev_lvol_rpc.c LIBNAME = vbdev_lvol +LOCAL_SYS_LIBS = -luuid include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/bdev/malloc/Makefile b/lib/bdev/malloc/Makefile index a575b4a73..f4eb9aaa6 100644 --- a/lib/bdev/malloc/Makefile +++ b/lib/bdev/malloc/Makefile @@ -36,5 +36,6 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk C_SRCS = bdev_malloc.c bdev_malloc_rpc.c LIBNAME = bdev_malloc +LOCAL_SYS_LIBS = -luuid include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/iscsi/Makefile b/lib/iscsi/Makefile index 20edbe19a..624bbf957 100644 --- a/lib/iscsi/Makefile +++ b/lib/iscsi/Makefile @@ -40,5 +40,6 @@ C_SRCS = acceptor.c conn.c \ tgt_node.c iscsi_subsystem.c \ iscsi_rpc.c task.c LIBNAME = iscsi +LOCAL_SYS_LIBS = -lcrypto include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/log/Makefile b/lib/log/Makefile index 9eee92989..8125ebb13 100644 --- a/lib/log/Makefile +++ b/lib/log/Makefile @@ -36,6 +36,9 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk C_SRCS = log.c log_flags.c LIBNAME = log +ifeq ($(CONFIG_LOG_BACKTRACE),y) +LOCAL_SYS_LIBS += -lunwind +endif DIRS-y = rpc diff --git a/lib/nvme/Makefile b/lib/nvme/Makefile index 1a7bb852a..3351c87ce 100644 --- a/lib/nvme/Makefile +++ b/lib/nvme/Makefile @@ -38,5 +38,24 @@ C_SRCS = nvme_ctrlr_cmd.c nvme_ctrlr.c nvme_fabric.c nvme_ns_cmd.c nvme_ns.c nvm nvme_ns_ocssd_cmd.c C_SRCS-$(CONFIG_RDMA) += nvme_rdma.c LIBNAME = nvme +LOCAL_SYS_LIBS = -luuid +ifeq ($(CONFIG_RDMA),y) +LOCAL_SYS_LIBS += -libverbs -lrdmacm +#Attach only if FreeBSD and RDMA is specified with configure +ifeq ($(OS),FreeBSD) +# Mellanox - MLX4 HBA Userspace Library +ifneq ("$(wildcard /usr/lib/libmlx4.*)","") +LOCAL_SYS_LIBS += -lmlx4 +endif +# Mellanox - MLX5 HBA Userspace Library +ifneq ("$(wildcard /usr/lib/libmlx5.*)","") +LOCAL_SYS_LIBS += -lmlx5 +endif +# Chelsio HBA Userspace Library +ifneq ("$(wildcard /usr/lib/libcxgb4.*)","") +LOCAL_SYS_LIBS += -lcxgb4 +endif +endif +endif include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/nvmf/Makefile b/lib/nvmf/Makefile index 9432d3fc7..8f299a900 100644 --- a/lib/nvmf/Makefile +++ b/lib/nvmf/Makefile @@ -34,12 +34,30 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -LIBNAME = nvmf - C_SRCS = ctrlr.c ctrlr_discovery.c ctrlr_bdev.c \ subsystem.c nvmf.c \ request.c transport.c C_SRCS-$(CONFIG_RDMA) += rdma.c +LIBNAME = nvmf +LOCAL_SYS_LIBS = -luuid +ifeq ($(CONFIG_RDMA),y) +LOCAL_SYS_LIBS += -libverbs -lrdmacm +#Attach only if FreeBSD and RDMA is specified with configure +ifeq ($(OS),FreeBSD) +# Mellanox - MLX4 HBA Userspace Library +ifneq ("$(wildcard /usr/lib/libmlx4.*)","") +LOCAL_SYS_LIBS += -lmlx4 +endif +# Mellanox - MLX5 HBA Userspace Library +ifneq ("$(wildcard /usr/lib/libmlx5.*)","") +LOCAL_SYS_LIBS += -lmlx5 +endif +# Chelsio HBA Userspace Library +ifneq ("$(wildcard /usr/lib/libcxgb4.*)","") +LOCAL_SYS_LIBS += -lcxgb4 +endif +endif +endif include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/util/Makefile b/lib/util/Makefile index 1dd0f395c..c31a506be 100644 --- a/lib/util/Makefile +++ b/lib/util/Makefile @@ -36,5 +36,6 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk C_SRCS = base64.c bit_array.c cpuset.c crc16.c crc32.c crc32c.c crc32_ieee.c fd.c strerror_tls.c string.c uuid.c LIBNAME = util +LOCAL_SYS_LIBS = -luuid include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/mk/spdk.lib.mk b/mk/spdk.lib.mk index 7f0bee68f..eb5369aab 100644 --- a/mk/spdk.lib.mk +++ b/mk/spdk.lib.mk @@ -44,6 +44,13 @@ else DEP := $(LIB) endif +ifeq ($(OS),FreeBSD) +LOCAL_SYS_LIBS += -L/usr/local/lib -lrt +else +LOCAL_SYS_LIBS += -lrt +endif + + .PHONY: all clean $(DIRS-y) all: $(DEP) $(DIRS-y) @@ -57,7 +64,7 @@ $(SHARED_LINKED_LIB): $(SHARED_REALNAME_LIB) $(SHARED_REALNAME_LIB): $(LIB) $(Q)echo " SO $(notdir $@)"; \ - $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE)) + $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS)) $(LIB): $(OBJS) $(LIB_C)