[libcamera-devel] build: Add 'std=c++11' compiler flag to libcamera

Message ID 1544621463-4512-1-git-send-email-jacopo@jmondi.org
State Rejected
Headers show
Series
  • [libcamera-devel] build: Add 'std=c++11' compiler flag to libcamera
Related show

Commit Message

Jacopo Mondi Dec. 12, 2018, 1:31 p.m. UTC
Building the current master branch fails with:
./src/libcamera/include/log.h:25:34:
   error: defaulted and deleted functions only available with -std=c++11 \
   or -std=gnu++11 [-Werror]
   LogMessage(const LogMessage&) = delete;

Fix this by adding the 'std=c++11' compiler argument to the src/libcamera
build file.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/libcamera/meson.build | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
2.7.4

Comments

Kieran Bingham Dec. 12, 2018, 1:35 p.m. UTC | #1
Hi Jacopo,

On 12/12/2018 13:31, Jacopo Mondi wrote:
> Building the current master branch fails with:
> ./src/libcamera/include/log.h:25:34:
>    error: defaulted and deleted functions only available with -std=c++11 \
>    or -std=gnu++11 [-Werror]
>    LogMessage(const LogMessage&) = delete;
> 
> Fix this by adding the 'std=c++11' compiler argument to the src/libcamera
> build file.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/libcamera/meson.build | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index 0c44b5a..4457cde 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -16,4 +16,5 @@ includes = [
>  libcamera = shared_library('camera',
>                             libcamera_sources,
>                             install : true,
> -                           include_directories : includes)
> +                           include_directories : includes,
> +                           cpp_args : '-std=c++11')


Does this override - or add to the arguments I've already created in the
top level meson.build ?

As this will be a project wide requirement - could you add that argument
to the global cpp_arguments before they get added to the project please?



> --
> 2.7.4
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
>
Jacopo Mondi Dec. 12, 2018, 1:51 p.m. UTC | #2
Hi Kieran,

On Wed, Dec 12, 2018 at 01:35:31PM +0000, Kieran Bingham wrote:
> Hi Jacopo,
>
> On 12/12/2018 13:31, Jacopo Mondi wrote:
> > Building the current master branch fails with:
> > ./src/libcamera/include/log.h:25:34:
> >    error: defaulted and deleted functions only available with -std=c++11 \
> >    or -std=gnu++11 [-Werror]
> >    LogMessage(const LogMessage&) = delete;
> >
> > Fix this by adding the 'std=c++11' compiler argument to the src/libcamera
> > build file.
> >
> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> > ---
> >  src/libcamera/meson.build | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> > index 0c44b5a..4457cde 100644
> > --- a/src/libcamera/meson.build
> > +++ b/src/libcamera/meson.build
> > @@ -16,4 +16,5 @@ includes = [
> >  libcamera = shared_library('camera',
> >                             libcamera_sources,
> >                             install : true,
> > -                           include_directories : includes)
> > +                           include_directories : includes,
> > +                           cpp_args : '-std=c++11')
>
>
> Does this override - or add to the arguments I've already created in the
> top level meson.build ?

That's the ninja verbose output when building libcamera

[1/10] ccache c++ -Isrc/libcamera/src@libcamera@@camera@sha -Isrc/libcamera -I../src/libcamera -Iinclude -I../include -I../src/libcamera/include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -g -Wall -Wextra -Werror -Wno-unused-parameter -fPIC -std=c++11  -MD -MQ 'src/libcamera/src@libcamera@@camera@sha/log.cpp.o' -MF 'src/libcamera/src@libcamera@@camera@sha/log.cpp.o.d' -o 'src/libcamera/src@libcamera@@camera@sha/log.cpp.o' -c ../src/libcamera/log.cpp

sorry, it sucks, but I see here both the globals:
-Wall -Wextra -Werror -Wno-unused-parameter

and the new:
-std=c++11

>
> As this will be a project wide requirement - could you add that argument
> to the global cpp_arguments before they get added to the project please?
>

I ended up setting it only for src/libcamera target because otherwise:

ccache cc -Iutils/ipu3/utils@ipu3@@ipu3-unpack@exe ...
cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C

when building utils/

It's true that I added it as part of the 'common_arguments' array, but
from the documentation and a few other attempts I've made, the meson's
'cpp_args' field is available only inside the target argument list
https://mesonbuild.com/Adding-arguments.html

>
>
> > --
> > 2.7.4
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel@lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
> >
>
> --
> Regards
> --
> Kieran
Kieran Bingham Dec. 12, 2018, 2:01 p.m. UTC | #3
Hi Jacopo,

On 12/12/2018 13:51, jacopo mondi wrote:
> Hi Kieran,
> 
> On Wed, Dec 12, 2018 at 01:35:31PM +0000, Kieran Bingham wrote:
>> Hi Jacopo,
>>
>> On 12/12/2018 13:31, Jacopo Mondi wrote:
>>> Building the current master branch fails with:
>>> ./src/libcamera/include/log.h:25:34:
>>>    error: defaulted and deleted functions only available with -std=c++11 \
>>>    or -std=gnu++11 [-Werror]
>>>    LogMessage(const LogMessage&) = delete;
>>>
>>> Fix this by adding the 'std=c++11' compiler argument to the src/libcamera
>>> build file.
>>>
>>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
>>> ---
>>>  src/libcamera/meson.build | 3 ++-
>>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
>>> index 0c44b5a..4457cde 100644
>>> --- a/src/libcamera/meson.build
>>> +++ b/src/libcamera/meson.build
>>> @@ -16,4 +16,5 @@ includes = [
>>>  libcamera = shared_library('camera',
>>>                             libcamera_sources,
>>>                             install : true,
>>> -                           include_directories : includes)
>>> +                           include_directories : includes,
>>> +                           cpp_args : '-std=c++11')
>>
>>
>> Does this override - or add to the arguments I've already created in the
>> top level meson.build ?
> 
> That's the ninja verbose output when building libcamera
> 
> [1/10] ccache c++ -Isrc/libcamera/src@libcamera@@camera@sha -Isrc/libcamera -I../src/libcamera -Iinclude -I../include -I../src/libcamera/include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -g -Wall -Wextra -Werror -Wno-unused-parameter -fPIC -std=c++11  -MD -MQ 'src/libcamera/src@libcamera@@camera@sha/log.cpp.o' -MF 'src/libcamera/src@libcamera@@camera@sha/log.cpp.o.d' -o 'src/libcamera/src@libcamera@@camera@sha/log.cpp.o' -c ../src/libcamera/log.cpp
> 
> sorry, it sucks, but I see here both the globals:
> -Wall -Wextra -Werror -Wno-unused-parameter
> 
> and the new:
> -std=c++11
> 

Ok - good - so it's an append.

>> As this will be a project wide requirement - could you add that argument
>> to the global cpp_arguments before they get added to the project please?
>>
> 
> I ended up setting it only for src/libcamera target because otherwise:
> 
> ccache cc -Iutils/ipu3/utils@ipu3@@ipu3-unpack@exe ...
> cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
> 
> when building utils/
> 
> It's true that I added it as part of the 'common_arguments' array, but
> from the documentation and a few other attempts I've made, the meson's
> 'cpp_args' field is available only inside the target argument list
> https://mesonbuild.com/Adding-arguments.html
> 

Sure - we don't want this added to C files.
How about :

diff --git a/meson.build b/meson.build
index 2fdb166cac60..1b0268079262 100644
--- a/meson.build
+++ b/meson.build
@@ -18,6 +18,8 @@ common_arguments = [

 c_arguments = common_arguments
 cpp_arguments = common_arguments

+cpp_arguments += '-std=c++11'
+
 add_project_arguments(c_arguments, language: 'c')
 add_project_arguments(cpp_arguments, language: 'cpp')



Then this is a cpp specific thing in the global space.

My main reasoning here is so that any other C++ 'projects' beyond the
shared library will then have this as well - whereas your addition adds
only to the shared-library objects.

That may not be an issue - but it could affect us when we start adding
(c++) test applications and unit-tests.

--
Kieran


>>
>>
>>> --
>>> 2.7.4
>>>
>>> _______________________________________________
>>> libcamera-devel mailing list
>>> libcamera-devel@lists.libcamera.org
>>> https://lists.libcamera.org/listinfo/libcamera-devel
>>>
>>
>> --
>> Regards
>> --
>> Kieran

Patch

diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index 0c44b5a..4457cde 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -16,4 +16,5 @@  includes = [
 libcamera = shared_library('camera',
                            libcamera_sources,
                            install : true,
-                           include_directories : includes)
+                           include_directories : includes,
+                           cpp_args : '-std=c++11')