@@ -24,10 +24,12 @@ libcamera_base_internal_sources = files([
'thread.cpp',
'timer.cpp',
'utils.cpp',
+ 'yaml_parser.cpp',
])
libdw = dependency('libdw', required : false)
libunwind = dependency('libunwind', required : false)
+libyaml = dependency('yaml-0.1', required : false)
if cc.has_header_symbol('execinfo.h', 'backtrace')
config_h.set('HAVE_BACKTRACE', 1)
@@ -41,11 +43,23 @@ if libunwind.found()
config_h.set('HAVE_UNWIND', 1)
endif
+# Fallback to a subproject if libyaml isn't found, as it's not packaged in AOSP.
+if not libyaml.found()
+ cmake = import('cmake')
+
+ libyaml_vars = cmake.subproject_options()
+ libyaml_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})
+ libyaml_vars.append_compile_args('c', '-Wno-unused-value')
+ libyaml_wrap = cmake.subproject('libyaml', options : libyaml_vars)
+ libyaml = libyaml_wrap.dependency('yaml')
+endif
+
libcamera_base_deps = [
libatomic,
libdw,
libthreads,
libunwind,
+ libyaml,
]
# Internal components must use the libcamera_base_private dependency to enable
similarity index 98%
rename from src/libcamera/yaml_parser.cpp
rename to src/libcamera/base/yaml_parser.cpp
@@ -149,13 +149,12 @@ YamlObject::Getter<bool>::get(const YamlObject &obj) const
template<typename T>
struct YamlObject::Getter<T, std::enable_if_t<
- std::is_same_v<int8_t, T> ||
- std::is_same_v<uint8_t, T> ||
- std::is_same_v<int16_t, T> ||
- std::is_same_v<uint16_t, T> ||
- std::is_same_v<int32_t, T> ||
- std::is_same_v<uint32_t, T>>>
-{
+ std::is_same_v<int8_t, T> ||
+ std::is_same_v<uint8_t, T> ||
+ std::is_same_v<int16_t, T> ||
+ std::is_same_v<uint16_t, T> ||
+ std::is_same_v<int32_t, T> ||
+ std::is_same_v<uint32_t, T>>> {
std::optional<T> get(const YamlObject &obj) const
{
if (obj.type_ != Type::Value)
@@ -53,7 +53,6 @@ libcamera_internal_sources = files([
'v4l2_pixelformat.cpp',
'v4l2_subdevice.cpp',
'v4l2_videodevice.cpp',
- 'yaml_parser.cpp',
])
includes = [
@@ -81,7 +80,6 @@ if not cc.has_function('dlopen')
libdl = cc.find_library('dl')
endif
libudev = dependency('libudev', required : get_option('udev'))
-libyaml = dependency('yaml-0.1', required : false)
# Use one of gnutls or libcrypto (provided by OpenSSL), trying gnutls first.
libcrypto = dependency('gnutls', required : false)
@@ -117,17 +115,6 @@ if libudev.found()
])
endif
-# Fallback to a subproject if libyaml isn't found, as it's not packaged in AOSP.
-if not libyaml.found()
- cmake = import('cmake')
-
- libyaml_vars = cmake.subproject_options()
- libyaml_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})
- libyaml_vars.append_compile_args('c', '-Wno-unused-value')
- libyaml_wrap = cmake.subproject('libyaml', options : libyaml_vars)
- libyaml = libyaml_wrap.dependency('yaml')
-endif
-
control_sources = []
controls_mode_files = {
@@ -187,7 +174,6 @@ libcamera_deps += [
libdl,
liblttng,
libudev,
- libyaml,
]
# We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.
Global configuration, which uses the YAML parser, will be in base. Thus YAML parser must be moved to base too. Indentation is changed in one place of the moved file to make the autoformatter and checkstyle.py happy. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- src/libcamera/base/meson.build | 14 ++++++++++++++ src/libcamera/{ => base}/yaml_parser.cpp | 13 ++++++------- src/libcamera/meson.build | 14 -------------- 3 files changed, 20 insertions(+), 21 deletions(-) rename src/libcamera/{ => base}/yaml_parser.cpp (98%)