dpdk: prevent linking dpdk against libbsd 56/28956/2
authorMohammed Hawari <mohammed@hawari.fr>
Fri, 18 Sep 2020 19:47:04 +0000 (21:47 +0200)
committerDamjan Marion <dmarion@me.com>
Fri, 18 Sep 2020 22:15:25 +0000 (22:15 +0000)
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>
build/external/packages/dpdk.mk

index ef84383..49761cd 100644 (file)
@@ -12,6 +12,7 @@
 # limitations under the License.
 
 DPDK_PKTMBUF_HEADROOM        ?= 128
+DPDK_USE_LIBBSD              ?= n
 DPDK_DEBUG                   ?= n
 DPDK_MLX4_PMD                ?= n
 DPDK_MLX5_PMD                ?= n
@@ -118,6 +119,19 @@ echo '$(HASH)define RTE_$(1) $(DPDK_$(1))' \
 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 \
@@ -143,7 +157,8 @@ define dpdk_config_cmds
        deactivate && \
        echo "DPDK post meson configuration" && \
        echo "Altering rte_build_config.h" && \
-       $(call dpdk_config,PKTMBUF_HEADROOM) 
+       $(call dpdk_config,PKTMBUF_HEADROOM) && \
+       $(call dpdk_config_def,USE_LIBBSD)
 endef
 
 define dpdk_build_cmds