> -----Original Message----- > From: Ben Pfaff [mailto:b...@nicira.com] > Sent: Thursday, July 23, 2015 11:47 > To: Mussar, Gary > Cc: dev@openvswitch.org > Subject: Re: [ovs-dev] FW: [PATCH V2 1/1] Fix detection of vhost_cuse in > dpdk rte_config.h > > 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". >
I have seen it done both ways although preprocessing isn't done as often as compiling. It seemed to me that preprocessing was a smaller step from just original OVS_GREP_IFELSE of the header file itself. I assume you want the patch changed to compile, right? Gary _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev