#
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
+include $(SPDK_ROOT_DIR)/mk/spdk.lib_deps.mk
-SPDK_MAP_FILE = $(SPDK_ROOT_DIR)/shared_lib/spdk.map
+
+ifeq ($(SPDK_MAP_FILE),)
+$(error SPDK_MAP_FILE is not set for lib $(LIBNAME))
+endif
+
+ifeq ($(SO_VER),)
+$(error SO major version is not set for lib $(LIBNAME))
+endif
+
+ifeq ($(SO_MINOR),)
+$(error SO minor version is not set for lib $(LIBNAME))
+endif
+
+
+SO_SUFFIX := $(SO_VER).$(SO_MINOR)
LIB := $(call spdk_lib_list_to_static_libs,$(LIBNAME))
-SHARED_LINKED_LIB := $(subst .a,.so,$(LIB))
-SHARED_REALNAME_LIB := $(subst .so,.so.$(SO_SUFFIX_ALL),$(SHARED_LINKED_LIB))
+SHARED_LINKED_LIB := $(LIB:.a=.so)
+SHARED_REALNAME_LIB := $(SHARED_LINKED_LIB:.so=.so.$(SO_SUFFIX))
ifeq ($(CONFIG_SHARED),y)
DEP := $(SHARED_LINKED_LIB)
LOCAL_SYS_LIBS += -lrt
endif
-SPDK_DEP_LIBS = $(call spdk_lib_list_to_shared_libs,$(SPDK_DEP_LIBNAMES))
+define subdirs_rule
+$(1): $(2)
+ @+$(Q)$(MAKE) -C $(1) S=$S$(S:%=/)$@ $(MAKECMDGOALS)
+endef
+
+$(foreach dir,$(DIRS-y),$(eval $(call subdirs_rule,$(dir),$(DEP))))
+
+ifneq ($(DIRS-y),)
+BUILD_DEP := $(DIRS-y)
+else
+BUILD_DEP := $(DEP)
+endif
+
+SPDK_DEP_LIBS = $(call spdk_lib_list_to_shared_libs,$(DEPDIRS-$(LIBNAME)))
.PHONY: all clean $(DIRS-y)
-all: $(DEP) $(DIRS-y)
+all: $(BUILD_DEP)
@:
clean: $(DIRS-y)
$(INSTALL_SHARED_LIB)
endif
-uninstall:
+uninstall: $(DIRS-y)
$(UNINSTALL_LIB)
ifeq ($(CONFIG_SHARED),y)
$(UNINSTALL_SHARED_LIB)
endif
include $(SPDK_ROOT_DIR)/mk/spdk.deps.mk
-
-include $(SPDK_ROOT_DIR)/mk/spdk.subdirs.mk