[libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Sep 24 12:02:01 CEST 2020


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...


 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')
 endif
 
 subdir('data')
-- 
2.25.1



More information about the libcamera-devel mailing list