meson: Use libyaml wrap file from wrapdb

Use the libyaml wrap file from the meson wrapdb instead of
creating the wrap file manually and using the cmake module.
This provides better integration with meson, such as the
`force_fallback_for` built-in option.

This is also needed because the upstream CMakeLists.txt is
out of date, failing with a sufficiently new cmake version:

    CMake Error at CMakeLists.txt:2 (cmake_minimum_required):
    Compatibility with CMake < 3.5 has been removed from CMake.

The above is nonetheless addressed by https://github.com/yaml/libyaml/pull/314,
but the project seems a bit inactive at the moment.

The wrap file was added using `meson wrap install libyaml`,
and it can be updated using `meson wrap update libyaml`.

`default_library=static` is used to match the behaviour of the
previously used cmake build. `werror=false` needs to be set
because libyaml does not compile without warnings, and that
would abort the build process otherwise.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2025-01-22 13:09:11 +01:00
parent 5f4d2ac935
commit a29c53f6a6
2 changed files with 15 additions and 17 deletions

View file

@ -84,7 +84,10 @@ if not cc.has_function('dlopen')
libdl = cc.find_library('dl') libdl = cc.find_library('dl')
endif endif
libudev = dependency('libudev', required : get_option('udev')) libudev = dependency('libudev', required : get_option('udev'))
libyaml = dependency('yaml-0.1', required : false) libyaml = dependency('yaml-0.1', default_options : [
'default_library=static',
'werror=false',
])
# Use one of gnutls or libcrypto (provided by OpenSSL), trying gnutls first. # Use one of gnutls or libcrypto (provided by OpenSSL), trying gnutls first.
libcrypto = dependency('gnutls', required : false) libcrypto = dependency('gnutls', required : false)
@ -120,17 +123,6 @@ if libudev.found()
]) ])
endif 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 = [] control_sources = []
controls_mode_files = { controls_mode_files = {

View file

@ -1,7 +1,13 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
[wrap-git] [wrap-file]
directory = libyaml directory = yaml-0.2.5
url = https://github.com/yaml/libyaml source_url = https://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz
# tags/0.2.5 source_filename = yaml-0.2.5.tar.gz
revision = 2c891fc7a770e8ba2fec34fc6b545c672beb37e6 source_hash = c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4
patch_filename = libyaml_0.2.5-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/libyaml_0.2.5-1/get_patch
patch_hash = bf2e9b922be00b6b00c5fce29d9fb8dc83f0431c77239f3b73e8b254d3f3f5b5
[provide]
yaml-0.1 = yaml_dep