[libcamera-devel,v2] subprojects: Add libyuv and built if -Dandroid=enabled
diff mbox series

Message ID 20210126082628.1902267-1-hiroh@chromium.org
State Superseded
Headers show
Series
  • [libcamera-devel,v2] subprojects: Add libyuv and built if -Dandroid=enabled
Related show

Commit Message

Hirokazu Honda Jan. 26, 2021, 8:26 a.m. UTC
Android HAL adaptation layer may need image processing, for
example, scaling and format conversion. Libyuv is a general image
processing. This adds libyuv to subprojects, so that it is folked
locally and can be used with Android HAL implementation code.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
---
 README.rst              |  2 +-
 meson.build             |  2 +-
 src/android/meson.build | 18 ++++++++++++++++++
 subprojects/.gitignore  |  1 +
 subprojects/libyuv.wrap |  4 ++++
 5 files changed, 25 insertions(+), 2 deletions(-)
 create mode 100644 subprojects/.gitignore
 create mode 100644 subprojects/libyuv.wrap

--
2.30.0.280.ga3ce27912f-goog

Comments

Laurent Pinchart Jan. 26, 2021, 8:31 a.m. UTC | #1
Hi Hiro,

Thank you for the patch.

On Tue, Jan 26, 2021 at 08:26:28AM +0000, Hirokazu Honda wrote:
> Android HAL adaptation layer may need image processing, for
> example, scaling and format conversion. Libyuv is a general image
> processing. This adds libyuv to subprojects, so that it is folked

s/folked/forked/ ?

> locally and can be used with Android HAL implementation code.
> 
> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> ---
>  README.rst              |  2 +-
>  meson.build             |  2 +-
>  src/android/meson.build | 18 ++++++++++++++++++
>  subprojects/.gitignore  |  1 +
>  subprojects/libyuv.wrap |  4 ++++
>  5 files changed, 25 insertions(+), 2 deletions(-)
>  create mode 100644 subprojects/.gitignore
>  create mode 100644 subprojects/libyuv.wrap
> 
> diff --git a/README.rst b/README.rst
> index 251291b7..08bfd5ad 100644
> --- a/README.rst
> +++ b/README.rst
> @@ -47,7 +47,7 @@ A C++ toolchain: [required]
>  	Either {g++, clang}
> 
>  Meson Build system: [required]
> -        meson (>= 0.51) ninja-build pkg-config
> +        meson (>= 0.55) ninja-build pkg-config
> 
>          If your distribution doesn't provide a recent enough version of meson,
>          you can install or upgrade it using pip3.
> diff --git a/meson.build b/meson.build
> index c47eb420..d9b63278 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: CC0-1.0
> 
>  project('libcamera', 'c', 'cpp',
> -    meson_version : '>= 0.51',
> +    meson_version : '>= 0.55',
>      version : '0.0.0',
>      default_options : [
>          'werror=true',
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 3d4d3be4..e1533d7c 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -14,6 +14,24 @@ foreach dep : android_deps
>      endif
>  endforeach
> 
> +if android_enabled
> +    cmake = import('cmake')
> +
> +    libyuv_vars = cmake.subproject_options()
> +    libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})
> +    libyuv_vars.set_override_option('cpp_std', 'c++17')
> +    libyuv_vars.append_compile_args('cpp',
> +         '-Wno-sign-compare',
> +         '-Wno-unused-variable',
> +         '-Wno-unused-parameter')
> +    libyuv_vars.append_link_args('-ljpeg')
> +    libyuv = cmake.subproject('libyuv', options : libyuv_vars)
> +    libyuv_dep = libyuv.dependency('yuv')
> +
> +    android_deps += [ libyuv_dep, ]
> +endif
> +
> +

One blank line is enough.

I'll address these small issues when applying, there's no need to send a
new version.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

I will apply the patch along with the series that uses libyuv in the
Android HAL (which I'm going to review now).

>  android_hal_sources = files([
>      'camera3_hal.cpp',
>      'camera_hal_manager.cpp',
> diff --git a/subprojects/.gitignore b/subprojects/.gitignore
> new file mode 100644
> index 00000000..410b8bd6
> --- /dev/null
> +++ b/subprojects/.gitignore
> @@ -0,0 +1 @@
> +/libyuv
> \ No newline at end of file
> diff --git a/subprojects/libyuv.wrap b/subprojects/libyuv.wrap
> new file mode 100644
> index 00000000..8ba51fa0
> --- /dev/null
> +++ b/subprojects/libyuv.wrap
> @@ -0,0 +1,4 @@
> +[wrap-git]
> +directory = libyuv
> +url = https://chromium.googlesource.com/libyuv/libyuv.git
> +revision = 93b1b332cd60b56ab90aea14182755e379c28a80

Patch
diff mbox series

diff --git a/README.rst b/README.rst
index 251291b7..08bfd5ad 100644
--- a/README.rst
+++ b/README.rst
@@ -47,7 +47,7 @@  A C++ toolchain: [required]
 	Either {g++, clang}

 Meson Build system: [required]
-        meson (>= 0.51) ninja-build pkg-config
+        meson (>= 0.55) ninja-build pkg-config

         If your distribution doesn't provide a recent enough version of meson,
         you can install or upgrade it using pip3.
diff --git a/meson.build b/meson.build
index c47eb420..d9b63278 100644
--- a/meson.build
+++ b/meson.build
@@ -1,7 +1,7 @@ 
 # SPDX-License-Identifier: CC0-1.0

 project('libcamera', 'c', 'cpp',
-    meson_version : '>= 0.51',
+    meson_version : '>= 0.55',
     version : '0.0.0',
     default_options : [
         'werror=true',
diff --git a/src/android/meson.build b/src/android/meson.build
index 3d4d3be4..e1533d7c 100644
--- a/src/android/meson.build
+++ b/src/android/meson.build
@@ -14,6 +14,24 @@  foreach dep : android_deps
     endif
 endforeach

+if android_enabled
+    cmake = import('cmake')
+
+    libyuv_vars = cmake.subproject_options()
+    libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})
+    libyuv_vars.set_override_option('cpp_std', 'c++17')
+    libyuv_vars.append_compile_args('cpp',
+         '-Wno-sign-compare',
+         '-Wno-unused-variable',
+         '-Wno-unused-parameter')
+    libyuv_vars.append_link_args('-ljpeg')
+    libyuv = cmake.subproject('libyuv', options : libyuv_vars)
+    libyuv_dep = libyuv.dependency('yuv')
+
+    android_deps += [ libyuv_dep, ]
+endif
+
+
 android_hal_sources = files([
     'camera3_hal.cpp',
     'camera_hal_manager.cpp',
diff --git a/subprojects/.gitignore b/subprojects/.gitignore
new file mode 100644
index 00000000..410b8bd6
--- /dev/null
+++ b/subprojects/.gitignore
@@ -0,0 +1 @@ 
+/libyuv
\ No newline at end of file
diff --git a/subprojects/libyuv.wrap b/subprojects/libyuv.wrap
new file mode 100644
index 00000000..8ba51fa0
--- /dev/null
+++ b/subprojects/libyuv.wrap
@@ -0,0 +1,4 @@ 
+[wrap-git]
+directory = libyuv
+url = https://chromium.googlesource.com/libyuv/libyuv.git
+revision = 93b1b332cd60b56ab90aea14182755e379c28a80