From 86eaa6c5e10dde632f17b900ea0e3aa4d61cb3b3 Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Tue, 15 Jun 2021 15:23:09 +0100 Subject: 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 Reviewed-by: Hirokazu Honda Reviewed-by: Laurent Pinchart Signed-off-by: Kieran Bingham --- Documentation/meson.build | 2 ++ include/libcamera/base/meson.build | 9 +++++++++ include/libcamera/meson.build | 1 + src/libcamera/base/meson.build | 26 ++++++++++++++++++++++++++ src/libcamera/meson.build | 4 ++++ 5 files changed, 42 insertions(+) create mode 100644 include/libcamera/base/meson.build create mode 100644 src/libcamera/base/meson.build diff --git a/Documentation/meson.build b/Documentation/meson.build index 9ecf4dfc..c4bd3c7f 100644 --- a/Documentation/meson.build +++ b/Documentation/meson.build @@ -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, diff --git a/include/libcamera/base/meson.build b/include/libcamera/base/meson.build new file mode 100644 index 00000000..0a7a57b8 --- /dev/null +++ b/include/libcamera/base/meson.build @@ -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) diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build index 086c958b..4ac864b7 100644 --- a/include/libcamera/meson.build +++ b/include/libcamera/meson.build @@ -23,6 +23,7 @@ libcamera_public_headers = files([ include_dir = libcamera_include_dir / 'libcamera' +subdir('base') subdir('internal') subdir('ipa') diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build new file mode 100644 index 00000000..e8384602 --- /dev/null +++ b/src/libcamera/base/meson.build @@ -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') diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build index 693008d5..655c0c16 100644 --- a/src/libcamera/meson.build +++ b/src/libcamera/meson.build @@ -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') -- cgit v1.2.1