>From ddec3b9e4e1e6e8da44d0d7eec643db7b82b2b81 Mon Sep 17 00:00:00 2001
From: Giuseppe Lettieri
Date: Mon, 2 Sep 2019 17:35:33 +0200
Subject: [PATCH] netmap: support git-submodule build otption
With this patch, netmap support can be enabled with
the following options to the configure script:
--enable-netmap=system
Use the host system netmap installation.
Fail if not found.
--enable-netmap=git
clone the official netmap repository on
github
--enable-netmap
try system and then git.
---
.gitmodules | 3 +++
configure | 68 ++++++++++++++++++++++++++++++++++++++++++++---------
netmap | 1 +
3 files changed, 61 insertions(+), 11 deletions(-)
create mode 160000 netmap
diff --git a/.gitmodules b/.gitmodules
index c5c474169d..bf75dbc5e3 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -58,3 +58,6 @@
[submodule "roms/opensbi"]
path = roms/opensbi
url = https://git.qemu.org/git/opensbi.git
+[submodule "netmap"]
+ path = netmap
+ url = https://github.com/luigirizzo/netmap.git
diff --git a/configure b/configure
index e44e454c43..560f357967 100755
--- a/configure
+++ b/configure
@@ -1155,6 +1155,10 @@ for opt do
;;
--enable-netmap) netmap="yes"
;;
+ --enable-netmap=git) netmap="git"
+ ;;
+ --enable-netmap=system) netmap="system"
+ ;;
--disable-xen) xen="no"
;;
--enable-xen) xen="yes"
@@ -3351,8 +3355,9 @@ fi
# a minor/major version number. Minor new features will be marked with values up
# to 15, and if something happens that requires a change to the backend we will
# move above 15, submit the backend fixes and modify this two bounds.
-if test "$netmap" != "no" ; then
- cat > $TMPC << EOF
+case "$netmap" in
+ "" | yes | system)
+ cat > $TMPC << EOF
#include
#include
#include
@@ -3362,15 +3367,56 @@ if test "$netmap" != "no" ; then
#endif
int main(void) { return 0; }
EOF
- if compile_prog "" "" ; then
- netmap=yes
- else
- if test "$netmap" = "yes" ; then
- feature_not_found "netmap"
+ if compile_prog "" "" ; then
+ netmap_system=yes
+ else
+ netmap_system=no
+ fi
+ ;;
+esac
+
+case "$netmap" in
+ "" | yes)
+ if test "$netmap_system" = "yes"; then
+ netmap=system
+ elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
+ netmap=git
+ elif test -e "${source_path}/netmap/configure" ; then
+ netmap=internal
+ elif test -z "$netmap" ; then
+ netmap=no
+ else
+ feature_not_found "netmap" "Install netmap or git submodule"
fi
- netmap=no
- fi
-fi
+ ;;
+
+ system)
+ if test "$netmap_system" = "no"; then
+ feature_not_found "netmap" "Install netmap"
+ fi
+ ;;
+esac
+
+case "$netmap" in
+ git | internal)
+ if test "$netmap" = git; then
+ git_submodules="${git_submodules} netmap"
+ fi
+ mkdir -p netmap
+ QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/netmap/sys"
+ ;;
+
+ system)
+ ;;
+
+ no)
+ ;;
+ *)
+ error_exit "Unknown state for netmap: $netmap"
+ ;;
+esac
+
+##########################################
##########################################
# libcap-ng library probe
@@ -6630,7 +6676,7 @@ if test "$vde" = "yes" ; then
echo "CONFIG_VDE=y" >> $config_host_mak
echo "VDE_LIBS=$vde_libs" >> $config_host_mak
fi
-if test "$netmap" = "yes" ; then
+if test "$netmap" != "no" ; then
echo "CONFIG_NETMAP=y" >> $config_host_mak
fi
if test "$l2tpv3" = "yes" ; then
diff --git a/netmap b/netmap
new file mode 160000
index 0000000000..137f537eae
--- /dev/null
+++ b/netmap
@@ -0,0 +1 @@
+Subproject commit 137f537eae513f02d5d6871d1f91c049e6345803
--
2.20.1