optimize the efficiency of compiling dpdk
This commit is contained in:
parent
24ffff31d8
commit
1ca47e1909
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
|
Name: dpdk
|
||||||
Version: 19.11
|
Version: 19.11
|
||||||
Release: 12
|
Release: 13
|
||||||
Packager: packaging@6wind.com
|
Packager: packaging@6wind.com
|
||||||
URL: http://dpdk.org
|
URL: http://dpdk.org
|
||||||
%global source_version 19.11
|
%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
|
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
|
Patch34: 0011-dpdk-fix-coredump-when-primary-process-attach-without-shared-file.patch
|
||||||
Patch35: 0012-dpdk-fix-fbarray-memseg-destory-error-during-detach.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
|
Summary: Data Plane Development Kit core
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
@ -58,12 +59,10 @@ ExclusiveArch: i686 x86_64 aarch64
|
|||||||
%global config x86_64-%{machine}-linux-gcc
|
%global config x86_64-%{machine}-linux-gcc
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
BuildRequires: kernel-devel, kernel, libpcap-devel
|
BuildRequires: kernel-devel, libpcap-devel
|
||||||
BuildRequires: kernel-source
|
|
||||||
BuildRequires: numactl-devel libconfig-devel
|
BuildRequires: numactl-devel libconfig-devel
|
||||||
BuildRequires: module-init-tools uname-build-checks libnl3 libmnl
|
BuildRequires: module-init-tools uname-build-checks libnl3 libmnl
|
||||||
BuildRequires: glibc glibc-devel libibverbs libibverbs-devel libmnl-devel
|
BuildRequires: glibc glibc-devel libibverbs libibverbs-devel libmnl-devel
|
||||||
BuildRequires: texlive
|
|
||||||
|
|
||||||
Requires: python3-pyelftools
|
Requires: python3-pyelftools
|
||||||
|
|
||||||
@ -134,16 +133,22 @@ This package contains the pdump tool for capture the dpdk network packets.
|
|||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
|
%patch36 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
namer=%{kern_devel_ver}
|
namer=%{kern_devel_ver}
|
||||||
export RTE_KERNELDIR=/lib/modules/${namer}/build
|
export RTE_KERNELDIR=/lib/modules/${namer}/build
|
||||||
export EXTRA_CFLAGS="-fstack-protector-strong"
|
export EXTRA_CFLAGS="-fstack-protector-strong"
|
||||||
make O=%{target} T=%{config} config
|
make O=%{target} T=%{config} config
|
||||||
#make .so libraries for spdk
|
#make .so and .a libraries for spdk
|
||||||
sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1y,' %{target}/.config
|
sed -ri 's,(RTE_BUILD_BOTH_STATIC_AND_SHARED_LIBS=).*,\1y,' %{target}/.config
|
||||||
sed -ri 's,(CONFIG_RTE_LIB_LIBOS=).*,\1n,' %{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
|
%install
|
||||||
namer=%{kern_devel_ver}
|
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_net.so* $RPM_BUILD_ROOT/lib64/
|
||||||
cp -ar ./%{target}/lib/librte_meter.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 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}/
|
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/mk $RPM_BUILD_ROOT/usr/include/%{name}-%{version}/
|
||||||
ln -s /usr/share/dpdk/%{target} $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
|
/usr/sbin/depmod
|
||||||
|
|
||||||
%changelog
|
%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
|
* Mon May 24 2021 wutao <wutao612huawei.com> - 19.11-12
|
||||||
- add fstack-protector-strong gcc flags
|
- add fstack-protector-strong gcc flags
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user