diff mbox

[v7] gtest/gmock: bump to version 1.8.0

Message ID 1487784452-7424-1-git-send-email-casantos@datacom.ind.br
State Rejected, archived
Headers show

Commit Message

Carlos Santos Feb. 22, 2017, 5:27 p.m. UTC
GTest version 1.8.0 includes gmock so merge both packages inside gtest

In this merge:

- Add gmock as a suboption of gtest (BR2_PACKAGE_GTEST_GMOCK)
  following advice from Arnout Vandecappelle
- Add BR2_PACKAGE_GMOCK as a legacy entry, selecting BR2_PACKAGE_GTEST
  and BR2_PACKAGE_GTEST_GMOCK.
- Use cmake to install libraries and headers and add missing files
  (gtest.pc, gtest-config, gmock.pc) in
  GTEST_POST_INSTALL_STAGING_HOOKS instead of redefining
  GTEST_INSTALL_STAGING_CMDS
- Remove patch on Python as gmock/gtest now supports python 3.0
  (commit 456fc2b5c4e9ebf05a5987dfe1ff0ac9ffeb53cc)
- Add the correct license in HOST_GTEST_LICENSE as all python code in
  googlemock/scripts/generator is licensed under Apache-2.0 and not
  BSD-3c
- Fix URL of gtest project in Config.in
- Remove the gmock entry from DEVELOPERS
- Install gmock_gen directly, instead of as a symlink to gmock_gen.py

Notice that any external package that depends on gmock will cause an
immediate build termination because make doesn't know how to build
gmock. Since the user has just removed gmock from the legacy menu, it
should be quite obvious what needs to be done.

Signed-off-by: Fabrice Fontaine <fabrice.fontaine@orange.com>
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
---
Version history:

v1 (Fabrice Fontaine)
  - Add gmock as a suboption
  - Use cmake to install
  - Remove patch on Python
  - Add the correct license
  - Fix URL of gtest project

v1->v2 (Carlos Santos)
  - Add gmock a virtual package (yeah, yeah, big mistake)

v2->v3 (Carlos Santos)
  - Got rid of the gmock virtual package (yeah, BIG mistake)
  - Use $(PYTHON3_VERSION_MAJOR) to choose the Python version
  - Several fixes, as suggested by Arnout Vandecappelle

v3->v4 (Carlos Santos)
  - Several fixes, as suggested by Romain Naour

v4->v5 (Carlos Santos)
  - Drop GTEST_VERSION_TAG after a parallel conversation with Thomas
    Petazzoni and Yann E. MORIN
    (http://patchwork.ozlabs.org/patch/726836/).

v5->v6 (Carlos Santos)
  - Fix typo found by Romain Naour
  - Clarify the logic to choose between gtest or gtest+gmock and drop
    gmock_gen symlink to gmock_gen.py as identified by Thomas Petazzoni
  - Move legacy entry to a 2017.05 session, since this will go to the
    "master" branch, not to "next".

v6->v7 (Carlos Santos)
  - Fix GTEST_CONF_OPTS to match the tricki logic in CMakeLists.txt. The
    change made in v6 made it build gtest, only, regardless the value of
    BR2_PACKAGE_GTEST_GMOCK.
---
Help git format-patch/send-email to build the recipient list (lazy boy)
Cc: "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
Cc: "Yann E. MORIN" <yann.morin.1998@free.fr>
CC: "Romain Naour" <romain.naour@gmail.com>
---
 Config.in.legacy                           | 11 +++++
 DEVELOPERS                                 |  1 -
 package/Config.in                          |  1 -
 package/gmock/0001-force-use-python2.patch | 20 ----------
 package/gmock/Config.in                    | 32 ---------------
 package/gmock/gmock.hash                   |  2 -
 package/gmock/gmock.mk                     | 64 ------------------------------
 package/gmock/gmock.pc                     | 11 -----
 package/gtest/Config.in                    | 30 +++++++++++++-
 package/gtest/gmock.pc                     | 11 +++++
 package/gtest/gtest.hash                   |  2 +-
 package/gtest/gtest.mk                     | 63 ++++++++++++++++++++++++-----
 package/gtest/gtest.pc                     |  2 +-
 13 files changed, 107 insertions(+), 143 deletions(-)
 delete mode 100644 package/gmock/0001-force-use-python2.patch
 delete mode 100644 package/gmock/Config.in
 delete mode 100644 package/gmock/gmock.hash
 delete mode 100644 package/gmock/gmock.mk
 delete mode 100644 package/gmock/gmock.pc
 create mode 100644 package/gtest/gmock.pc

Comments

Thomas Petazzoni Feb. 26, 2017, 2:05 p.m. UTC | #1
Hello,

Thanks for this new version, but there's still one thing (the same
thing as before) that I don't understand.

On Wed, 22 Feb 2017 14:27:32 -0300, Carlos Santos wrote:
> +# GTest's CMakeLists.txt uses a tricky logic:
> +# - by default sets BUILD_GMOCK to ON and BUILD_GTEST to OFF
> +# - if BUILD_GMOCK is ON then builds gmock, which in its turn builds gtest,
> +#   regardless the value of BUILD_GTEST
> +# - otherwise, if BUILD_GTEST is ON then build gtest, only
> +# So, to build only gtest we must set BUILD_GTEST to ON and BUILD_GMOCK to OFF
> +# to revert the default values. Setting both to ON is not really necessary but
> +# describes clearly what we intend to do.

Knowing this, why don't you simply do the much more obvious:

GTEST_CONF_OPTS += -DBUILD_GTEST=ON

ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)
GTEST_CONF_OPTS += -DBUILD_GMOCK=ON
else
GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF
endif

instead of the very cryptic!

> +ifeq ($(BR2_PACKAGE_GTEST_GMOCK),)
> +GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF
> +GTEST_CONF_OPTS += -DBUILD_GTEST=ON
> +endif

Thanks,

Thomas
Carlos Santos Feb. 27, 2017, 12:31 p.m. UTC | #2
[resending, since Zimbra failed to deliver my last message]

> From: "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
> To: "Carlos Santos" <casantos@datacom.ind.br>
> Cc: buildroot@buildroot.org, "Fabrice Fontaine" <fabrice.fontaine@orange.com>, "Romain Naour" <romain.naour@gmail.com>,
> "Yann E. MORIN" <yann.morin.1998@free.fr>
> Sent: Sunday, February 26, 2017 11:05:25 AM
> Subject: Re: [Buildroot] [PATCH v7] gtest/gmock: bump to version 1.8.0

> Hello,
> 
> Thanks for this new version, but there's still one thing (the same
> thing as before) that I don't understand.
> 
> On Wed, 22 Feb 2017 14:27:32 -0300, Carlos Santos wrote:
>> +# GTest's CMakeLists.txt uses a tricky logic:
>> +# - by default sets BUILD_GMOCK to ON and BUILD_GTEST to OFF
>> +# - if BUILD_GMOCK is ON then builds gmock, which in its turn builds gtest,
>> +#   regardless the value of BUILD_GTEST
>> +# - otherwise, if BUILD_GTEST is ON then build gtest, only
>> +# So, to build only gtest we must set BUILD_GTEST to ON and BUILD_GMOCK to OFF
>> +# to revert the default values. Setting both to ON is not really necessary but
>> +# describes clearly what we intend to do.
> 
> Knowing this, why don't you simply do the much more obvious:
> 
> GTEST_CONF_OPTS += -DBUILD_GTEST=ON
> 
> ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)
> GTEST_CONF_OPTS += -DBUILD_GMOCK=ON
> else
> GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF
> endif
> 
> instead of the very cryptic!
> 
>> +ifeq ($(BR2_PACKAGE_GTEST_GMOCK),)
>> +GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF
>> +GTEST_CONF_OPTS += -DBUILD_GTEST=ON
>> +endif

Because it does not work (try http://patchwork.ozlabs.org/patch/727786/).
Thomas Petazzoni March 1, 2017, 10:09 p.m. UTC | #3
Hello,

On Mon, 27 Feb 2017 09:31:50 -0300 (BRT), Carlos Santos wrote:

> Because it does not work (try http://patchwork.ozlabs.org/patch/727786/).

Could you define "does not work" ? Indeed, I applied this version of
your patch (v6), and built it with the following configurations:

BR2_PACKAGE_GTEST=y
# BR2_PACKAGE_GTEST_GMOCK is not set

and:

BR2_PACKAGE_GTEST=y
BR2_PACKAGE_GTEST_GMOCK=y

and both built successfully.

The first one only installed gtest:

>>> gtest release-1.8.0 Installing to staging directory
PATH="/home/thomas/projets/buildroot/output/host/bin:/home/thomas/projets/buildroot/output/host/sbin:/home/thomas/projets/buildroot/output/host/usr/bin:/home/thomas/projets/buildroot/output/host/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin"  /usr/bin/make -j5  DESTDIR=/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot install/fast -C /home/thomas/projets/buildroot/output/build/gtest-release-1.8.0/
Install the project...
-- Install configuration: "Release"
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgtest.a
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgtest_main.a
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-param-test.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-test-part.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-typed-test.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-message.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-death-test.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-param-util.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-linked_ptr.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-type-util.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-port-arch.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-type-util.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-tuple.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-internal.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-param-util-generated.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-port.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-string.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-param-util-generated.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-death-test-internal.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-filepath.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-tuple.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom/gtest-port.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom/gtest.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom/gtest-printers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest_pred_impl.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-spi.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-printers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest_prod.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-param-test.h.pump
/usr/bin/install -D -m 0644 package/gtest/gtest.pc /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/pkgconfig/gtest.pc
# Generate the gtest-config script manually, since the CMake
# build system is not doing it.
sed 's%@PACKAGE_TARNAME@%gtest%; s%@PACKAGE_VERSION@%release-1.8.0%; s%@prefix@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr%; s%@exec_prefix@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr%; s%@libdir@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib%; s%@includedir@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include%; s%@bindir@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/bin%; s%@PTHREAD_CFLAGS@%%; s%@PTHREAD_LIBS@%-lpthread%;' /home/thomas/projets/buildroot/output/build/gtest-release-1.8.0/googletest/scripts/gtest-config.in > /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/bin/gtest-config
chmod +x /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/bin/gtest-config

While the second one installed both gtest and gmock:

>>> gtest release-1.8.0 Installing to staging directory
PATH="/home/thomas/projets/buildroot/output/host/bin:/home/thomas/projets/buildroot/output/host/sbin:/home/thomas/projets/buildroot/output/host/usr/bin:/home/thomas/projets/buildroot/output/host/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin"  /usr/bin/make -j5  DESTDIR=/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot install/fast -C /home/thomas/projets/buildroot/output/build/gtest-release-1.8.0/
Install the project...
-- Install configuration: "Release"
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgmock.a
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgmock_main.a
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-nice-strict.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-cardinalities.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-more-matchers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-nice-strict.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-actions.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-matchers.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-actions.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-more-actions.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/gmock-port.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/gmock-internal-utils.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/gmock-generated-internal-utils.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/gmock-generated-internal-utils.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/custom
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/custom/gmock-port.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/custom/gmock-generated-actions.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/custom/gmock-matchers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/internal/custom/gmock-generated-actions.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-matchers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-spec-builders.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-actions.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-function-mockers.h.pump
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-matchers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gmock/gmock-generated-function-mockers.h
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgtest.a
-- Installing: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgtest_main.a
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-param-test.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-test-part.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-typed-test.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-message.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-death-test.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-param-util.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-linked_ptr.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-type-util.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-port-arch.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-type-util.h.pump
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-tuple.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-internal.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-param-util-generated.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-port.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-string.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-param-util-generated.h.pump
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-death-test-internal.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-filepath.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/gtest-tuple.h.pump
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom/gtest-port.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom/gtest.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/internal/custom/gtest-printers.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest_pred_impl.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-spi.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-printers.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest_prod.h
-- Up-to-date: /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/gtest/gtest-param-test.h.pump
/usr/bin/install -D -m 0644 package/gtest/gtest.pc /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/pkgconfig/gtest.pc
# Generate the gtest-config script manually, since the CMake
# build system is not doing it.
sed 's%@PACKAGE_TARNAME@%gtest%; s%@PACKAGE_VERSION@%release-1.8.0%; s%@prefix@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr%; s%@exec_prefix@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr%; s%@libdir@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib%; s%@includedir@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include%; s%@bindir@%/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/bin%; s%@PTHREAD_CFLAGS@%%; s%@PTHREAD_LIBS@%-lpthread%;' /home/thomas/projets/buildroot/output/build/gtest-release-1.8.0/googletest/scripts/gtest-config.in > /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/bin/gtest-config
chmod +x /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/bin/gtest-config
/usr/bin/install -D -m 0644 package/gtest/gmock.pc /home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/pkgconfig/gmock.pc

What am I missing here ?

Thanks,

Thomas
Carlos Santos March 2, 2017, 11:34 a.m. UTC | #4
> From: "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
> To: "Carlos Santos" <casantos@datacom.ind.br>
> Cc: "Fabrice Fontaine" <fabrice.fontaine@orange.com>, "Romain Naour" <romain.naour@gmail.com>, "Yann E. MORIN"
> <yann.morin.1998@free.fr>, buildroot@buildroot.org
> Sent: Wednesday, March 1, 2017 7:09:27 PM
> Subject: Re: [Buildroot] [PATCH v7] gtest/gmock: bump to version 1.8.0

> Hello,
> 
> On Mon, 27 Feb 2017 09:31:50 -0300 (BRT), Carlos Santos wrote:
> 
>> Because it does not work (try http://patchwork.ozlabs.org/patch/727786/).
> 
> Could you define "does not work" ? Indeed, I applied this version of
> your patch (v6), and built it with the following configurations:
> 
> BR2_PACKAGE_GTEST=y
> # BR2_PACKAGE_GTEST_GMOCK is not set
> 
> and:
> 
> BR2_PACKAGE_GTEST=y
> BR2_PACKAGE_GTEST_GMOCK=y
> 
> and both built successfully.

Hum, that's correct. I'm at work now, without access to the machine in
which I was running my tests, at home, and can't reproduce the problem
that led me to believe that v7 was necessary. Looks like it was just a
mistake.

Please apply v6 and discard v7. Sorry for the noise.
diff mbox

Patch

diff --git a/Config.in.legacy b/Config.in.legacy
index 20445b8..cc2ab69 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -143,6 +143,17 @@  comment "----------------------------------------------------"
 endif
 
 ###############################################################################
+comment "Legacy options removed in 2017.05"
+
+config BR2_PACKAGE_GMOCK
+	bool "gmock removed"
+	select BR2_LEGACY
+	select BR2_PACKAGE_GTEST
+	select BR2_PACKAGE_GTEST_GMOCK
+	help
+	  GMock is now a suboption of GTest
+
+###############################################################################
 comment "Legacy options removed in 2017.02"
 
 config BR2_PACKAGE_PERL_DB_FILE
diff --git a/DEVELOPERS b/DEVELOPERS
index 09a0a6e..752b873 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -286,7 +286,6 @@  N:	Carlo Caione <carlo.caione@gmail.com>
 F:	package/sunxi-boards/
 
 N:	Carlos Santos <casantos@datacom.ind.br>
-F:	package/gmock/
 F:	package/gtest/
 F:	package/libpam-radius-auth/
 F:	package/libpam-tacplus/
diff --git a/package/Config.in b/package/Config.in
index 0212121..2ed7a08 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1325,7 +1325,6 @@  menu "Other"
 	source "package/gflags/Config.in"
 	source "package/glibmm/Config.in"
 	source "package/glm/Config.in"
-	source "package/gmock/Config.in"
 	source "package/gmp/Config.in"
 	source "package/gsl/Config.in"
 	source "package/gtest/Config.in"
diff --git a/package/gmock/0001-force-use-python2.patch b/package/gmock/0001-force-use-python2.patch
deleted file mode 100644
index 5dcb231..0000000
--- a/package/gmock/0001-force-use-python2.patch
+++ /dev/null
@@ -1,20 +0,0 @@ 
-Force use of Python 2 even when Python 3 is the default Python interpreter.
-
-Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
-
---- ./gtest/scripts/fuse_gtest_files.py.orig	2013-09-18 14:48:30.000000000 -0300
-+++ ./gtest/scripts/fuse_gtest_files.py	2015-07-22 15:42:53.291591205 -0300
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009, Google Inc.
- # All rights reserved.
---- ./scripts/generator/gmock_gen.py.orig	2013-09-18 14:50:15.000000000 -0300
-+++ ./scripts/generator/gmock_gen.py	2015-07-22 17:06:51.071815634 -0300
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2008 Google Inc. All Rights Reserved.
- #
diff --git a/package/gmock/Config.in b/package/gmock/Config.in
deleted file mode 100644
index ec3eb92..0000000
--- a/package/gmock/Config.in
+++ /dev/null
@@ -1,32 +0,0 @@ 
-config BR2_PACKAGE_GMOCK
-	bool "gmock"
-	select BR2_PACKAGE_GTEST
-	depends on BR2_USE_WCHAR
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_INSTALL_LIBSTDCPP
-	depends on BR2_USE_MMU # fork()
-	help
-	  Inspired by jMock, EasyMock, and Hamcrest, and designed with C++'s
-	  specifics in mind, Google C++ Mocking Framework (or Google Mock for
-	  short) is a library for writing and using C++ mock classes.
-
-	  Google Mock:
-
-	    * lets you create mock classes trivially using simple macros,
-	    * supports a rich set of matchers and actions,
-	    * handles unordered, partially ordered, or completely ordered
-	      expectations,
-	    * is extensible by users, and
-	    * works on Linux, Mac OS X, Windows, Windows Mobile, minGW, and
-	      Symbian.
-
-	    http://code.google.com/p/googlemock/
-
-	  There are both host and target packages. The target one has include
-	  files required to compile the tests and the static libraries required
-	  to link/run them. The host package installs gmock_gen, a Python script
-	  used to generate code mocks.
-
-comment "gmock needs a toolchain w/ C++, wchar, threads"
-	depends on BR2_USE_MMU
-	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
diff --git a/package/gmock/gmock.hash b/package/gmock/gmock.hash
deleted file mode 100644
index 2b71739..0000000
--- a/package/gmock/gmock.hash
+++ /dev/null
@@ -1,2 +0,0 @@ 
-# Locally computed
-sha256 26fcbb5925b74ad5fc8c26b0495dfc96353f4d553492eb97e85a8a6d2f43095b  gmock-1.7.0.zip
diff --git a/package/gmock/gmock.mk b/package/gmock/gmock.mk
deleted file mode 100644
index 4f04422..0000000
--- a/package/gmock/gmock.mk
+++ /dev/null
@@ -1,64 +0,0 @@ 
-################################################################################
-#
-# gmock
-#
-################################################################################
-
-# Make sure this remains the same version as the gtest one
-GMOCK_VERSION = 1.7.0
-GMOCK_SOURCE = gmock-$(GMOCK_VERSION).zip
-GMOCK_SITE = http://googlemock.googlecode.com/files
-GMOCK_INSTALL_STAGING = YES
-GMOCK_INSTALL_TARGET = NO
-GMOCK_LICENSE = BSD-3c
-GMOCK_LICENSE_FILES = LICENSE
-GMOCK_DEPENDENCIES = gtest host-gmock
-
-# GMock 1.7.0 relies on Python 2.7 syntax which is NOT compatible with Python3.
-HOST_GMOCK_DEPENDENCIES = host-python
-HOST_GMOCK_PYTHONPATH=$(HOST_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages
-
-# Static linking is required in order to keep the GMock package completely
-# separated from GTest. According to GMock's README file:
-#
-#   "Google Mock can be used as a DLL, but the same DLL must contain Google
-#    Test as well.  See Google Test's README file for instructions on how to
-#    set up necessary compiler settings".
-GMOCK_CONF_OPTS = --enable-static --disable-shared
-
-define GMOCK_EXTRACT_CMDS
-	$(UNZIP) $(DL_DIR)/$(GMOCK_SOURCE) -d $(BUILD_DIR)
-endef
-
-# We can't use the default rule for autotools-package staging because it fails
-# because it tries to rebuild/install gtest stuff and fails after this error:
-#    "'make install' is dangerous and not supported. Instead, see README for
-#      how to integrate Google Test into your build system."
-define GMOCK_INSTALL_STAGING_CMDS
-	$(INSTALL) -D -m 0755 $(@D)/lib/.libs/libgmock.a $(STAGING_DIR)/usr/lib/libgmock.a
-	$(INSTALL) -D -m 0755 $(@D)/lib/.libs/libgmock_main.a $(STAGING_DIR)/usr/lib/libgmock_main.a
-	$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include/gmock/
-	cp -rp $(@D)/include/gmock/* $(STAGING_DIR)/usr/include/gmock/
-	$(INSTALL) -D -m 0755 package/gmock/gmock.pc \
-		$(STAGING_DIR)/usr/lib/pkgconfig/gmock.pc
-endef
-
-# Unzipping inside $(@D) and moving everything from the created subdirectory is
-# required because unzipping directly in $(BUILD_DIR) would cause host-gmock to
-# overwrite the gmock subdir instead of unzipping in a host-gmock subdir.
-define HOST_GMOCK_EXTRACT_CMDS
-	$(UNZIP) $(DL_DIR)/$(GMOCK_SOURCE) -d $(@D)
-	mv $(@D)/gmock-$(GMOCK_VERSION)/* $(@D)
-	rmdir $(@D)/gmock-$(GMOCK_VERSION)
-endef
-
-define HOST_GMOCK_INSTALL_CMDS
-	$(INSTALL) -D -m 0755 $(@D)/scripts/generator/gmock_gen.py $(HOST_DIR)/usr/bin/gmock_gen.py
-	ln -sf gmock_gen.py $(HOST_DIR)/usr/bin/gmock_gen
-	cp -rp $(@D)/scripts/generator/cpp $(HOST_GMOCK_PYTHONPATH)
-endef
-
-$(eval $(autotools-package))
-# The host package does not build anything, just installs gmock_gen stuff, so
-# it does not need to be a host-autotools-package.
-$(eval $(host-generic-package))
diff --git a/package/gmock/gmock.pc b/package/gmock/gmock.pc
deleted file mode 100644
index 2f90068..0000000
--- a/package/gmock/gmock.pc
+++ /dev/null
@@ -1,11 +0,0 @@ 
-prefix=/usr
-exec_prefix=${prefix}
-libdir=${prefix}/lib/
-includedir=${prefix}/include
-
-Name: gmock
-Description: Google C++ Mocking Framework
-Version: 1.7.0
-Libs: -L${libdir} -lgmock
-Libs.private: -lpthread
-Cflags: -I${includedir}
diff --git a/package/gtest/Config.in b/package/gtest/Config.in
index 355b736..3f1f385 100644
--- a/package/gtest/Config.in
+++ b/package/gtest/Config.in
@@ -21,6 +21,34 @@  config BR2_PACKAGE_GTEST
 
 	  https://github.com/google/googletest
 
+if BR2_PACKAGE_GTEST
+
+config BR2_PACKAGE_GTEST_GMOCK
+	bool "gmock"
+	help
+	  Inspired by jMock, EasyMock, and Hamcrest, and designed with
+	  C++'s specifics in mind, Google C++ Mocking Framework (or
+	  Google Mock for short) is a library for writing and using C++
+	  mock classes.
+
+	  Google Mock:
+
+	    * lets you create mock classes trivially using simple
+	      macros, supports a rich set of matchers and actions,
+	    * handles unordered, partially ordered, or completely
+	      ordered expectations,
+	    * is extensible by users, and
+	    * works on Linux, Mac OS X, Windows, Windows Mobile, minGW,
+	      and Symbian.
+
+	  There are both host and target packages. The target one has
+	  include files required to compile the tests and the static
+	  libraries required to link/run them. The host package installs
+	  gmock_gen, a Python script used to generate code mocks.
+
+endif # BR2_PACKAGE_GTEST
+
 comment "gtest needs a toolchain w/ C++, wchar, threads"
 	depends on BR2_USE_MMU
-	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
+	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_INSTALL_LIBSTDCPP
diff --git a/package/gtest/gmock.pc b/package/gtest/gmock.pc
new file mode 100644
index 0000000..4c72354
--- /dev/null
+++ b/package/gtest/gmock.pc
@@ -0,0 +1,11 @@ 
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${prefix}/lib/
+includedir=${prefix}/include
+
+Name: gmock
+Description: Google C++ Mocking Framework
+Version: 1.8.0
+Libs: -L${libdir} -lgmock
+Libs.private: -lpthread
+Cflags: -I${includedir}
diff --git a/package/gtest/gtest.hash b/package/gtest/gtest.hash
index 79e31e4..474008d 100644
--- a/package/gtest/gtest.hash
+++ b/package/gtest/gtest.hash
@@ -1,2 +1,2 @@ 
 # Locally computed:
-sha256	f73a6546fdf9fce9ff93a5015e0333a8af3062a152a9ad6bcb772c96687016cc	gtest-release-1.7.0.tar.gz
+sha256	58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8	gtest-release-1.8.0.tar.gz
diff --git a/package/gtest/gtest.mk b/package/gtest/gtest.mk
index eb30905..27ead0a 100644
--- a/package/gtest/gtest.mk
+++ b/package/gtest/gtest.mk
@@ -4,13 +4,29 @@ 
 #
 ################################################################################
 
-# Make sure this remains the same version as the gmock one
-GTEST_VERSION = release-1.7.0
+GTEST_VERSION = release-1.8.0
 GTEST_SITE = $(call github,google,googletest,$(GTEST_VERSION))
 GTEST_INSTALL_STAGING = YES
 GTEST_INSTALL_TARGET = NO
 GTEST_LICENSE = BSD-3c
-GTEST_LICENSE_FILES = LICENSE
+GTEST_LICENSE_FILES = googletest/LICENSE
+
+ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)
+GTEST_DEPENDENCIES = host-gtest
+endif
+
+HOST_GTEST_LICENSE = Apache-2.0
+HOST_GTEST_LICENSE_FILES = googlemock/scripts/generator/LICENSE
+ifeq ($(BR2_PACKAGE_PYTHON3),y)
+HOST_GTEST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
+HOST_GTEST_DEPENDENCIES = host-python3
+else
+HOST_GTEST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
+HOST_GTEST_DEPENDENCIES = host-python
+endif
+
+HOST_GTEST_GMOCK_PYTHONPATH = \
+	$(HOST_DIR)/usr/lib/python$(HOST_GTEST_PYTHON_VERSION)/site-packages
 
 # While it is possible to build gtest as shared library, using this gtest shared
 # library requires to set some special configure option in the project using
@@ -21,11 +37,20 @@  GTEST_LICENSE_FILES = LICENSE
 # the gtest sources.
 GTEST_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF
 
-define GTEST_INSTALL_STAGING_CMDS
-	$(INSTALL) -D -m 0755 $(@D)/libgtest.a $(STAGING_DIR)/usr/lib/libgtest.a
-	$(INSTALL) -D -m 0755 $(@D)/libgtest_main.a $(STAGING_DIR)/usr/lib/libgtest_main.a
-	$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include/gtest/
-	cp -rp $(@D)/include/gtest/* $(STAGING_DIR)/usr/include/gtest/
+# GTest's CMakeLists.txt uses a tricky logic:
+# - by default sets BUILD_GMOCK to ON and BUILD_GTEST to OFF
+# - if BUILD_GMOCK is ON then builds gmock, which in its turn builds gtest,
+#   regardless the value of BUILD_GTEST
+# - otherwise, if BUILD_GTEST is ON then build gtest, only
+# So, to build only gtest we must set BUILD_GTEST to ON and BUILD_GMOCK to OFF
+# to revert the default values. Setting both to ON is not really necessary but
+# describes clearly what we intend to do.
+ifeq ($(BR2_PACKAGE_GTEST_GMOCK),)
+GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF
+GTEST_CONF_OPTS += -DBUILD_GTEST=ON
+endif
+
+define GTEST_INSTALL_MISSING_FILES
 	$(INSTALL) -D -m 0644 package/gtest/gtest.pc \
 		$(STAGING_DIR)/usr/lib/pkgconfig/gtest.pc
 	# Generate the gtest-config script manually, since the CMake
@@ -39,9 +64,29 @@  define GTEST_INSTALL_STAGING_CMDS
 		s%@bindir@%$(STAGING_DIR)/usr/bin%;\
 		s%@PTHREAD_CFLAGS@%%;\
 		s%@PTHREAD_LIBS@%-lpthread%;' \
-		$(@D)/scripts/gtest-config.in \
+		$(@D)/googletest/scripts/gtest-config.in \
 		> $(STAGING_DIR)/usr/bin/gtest-config
 	chmod +x $(STAGING_DIR)/usr/bin/gtest-config
 endef
 
+define GTEST_GMOCK_INSTALL_MISSING_FILE
+	$(INSTALL) -D -m 0644 package/gtest/gmock.pc \
+		$(STAGING_DIR)/usr/lib/pkgconfig/gmock.pc
+endef
+
+GTEST_POST_INSTALL_STAGING_HOOKS = GTEST_INSTALL_MISSING_FILES
+ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)
+GTEST_POST_INSTALL_STAGING_HOOKS += GTEST_GMOCK_INSTALL_MISSING_FILE
+endif
+
+define HOST_GTEST_INSTALL_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/googlemock/scripts/generator/gmock_gen.py \
+		$(HOST_DIR)/usr/bin/gmock_gen
+	cp -rp $(@D)/googlemock/scripts/generator/cpp \
+		$(HOST_GTEST_GMOCK_PYTHONPATH)
+endef
+
 $(eval $(cmake-package))
+# The host package does not build anything, just installs gmock_gen stuff, so
+# it does not need to be a host-cmake-package.
+$(eval $(host-generic-package))
diff --git a/package/gtest/gtest.pc b/package/gtest/gtest.pc
index b7a8aa4..594e79d 100644
--- a/package/gtest/gtest.pc
+++ b/package/gtest/gtest.pc
@@ -5,7 +5,7 @@  includedir=${prefix}/include
 
 Name: gtest
 Description: Google C++ Testing Framework
-Version: 1.7.0
+Version: 1.8.0
 Libs: -L${libdir} -lgtest
 Libs.private: -lpthread
 Cflags: -I${includedir}