summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@ideasonboard.com>2021-04-30 14:18:52 +0100
committerKieran Bingham <kieran.bingham@ideasonboard.com>2021-06-25 16:09:46 +0100
commit63c46875376031141e6e9bda694dcb5d59fb8d4b (patch)
tree72d2a298b3f90620d63db0e36892e949acebe752
parent53a0d80af0f9983d6bc0d54b0e85403a08721488 (diff)
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 <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--src/android/cros/meson.build2
-rw-r--r--src/android/meson.build16
-rw-r--r--src/libcamera/meson.build13
-rw-r--r--src/meson.build8
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')