!74 optimize the efficiency of compiling dpdk
From: @renmingshuai Reviewed-by: @nlgwcy Signed-off-by: @nlgwcy
This commit is contained in:
commit
22806f1829
195
0013-dpdk-optimize-the-efficiency-of-compiling-dpdk.patch
Normal file
195
0013-dpdk-optimize-the-efficiency-of-compiling-dpdk.patch
Normal file
@ -0,0 +1,195 @@
|
||||
From 5e554c15982617a89b85aeb71592c20bfa7bdecd Mon Sep 17 00:00:00 2001
|
||||
From: Renmingshuai <renmingshuai@huawei.com>
|
||||
Date: Tue, 13 Apr 2021 16:25:43 +0800
|
||||
Subject: [PATCH] optimize the efficiency of compiling dpdk
|
||||
|
||||
---
|
||||
config/common_base | 5 +++
|
||||
mk/rte.combinedlib.mk | 10 +++++
|
||||
mk/rte.lib.mk | 102 +++++++++++++++++++++++++++++++++++++++---
|
||||
3 files changed, 110 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/config/common_base b/config/common_base
|
||||
index 57b1349..392e6c3 100644
|
||||
--- a/config/common_base
|
||||
+++ b/config/common_base
|
||||
@@ -59,6 +59,11 @@ CONFIG_RTE_ENABLE_LTO=n
|
||||
#
|
||||
CONFIG_RTE_BUILD_SHARED_LIB=n
|
||||
|
||||
+#
|
||||
+# Compile to both static library and share library
|
||||
+#
|
||||
+CONFIG_RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS=n
|
||||
+
|
||||
#
|
||||
# Use newest code breaking previous ABI
|
||||
#
|
||||
diff --git a/mk/rte.combinedlib.mk b/mk/rte.combinedlib.mk
|
||||
index 9d0f935..1088543 100644
|
||||
--- a/mk/rte.combinedlib.mk
|
||||
+++ b/mk/rte.combinedlib.mk
|
||||
@@ -15,9 +15,16 @@ RTE_LIBNAME := dpdk
|
||||
COMBINEDLIB := lib$(RTE_LIBNAME)$(EXT)
|
||||
|
||||
LIBS := $(filter-out $(COMBINEDLIB), $(sort $(notdir $(wildcard $(RTE_OUTPUT)/lib/*$(EXT)))))
|
||||
+ifeq ($(CONFIG_RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS),y)
|
||||
+COMBINEDLIB_SO := lib$(RTE_LIBNAME).so
|
||||
+LIBS_SO := $(filter-out $(COMBINEDLIB_SO), $(sort $(notdir $(wildcard $(RTE_OUTPUT)/lib/*.so))))
|
||||
+endif
|
||||
|
||||
all: FORCE
|
||||
$(Q)echo "GROUP ( $(LIBS) )" > $(RTE_OUTPUT)/lib/$(COMBINEDLIB)
|
||||
+ifeq ($(CONFIG_RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS),y)
|
||||
+ $(Q)echo "GROUP ( $(LIBS_SO) )" > $(RTE_OUTPUT)/lib/$(COMBINEDLIB_SO)
|
||||
+endif
|
||||
|
||||
#
|
||||
# Clean all generated files
|
||||
@@ -25,6 +32,9 @@ all: FORCE
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(Q)rm -f $(RTE_OUTPUT)/lib/$(COMBINEDLIB)
|
||||
+ifeq ($(CONFIG_RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS),y)
|
||||
+ $(Q)rm -f $(RTE_OUTPUT)/lib/$(COMBINEDLIB_SO)
|
||||
+endif
|
||||
|
||||
.PHONY: FORCE
|
||||
FORCE:
|
||||
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
|
||||
index 4516d1c..78f3c27 100644
|
||||
--- a/mk/rte.lib.mk
|
||||
+++ b/mk/rte.lib.mk
|
||||
@@ -19,13 +19,6 @@ else ifeq ($(LIBABIVER),)
|
||||
LIBABIVER := 0.$(shell cat $(RTE_SRCDIR)/ABI_VERSION | tr -d '.')
|
||||
endif
|
||||
|
||||
-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
|
||||
-LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
|
||||
-ifeq ($(EXTLIB_BUILD),n)
|
||||
-CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
|
||||
-endif
|
||||
-endif
|
||||
-
|
||||
|
||||
_BUILD = $(LIB)
|
||||
PREINSTALL = $(SYMLINK-FILES-y)
|
||||
@@ -34,6 +27,16 @@ _CLEAN = doclean
|
||||
|
||||
LDLIBS += $(EXECENV_LDLIBS-y)
|
||||
|
||||
+ifeq ($(CONFIG_RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS),y)
|
||||
+LIB_SO = $(LIB)
|
||||
+LIB_SO := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB_SO))
|
||||
+ifeq ($(EXTLIB_BUILD),n)
|
||||
+CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
|
||||
+endif
|
||||
+_BUILD += $(LIB_SO)
|
||||
+_INSTALL += $(INSTALL-FILES-y) $(RTE_OUTPUT)/lib/$(LIB_SO)
|
||||
+endif
|
||||
+
|
||||
.PHONY: all
|
||||
all: install
|
||||
|
||||
@@ -74,6 +77,89 @@ ifneq ($(CC_SUPPORTS_Z),false)
|
||||
NO_UNDEFINED := -z defs
|
||||
endif
|
||||
|
||||
+ifeq ($(CONFIG_RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS),y)
|
||||
+O_TO_S = $(LD) -L$(RTE_SDK_BIN)/lib $(_CPU_LDFLAGS) $(EXTRA_LDFLAGS) \
|
||||
+ -shared $(OBJS-y) $(NO_UNDEFINED) $(LDLIBS) -Wl,-soname,$(LIB_SO) -o $(LIB_SO)
|
||||
+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_DO = @set -e; \
|
||||
+ echo $(O_TO_S_DISP); \
|
||||
+ $(O_TO_S) && \
|
||||
+ echo $(O_TO_S_CMD) > $(call exe2cmd,$(@))
|
||||
+
|
||||
+-include .$(LIB_SO).cmd
|
||||
+
|
||||
+#
|
||||
+# Archive objects in .a file if needed
|
||||
+#
|
||||
+$(LIB): $(OBJS-y) $(DEP_$(LIB)) FORCE
|
||||
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
|
||||
+ $(if $(D),\
|
||||
+ @echo -n "$< -> $@ " ; \
|
||||
+ echo -n "file_missing=$(call boolean,$(file_missing)) " ; \
|
||||
+ echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_A_STR))) " ; \
|
||||
+ echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
|
||||
+ echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
|
||||
+ $(if $(or \
|
||||
+ $(file_missing),\
|
||||
+ $(call cmdline_changed,$(O_TO_A_STR)),\
|
||||
+ $(depfile_missing),\
|
||||
+ $(depfile_newer)),\
|
||||
+ $(O_TO_A_DO))
|
||||
+
|
||||
+$(LIB_SO): $(OBJS-y) $(DEP_$(LIB_SO)) FORCE
|
||||
+ifeq ($(LIBABIVER),)
|
||||
+ @echo "Must Specify a $(LIB_SO) ABI version"
|
||||
+ @false
|
||||
+endif
|
||||
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
|
||||
+ $(if $(D),\
|
||||
+ @echo -n "$< -> $@ " ; \
|
||||
+ echo -n "file_missing=$(call boolean,$(file_missing)) " ; \
|
||||
+ echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_S_STR))) " ; \
|
||||
+ echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \
|
||||
+ echo "depfile_newer=$(call boolean,$(depfile_newer)) ")
|
||||
+ $(if $(or \
|
||||
+ $(file_missing),\
|
||||
+ $(call cmdline_changed,$(O_TO_S_STR)),\
|
||||
+ $(depfile_missing),\
|
||||
+ $(depfile_newer)),\
|
||||
+ $(O_TO_S_DO))
|
||||
+
|
||||
+#
|
||||
+# install lib in $(RTE_OUTPUT)/lib
|
||||
+#
|
||||
+$(RTE_OUTPUT)/lib/$(LIB): $(LIB)
|
||||
+ @echo " INSTALL-LIB $(LIB)"
|
||||
+ @[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib
|
||||
+ cp -f $(LIB) $(RTE_OUTPUT)/lib
|
||||
+
|
||||
+$(RTE_OUTPUT)/lib/$(LIB_SO): $(LIB_SO)
|
||||
+ @echo " INSTALL-LIB $(LIB_SO)"
|
||||
+ @[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib
|
||||
+ cp -f $(LIB_SO) $(RTE_OUTPUT)/lib
|
||||
+ ln -s -f $< $(shell echo $@ | sed 's/\.so.*/.so/')
|
||||
+
|
||||
+#
|
||||
+# Clean all generated files
|
||||
+#
|
||||
+.PHONY: clean
|
||||
+clean: _postclean
|
||||
+
|
||||
+.PHONY: doclean
|
||||
+doclean:
|
||||
+ $(Q)rm -rf $(LIB) $(LIB_SO) $(OBJS-all) $(DEPS-all) $(DEPSTMP-all) \
|
||||
+ $(CMDS-all) .$(LIB).cmd $(INSTALL-FILES-all) *.pmd.c *.pmd.o
|
||||
+ $(Q)rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS)
|
||||
+
|
||||
+else
|
||||
+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
|
||||
+LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
|
||||
+ifeq ($(EXTLIB_BUILD),n)
|
||||
+CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
|
||||
+endif
|
||||
+endif
|
||||
+
|
||||
O_TO_S = $(LD) -L$(RTE_SDK_BIN)/lib $(_CPU_LDFLAGS) $(EXTRA_LDFLAGS) \
|
||||
-shared $(OBJS-y) $(NO_UNDEFINED) $(LDLIBS) -Wl,-soname,$(LIB) -o $(LIB)
|
||||
O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
|
||||
@@ -148,6 +234,8 @@ doclean:
|
||||
$(CMDS-all) .$(LIB).cmd $(INSTALL-FILES-all) *.pmd.c *.pmd.o
|
||||
$(Q)rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS)
|
||||
|
||||
+endif
|
||||
+
|
||||
include $(RTE_SDK)/mk/internal/rte.compile-post.mk
|
||||
include $(RTE_SDK)/mk/internal/rte.install-post.mk
|
||||
include $(RTE_SDK)/mk/internal/rte.clean-post.mk
|
||||
--
|
||||
2.19.1
|
||||
|
||||
36
dpdk.spec
36
dpdk.spec
@ -1,6 +1,6 @@
|
||||
Name: dpdk
|
||||
Version: 19.11
|
||||
Release: 12
|
||||
Release: 13
|
||||
Packager: packaging@6wind.com
|
||||
URL: http://dpdk.org
|
||||
%global source_version 19.11
|
||||
@ -42,6 +42,7 @@ Patch32: 0009-dpdk-support-gazelle-11-eal-memory-add-sec.patch
|
||||
Patch33: 0010-dpdk-fix-error-in-clearing-secondary-process-memseg-lists.patch
|
||||
Patch34: 0011-dpdk-fix-coredump-when-primary-process-attach-without-shared-file.patch
|
||||
Patch35: 0012-dpdk-fix-fbarray-memseg-destory-error-during-detach.patch
|
||||
Patch36: 0013-dpdk-optimize-the-efficiency-of-compiling-dpdk.patch
|
||||
|
||||
Summary: Data Plane Development Kit core
|
||||
Group: System Environment/Libraries
|
||||
@ -58,12 +59,10 @@ ExclusiveArch: i686 x86_64 aarch64
|
||||
%global config x86_64-%{machine}-linux-gcc
|
||||
%endif
|
||||
|
||||
BuildRequires: kernel-devel, kernel, libpcap-devel
|
||||
BuildRequires: kernel-source
|
||||
BuildRequires: kernel-devel, libpcap-devel
|
||||
BuildRequires: numactl-devel libconfig-devel
|
||||
BuildRequires: module-init-tools uname-build-checks libnl3 libmnl
|
||||
BuildRequires: glibc glibc-devel libibverbs libibverbs-devel libmnl-devel
|
||||
BuildRequires: texlive
|
||||
|
||||
Requires: python3-pyelftools
|
||||
|
||||
@ -134,16 +133,22 @@ This package contains the pdump tool for capture the dpdk network packets.
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch36 -p1
|
||||
|
||||
%build
|
||||
namer=%{kern_devel_ver}
|
||||
export RTE_KERNELDIR=/lib/modules/${namer}/build
|
||||
export EXTRA_CFLAGS="-fstack-protector-strong"
|
||||
make O=%{target} T=%{config} config
|
||||
#make .so libraries for spdk
|
||||
sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1y,' %{target}/.config
|
||||
#make .so and .a libraries for spdk
|
||||
sed -ri 's,(RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS=).*,\1y,' %{target}/.config
|
||||
sed -ri 's,(CONFIG_RTE_LIB_LIBOS=).*,\1n,' %{target}/.config
|
||||
make O=%{target} %{?_smp_mflags}
|
||||
sed -ri 's,(RTE_MACHINE=).*,\1%{machine},' %{target}/.config
|
||||
sed -ri 's,(RTE_APP_TEST=).*,\1n,' %{target}/.config
|
||||
sed -ri 's,(RTE_NEXT_ABI=).*,\1n,' %{target}/.config
|
||||
sed -ri 's,(LIBRTE_VHOST=).*,\1y,' %{target}/.config
|
||||
#sed -ri 's,(LIBRTE_PMD_PCAP=).*,\1y,' %{target}/.config
|
||||
make O=%{target} -j16
|
||||
|
||||
%install
|
||||
namer=%{kern_devel_ver}
|
||||
@ -169,22 +174,8 @@ cp -ar ./%{target}/lib/librte_cmdline.so* $RPM_BUILD_ROOT/lib64/
|
||||
cp -ar ./%{target}/lib/librte_net.so* $RPM_BUILD_ROOT/lib64/
|
||||
cp -ar ./%{target}/lib/librte_meter.so* $RPM_BUILD_ROOT/lib64/
|
||||
|
||||
sed -ri 's,(RTE_MACHINE=).*,\1%{machine},' %{target}/.config
|
||||
sed -ri 's,(RTE_APP_TEST=).*,\1n,' %{target}/.config
|
||||
sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1n,' %{target}/.config
|
||||
sed -ri 's,(RTE_NEXT_ABI=).*,\1n,' %{target}/.config
|
||||
sed -ri 's,(LIBRTE_VHOST=).*,\1y,' %{target}/.config
|
||||
#sed -ri 's,(LIBRTE_PMD_PCAP=).*,\1y,' %{target}/.config
|
||||
sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1n,' %{target}/.config
|
||||
make O=%{target} %{?_smp_mflags}
|
||||
#make O=%{target} doc
|
||||
|
||||
make install O=%{target} RTE_KERNELDIR=/lib/modules/${namer}/build \
|
||||
kerneldir=/lib/modules/${namer}/extra/dpdk DESTDIR=%{buildroot} \
|
||||
prefix=%{_prefix} bindir=%{_bindir} sbindir=%{_sbindir} \
|
||||
includedir=%{_includedir}/dpdk libdir=%{_libdir} \
|
||||
datadir=%{_datadir}/dpdk docdir=%{_docdir}/dpdk
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/
|
||||
ln -s /usr/share/dpdk/mk $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/
|
||||
ln -s /usr/share/dpdk/%{target} $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/
|
||||
@ -237,6 +228,9 @@ strip -g $RPM_BUILD_ROOT/lib/modules/${namer}/extra/dpdk/rte_kni.ko
|
||||
/usr/sbin/depmod
|
||||
|
||||
%changelog
|
||||
* Mon May 24 2021 renmingshuai <renmingshuai@huawei.com> - 19.11-13
|
||||
- optimize the efficiency of compiling dpdk
|
||||
|
||||
* Mon May 24 2021 wutao <wutao612huawei.com> - 19.11-12
|
||||
- add fstack-protector-strong gcc flags
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user