libcamera/base: Introduce new base library

The libcamera-base.so will feature internal support functionality
that is utilised by libcamera, and can be shared in other places.

This new library provides a layer beneath libcamera which provides
common abstractions to internal objects.

A pkg-config file is generated and named libcamera-base.pc which allows
components such as external IPA modules to link directly to this library
if they need. Normal applications will reference this library through
the Requires: statement provided by the libcamera.pc package
configuration, and linkage will be handled automatically through the
pkg-config mechanisms.

No code is moved to this library yet, this patch only introduces the
framework, construction and linkage.

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Kieran Bingham 2021-06-15 15:23:09 +01:00
parent b96ab21cdb
commit 86eaa6c5e1
5 changed files with 42 additions and 0 deletions

View file

@ -22,6 +22,8 @@ if doxygen.found() and dot.found()
custom_target('doxygen',
input : [
doxyfile,
libcamera_base_headers,
libcamera_base_sources,
libcamera_internal_headers,
libcamera_ipa_headers,
libcamera_ipa_interfaces,

View file

@ -0,0 +1,9 @@
# SPDX-License-Identifier: CC0-1.0
libcamera_base_include_dir = libcamera_include_dir / 'base'
libcamera_base_headers = files([
])
install_headers(libcamera_base_headers,
subdir: libcamera_base_include_dir)

View file

@ -23,6 +23,7 @@ libcamera_public_headers = files([
include_dir = libcamera_include_dir / 'libcamera'
subdir('base')
subdir('internal')
subdir('ipa')

View file

@ -0,0 +1,26 @@
# SPDX-License-Identifier: CC0-1.0
libcamera_base_sources = files([
])
libcamera_base_deps = [
]
libcamera_base_lib = shared_library('libcamera-base',
[libcamera_base_sources, libcamera_base_headers],
name_prefix : '',
install : true,
include_directories : libcamera_includes,
dependencies : libcamera_base_deps)
libcamera_base = declare_dependency(sources : [
libcamera_base_headers,
],
include_directories : libcamera_includes,
link_with : libcamera_base_lib)
pkg_mod = import('pkgconfig')
pkg_mod.generate(libcamera_base_lib,
version : '1.0',
description : 'Camera support base utility library',
subdirs : 'libcamera')

View file

@ -67,6 +67,7 @@ includes = [
libcamera_includes,
]
subdir('base')
subdir('ipa')
subdir('pipeline')
subdir('proxy')
@ -124,6 +125,7 @@ endif
libcamera_deps = [
libatomic,
libcamera_base,
libdl,
libgnutls,
liblttng,
@ -156,10 +158,12 @@ libcamera_dep = declare_dependency(sources : [
libcamera_generated_ipa_headers,
],
include_directories : libcamera_includes,
dependencies: libcamera_base,
link_with : libcamera)
pkg_mod = import('pkgconfig')
pkg_mod.generate(libcamera,
libraries : libcamera_base_lib,
version : '1.0',
description : 'Complex Camera Support Library',
subdirs : 'libcamera')