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 <gmus...@ciena.com>
> ---
>  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
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to