diff --git a/lib/Makefile b/lib/Makefile index 8de59e3af..6bf0fe9a8 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -50,6 +50,8 @@ ifeq ($(abspath $(CONFIG_ENV)),$(SPDK_ROOT_DIR)/lib/$(ENV_NAME)) DIRS-y += $(ENV_NAME) endif +DEPDIRS-iscsi := scsi + .PHONY: all clean $(DIRS-y) all: $(DIRS-y) diff --git a/lib/iscsi/Makefile b/lib/iscsi/Makefile index 624bbf957..57323a581 100644 --- a/lib/iscsi/Makefile +++ b/lib/iscsi/Makefile @@ -41,5 +41,6 @@ C_SRCS = acceptor.c conn.c \ iscsi_rpc.c task.c LIBNAME = iscsi LOCAL_SYS_LIBS = -lcrypto +SPDK_DEP_LIBNAMES = scsi include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/mk/spdk.lib.mk b/mk/spdk.lib.mk index 354c3f47a..9711be607 100644 --- a/mk/spdk.lib.mk +++ b/mk/spdk.lib.mk @@ -50,6 +50,7 @@ else LOCAL_SYS_LIBS += -lrt endif +SPDK_DEP_LIBS = $(call spdk_lib_list_to_shared_libs,$(SPDK_DEP_LIBNAMES)) .PHONY: all clean $(DIRS-y) @@ -64,7 +65,7 @@ $(SHARED_LINKED_LIB): $(SHARED_REALNAME_LIB) $(SHARED_REALNAME_LIB): $(LIB) $(Q)echo " SO $(notdir $@)"; \ - $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS)) + $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS) $(SPDK_DEP_LIBS)) $(LIB): $(OBJS) $(LIB_C) diff --git a/mk/spdk.subdirs.mk b/mk/spdk.subdirs.mk index 6de1e97ef..9773c4cad 100644 --- a/mk/spdk.subdirs.mk +++ b/mk/spdk.subdirs.mk @@ -31,7 +31,18 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +ALL_DEPDIRS := $(patsubst DEPDIRS-%,%,$(filter DEPDIRS-%,$(.VARIABLES))) + +define depdirs_rule +$(DEPDIRS-$(1)): + +$(1): | $(DEPDIRS-$(1)) + +endef + $(DIRS-y) : - $(Q)$(MAKE) -C $@ S=$S$(S:%=/)$@ $(MAKECMDGOALS) $(MAKESUBDIRFLAGS) + $(Q)$(MAKE) -C $@ S=$S$(S:%=/)$@ $(MAKECMDGOALS) + +$(foreach dir,$(ALL_DEPDIRS),$(eval $(call depdirs_rule,$(dir)))) install: all $(DIRS-y)