[libcamera-devel] [PATCH] meson: Compile libyaml as a subproject if not available on the system

Umang Jain umang.jain at ideasonboard.com
Wed May 18 12:48:33 CEST 2022


Hi Laurent,

On 5/10/22 00:25, Laurent Pinchart via libcamera-devel wrote:
> AOSP doesn't ship libyaml, making it more difficult to compile libcamera
> for Android. Use a meson wrap to compile libyaml as a subproject if the
> dependency is not found.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>


Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

> ---
>   src/libcamera/meson.build | 13 ++++++++++++-
>   subprojects/.gitignore    |  3 ++-
>   subprojects/libyaml.wrap  |  5 +++++
>   3 files changed, 19 insertions(+), 2 deletions(-)
>   create mode 100644 subprojects/libyaml.wrap
>
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index f8e18e035575..d1a6c5c88159 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -67,7 +67,7 @@ subdir('proxy')
>   libdl = cc.find_library('dl')
>   libgnutls = cc.find_library('gnutls', required : true)
>   libudev = dependency('libudev', required : false)
> -libyaml = dependency('yaml-0.1', required : true)
> +libyaml = dependency('yaml-0.1', required : false)
>   
>   if libgnutls.found()
>       config_h.set('HAVE_GNUTLS', 1)
> @@ -88,6 +88,17 @@ 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 = []
>   
>   foreach source : control_source_files
> diff --git a/subprojects/.gitignore b/subprojects/.gitignore
> index 391fde2ce1e0..f207720b271a 100644
> --- a/subprojects/.gitignore
> +++ b/subprojects/.gitignore
> @@ -1,3 +1,4 @@
>   /googletest-release*
> +/libyaml
>   /libyuv
> -/packagecache
> \ No newline at end of file
> +/packagecache
> diff --git a/subprojects/libyaml.wrap b/subprojects/libyaml.wrap
> new file mode 100644
> index 000000000000..3d7d0a328be4
> --- /dev/null
> +++ b/subprojects/libyaml.wrap
> @@ -0,0 +1,5 @@
> +[wrap-git]
> +directory = libyaml
> +url = https://github.com/yaml/libyaml
> +# tags/0.2.5
> +revision = 2c891fc7a770e8ba2fec34fc6b545c672beb37e6
>
> base-commit: 6d990f102fd829feb05e37e5f242a796fcada1b5


More information about the libcamera-devel mailing list