[libcamera-devel,v4,1/2] subprojects: Add libyuv and built if -Dandroid=enabled
diff mbox series

Message ID 20210204012731.1942112-2-hiroh@chromium.org
State Accepted
Headers show
Series
  • Introduce libyuv to subprojects
Related show

Commit Message

Hirokazu Honda Feb. 4, 2021, 1:27 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 forked
locally and can be used with Android HAL implementation code.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 README.rst              |  2 +-
 meson.build             |  2 +-
 src/android/meson.build | 17 +++++++++++++++++
 subprojects/.gitignore  |  1 +
 subprojects/libyuv.wrap |  4 ++++
 5 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 subprojects/.gitignore
 create mode 100644 subprojects/libyuv.wrap

--
2.30.0.365.g02bc693789-goog

Comments

Niklas Söderlund Feb. 4, 2021, 2:03 p.m. UTC | #1
Hi Honda-san,

Thanks for your work.

On 2021-02-04 01:27:30 +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 forked
> locally and can be used with Android HAL implementation code.
> 
> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  README.rst              |  2 +-
>  meson.build             |  2 +-
>  src/android/meson.build | 17 +++++++++++++++++
>  subprojects/.gitignore  |  1 +
>  subprojects/libyuv.wrap |  4 ++++
>  5 files changed, 24 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 743cb1d2..be77191d 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: CC0-1.0
> 
>  project('libcamera', 'c', 'cpp',
> -    meson_version : '>= 0.53',
> +    meson_version : '>= 0.55',

I know this patch is already merged, but bumping meson version over 
v0.54.3 breaks my CrOS build environment for Soraka based on R89 (and 
I'm told R90 also ships with meson v0.54.3). I understand the need to 
move to meson v0.55, I'm just curious if you know of a build environment 
I can switch to.

>      version : '0.0.0',
>      default_options : [
>          'werror=true',
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 3d4d3be4..7619517a 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -14,6 +14,23 @@ 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
> --
> 2.30.0.365.g02bc693789-goog
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Hirokazu Honda Feb. 4, 2021, 11:03 p.m. UTC | #2
Hi Niklas,

On Thu, Feb 4, 2021 at 11:03 PM Niklas Söderlund
<niklas.soderlund@ragnatech.se> wrote:
>
> Hi Honda-san,
>
> Thanks for your work.
>
> On 2021-02-04 01:27:30 +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 forked
> > locally and can be used with Android HAL implementation code.
> >
> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > ---
> >  README.rst              |  2 +-
> >  meson.build             |  2 +-
> >  src/android/meson.build | 17 +++++++++++++++++
> >  subprojects/.gitignore  |  1 +
> >  subprojects/libyuv.wrap |  4 ++++
> >  5 files changed, 24 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 743cb1d2..be77191d 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1,7 +1,7 @@
> >  # SPDX-License-Identifier: CC0-1.0
> >
> >  project('libcamera', 'c', 'cpp',
> > -    meson_version : '>= 0.53',
> > +    meson_version : '>= 0.55',
>
> I know this patch is already merged, but bumping meson version over
> v0.54.3 breaks my CrOS build environment for Soraka based on R89 (and
> I'm told R90 also ships with meson v0.54.3). I understand the need to
> move to meson v0.55, I'm just curious if you know of a build environment
> I can switch to.
>

I faced the same issue.
The meson command in ChromeOS chroot is the same as
portage-stable/dev-util/meson. [1]
It is 0.55.3. It thus shouldn't matter.
The meson command is not upreved unless `./update_chroot` doesn't run.
The command is hooked to run by some command (e.g. setup_board).
Of course, you can run manually  `./update_chroot`.
Hope it is helpful for you.

[1] https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/third_party/portage-stable/dev-util/meson/

Thanks,
-Hiro

> >      version : '0.0.0',
> >      default_options : [
> >          'werror=true',
> > diff --git a/src/android/meson.build b/src/android/meson.build
> > index 3d4d3be4..7619517a 100644
> > --- a/src/android/meson.build
> > +++ b/src/android/meson.build
> > @@ -14,6 +14,23 @@ 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
> > --
> > 2.30.0.365.g02bc693789-goog
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel@lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
>
> --
> Regards,
> Niklas Söderlund
Niklas Söderlund Feb. 4, 2021, 11:46 p.m. UTC | #3
Hi Honda-san,

Thanks for your reply.

On 2021-02-05 08:03:19 +0900, Hirokazu Honda wrote:
> Hi Niklas,
> 
> On Thu, Feb 4, 2021 at 11:03 PM Niklas Söderlund
> <niklas.soderlund@ragnatech.se> wrote:
> >
> > Hi Honda-san,
> >
> > Thanks for your work.
> >
> > On 2021-02-04 01:27:30 +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 forked
> > > locally and can be used with Android HAL implementation code.
> > >
> > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > ---
> > >  README.rst              |  2 +-
> > >  meson.build             |  2 +-
> > >  src/android/meson.build | 17 +++++++++++++++++
> > >  subprojects/.gitignore  |  1 +
> > >  subprojects/libyuv.wrap |  4 ++++
> > >  5 files changed, 24 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 743cb1d2..be77191d 100644
> > > --- a/meson.build
> > > +++ b/meson.build
> > > @@ -1,7 +1,7 @@
> > >  # SPDX-License-Identifier: CC0-1.0
> > >
> > >  project('libcamera', 'c', 'cpp',
> > > -    meson_version : '>= 0.53',
> > > +    meson_version : '>= 0.55',
> >
> > I know this patch is already merged, but bumping meson version over
> > v0.54.3 breaks my CrOS build environment for Soraka based on R89 (and
> > I'm told R90 also ships with meson v0.54.3). I understand the need to
> > move to meson v0.55, I'm just curious if you know of a build environment
> > I can switch to.
> >
> 
> I faced the same issue.
> The meson command in ChromeOS chroot is the same as
> portage-stable/dev-util/meson. [1]
> It is 0.55.3. It thus shouldn't matter.
> The meson command is not upreved unless `./update_chroot` doesn't run.
> The command is hooked to run by some command (e.g. setup_board).
> Of course, you can run manually  `./update_chroot`.
> Hope it is helpful for you.

Thanks for this suggestion, I tried to run update_chroot and it update 
some components of my chroot (gcc and gdb) but not meson. Unfortunately 
I don't have the log from the first run as I restarted the chroot to 
check if that would help. Here is the output if I try in my now 
up-to-date chroot.

  (cr) ((5e00a24744cba80c...)) neg@neg-cros ~/trunk/src/scripts $ ./update_chroot 
  00:37:38 INFO    : Updating chroot
  00:37:38 INFO    : Clearing shadow utils lockfiles under /
  00:37:38 INFO    : Updating cross-compilers
  00:37:38: INFO: Determining required toolchain updates...
  00:37:39: INFO: Nothing to update!
  00:37:39 INFO    : Bootstrapping depot_tools
  00:37:57 INFO    : Rebuilding Portage cache
  00:37:59 INFO    : Updating the SDK
  
  These are the packages that would be merged, in order:
  
  Calculating dependencies... done!
  
  Total: 0 packages, Size of downloads: 0 KiB
  
  Nothing to merge; quitting.
  
  
  These are the packages that would be merged, in order:
  
  Calculating dependencies... done!
  
  Total: 0 packages, Size of downloads: 0 KiB
  
  Nothing to merge; quitting.
  
  Scanning Configuration files...
  Exiting: Nothing left to do; exiting. :)
  00:38:30 INFO    : Running 'eclean -d packages' to clean up stale binpkgs
   * Building file list for packages cleaning...
   * Your packages directory was already clean.
  00:38:31 INFO    : Elapsed time (update_chroot): 0m54s
  (cr) ((5e00a24744cba80c...)) neg@neg-cros ~/trunk/src/scripts $ meson --version
  0.54.2

Are there some other trick I can use to update meson in the chroot?

> 
> [1] https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/third_party/portage-stable/dev-util/meson/
> 
> Thanks,
> -Hiro
> 
> > >      version : '0.0.0',
> > >      default_options : [
> > >          'werror=true',
> > > diff --git a/src/android/meson.build b/src/android/meson.build
> > > index 3d4d3be4..7619517a 100644
> > > --- a/src/android/meson.build
> > > +++ b/src/android/meson.build
> > > @@ -14,6 +14,23 @@ 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
> > > --
> > > 2.30.0.365.g02bc693789-goog
> > > _______________________________________________
> > > libcamera-devel mailing list
> > > libcamera-devel@lists.libcamera.org
> > > https://lists.libcamera.org/listinfo/libcamera-devel
> >
> > --
> > Regards,
> > Niklas Söderlund
Hirokazu Honda Feb. 5, 2021, 12:17 a.m. UTC | #4
On Fri, Feb 5, 2021 at 8:46 AM Niklas Söderlund
<niklas.soderlund@ragnatech.se> wrote:
>
> Hi Honda-san,
>
> Thanks for your reply.
>
> On 2021-02-05 08:03:19 +0900, Hirokazu Honda wrote:
> > Hi Niklas,
> >
> > On Thu, Feb 4, 2021 at 11:03 PM Niklas Söderlund
> > <niklas.soderlund@ragnatech.se> wrote:
> > >
> > > Hi Honda-san,
> > >
> > > Thanks for your work.
> > >
> > > On 2021-02-04 01:27:30 +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 forked
> > > > locally and can be used with Android HAL implementation code.
> > > >
> > > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > ---
> > > >  README.rst              |  2 +-
> > > >  meson.build             |  2 +-
> > > >  src/android/meson.build | 17 +++++++++++++++++
> > > >  subprojects/.gitignore  |  1 +
> > > >  subprojects/libyuv.wrap |  4 ++++
> > > >  5 files changed, 24 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 743cb1d2..be77191d 100644
> > > > --- a/meson.build
> > > > +++ b/meson.build
> > > > @@ -1,7 +1,7 @@
> > > >  # SPDX-License-Identifier: CC0-1.0
> > > >
> > > >  project('libcamera', 'c', 'cpp',
> > > > -    meson_version : '>= 0.53',
> > > > +    meson_version : '>= 0.55',
> > >
> > > I know this patch is already merged, but bumping meson version over
> > > v0.54.3 breaks my CrOS build environment for Soraka based on R89 (and
> > > I'm told R90 also ships with meson v0.54.3). I understand the need to
> > > move to meson v0.55, I'm just curious if you know of a build environment
> > > I can switch to.
> > >
> >
> > I faced the same issue.
> > The meson command in ChromeOS chroot is the same as
> > portage-stable/dev-util/meson. [1]
> > It is 0.55.3. It thus shouldn't matter.
> > The meson command is not upreved unless `./update_chroot` doesn't run.
> > The command is hooked to run by some command (e.g. setup_board).
> > Of course, you can run manually  `./update_chroot`.
> > Hope it is helpful for you.
>
> Thanks for this suggestion, I tried to run update_chroot and it update
> some components of my chroot (gcc and gdb) but not meson. Unfortunately
> I don't have the log from the first run as I restarted the chroot to
> check if that would help. Here is the output if I try in my now
> up-to-date chroot.
>
>   (cr) ((5e00a24744cba80c...)) neg@neg-cros ~/trunk/src/scripts $ ./update_chroot
>   00:37:38 INFO    : Updating chroot
>   00:37:38 INFO    : Clearing shadow utils lockfiles under /
>   00:37:38 INFO    : Updating cross-compilers
>   00:37:38: INFO: Determining required toolchain updates...
>   00:37:39: INFO: Nothing to update!
>   00:37:39 INFO    : Bootstrapping depot_tools
>   00:37:57 INFO    : Rebuilding Portage cache
>   00:37:59 INFO    : Updating the SDK
>
>   These are the packages that would be merged, in order:
>
>   Calculating dependencies... done!
>
>   Total: 0 packages, Size of downloads: 0 KiB
>
>   Nothing to merge; quitting.
>
>
>   These are the packages that would be merged, in order:
>
>   Calculating dependencies... done!
>
>   Total: 0 packages, Size of downloads: 0 KiB
>
>   Nothing to merge; quitting.
>
>   Scanning Configuration files...
>   Exiting: Nothing left to do; exiting. :)
>   00:38:30 INFO    : Running 'eclean -d packages' to clean up stale binpkgs
>    * Building file list for packages cleaning...
>    * Your packages directory was already clean.
>   00:38:31 INFO    : Elapsed time (update_chroot): 0m54s
>   (cr) ((5e00a24744cba80c...)) neg@neg-cros ~/trunk/src/scripts $ meson --version
>   0.54.2
>
> Are there some other trick I can use to update meson in the chroot?
>

Niklas told me this issue was resolved by updating ChromiumOS repository. :)

-Hiro
> >
> > [1] https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/third_party/portage-stable/dev-util/meson/
> >
> > Thanks,
> > -Hiro
> >
> > > >      version : '0.0.0',
> > > >      default_options : [
> > > >          'werror=true',
> > > > diff --git a/src/android/meson.build b/src/android/meson.build
> > > > index 3d4d3be4..7619517a 100644
> > > > --- a/src/android/meson.build
> > > > +++ b/src/android/meson.build
> > > > @@ -14,6 +14,23 @@ 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
> > > > --
> > > > 2.30.0.365.g02bc693789-goog
> > > > _______________________________________________
> > > > libcamera-devel mailing list
> > > > libcamera-devel@lists.libcamera.org
> > > > https://lists.libcamera.org/listinfo/libcamera-devel
> > >
> > > --
> > > Regards,
> > > Niklas Söderlund
>
> --
> Regards,
> Niklas Söderlund

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 743cb1d2..be77191d 100644
--- a/meson.build
+++ b/meson.build
@@ -1,7 +1,7 @@ 
 # SPDX-License-Identifier: CC0-1.0

 project('libcamera', 'c', 'cpp',
-    meson_version : '>= 0.53',
+    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..7619517a 100644
--- a/src/android/meson.build
+++ b/src/android/meson.build
@@ -14,6 +14,23 @@  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