[libcamera-devel] [PATCH] meson: Compile libyaml as a subproject if not available on the system
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue May 10 00:25:58 CEST 2022
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>
---
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
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list