$(O_TO_S) && \
echo $(O_TO_S_CMD) > $(call exe2cmd,$(@))
+ifeq ($(RTE_BUILD_SHARED_LIB),n)
+O_TO_C = $(AR) crus $(LIB_ONE) $(OBJS-y)
+O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
+O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)"," AR_C $(@)")
+O_TO_C_DO = @set -e; \
+ $(lib_dir) \
+ $(copy_obj)
+else
+O_TO_C = $(LD) -z muldefs -share $(OBJS-y) -o $(LIB_ONE)
+O_TO_C_STR = $(subst ','\'',$(O_TO_C)) #'# fix syntax highlight
+O_TO_C_DISP = $(if $(V),"$(O_TO_C_STR)"," LD_C $(@)")
+O_TO_C_DO = @set -e; \
+ $(lib_dir) \
+ $(copy_obj)
+endif
+
+copy_obj = cp -f $(OBJS-y) $(RTE_OUTPUT)/build/lib;
+lib_dir = [ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib;
-include .$(LIB).cmd
#
$(depfile_missing),\
$(depfile_newer)),\
$(O_TO_S_DO))
+ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+ $(if $(or \
+ $(file_missing),\
+ $(call cmdline_changed,$(O_TO_C_STR)),\
+ $(depfile_missing),\
+ $(depfile_newer)),\
+ $(O_TO_C_DO))
+endif
else
$(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
@[ -d $(dir $@) ] || mkdir -p $(dir $@)
$(depfile_missing),\
$(depfile_newer)),\
$(O_TO_A_DO))
+ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+ $(if $(or \
+ $(file_missing),\
+ $(call cmdline_changed,$(O_TO_C_STR)),\
+ $(depfile_missing),\
+ $(depfile_newer)),\
+ $(O_TO_C_DO))
+endif
endif
#
--- /dev/null
+# BSD LICENSE
+#
+# Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# VPATH contains at least SRCDIR
+VPATH += $(SRCDIR)
+
+ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
+LIB_ONE := lib$(RTE_LIBNAME).so
+else
+LIB_ONE := lib$(RTE_LIBNAME).a
+endif
+endif
+
+.PHONY:sharelib
+sharelib: $(LIB_ONE) FORCE
+
+OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o)
+
+O_TO_S = $(LD) $(CPU_LDFLAGS) -share $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
+O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
+O_TO_S_DISP = $(if $(V),"$(O_TO_S_STR)"," LD $(@)")
+O_TO_S_CMD = "cmd_$@ = $(O_TO_S_STR)"
+O_TO_S_DO = @set -e; \
+ echo $(O_TO_S_DISP); \
+ $(O_TO_S)
+
+O_TO_A = $(AR) crus $(RTE_OUTPUT)/lib/$(LIB_ONE) $(OBJS)
+O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight
+O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)"," LD $(@)")
+O_TO_A_CMD = "cmd_$@ = $(O_TO_A_STR)"
+O_TO_A_DO = @set -e; \
+ echo $(O_TO_A_DISP); \
+ $(O_TO_A)
+#
+# Archive objects to share library
+#
+
+ifeq ($(RTE_BUILD_COMBINE_LIBS),y)
+ifeq ($(RTE_BUILD_SHARED_LIB),y)
+$(LIB_ONE): FORCE
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ $(O_TO_S_DO)
+else
+$(LIB_ONE): FORCE
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ $(O_TO_A_DO)
+endif
+endif
+
+#
+# Clean all generated files
+#
+.PHONY: clean
+clean: _postclean
+
+.PHONY: doclean
+doclean:
+ $(Q)rm -rf $(LIB_ONE)
+
+.PHONY: FORCE
+FORCE:
RTE_TARGET := $(RTE_ARCH)-$(RTE_MACHINE)-$(RTE_EXEC_ENV)-$(RTE_TOOLCHAIN)
RTE_SDK_BIN := $(RTE_OUTPUT)
RTE_BUILD_SHARED_LIB := $(CONFIG_RTE_BUILD_SHARED_LIB:"%"=%)
+ RTE_LIBNAME := $(CONFIG_RTE_LIBNAME:"%s"=%)
+ ifeq ($(RTE_LIBNAME),)
+ RTE_LIBNAME := intel_dpdk
+ endif
ifeq ($(RTE_BUILD_SHARED_LIB),)
RTE_BUILD_SHARED_LIB := n
endif
+ RTE_BUILD_COMBINE_LIBS := $(CONFIG_RTE_BUILD_COMBINE_LIBS:"%"=%)
+ ifeq ($(RTE_BUILD_COMBINE_LIBS),)
+ RTE_BUILD_COMBINE_LIBS := n
+ endif
endif
# RTE_TARGET is deducted from config when we are building the SDK.