Commit d0a7baa6 authored by Jim Harris's avatar Jim Harris Committed by Ben Walker
Browse files

mk: add framework for defining inter-lib dependencies



Currently only the iscsi => scsi dependency is defined to
demonstrate how the framework behaves.

Eventually, lib/Makefile will be populated with more lines
of the form:

DEPDIRS-iscsi : scsi log conf event

This line will ensure that the iscsi subdirectory is built
after the specified dependency directories.

Then the lib/iscsi/Makefile also defines:

DEP_LIBNAMES = scsi log conf event

This line adds dependencies from the iscsi.so to the specified
libraries.

Ideally we could avoid this duplication by passing the DEPDIRS
value to the lower level Makefile, but that breaks down when we
start considering event/subsystems/* libraries.  So for now we'll
need to duplicate it.  Incidentally, DPDK also duplicates the
dependency information like this.

While here, remove use of $(MAKESUBDIRFLAGS) in spdk.subdirs.mk -
it was no longer used anywhere in the tree.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: If63cbc10ffa18ac6361e4210bd6196ffe88bec43

Reviewed-on: https://review.gerrithub.io/429287


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarLance Hartmann <lance.hartmann@oracle.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarSeth Howell <seth.howell5141@gmail.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 67a50c7b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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)
+12 −1
Original line number Diff line number Diff line
@@ -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)