[lttng-dev] [PATCH lttng-ust] Fix: Check g++ version before compiling 'hello.cxx' test

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Tue Jun 18 09:50:14 EDT 2013


* Zifei Tong (soariez at gmail.com) wrote:
> I've updated the patch addressing the problems mentioned earlier.
> 
> > Going forward, I think checking for the designated initializer feature
> > via a small C++ testfile is more in line with the Autoconf philosophy.
> 
> > Moreover, the documentation and patches should take LLVM into account.
> 
> Tested on a Ububtu system with g++ 4.6, g++ 4.7 and clang++.
> 
> Fix: Check C++ designated initializers support before compiling 'hello.cxx' test
> 

merged into master, with a tiny coding style fix in the test snippet.

Thanks !

Mathieu

> Fixes #557
> 
> Signed-off-by: Zifei Tong <soariez at gmail.com>
> ---
>  README       |  3 ++-
>  configure.ac | 15 ++++++++++++++-
>  2 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/README b/README
> index 1f6b9d2..a2ff00b 100644
> --- a/README
> +++ b/README
> @@ -111,7 +111,8 @@ USAGE:
>    - Enable instrumentation and control tracing with the "lttng" command
>      from lttng-tools. See lttng-tools doc/quickstart.txt.
>    - Note for C++ support: since LTTng-UST 2.3, both tracepoints and
> -    tracepoint probes can be compiled with g++.
> +    tracepoint probes can be compiled in C++. To compile tracepoint probes
> +    in C++, you need g++ >= 4.7 or Clang.
> 
> 
>  ENVIRONMENT VARIABLES:
> diff --git a/configure.ac b/configure.ac
> index 802ccaa..0bc7992 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -83,8 +83,21 @@ AC_CACHE_CHECK([whether the C++ compiler works],
>  		[rw_cv_prog_cxx_works],
>  		[AC_LANG_PUSH([C++])
>  		AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
> -				[rw_cv_prog_cxx_works=yes],
> +				[check_cxx_designated_initializers=yes],
>  				[rw_cv_prog_cxx_works=no])
> +		if test "$check_cxx_designated_initializers" = "yes"; then
> +			AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
> +				struct foo { int a; int b; };
> +				void fct(void)
> +				{
> +					struct foo f = {.a = 0, .b = 1};
> +				}
> +			]])],[
> +				rw_cv_prog_cxx_works=yes
> +			],[
> +				rw_cv_prog_cxx_works=no
> +			])
> +		fi
>  		AC_LANG_POP([C++])])
> 
>  AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
> -- 
> 1.8.3.1
> 
> On 6/16/13, Mathieu Desnoyers <mathieu.desnoyers at efficios.com> wrote:
> > * Christian Babeux (christian.babeux at efficios.com) wrote:
> >> Hi Zifei,
> >>
> >> Checking specific version numbers might be a bit counterproductive
> >> (e.g. what if some embedded platform as a GCC 4.7 with designated
> >> initializer explicitly patched out?).
> >>
> >> Going forward, I think checking for the designated initializer feature
> >> via a small C++ testfile is more in line with the Autoconf philosophy.
> >> Also, we should conditionally disable the compilation of the
> >> tracepoint probes requiring designated initializers if not supported.
> >
> > Moreover, the documentation and patches should take LLVM into account.
> >
> > Thanks,
> >
> > Mathieu
> >
> >>
> >> Thanks,
> >>
> >> Christian
> >>
> >> On Sat, Jun 15, 2013 at 2:08 PM, Zifei Tong <soariez at gmail.com> wrote:
> >> > Designated initializer support that is required to compile c++
> >> > tracepoint probes is only available since g++ 4.7.
> >> >
> >> > Fixes #557
> >> >
> >> > Signed-off-by: Zifei Tong <soariez at gmail.com>
> >> > ---
> >> >  README       |  3 ++-
> >> >  configure.ac | 16 ++++++++++++++--
> >> >  2 files changed, 16 insertions(+), 3 deletions(-)
> >> >
> >> > diff --git a/README b/README
> >> > index 1f6b9d2..1c7a2f8 100644
> >> > --- a/README
> >> > +++ b/README
> >> > @@ -111,7 +111,8 @@ USAGE:
> >> >    - Enable instrumentation and control tracing with the "lttng"
> >> > command
> >> >      from lttng-tools. See lttng-tools doc/quickstart.txt.
> >> >    - Note for C++ support: since LTTng-UST 2.3, both tracepoints and
> >> > -    tracepoint probes can be compiled with g++.
> >> > +    tracepoint probes can be compiled with g++. To compile tracepoint
> >> > probes
> >> > +    in g++, you need version 4.7 or above.
> >> >
> >> >
> >> >  ENVIRONMENT VARIABLES:
> >> > diff --git a/configure.ac b/configure.ac
> >> > index 802ccaa..85a64a1 100644
> >> > --- a/configure.ac
> >> > +++ b/configure.ac
> >> > @@ -83,9 +83,21 @@ AC_CACHE_CHECK([whether the C++ compiler works],
> >> >                 [rw_cv_prog_cxx_works],
> >> >                 [AC_LANG_PUSH([C++])
> >> >                 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
> >> > -                               [rw_cv_prog_cxx_works=yes],
> >> > +                               [check_gcc_cxx_version=yes],
> >> >                                 [rw_cv_prog_cxx_works=no])
> >> > -               AC_LANG_POP([C++])])
> >> > +               AC_LANG_POP([C++])
> >> > +               if test "$check_gcc_cxx_version" = "yes"; then
> >> > +                       gcc_cxx_version=`$CXX -dumpversion`
> >> > +                       gcc_cxx_major_version=$(echo $gcc_cxx_version |
> >> > sed
> >> > 's/^\([[0-9]]*\)\.[[0-9]]*.*$/\1/')
> >> > +                       gcc_cxx_minor_version=$(echo $gcc_cxx_version |
> >> > sed
> >> > 's/^[[0-9]]*\.\([[0-9]]*\).*$/\1/')
> >> > +                       if test "$gcc_cxx_major_version" -gt 4; then
> >> > +                               rw_cv_prog_cxx_works="yes"
> >> > +                       elif test "$gcc_cxx_major_version" -eq 4 -a
> >> > "$gcc_cxx_minor_version" -ge 7; then
> >> > +                               rw_cv_prog_cxx_works="yes"
> >> > +                       else
> >> > +                               rw_cv_prog_cxx_works="no"
> >> > +                       fi
> >> > +               fi])
> >> >
> >> >  AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
> >> >
> >> > --
> >> > 1.8.3.1
> >> >
> >> > --
> >> > Best Regards,
> >> > 仝子飞 (Zifei Tong)
> >> >
> >> > _______________________________________________
> >> > lttng-dev mailing list
> >> > lttng-dev at lists.lttng.org
> >> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >>
> >> _______________________________________________
> >> lttng-dev mailing list
> >> lttng-dev at lists.lttng.org
> >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
> > --
> > Mathieu Desnoyers
> > EfficiOS Inc.
> > http://www.efficios.com
> >

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list