1# 2# BSD LICENSE 3# 4# Copyright (c) Intel Corporation. 5# All rights reserved. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 11# * Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# * Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in 15# the documentation and/or other materials provided with the 16# distribution. 17# * Neither the name of Intel Corporation nor the names of its 18# contributors may be used to endorse or promote products derived 19# from this software without specific prior written permission. 20# 21# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32# 33 34include $(SPDK_ROOT_DIR)/mk/spdk.common.mk 35include $(SPDK_ROOT_DIR)/mk/spdk.lib_deps.mk 36 37 38ifeq ($(SPDK_MAP_FILE),) 39$(error SPDK_MAP_FILE is not set for lib $(LIBNAME)) 40endif 41 42ifeq ($(SO_VER),) 43$(error SO major version is not set for lib $(LIBNAME)) 44endif 45 46ifeq ($(SO_MINOR),) 47$(error SO minor version is not set for lib $(LIBNAME)) 48endif 49 50 51SO_SUFFIX := $(SO_VER).$(SO_MINOR) 52LIB := $(call spdk_lib_list_to_static_libs,$(LIBNAME)) 53SHARED_LINKED_LIB := $(LIB:.a=.so) 54SHARED_REALNAME_LIB := $(SHARED_LINKED_LIB:.so=.so.$(SO_SUFFIX)) 55 56ifeq ($(CONFIG_SHARED),y) 57DEP := $(SHARED_LINKED_LIB) 58else 59DEP := $(LIB) 60endif 61 62ifeq ($(OS),FreeBSD) 63LOCAL_SYS_LIBS += -L/usr/local/lib 64endif 65 66define subdirs_rule 67$(1): $(2) 68 @+$(Q)$(MAKE) -C $(1) S=$S$(S:%=/)$@ $(MAKECMDGOALS) 69endef 70 71$(foreach dir,$(DIRS-y),$(eval $(call subdirs_rule,$(dir),$(DEP)))) 72 73ifneq ($(DIRS-y),) 74BUILD_DEP := $(DIRS-y) 75else 76BUILD_DEP := $(DEP) 77endif 78 79SPDK_DEP_LIBS = $(call spdk_lib_list_to_shared_libs,$(DEPDIRS-$(LIBNAME))) 80 81.PHONY: all clean $(DIRS-y) 82 83all: $(BUILD_DEP) 84 @: 85 86clean: $(DIRS-y) 87 $(CLEAN_C) $(LIB) $(SHARED_LINKED_LIB) $(SHARED_REALNAME_LIB) 88 89$(SHARED_LINKED_LIB): $(SHARED_REALNAME_LIB) 90 $(Q)echo " SYMLINK $(notdir $@)"; $(BUILD_LINKERNAME_LIB) 91 92$(SHARED_REALNAME_LIB): $(LIB) 93 $(Q)echo " SO $(notdir $@)"; \ 94 $(call spdk_build_realname_shared_lib,$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS) $(SPDK_DEP_LIBS)) 95 96$(LIB): $(OBJS) 97 $(LIB_C) 98 99install: all 100 $(INSTALL_LIB) 101ifeq ($(CONFIG_SHARED),y) 102 $(INSTALL_SHARED_LIB) 103endif 104 105uninstall: $(DIRS-y) 106 $(UNINSTALL_LIB) 107ifeq ($(CONFIG_SHARED),y) 108 $(UNINSTALL_SHARED_LIB) 109endif 110 111include $(SPDK_ROOT_DIR)/mk/spdk.deps.mk 112