I think it's worth adding that, while the below is using a different approach, 
Stack Overflow thinks this is a bad idea:

        http://stackoverflow.com/a/4680578/613428

I'm not confident enough with Autotools to say that this definitely should not 
be done, but there are some good points to be made for not hacking the CFLAGS 
as done below.

Stephen

> CFLAGS follows OVS_CFLAGS in the compiler command line, and should, so that
> the user can override any automatically determined compiler options.  That
> means that the -O0 that the code here added to OVS_CFLAGS didn't really
> have any effect since CFLAGS by default includes "-O2".  However, we do
> really want to disable optimizations (because the coverage reports are hard
> to interpret with optimizations), so this commit changes the configure
> script to edit out -O2 from CFLAGS, leaving any other default or
> user-specified options.
> 
> Reported-by: Mijo Safradin <m...@linux.vnet.ibm.com>
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
>  m4/openvswitch.m4 |   16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
> index 3f0d097..ba3ed9b 100644
> --- a/m4/openvswitch.m4
> +++ b/m4/openvswitch.m4
> @@ -1,6 +1,6 @@
>  # -*- autoconf -*-
> 
> -# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
> +# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira,
> Inc.
>  #
>  # Licensed under the Apache License, Version 2.0 (the "License");
>  # you may not use this file except in compliance with the License.
> @@ -30,7 +30,19 @@ AC_DEFUN([OVS_CHECK_COVERAGE],
>        esac],
>       [coverage=false])
>     if $coverage; then
> -     OVS_CFLAGS="$OVS_CFLAGS -O0 --coverage"
> +     # Autoconf by default puts "-g -O2" in CFLAGS.  We need to remove the
> -O2
> +     # option for coverage to be useful.  This does it without otherwise
> +     # interfering with anything that the user might have put there.
> +     old_CFLAGS=$CFLAGS
> +     CFLAGS=
> +     for option in $old_CFLAGS; do
> +        case $option in
> +            (-O2) ;;
> +            (*) CFLAGS="$CFLAGS $option" ;;
> +        esac
> +     done
> +
> +     OVS_CFLAGS="$OVS_CFLAGS --coverage"
>       OVS_LDFLAGS="$OVS_LDFLAGS --coverage"
>     fi])
> 
> --
> 1.7.10.4
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to