[libcamera-devel] [PATCH] android: Split HAL to it's own shared library

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Apr 30 17:02:19 CEST 2021


The libcamera Android HAL implementation should not be an integral part
of libcamera, but a support library that utilises the libcamera public
API.

Move the implementation to it's own distinct library.

Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---

Please note that this no longer requires ChromeOS to manually symlink
into the camera_hal directory.

A modification similar to the following should be applied to the Chrome
ebuilds if this is applied:

diff --git a/media-libs/libcamera/libcamera-9999.ebuild b/media-libs/libcamera/libcamera-9999.ebuild
index 433357f1ef74..cf90e438cfb3 100644
--- a/media-libs/libcamera/libcamera-9999.ebuild
+++ b/media-libs/libcamera/libcamera-9999.ebuild
@@ -57,6 +57,4 @@ src_compile() {
 
 src_install() {
        meson_src_install
-
-       dosym ../libcamera.so "/usr/$(get_libdir)/camera_hal/libcamera.so"
 }


 src/android/meson.build   | 10 ++++++++++
 src/libcamera/meson.build | 11 -----------
 src/meson.build           |  7 +++----
 3 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/src/android/meson.build b/src/android/meson.build
index 2be20c97e118..6170448a73ce 100644
--- a/src/android/meson.build
+++ b/src/android/meson.build
@@ -3,6 +3,7 @@
 android_deps = [
     dependency('libexif', required : get_option('android')),
     dependency('libjpeg', required : get_option('android')),
+    libcamera_dep,
 ]
 
 android_enabled = true
@@ -66,3 +67,12 @@ android_camera_metadata = static_library('camera_metadata',
                                          android_camera_metadata_sources,
                                          c_args : '-Wno-shadow',
                                          include_directories : android_includes)
+
+android_hal = shared_library('android-hal',
+                             android_hal_sources,
+                             name_prefix : '',
+                             link_with : android_camera_metadata,
+                             install : true,
+                             cpp_args : libcamera_cpp_args,
+                             include_directories : android_includes,
+                             dependencies : android_deps)
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index e0a48aa23ea5..f77b80b878d8 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -129,16 +129,6 @@ libcamera_deps = [
     dependency('threads'),
 ]
 
-libcamera_link_with = []
-
-if android_enabled
-    libcamera_sources += android_hal_sources
-    includes += android_includes
-    libcamera_link_with += android_camera_metadata
-
-    libcamera_deps += android_deps
-endif
-
 # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.
 # The build_rpath is stripped at install time by meson, so we determine at
 # runtime if the library is running from an installed location by checking
@@ -147,7 +137,6 @@ endif
 libcamera = shared_library('camera',
                            libcamera_sources,
                            install : true,
-                           link_with : libcamera_link_with,
                            cpp_args : libcamera_cpp_args,
                            include_directories : includes,
                            objects : libcamera_objects,
diff --git a/src/meson.build b/src/meson.build
index 64d22b9ce5b6..9dc32751bbb1 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -31,11 +31,10 @@ endif
 libcamera_cpp_args = []
 libcamera_objects = []
 
-# The 'android' subdir must be processed first, and the build targets
-# are included directly into the libcamera library when this is enabled.
-subdir('android')
-
+# libcamera must be built first as a dependency to the other components.
 subdir('libcamera')
+
+subdir('android')
 subdir('ipa')
 
 subdir('lc-compliance')
-- 
2.25.1



More information about the libcamera-devel mailing list