On Thu, Jul 23, 2015 at 11:09:32AM -0400, Mussar, Gary wrote:
> Dpdk allows users to create a config that includes other config files and
> then override values.
>
> Eg.
> defconfig_x86_64-native_vhost_cuse-linuxapp-gcc:
>
> CONFIG_RTE_BUILD_COMBINE_LIBS=y
> CONFIG_RTE_BUILD_SHARED_LIB=n
> CONFIG_RTE_LIBRTE_VHOST=y
> CONFIG_RTE_LIBRTE_VHOST_USER=n
>
> This allows you to have both a vhostuser and vhostcuse config in the same
> source tree without the need to replicate everything in those config files
> just to change a couple of settings. The resultant .config file has all of
> the settings from the included files with the updated settings at the end.
> The resultant rte_config.h contains multiple undefs and defines for the
> overridden settings.
>
> Eg.
> > grep RTE_LIBRTE_VHOST_USER
> x86_64-native_vhost_cuse-linuxapp-gcc/include/rte_config.h
> #undef RTE_LIBRTE_VHOST_USER
> #define RTE_LIBRTE_VHOST_USER 1
> #undef RTE_LIBRTE_VHOST_USER
>
> The current mechanism to detect the RTE_LIBRTE_VHOST_USER setting merely
> greps the rte_config.h file for the string "define RTE_LIBRTE_VHOST_USER 1"
> rather than the final setting of RTE_LIBRTE_VHOST_USER. The following patch
> changes this test to detect the final setting of RTE_LIBRTE_VHOST_USER.
>
> Signed-off-by: Gary Mussar <[email protected]>
> ---
> acinclude.m4 | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index 3604e55..0e05468 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -175,7 +175,10 @@ AC_DEFUN([OVS_CHECK_DPDK], [
> DPDK_LIB="-lintel_dpdk"
> DPDK_EXTRA_LIB=""
>
> - OVS_GREP_IFELSE([$RTE_SDK/include/rte_config.h], [define
> RTE_LIBRTE_VHOST_USER 1],
> + AC_EGREP_CPP([int vhost = 1;], [
> +#include <$RTE_SDK/include/rte_config.h>
> +int vhost = RTE_LIBRTE_VHOST_USER;
> +],
> [], [AC_DEFINE([VHOST_CUSE], [1], [DPDK vhost-cuse
> support enabled, vhost-user disabled.])
> DPDK_EXTRA_LIB="-lfuse"])
We use OVS_GREP_IFELSE for kernel checks because it's relatively
difficult to get the kernel build system to compile a random fragment of
text for us, but it's somewhat odd to use AC_EGREP_CPP to detect the
value of something when we can easily do a real compile. The usual
Autoconf test for something like this would be more like:
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[#include <rte_config.h>
#if !RTE_LIBRTE_VHOST_USER
choke me
#endif]])],
[...if it's present...],
[...if it's missing....])
and then you don't worry about someone changing the definition of the
macro to "(1)" or "true".
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev