[libcamera-devel] [PATCH 01/16] android: Split HAL to its own shared library

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Fri Jun 25 04:32:43 CEST 2021


Hi Kieran,

On Fri, Jun 25, 2021 at 02:35:24AM +0100, Kieran Bingham wrote:
> 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 its own distinct library.
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
> Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/android/cros/meson.build |  2 +-
>  src/android/meson.build      | 16 +++++++++++++++-
>  src/libcamera/meson.build    | 13 -------------
>  src/meson.build              |  8 ++------
>  4 files changed, 18 insertions(+), 21 deletions(-)
> 
> diff --git a/src/android/cros/meson.build b/src/android/cros/meson.build
> index 13ec8f0aecc7..c2bda70838e2 100644
> --- a/src/android/cros/meson.build
> +++ b/src/android/cros/meson.build
> @@ -15,4 +15,4 @@ cros_hal_info = static_library('cros_hal_info',
>                                 include_directories : [android_includes,
>                                                        libcamera_includes])
>  
> -libcamera_objects += cros_hal_info.extract_objects('camera3_hal.cpp')
> +android_objects += cros_hal_info.extract_objects('camera3_hal.cpp')
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 6270fb201338..feda3e0998bd 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -4,6 +4,7 @@ android_deps = [
>      dependency('libexif', required : get_option('android')),
>      dependency('libjpeg', required : get_option('android')),
>      dependency('yaml-0.1', required : get_option('android')),
> +    libcamera_dep,
>  ]
>  
>  android_enabled = true
> @@ -36,8 +37,11 @@ endif
>  
>  android_deps += [libyuv_dep]
>  
> +android_cpp_args = []
> +android_objects = []
> +
>  if get_option('android_platform') == 'cros'
> -   libcamera_cpp_args += [ '-DOS_CHROMEOS']
> +    android_cpp_args += ['-DOS_CHROMEOS']
>  endif
>  
>  subdir('cros')
> @@ -69,3 +73,13 @@ android_camera_metadata = static_library('camera_metadata',
>                                           android_camera_metadata_sources,
>                                           c_args : '-Wno-shadow',
>                                           include_directories : android_includes)
> +
> +libcamera_hal = shared_library('libcamera-hal',
> +                               android_hal_sources,
> +                               name_prefix : '',
> +                               link_with : android_camera_metadata,
> +                               install : true,
> +                               cpp_args : android_cpp_args,
> +                               objects : android_objects,
> +                               include_directories : android_includes,
> +                               dependencies : android_deps)
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index 7e19a1774a59..d9b5bfae69fd 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -130,16 +130,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
> @@ -148,10 +138,7 @@ 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,
>                             build_rpath : '/',
>                             dependencies : libcamera_deps)
>  
> diff --git a/src/meson.build b/src/meson.build
> index 573966055aa2..e0ea9c3570af 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -25,14 +25,10 @@ else
>      ipa_sign_module = false
>  endif
>  
> -libcamera_cpp_args = []
> -libcamera_objects = []
> +# libcamera must be built first as a dependency to the other components.
> +subdir('libcamera')
>  
> -# The 'android' subdir must be processed first, and the build targets
> -# are included directly into the libcamera library when this is enabled.
>  subdir('android')
> -
> -subdir('libcamera')
>  subdir('ipa')
>  
>  subdir('lc-compliance')
> -- 
> 2.30.2
> 


More information about the libcamera-devel mailing list