summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-cpp/gmock
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-cpp/gmock')
-rw-r--r--dev-cpp/gmock/Manifest4
-rw-r--r--dev-cpp/gmock/files/gmock-1.4.0-gcc-4.7.patch189
-rw-r--r--dev-cpp/gmock/files/gmock-1.4.0-more-gcc-4.7.patch144
-rw-r--r--dev-cpp/gmock/gmock-1.4.0.ebuild40
-rw-r--r--dev-cpp/gmock/gmock-1.5.0.ebuild38
-rw-r--r--dev-cpp/gmock/gmock-1.6.0.ebuild43
-rw-r--r--dev-cpp/gmock/gmock-1.7.0-r1.ebuild60
-rw-r--r--dev-cpp/gmock/gmock-1.7.0.ebuild43
-rw-r--r--dev-cpp/gmock/metadata.xml10
9 files changed, 571 insertions, 0 deletions
diff --git a/dev-cpp/gmock/Manifest b/dev-cpp/gmock/Manifest
new file mode 100644
index 000000000000..1efb0bd55f16
--- /dev/null
+++ b/dev-cpp/gmock/Manifest
@@ -0,0 +1,4 @@
+DIST gmock-1.4.0.tar.bz2 946373 SHA256 21d37c154a7b8d7a8562b9dde82db7db0a6c188b985c4a18ff3413daae8caa8c SHA512 df99aae44d23f4b0b4ce9ac24fde9e72508c9a915323dd07fb475c708953b79310c164141d085a04a9203b6abd759336d55a94979495f429c92f11bc4d1b038c WHIRLPOOL 7a4525a589770cd5de21c0b82a7b9a7219b3fcdef605e0b455dfff50bc87ff1432b3989cc7e0c08c42c68083e2618841a77d8afcf4ed51b3f55f09a5a64c4fb2
+DIST gmock-1.5.0.tar.bz2 1283432 SHA256 d8689a51fbc13f55509f5842fe7d514839d9fd6092743d145304bc2824fc9197 SHA512 b0a3897c801d14a9f59a07911fa77ae15ddae9bef6e2d818583ff0b5085d35507259c195b43a6fe25af70b4d2eee3796889ffcda91d16ce6e6e5b4e462196aa2 WHIRLPOOL f00854ebdece304006907ea2e3906fbe58578a7a3684d93eb8e9f2c26bd100f751878109d5fd13a31cf58463d759fc09c1b07c035107c127c19f572ff264fd76
+DIST gmock-1.6.0.zip 2053682 SHA256 341ad07c31c619ba32c88c2265bc23693da1df062f47f146a7ed340f646d82b7 SHA512 7adff00bb6ff81a6ffb704be71d0747636d69e24b4a8b709e1fb8c177a9a47f6dea8d14fde73034ebfb1529c291c7212a944ad92a34f88abdfe23c2d0b11b6f7 WHIRLPOOL 1a03ff8f2d96287f5deb24f970688f20f3480e77a4a71089ef1399a87f28f616bf0feaedc217e7ac1ca8ca1246e53f5d882f350704be111ae547961949939530
+DIST gmock-1.7.0.zip 2167746 SHA256 26fcbb5925b74ad5fc8c26b0495dfc96353f4d553492eb97e85a8a6d2f43095b SHA512 0ab7bb2614f8c00e4842a6819dbc6d9323c42241335078c23eaee53ed420d42f1845d44334eccbf7c114cc88f6ac7a493e20d9b46c58cdba645bbd400eb6db55 WHIRLPOOL 722ea3f8bd4130662386810ae0270baafcecb6b7066e8a361388d530e7a2bad4e10787c921c6bb5cefb15a640f4302d288d07deea58acf8c5f5ca84d82722c8e
diff --git a/dev-cpp/gmock/files/gmock-1.4.0-gcc-4.7.patch b/dev-cpp/gmock/files/gmock-1.4.0-gcc-4.7.patch
new file mode 100644
index 000000000000..fa678220f2a1
--- /dev/null
+++ b/dev-cpp/gmock/files/gmock-1.4.0-gcc-4.7.patch
@@ -0,0 +1,189 @@
+taken from upstream repo
+
+Index: include/gmock/gmock-generated-function-mockers.h.pump
+===================================================================
+--- include/gmock/gmock-generated-function-mockers.h.pump (revision 227)
++++ include/gmock/gmock-generated-function-mockers.h.pump (revision 228)
+@@ -45,10 +45,6 @@ $var n = 10 $$ The maximum arity we sup
+ #include <gmock/internal/gmock-internal-utils.h>
+
+ namespace testing {
+-
+-template <typename F>
+-class MockSpec;
+-
+ namespace internal {
+
+ template <typename F>
+@@ -89,7 +85,11 @@ $if i >= 1 [[
+ }
+
+ R Invoke($Aas) {
+- return InvokeWith(ArgumentTuple($as));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple($as));
+ }
+ };
+
+Index: include/gmock/gmock-generated-function-mockers.h
+===================================================================
+--- include/gmock/gmock-generated-function-mockers.h (revision 227)
++++ include/gmock/gmock-generated-function-mockers.h (revision 228)
+@@ -42,10 +42,6 @@
+ #include <gmock/internal/gmock-internal-utils.h>
+
+ namespace testing {
+-
+-template <typename F>
+-class MockSpec;
+-
+ namespace internal {
+
+ template <typename F>
+@@ -71,7 +67,11 @@ class FunctionMocker<R()> : public
+ }
+
+ R Invoke() {
+- return InvokeWith(ArgumentTuple());
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple());
+ }
+ };
+
+@@ -88,7 +88,11 @@ class FunctionMocker<R(A1)> : public
+ }
+
+ R Invoke(A1 a1) {
+- return InvokeWith(ArgumentTuple(a1));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1));
+ }
+ };
+
+@@ -105,7 +109,11 @@ class FunctionMocker<R(A1, A2)> : public
+ }
+
+ R Invoke(A1 a1, A2 a2) {
+- return InvokeWith(ArgumentTuple(a1, a2));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2));
+ }
+ };
+
+@@ -123,7 +131,11 @@ class FunctionMocker<R(A1, A2, A3)> : pu
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3));
+ }
+ };
+
+@@ -141,7 +153,11 @@ class FunctionMocker<R(A1, A2, A3, A4)>
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4));
+ }
+ };
+
+@@ -161,7 +177,11 @@ class FunctionMocker<R(A1, A2, A3, A4, A
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5));
+ }
+ };
+
+@@ -182,7 +202,11 @@ class FunctionMocker<R(A1, A2, A3, A4, A
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6));
+ }
+ };
+
+@@ -203,7 +227,11 @@ class FunctionMocker<R(A1, A2, A3, A4, A
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7));
+ }
+ };
+
+@@ -224,7 +252,11 @@ class FunctionMocker<R(A1, A2, A3, A4, A
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8));
+ }
+ };
+
+@@ -246,7 +278,11 @@ class FunctionMocker<R(A1, A2, A3, A4, A
+ }
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+ }
+ };
+
+@@ -270,7 +306,12 @@ class FunctionMocker<R(A1, A2, A3, A4, A
+
+ R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
+ A10 a10) {
+- return InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));
++ // Even though gcc and MSVC don't enforce it, 'this->' is required
++ // by the C++ standard [14.6.4] here, as the base class type is
++ // dependent on the template argument (and thus shouldn't be
++ // looked into when resolving InvokeWith).
++ return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9,
++ a10));
+ }
+ };
+
diff --git a/dev-cpp/gmock/files/gmock-1.4.0-more-gcc-4.7.patch b/dev-cpp/gmock/files/gmock-1.4.0-more-gcc-4.7.patch
new file mode 100644
index 000000000000..d28a121a474d
--- /dev/null
+++ b/dev-cpp/gmock/files/gmock-1.4.0-more-gcc-4.7.patch
@@ -0,0 +1,144 @@
+taken from upstream repo
+
+------------------------------------------------------------------------
+r245 | zhanyong.wan | 2009-12-02 03:36:42 -0500 (Wed, 02 Dec 2009) | 2 lines
+
+Fixes a C++-standard-compliance bug in gmock-printers.h.
+
+
+Index: include/gmock/gmock-printers.h
+===================================================================
+--- include/gmock/gmock-printers.h (revision 244)
++++ include/gmock/gmock-printers.h (revision 245)
+@@ -434,63 +434,10 @@ inline void PrintTo(const ::std::wstring
+ // Overload for ::std::tr1::tuple. Needed for printing function
+ // arguments, which are packed as tuples.
+
+-typedef ::std::vector<string> Strings;
+-
+-// This helper template allows PrintTo() for tuples and
+-// UniversalTersePrintTupleFieldsToStrings() to be defined by
+-// induction on the number of tuple fields. The idea is that
+-// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N
+-// fields in tuple t, and can be defined in terms of
+-// TuplePrefixPrinter<N - 1>.
+-
+-// The inductive case.
+-template <size_t N>
+-struct TuplePrefixPrinter {
+- // Prints the first N fields of a tuple.
+- template <typename Tuple>
+- static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+- TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);
+- *os << ", ";
+- UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>
+- ::Print(::std::tr1::get<N - 1>(t), os);
+- }
+-
+- // Tersely prints the first N fields of a tuple to a string vector,
+- // one element for each field.
+- template <typename Tuple>
+- static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+- TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
+- ::std::stringstream ss;
+- UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss);
+- strings->push_back(ss.str());
+- }
+-};
+-
+-// Base cases.
+-template <>
+-struct TuplePrefixPrinter<0> {
+- template <typename Tuple>
+- static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}
+-
+- template <typename Tuple>
+- static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}
+-};
+-template <>
+-template <typename Tuple>
+-void TuplePrefixPrinter<1>::PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+- UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::
+- Print(::std::tr1::get<0>(t), os);
+-}
+-
+ // Helper function for printing a tuple. T must be instantiated with
+ // a tuple type.
+ template <typename T>
+-void PrintTupleTo(const T& t, ::std::ostream* os) {
+- *os << "(";
+- TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>::
+- PrintPrefixTo(t, os);
+- *os << ")";
+-}
++void PrintTupleTo(const T& t, ::std::ostream* os);
+
+ // Overloaded PrintTo() for tuples of various arities. We support
+ // tuples of up-to 10 fields. The following implementation works
+@@ -725,6 +672,64 @@ void UniversalPrint(const T& value, ::st
+ UniversalPrinter<T>::Print(value, os);
+ }
+
++typedef ::std::vector<string> Strings;
++
++// This helper template allows PrintTo() for tuples and
++// UniversalTersePrintTupleFieldsToStrings() to be defined by
++// induction on the number of tuple fields. The idea is that
++// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N
++// fields in tuple t, and can be defined in terms of
++// TuplePrefixPrinter<N - 1>.
++
++// The inductive case.
++template <size_t N>
++struct TuplePrefixPrinter {
++ // Prints the first N fields of a tuple.
++ template <typename Tuple>
++ static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
++ TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);
++ *os << ", ";
++ UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>
++ ::Print(::std::tr1::get<N - 1>(t), os);
++ }
++
++ // Tersely prints the first N fields of a tuple to a string vector,
++ // one element for each field.
++ template <typename Tuple>
++ static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
++ TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
++ ::std::stringstream ss;
++ UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss);
++ strings->push_back(ss.str());
++ }
++};
++
++// Base cases.
++template <>
++struct TuplePrefixPrinter<0> {
++ template <typename Tuple>
++ static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}
++
++ template <typename Tuple>
++ static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}
++};
++template <>
++template <typename Tuple>
++void TuplePrefixPrinter<1>::PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
++ UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::
++ Print(::std::tr1::get<0>(t), os);
++}
++
++// Helper function for printing a tuple. T must be instantiated with
++// a tuple type.
++template <typename T>
++void PrintTupleTo(const T& t, ::std::ostream* os) {
++ *os << "(";
++ TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>::
++ PrintPrefixTo(t, os);
++ *os << ")";
++}
++
+ // Prints the fields of a tuple tersely to a string vector, one
+ // element for each field. See the comment before
+ // UniversalTersePrint() for how we define "tersely".
+
+------------------------------------------------------------------------
diff --git a/dev-cpp/gmock/gmock-1.4.0.ebuild b/dev-cpp/gmock/gmock-1.4.0.ebuild
new file mode 100644
index 000000000000..f9a10aca3390
--- /dev/null
+++ b/dev-cpp/gmock/gmock-1.4.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit libtool eutils
+
+DESCRIPTION="Google's C++ mocking framework"
+HOMEPAGE="http://code.google.com/p/googlemock/"
+SRC_URI="http://googlemock.googlecode.com/files/${P}.tar.bz2"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="static-libs"
+
+RDEPEND=">=dev-cpp/gtest-${PV}"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ default
+ # make sure we always use the system one
+ rm -r "${S}"/gtest/Makefile* || die
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-gcc-4.7.patch
+ epatch "${FILESDIR}"/${P}-more-gcc-4.7.patch
+ elibtoolize
+}
+
+src_configure() {
+ econf $(use_enable static-libs static)
+}
+
+src_install() {
+ default
+ use static-libs || find "${ED}"/usr -name '*.la' -delete
+}
diff --git a/dev-cpp/gmock/gmock-1.5.0.ebuild b/dev-cpp/gmock/gmock-1.5.0.ebuild
new file mode 100644
index 000000000000..e2501fc1ad36
--- /dev/null
+++ b/dev-cpp/gmock/gmock-1.5.0.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit libtool
+
+DESCRIPTION="Google's C++ mocking framework"
+HOMEPAGE="http://code.google.com/p/googlemock/"
+SRC_URI="http://googlemock.googlecode.com/files/${P}.tar.bz2"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="static-libs"
+
+RDEPEND=">=dev-cpp/gtest-${PV}"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ default
+ # make sure we always use the system one
+ rm -r "${S}"/gtest/Makefile* || die
+}
+
+src_prepare() {
+ elibtoolize
+}
+
+src_configure() {
+ econf $(use_enable static-libs static)
+}
+
+src_install() {
+ default
+ use static-libs || find "${D}" -name '*.la' -delete
+}
diff --git a/dev-cpp/gmock/gmock-1.6.0.ebuild b/dev-cpp/gmock/gmock-1.6.0.ebuild
new file mode 100644
index 000000000000..846a9dbf86f1
--- /dev/null
+++ b/dev-cpp/gmock/gmock-1.6.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit libtool
+
+DESCRIPTION="Google's C++ mocking framework"
+HOMEPAGE="http://code.google.com/p/googlemock/"
+SRC_URI="http://googlemock.googlecode.com/files/${P}.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ~ppc64 ~s390 ~sh sparc x86"
+IUSE="static-libs"
+
+RDEPEND="=dev-cpp/gtest-${PV}*"
+DEPEND="app-arch/unzip
+ ${RDEPEND}"
+
+src_unpack() {
+ default
+ # make sure we always use the system one
+ rm -r "${S}"/gtest/{Makefile,configure}* || die
+}
+
+src_prepare() {
+ sed -i -r \
+ -e '/^install-(data|exec)-local:/s|^.*$|&\ndisabled-&|' \
+ Makefile.in
+ elibtoolize
+}
+
+src_configure() {
+ econf $(use_enable static-libs static)
+}
+
+src_install() {
+ default
+ dobin scripts/gmock-config
+ use static-libs || find "${D}" -name '*.la' -delete
+}
diff --git a/dev-cpp/gmock/gmock-1.7.0-r1.ebuild b/dev-cpp/gmock/gmock-1.7.0-r1.ebuild
new file mode 100644
index 000000000000..56c20d8da082
--- /dev/null
+++ b/dev-cpp/gmock/gmock-1.7.0-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit libtool multilib-minimal python-any-r1
+
+DESCRIPTION="Google's C++ mocking framework"
+HOMEPAGE="http://code.google.com/p/googlemock/"
+SRC_URI="http://googlemock.googlecode.com/files/${P}.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
+IUSE="static-libs test"
+
+RDEPEND="=dev-cpp/gtest-${PV}*[${MULTILIB_USEDEP}]"
+DEPEND="${RDEPEND}
+ test? ( ${PYTHON_DEPS} )
+ app-arch/unzip"
+
+pkg_setup() {
+ # Stub to disable python_setup running when USE=-test.
+ # We'll handle it down in src_test ourselves.
+ :
+}
+
+src_unpack() {
+ default
+ # make sure we always use the system one
+ rm -r "${S}"/gtest/{Makefile,configure}* || die
+}
+
+src_prepare() {
+ sed -i -r \
+ -e '/^install-(data|exec)-local:/s|^.*$|&\ndisabled-&|' \
+ Makefile.in
+ elibtoolize
+}
+
+multilib_src_configure() {
+ ECONF_SOURCE=${S} econf $(use_enable static-libs static)
+}
+
+multilib_src_test() {
+ python_setup
+ emake check
+}
+
+multilib_src_install() {
+ default
+ dobin scripts/gmock-config
+}
+
+multilib_src_install_all() {
+ use static-libs || find "${ED}" -name '*.la' -delete
+}
diff --git a/dev-cpp/gmock/gmock-1.7.0.ebuild b/dev-cpp/gmock/gmock-1.7.0.ebuild
new file mode 100644
index 000000000000..d97eb319298f
--- /dev/null
+++ b/dev-cpp/gmock/gmock-1.7.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit libtool
+
+DESCRIPTION="Google's C++ mocking framework"
+HOMEPAGE="http://code.google.com/p/googlemock/"
+SRC_URI="http://googlemock.googlecode.com/files/${P}.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 arm ~hppa ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh sparc x86"
+IUSE="static-libs"
+
+RDEPEND="=dev-cpp/gtest-${PV}*"
+DEPEND="app-arch/unzip
+ ${RDEPEND}"
+
+src_unpack() {
+ default
+ # make sure we always use the system one
+ rm -r "${S}"/gtest/{Makefile,configure}* || die
+}
+
+src_prepare() {
+ sed -i -r \
+ -e '/^install-(data|exec)-local:/s|^.*$|&\ndisabled-&|' \
+ Makefile.in
+ elibtoolize
+}
+
+src_configure() {
+ econf $(use_enable static-libs static)
+}
+
+src_install() {
+ default
+ dobin scripts/gmock-config
+ use static-libs || find "${D}" -name '*.la' -delete
+}
diff --git a/dev-cpp/gmock/metadata.xml b/dev-cpp/gmock/metadata.xml
new file mode 100644
index 000000000000..541e716613f3
--- /dev/null
+++ b/dev-cpp/gmock/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>vapier@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="google-code">googlemock</remote-id>
+ </upstream>
+</pkgmetadata>