From 63c46875376031141e6e9bda694dcb5d59fb8d4b Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Fri, 30 Apr 2021 14:18:52 +0100 Subject: android: Split HAL to its own shared library 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 Reviewed-by: Hirokazu Honda Reviewed-by: Umang Jain Reviewed-by: Paul Elder Signed-off-by: Kieran Bingham --- 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 13ec8f0a..c2bda708 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 6270fb20..feda3e09 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 7e19a177..d9b5bfae 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 57396605..e0ea9c35 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') -- cgit v1.2.1