[libcamera-devel] [PATCH v1 4/6] apps: Move libevent dependency to src/apps/meson.build

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Oct 20 12:41:38 CEST 2022


Quoting Laurent Pinchart (2022-10-20 11:09:45)
> Hi Kieran,
> 
> On Thu, Oct 20, 2022 at 10:06:32AM +0100, Kieran Bingham wrote:
> > Quoting Paul Elder via libcamera-devel (2022-10-20 07:54:45)
> > > On Thu, Oct 20, 2022 at 02:15:35AM +0300, Laurent Pinchart via libcamera-devel wrote:
> > > > libtiff is a shared dependency between cam and lc-compliance, move it to
> > > 
> > > s/libtiff/libevent/
> > > 
> > > > src/apps/. The shared dependency will be used to condition compilation
> > > > of source files in an upcoming application static library.
> > > > 
> > > > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > > > ---
> > > >  src/apps/cam/meson.build           | 4 +---
> > > >  src/apps/lc-compliance/meson.build | 3 +--
> > > >  src/apps/meson.build               | 8 ++++++++
> > > >  3 files changed, 10 insertions(+), 5 deletions(-)
> > > > 
> > > > diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build
> > > > index 06dbea0645b7..4b6099ddab63 100644
> > > > --- a/src/apps/cam/meson.build
> > > > +++ b/src/apps/cam/meson.build
> > > > @@ -1,8 +1,6 @@
> > > >  # SPDX-License-Identifier: CC0-1.0
> > > >  
> > > > -libevent = dependency('libevent_pthreads', required : get_option('cam'))
> > > > -
> > > > -if not libevent.found()
> > > > +if opt_cam.disabled() or not libevent.found()
> > > >      cam_enabled = false
> > > >      subdir_done()
> > > >  endif
> > > > diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build
> > > > index 8b57474be2b2..05d622be0a40 100644
> > > > --- a/src/apps/lc-compliance/meson.build
> > > > +++ b/src/apps/lc-compliance/meson.build
> > > > @@ -1,10 +1,9 @@
> > > >  # SPDX-License-Identifier: CC0-1.0
> > > >  
> > > > -libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > > >  libgtest = dependency('gtest', required : get_option('lc-compliance'),
> > > >                        fallback : ['gtest', 'gtest_dep'])
> > > >  
> > > > -if not (libevent.found() and libgtest.found())
> > > > +if opt_lc_compliance.disabled() or not libevent.found() or not libgtest.found()
> > > >      lc_compliance_enabled = false
> > > >      subdir_done()
> > > >  endif
> > > > diff --git a/src/apps/meson.build b/src/apps/meson.build
> > > > index 9e4388bd7881..159deb0b7fc2 100644
> > > > --- a/src/apps/meson.build
> > > > +++ b/src/apps/meson.build
> > > > @@ -1,5 +1,13 @@
> > > >  # SPDX-License-Identifier: CC0-1.0
> > > >  
> > > > +opt_cam = get_option('cam')
> > > > +opt_lc_compliance = get_option('lc-compliance')
> > > > +
> > > > +libevent = dependency('libevent_pthreads', required : opt_cam)
> > > > +if not libevent.found()
> > > > +    libevent = dependency('libevent_pthreads', required : opt_lc_compliance)
> > > > +endif
> > 
> > This ... is an odd way to express this. I expect we can't do sufficient
> > boolean operations with opt_cam and opt_lc_compliance?
> 
> Unfortunately not, they're feature options, so tri-state. One
> alternative is
> 
> if opt_cam.disabled() and opt_lc_compliance.disabled()
>     libevent = disabler()
> else
>     libevent = dependency('libevent_pthreads', required : opt_cam.enabled() or opt_lc_compliance.enabled())
> endif
> 
> but I don't think that's better.
> 
> > > > +libevent = dependency('libevent_pthreads', required : opt_cam)
> > > > +if not libevent.found()
> > > > +    libevent = dependency('libevent_pthreads', required : opt_lc_compliance)
> > > > +endif
> 
> > It deserves a comment above to say why we are searching for the
> > dependency twice. Though I expect anyone trying to optimise it to a
> > single line would quickly hit whatever has caused you to break it out to
> > two.
> 
> Would this work for you ?
> 
> # libevent is needed by cam and lc-compliance. As they are both feature options,
> # they can't be combined with simple boolean logic.

That' solves my concern thanks. It's just an odd code pattern, that
doesn't read well, so the comment helps. Thanks.



> 
> > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > 
> > > > +
> > > >  subdir('lc-compliance')
> > > >  
> > > >  subdir('cam')
> 
> -- 
> Regards,
> 
> Laurent Pinchart


More information about the libcamera-devel mailing list