[libcamera-devel,v4] lc-compliance: Build with gtest in subprojects
diff mbox series

Message ID 20211112062948.1432821-1-hiroh@chromium.org
State Accepted
Headers show
Series
  • [libcamera-devel,v4] lc-compliance: Build with gtest in subprojects
Related show

Commit Message

Hirokazu Honda Nov. 12, 2021, 6:29 a.m. UTC
libgtest-dev is provided as a static library at least by Debian 10.
The compiler and linker to create the static library might be
different from ones used for libcamera. This causes a problem
upon linking.

This puts gtest code to subprojects, builds the code and link it
for lc-compliance. However, libgtest is locally built as a library on
ChromeOS and thus the used compiler and linker are the same as one
used for libcamera. We don't do these on ChromeOS build environment.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Tested-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 README.rst                    |  2 +-
 src/lc-compliance/meson.build | 16 ++++++++++++++--
 subprojects/.gitignore        |  4 +++-
 subprojects/gtest.wrap        | 14 ++++++++++++++
 4 files changed, 32 insertions(+), 4 deletions(-)
 create mode 100644 subprojects/gtest.wrap

--
2.34.0.rc1.387.gb447b232ab-goog

Comments

Laurent Pinchart Nov. 12, 2021, 4:15 p.m. UTC | #1
Hi Hiro,

Thank you for the patch.

On Fri, Nov 12, 2021 at 03:29:48PM +0900, Hirokazu Honda wrote:
> libgtest-dev is provided as a static library at least by Debian 10.
> The compiler and linker to create the static library might be
> different from ones used for libcamera. This causes a problem
> upon linking.
> 
> This puts gtest code to subprojects, builds the code and link it
> for lc-compliance. However, libgtest is locally built as a library on
> ChromeOS and thus the used compiler and linker are the same as one
> used for libcamera. We don't do these on ChromeOS build environment.
> 
> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> Tested-by: Jacopo Mondi <jacopo@jmondi.org>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

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

> ---
>  README.rst                    |  2 +-
>  src/lc-compliance/meson.build | 16 ++++++++++++++--
>  subprojects/.gitignore        |  4 +++-
>  subprojects/gtest.wrap        | 14 ++++++++++++++
>  4 files changed, 32 insertions(+), 4 deletions(-)
>  create mode 100644 subprojects/gtest.wrap
> 
> diff --git a/README.rst b/README.rst
> index 8af5f118..c48b4dba 100644
> --- a/README.rst
> +++ b/README.rst
> @@ -99,7 +99,7 @@ for android: [optional]
>          libexif-dev libjpeg-dev libyaml-dev
> 
>  for lc-compliance: [optional]
> -        libevent-dev libgtest-dev
> +        libevent-dev
> 
>  Using GStreamer plugin
>  ~~~~~~~~~~~~~~~~~~~~~~
> diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build
> index aa5852f6..130ddbb5 100644
> --- a/src/lc-compliance/meson.build
> +++ b/src/lc-compliance/meson.build
> @@ -1,13 +1,25 @@
>  # SPDX-License-Identifier: CC0-1.0
> 
>  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> -libgtest = dependency('gtest', required : get_option('lc-compliance'))
> 
> -if not (libevent.found() and libgtest.found())
> +if not libevent.found()
>      lc_compliance_enabled = false
>      subdir_done()
>  endif
> 
> +if get_option('android_platform') == 'cros'
> +    libgtest = dependency('gtest', required : get_option('lc-compliance'))
> +
> +    if not libgtest.found()
> +        lc_compliance_enabled = false
> +        subdir_done()
> +    endif
> +
> +else
> +    libgtest_sp = subproject('gtest')
> +    libgtest = libgtest_sp.get_variable('gtest_dep')
> +endif
> +
>  lc_compliance_enabled = true
> 
>  lc_compliance_sources = files([
> diff --git a/subprojects/.gitignore b/subprojects/.gitignore
> index 410b8bd6..391fde2c 100644
> --- a/subprojects/.gitignore
> +++ b/subprojects/.gitignore
> @@ -1 +1,3 @@
> -/libyuv
> \ No newline at end of file
> +/googletest-release*
> +/libyuv
> +/packagecache
> \ No newline at end of file
> diff --git a/subprojects/gtest.wrap b/subprojects/gtest.wrap
> new file mode 100644
> index 00000000..40128b35
> --- /dev/null
> +++ b/subprojects/gtest.wrap
> @@ -0,0 +1,14 @@
> +[wrap-file]
> +directory = googletest-release-1.11.0
> +source_url = https://github.com/google/googletest/archive/release-1.11.0.zip
> +source_filename = gtest-1.11.0.zip
> +source_hash = 353571c2440176ded91c2de6d6cd88ddd41401d14692ec1f99e35d013feda55a
> +patch_filename = gtest_1.11.0-1_patch.zip
> +patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.11.0-1/get_patch
> +patch_hash = d38c39184384608b08419be52aed1d0f9d9d1b5ed71c0c35e51cccbdddab7084
> +
> +[provide]
> +gtest = gtest_dep
> +gtest_main = gtest_main_dep
> +gmock = gmock_dep
> +gmock_main = gmock_main_dep
Kieran Bingham Nov. 12, 2021, 4:22 p.m. UTC | #2
Quoting Laurent Pinchart (2021-11-12 16:15:33)
> Hi Hiro,
> 
> Thank you for the patch.
> 
> On Fri, Nov 12, 2021 at 03:29:48PM +0900, Hirokazu Honda wrote:
> > libgtest-dev is provided as a static library at least by Debian 10.
> > The compiler and linker to create the static library might be
> > different from ones used for libcamera. This causes a problem
> > upon linking.
> > 
> > This puts gtest code to subprojects, builds the code and link it
> > for lc-compliance. However, libgtest is locally built as a library on
> > ChromeOS and thus the used compiler and linker are the same as one
> > used for libcamera. We don't do these on ChromeOS build environment.
> > 
> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> > Tested-by: Jacopo Mondi <jacopo@jmondi.org>
> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Umang has also already provided:

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

in <736c63c4-301e-2d04-d91c-a8b5c3b1df45@ideasonboard.com> but it got
lost when reposting as v4.

(Posting here so that patchwork collects it)
--
Kieran


> > ---
> >  README.rst                    |  2 +-
> >  src/lc-compliance/meson.build | 16 ++++++++++++++--
> >  subprojects/.gitignore        |  4 +++-
> >  subprojects/gtest.wrap        | 14 ++++++++++++++
> >  4 files changed, 32 insertions(+), 4 deletions(-)
> >  create mode 100644 subprojects/gtest.wrap
> > 
> > diff --git a/README.rst b/README.rst
> > index 8af5f118..c48b4dba 100644
> > --- a/README.rst
> > +++ b/README.rst
> > @@ -99,7 +99,7 @@ for android: [optional]
> >          libexif-dev libjpeg-dev libyaml-dev
> > 
> >  for lc-compliance: [optional]
> > -        libevent-dev libgtest-dev
> > +        libevent-dev
> > 
> >  Using GStreamer plugin
> >  ~~~~~~~~~~~~~~~~~~~~~~
> > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build
> > index aa5852f6..130ddbb5 100644
> > --- a/src/lc-compliance/meson.build
> > +++ b/src/lc-compliance/meson.build
> > @@ -1,13 +1,25 @@
> >  # SPDX-License-Identifier: CC0-1.0
> > 
> >  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > -libgtest = dependency('gtest', required : get_option('lc-compliance'))
> > 
> > -if not (libevent.found() and libgtest.found())
> > +if not libevent.found()
> >      lc_compliance_enabled = false
> >      subdir_done()
> >  endif
> > 
> > +if get_option('android_platform') == 'cros'
> > +    libgtest = dependency('gtest', required : get_option('lc-compliance'))
> > +
> > +    if not libgtest.found()
> > +        lc_compliance_enabled = false
> > +        subdir_done()
> > +    endif
> > +
> > +else
> > +    libgtest_sp = subproject('gtest')
> > +    libgtest = libgtest_sp.get_variable('gtest_dep')
> > +endif
> > +
> >  lc_compliance_enabled = true
> > 
> >  lc_compliance_sources = files([
> > diff --git a/subprojects/.gitignore b/subprojects/.gitignore
> > index 410b8bd6..391fde2c 100644
> > --- a/subprojects/.gitignore
> > +++ b/subprojects/.gitignore
> > @@ -1 +1,3 @@
> > -/libyuv
> > \ No newline at end of file
> > +/googletest-release*
> > +/libyuv
> > +/packagecache
> > \ No newline at end of file
> > diff --git a/subprojects/gtest.wrap b/subprojects/gtest.wrap
> > new file mode 100644
> > index 00000000..40128b35
> > --- /dev/null
> > +++ b/subprojects/gtest.wrap
> > @@ -0,0 +1,14 @@
> > +[wrap-file]
> > +directory = googletest-release-1.11.0
> > +source_url = https://github.com/google/googletest/archive/release-1.11.0.zip
> > +source_filename = gtest-1.11.0.zip
> > +source_hash = 353571c2440176ded91c2de6d6cd88ddd41401d14692ec1f99e35d013feda55a
> > +patch_filename = gtest_1.11.0-1_patch.zip
> > +patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.11.0-1/get_patch
> > +patch_hash = d38c39184384608b08419be52aed1d0f9d9d1b5ed71c0c35e51cccbdddab7084
> > +
> > +[provide]
> > +gtest = gtest_dep
> > +gtest_main = gtest_main_dep
> > +gmock = gmock_dep
> > +gmock_main = gmock_main_dep
> 
> -- 
> Regards,
> 
> Laurent Pinchart

Patch
diff mbox series

diff --git a/README.rst b/README.rst
index 8af5f118..c48b4dba 100644
--- a/README.rst
+++ b/README.rst
@@ -99,7 +99,7 @@  for android: [optional]
         libexif-dev libjpeg-dev libyaml-dev

 for lc-compliance: [optional]
-        libevent-dev libgtest-dev
+        libevent-dev

 Using GStreamer plugin
 ~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build
index aa5852f6..130ddbb5 100644
--- a/src/lc-compliance/meson.build
+++ b/src/lc-compliance/meson.build
@@ -1,13 +1,25 @@ 
 # SPDX-License-Identifier: CC0-1.0

 libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
-libgtest = dependency('gtest', required : get_option('lc-compliance'))

-if not (libevent.found() and libgtest.found())
+if not libevent.found()
     lc_compliance_enabled = false
     subdir_done()
 endif

+if get_option('android_platform') == 'cros'
+    libgtest = dependency('gtest', required : get_option('lc-compliance'))
+
+    if not libgtest.found()
+        lc_compliance_enabled = false
+        subdir_done()
+    endif
+
+else
+    libgtest_sp = subproject('gtest')
+    libgtest = libgtest_sp.get_variable('gtest_dep')
+endif
+
 lc_compliance_enabled = true

 lc_compliance_sources = files([
diff --git a/subprojects/.gitignore b/subprojects/.gitignore
index 410b8bd6..391fde2c 100644
--- a/subprojects/.gitignore
+++ b/subprojects/.gitignore
@@ -1 +1,3 @@ 
-/libyuv
\ No newline at end of file
+/googletest-release*
+/libyuv
+/packagecache
\ No newline at end of file
diff --git a/subprojects/gtest.wrap b/subprojects/gtest.wrap
new file mode 100644
index 00000000..40128b35
--- /dev/null
+++ b/subprojects/gtest.wrap
@@ -0,0 +1,14 @@ 
+[wrap-file]
+directory = googletest-release-1.11.0
+source_url = https://github.com/google/googletest/archive/release-1.11.0.zip
+source_filename = gtest-1.11.0.zip
+source_hash = 353571c2440176ded91c2de6d6cd88ddd41401d14692ec1f99e35d013feda55a
+patch_filename = gtest_1.11.0-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.11.0-1/get_patch
+patch_hash = d38c39184384608b08419be52aed1d0f9d9d1b5ed71c0c35e51cccbdddab7084
+
+[provide]
+gtest = gtest_dep
+gtest_main = gtest_main_dep
+gmock = gmock_dep
+gmock_main = gmock_main_dep