[libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional
Jacopo Mondi
jacopo at jmondi.org
Thu Sep 24 12:27:35 CEST 2020
Hi Kieran
On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:
> By default the Raspberry Pi pipeline handler is enabled when
> configuring the build.
>
> The Raspberry Pi IPA currently depends upon 'boost' which is a large
> dependency to bring in.
>
> Make the IPA compilation dependant upon the availabilty of the boost
> library, but display a warning when the pipeline is enabled and the
> dependency is not found.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>
> This is mostly posted to promote discussion on this topic.
>
> The requirement for boost is really heavy (+100MB package for a few
> headers), and is only used for the RPi IPA.
>
> This patch automatically disables the IPA while printing a message if it
> was selected if the boost library is not available.
>
> Doing all of this in a clean way seems quite difficult because of the
> way the meson options works ... so ...
>
> 3 ... 2 ... 1 ....
>
> Discuss...
I really like the idea of depending on boost only if RPi is enabled.
>
>
> src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------
> 1 file changed, 23 insertions(+), 17 deletions(-)
>
> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> index 9445cd097df5..b284378c9621 100644
> --- a/src/ipa/raspberrypi/meson.build
> +++ b/src/ipa/raspberrypi/meson.build
> @@ -2,9 +2,11 @@
>
> ipa_name = 'ipa_rpi'
>
> +boost = dependency('boost', required : false)
> +
> rpi_ipa_deps = [
> libcamera_dep,
> - dependency('boost'),
> + boost,
> libatomic,
> ]
>
> @@ -41,22 +43,26 @@ rpi_ipa_sources = files([
> 'controller/pwl.cpp',
> ])
>
> -mod = shared_module(ipa_name,
> - rpi_ipa_sources,
> - name_prefix : '',
> - include_directories : rpi_ipa_includes,
> - dependencies : rpi_ipa_deps,
> - link_with : libipa,
> - install : true,
> - install_dir : ipa_install_dir)
> -
> -if ipa_sign_module
> - custom_target(ipa_name + '.so.sign',
> - input : mod,
> - output : ipa_name + '.so.sign',
> - command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],
> - install : false,
> - build_by_default : true)
> +if boost.found()
> + mod = shared_module(ipa_name,
> + rpi_ipa_sources,
> + name_prefix : '',
> + include_directories : rpi_ipa_includes,
> + dependencies : rpi_ipa_deps,
> + link_with : libipa,
> + install : true,
> + install_dir : ipa_install_dir)
> +
> + if ipa_sign_module
> + custom_target(ipa_name + '.so.sign',
> + input : mod,
> + output : ipa_name + '.so.sign',
> + command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],
> + install : false,
> + build_by_default : true)
> + endif
> +else
> + warning('The Raspberry Pi pipeline is enabled, but dependency "boost" was not found')
I know nothing about meson, but can we have a contruct that
if !boost.found
error "..."
and the build fails ?
> endif
>
> subdir('data')
> --
> 2.25.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
More information about the libcamera-devel
mailing list