[PATCH v8 01/15] yaml: Move yaml_parser.cpp to base

Kieran Bingham kieran.bingham at ideasonboard.com
Thu May 1 12:39:53 CEST 2025


Quoting Milan Zamazal (2025-04-30 13:14:34)
> 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 at redhat.com>

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.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%)
> 
> diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build
> index a742dfdf..94843eb9 100644
> --- a/src/libcamera/base/meson.build
> +++ b/src/libcamera/base/meson.build
> @@ -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
> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/base/yaml_parser.cpp
> similarity index 98%
> rename from src/libcamera/yaml_parser.cpp
> rename to src/libcamera/base/yaml_parser.cpp
> index a5e42461..13111faa 100644
> --- a/src/libcamera/yaml_parser.cpp
> +++ b/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)
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index 800d4080..e3f382fa 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -55,7 +55,6 @@ libcamera_internal_sources = files([
>      'v4l2_subdevice.cpp',
>      'v4l2_videodevice.cpp',
>      'vector.cpp',
> -    'yaml_parser.cpp',
>  ])
>  
>  includes = [
> @@ -83,7 +82,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)
> @@ -119,17 +117,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 = {
> @@ -189,7 +176,6 @@ libcamera_deps += [
>      libdl,
>      liblttng,
>      libudev,
> -    libyaml,
>  ]
>  
>  # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.
> -- 
> 2.49.0
>


More information about the libcamera-devel mailing list