From 4e93b5cc3ad68d92bc3562df3745e1d10dc08fc0 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 (mostly useful for CI) system will also be automatically used if no option is passed and netmap is available in the host system. Signed-off-by: Giuseppe Lettieri --- .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 30aad233d1..5cb924985c 100755 --- a/configure +++ b/configure @@ -1133,6 +1133,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" @@ -3314,8 +3318,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 @@ -3325,15 +3330,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 @@ -6582,7 +6628,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