
If libbsd is detected by the DPDK build system, DPDK does not provide implementations for strlcpy and dynamically link against the one provided by libbsd. When the DPDK plugin is loaded by VPP, a crash occurs because libbsd is not loaded by VPP. Type: fix Change-Id: Ib691bbe27edcf0f6f0a3d39952e439027cef72cb Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
183 lines
5.2 KiB
Makefile
183 lines
5.2 KiB
Makefile
# Copyright (c) 2020 Cisco and/or its affiliates.
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at:
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
DPDK_PKTMBUF_HEADROOM ?= 128
|
|
DPDK_USE_LIBBSD ?= n
|
|
DPDK_DEBUG ?= n
|
|
DPDK_MLX4_PMD ?= n
|
|
DPDK_MLX5_PMD ?= n
|
|
DPDK_MLX5_COMMON_PMD ?= n
|
|
DPDK_TAP_PMD ?= n
|
|
DPDK_FAILSAFE_PMD ?= n
|
|
DPDK_MACHINE ?= default
|
|
|
|
dpdk_version ?= 20.08
|
|
dpdk_base_url ?= http://fast.dpdk.org/rel
|
|
dpdk_tarball := dpdk-$(dpdk_version).tar.xz
|
|
dpdk_tarball_md5sum_20.08 := 64badd32cd6bc0761befc8f2402c2148
|
|
dpdk_tarball_md5sum := $(dpdk_tarball_md5sum_$(dpdk_version))
|
|
dpdk_url := $(dpdk_base_url)/$(dpdk_tarball)
|
|
dpdk_tarball_strip_dirs := 1
|
|
|
|
# Debug or release
|
|
|
|
DPDK_BUILD_TYPE:=release
|
|
ifeq ($(DPDK_DEBUG), y)
|
|
DPDK_BUILD_TYPE:=debug
|
|
endif
|
|
|
|
DPDK_DRIVERS_DISABLED := baseband/\*, \
|
|
bus/dpaa, \
|
|
bus/ifpga, \
|
|
compress/\*, \
|
|
crypto/ccp, \
|
|
crypto/dpaa_sec, \
|
|
crypto/openssl, \
|
|
event/\*, \
|
|
mempool/dpaa, \
|
|
net/af_packet, \
|
|
net/bnx2x, \
|
|
net/bonding, \
|
|
net/ipn3ke, \
|
|
net/liquidio, \
|
|
net/pcap, \
|
|
net/pfe, \
|
|
net/sfc, \
|
|
net/softnic, \
|
|
net/thunderx, \
|
|
raw/ifpga, \
|
|
net/af_xdp
|
|
|
|
DPDK_LIBS_DISABLED := acl, \
|
|
bbdev, \
|
|
bitratestats, \
|
|
bpf, \
|
|
cfgfile, \
|
|
distributor, \
|
|
efd, \
|
|
fib, \
|
|
flow_classify, \
|
|
graph, \
|
|
gro, \
|
|
gso, \
|
|
jobstats, \
|
|
kni, \
|
|
latencystats, \
|
|
lpm, \
|
|
member, \
|
|
node, \
|
|
pipeline, \
|
|
port, \
|
|
power, \
|
|
rawdev, \
|
|
rib, \
|
|
table
|
|
|
|
# Adjust disabled pmd and libs depending on user provided variables
|
|
ifeq ($(DPDK_MLX4_PMD), n)
|
|
DPDK_DRIVERS_DISABLED += ,net/mlx4
|
|
endif
|
|
ifeq ($(DPDK_MLX5_PMD), n)
|
|
DPDK_DRIVERS_DISABLED += ,net/mlx5
|
|
endif
|
|
ifeq ($(DPDK_MLX5_COMMON_PMD), n)
|
|
DPDK_DRIVERS_DISABLED += ,common/mlx5
|
|
endif
|
|
ifeq ($(DPDK_TAP_PMD), n)
|
|
DPDK_DRIVERS_DISABLED += ,net/tap
|
|
endif
|
|
ifeq ($(DPDK_FAILSAFE_PMD), n)
|
|
DPDK_DRIVERS_DISABLED += ,net/failsafe
|
|
endif
|
|
|
|
# Sanitize DPDK_DRIVERS_DISABLED and DPDK_LIBS_DISABLED
|
|
DPDK_DRIVERS_DISABLED := $(shell echo $(DPDK_DRIVERS_DISABLED) | tr -d '\\\t ')
|
|
DPDK_LIBS_DISABLED := $(shell echo $(DPDK_LIBS_DISABLED) | tr -d '\\\t ')
|
|
|
|
HASH := \#
|
|
# post-meson-setup snippet to alter rte_build_config.h
|
|
define dpdk_config
|
|
if grep -q RTE_$(1) $(dpdk_src_dir)/config/rte_config.h ; then \
|
|
sed -i -e 's/$(HASH)define RTE_$(1).*/$(HASH)define RTE_$(1) $(DPDK_$(1))/' \
|
|
$(dpdk_src_dir)/config/rte_config.h; \
|
|
elif grep -q RTE_$(1) $(dpdk_build_dir)/rte_build_config.h ; then \
|
|
sed -i -e 's/$(HASH)define RTE_$(1).*/$(HASH)define RTE_$(1) $(DPDK_$(1))/' \
|
|
$(dpdk_build_dir)/rte_build_config.h; \
|
|
else \
|
|
echo '$(HASH)define RTE_$(1) $(DPDK_$(1))' \
|
|
>> $(dpdk_build_dir)/rte_build_config.h ; \
|
|
fi
|
|
endef
|
|
|
|
define dpdk_config_def
|
|
if [[ "$(DPDK_$(1))" == "y" ]]; then \
|
|
if ! grep -q "RTE_$(1)" $(dpdk_build_dir)/rte_build_config.h \
|
|
$(dpdk_src_dir)/config/rte_config.h ; then \
|
|
echo '$(HASH)define RTE_$(1) 1' \
|
|
>> $(dpdk_build_dir)/rte_build_config.h ; \
|
|
fi; \
|
|
elif [[ "$(DPDK_$(1))" == "n" ]]; then \
|
|
sed -i '/$(HASH)define RTE_$(1) .*/d' $(dpdk_build_dir)/rte_build_config.h \
|
|
$(dpdk_src_dir)/config/rte_config.h ; \
|
|
fi
|
|
endef
|
|
|
|
DPDK_MESON_ARGS = \
|
|
--default-library static \
|
|
--libdir lib \
|
|
--prefix $(dpdk_install_dir) \
|
|
-Dtests=false \
|
|
"-Ddisable_drivers=$(DPDK_DRIVERS_DISABLED)" \
|
|
"-Ddisable_libs=$(DPDK_LIBS_DISABLED)" \
|
|
-Db_pie=true \
|
|
-Dmachine=$(DPDK_MACHINE) \
|
|
--buildtype=$(DPDK_BUILD_TYPE)
|
|
|
|
define dpdk_config_cmds
|
|
cd $(dpdk_build_dir) && \
|
|
rm -rf ../dpdk-meson-venv && \
|
|
mkdir -p ../dpdk-meson-venv && \
|
|
python3 -m venv ../dpdk-meson-venv && \
|
|
source ../dpdk-meson-venv/bin/activate && \
|
|
pip3 install meson==0.54 && \
|
|
meson setup $(dpdk_src_dir) \
|
|
$(dpdk_build_dir) \
|
|
$(DPDK_MESON_ARGS) \
|
|
| tee $(dpdk_config_log) && \
|
|
deactivate && \
|
|
echo "DPDK post meson configuration" && \
|
|
echo "Altering rte_build_config.h" && \
|
|
$(call dpdk_config,PKTMBUF_HEADROOM) && \
|
|
$(call dpdk_config_def,USE_LIBBSD)
|
|
endef
|
|
|
|
define dpdk_build_cmds
|
|
cd $(dpdk_build_dir) && \
|
|
source ../dpdk-meson-venv/bin/activate && \
|
|
meson compile -C . | tee $(dpdk_build_log) && \
|
|
deactivate
|
|
endef
|
|
|
|
define dpdk_install_cmds
|
|
cd $(dpdk_build_dir) && \
|
|
source ../dpdk-meson-venv/bin/activate && \
|
|
meson install && \
|
|
cd $(dpdk_install_dir)/lib && \
|
|
echo "GROUP ( $$(ls librte*.a ) )" > libdpdk.a && \
|
|
rm -rf librte*.so librte*.so.* dpdk/*/librte*.so dpdk/*/librte*.so.* && \
|
|
deactivate && \
|
|
rm -rf $(dpdk_build_dir)/../dpdk-meson-venv
|
|
endef
|
|
|
|
$(eval $(call package,dpdk))
|