summaryrefslogtreecommitdiff
path: root/dev-cpp/gtest
diff options
context:
space:
mode:
authorPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
committerPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
commitecdac123787b96ce6649f0f91da12ea6458cc2b1 (patch)
treeb89c74d9e6fe6e8aebc4c77bcbeb4ab73214127d /dev-cpp/gtest
parent1be72aa41cf41dedadeecf59dca9f01de6381f5e (diff)
downloadbaldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.gz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.xz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.zip
Updating liguros repo
Diffstat (limited to 'dev-cpp/gtest')
-rw-r--r--dev-cpp/gtest/Manifest4
-rw-r--r--dev-cpp/gtest/files/gtest-1.8.0-fix-doublefree.patch98
-rw-r--r--dev-cpp/gtest/files/gtest-1.8.0-fix-gcc6-undefined-behavior.patch21
-rw-r--r--dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch14
-rw-r--r--dev-cpp/gtest/files/gtest-1.8.0-multilib-strict.patch40
-rwxr-xr-xdev-cpp/gtest/files/gtest-1.9.0_pre20190607-increase-clone-stack-size.patch13
-rw-r--r--dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch17
-rw-r--r--dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch19
-rw-r--r--dev-cpp/gtest/gtest-1.10.0.ebuild80
-rw-r--r--dev-cpp/gtest/gtest-1.8.0-r1.ebuild69
-rw-r--r--dev-cpp/gtest/gtest-1.8.0.ebuild68
-rw-r--r--dev-cpp/gtest/gtest-1.8.1-r1.ebuild74
-rw-r--r--dev-cpp/gtest/gtest-1.8.1.ebuild75
-rw-r--r--dev-cpp/gtest/gtest-1.9.0_pre20190607.ebuild80
-rw-r--r--dev-cpp/gtest/gtest-9999.ebuild79
-rw-r--r--dev-cpp/gtest/metadata.xml17
16 files changed, 768 insertions, 0 deletions
diff --git a/dev-cpp/gtest/Manifest b/dev-cpp/gtest/Manifest
new file mode 100644
index 000000000000..dbb3e6432db2
--- /dev/null
+++ b/dev-cpp/gtest/Manifest
@@ -0,0 +1,4 @@
+DIST gtest-1.10.0.tar.gz 904227 BLAKE2B 96b97b06730a9f55505a4d40bd4861560503a1437d29dadc6e8d3c743ccde020e61b3f96082fb9bda0666d739e69d3990bad06161e9c531c40021dc0826f5547 SHA512 7ebf5b4a80f364564066ccc7ce2e2092b12942a754c4854afd97380f19811e0fd45c300d423234cda0e05966ddbdaebcb1625e856ce55b0c81b0bae0dd971532
+DIST gtest-1.8.0.tar.gz 1281617 BLAKE2B ac052b4d0eb0d8ded03a8c7dff05177818627b8a51f2dbc2c162b2ee2a5d1323539e7d0d02236d9ebb799995e018f0171c2fdaeb4de3bb339548265e50de79e6 SHA512 1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d
+DIST gtest-1.8.1.tar.gz 992298 BLAKE2B 40ef3417fe424205c0617f07207347ce671ac87605f8ac9b8a333b0b06e3fbef9f556041ee324c18f957f3258ab9fe06704f31cdd038355fb7890180eb77ced1 SHA512 e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7
+DIST gtest-1.9.0_pre20190607.tar.gz 958396 BLAKE2B 64ae2c86a320a6ed56d6f99383591f7a0176e3f1291144bddf6dc82733c78177963f95516bbaed494318d3d7451d164aeb0d4a192b415414bcc25b9875cf6e82 SHA512 6c17ba303ec1dc8a989075a6dc0eda9b023345d00f6b43e588676cc2cd291f8c508744e4aba86a6c6b651329ce47419ad04d5765ca5978eda507a1643e8a92c3
diff --git a/dev-cpp/gtest/files/gtest-1.8.0-fix-doublefree.patch b/dev-cpp/gtest/files/gtest-1.8.0-fix-doublefree.patch
new file mode 100644
index 000000000000..40fa1f6668bc
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-1.8.0-fix-doublefree.patch
@@ -0,0 +1,98 @@
+Bug: https://bugs.gentoo.org/631698
+Upstream PR: https://github.com/google/googletest/pull/1339
+
+From 0663ce9024c9b78ddf6eb3fc1ceb45361ed91767 Mon Sep 17 00:00:00 2001
+From: Romain Geissler <romain.geissler@gmail.com>
+Date: Sat, 2 Dec 2017 22:47:20 +0100
+Subject: [PATCH] Fix double free when building Gtest/GMock in shared libraries
+ and linking a test executable with both.
+
+---
+ googlemock/CMakeLists.txt | 63 ++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 40 insertions(+), 23 deletions(-)
+
+diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
+index 724fdd5f0..f7bad8afc 100644
+--- a/googlemock/CMakeLists.txt
++++ b/googlemock/CMakeLists.txt
+@@ -86,16 +86,23 @@ endif()
+ # Google Mock libraries. We build them using more strict warnings than what
+ # are used for other targets, to ensure that Google Mock can be compiled by
+ # a user aggressive about warnings.
+-cxx_library(gmock
+- "${cxx_strict}"
+- "${gtest_dir}/src/gtest-all.cc"
+- src/gmock-all.cc)
+-
+-cxx_library(gmock_main
+- "${cxx_strict}"
+- "${gtest_dir}/src/gtest-all.cc"
+- src/gmock-all.cc
+- src/gmock_main.cc)
++if (MSVC)
++ cxx_library(gmock
++ "${cxx_strict}"
++ "${gtest_dir}/src/gtest-all.cc"
++ src/gmock-all.cc)
++
++ cxx_library(gmock_main
++ "${cxx_strict}"
++ "${gtest_dir}/src/gtest-all.cc"
++ src/gmock-all.cc
++ src/gmock_main.cc)
++else()
++ cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
++ target_link_libraries(gmock gtest)
++ cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
++ target_link_libraries(gmock_main gmock)
++endif()
+
+ # If the CMake version supports it, attach header directory information
+ # to the targets for when we are part of a parent build (ie being pulled
+@@ -175,23 +182,33 @@ if (gmock_build_tests)
+ ############################################################
+ # C++ tests built with non-standard compiler flags.
+
+- cxx_library(gmock_main_no_exception "${cxx_no_exception}"
+- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+-
+- cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
+- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
++ if (MSVC)
++ cxx_library(gmock_main_no_exception "${cxx_no_exception}"
++ "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+
+- if (NOT MSVC OR MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010.
+- # Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
+- # conflict with our own definitions. Therefore using our own tuple does not
+- # work on those compilers.
+- cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
++ cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
+ "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+
+- cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
+- gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
++ if (MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010.
++ # Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
++ # conflict with our own definitions. Therefore using our own tuple does not
++ # work on those compilers.
++ cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
++ "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
++
++ cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
++ gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
++ endif()
++ else()
++ cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc)
++ target_link_libraries(gmock_main_no_exception gmock)
++
++ cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc)
++ target_link_libraries(gmock_main_no_rtti gmock)
++
++ cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" src/gmock_main.cc)
++ target_link_libraries(gmock_main_use_own_tuple gmock)
+ endif()
+-
+ cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
+ gmock_main_no_exception test/gmock-more-actions_test.cc)
+
diff --git a/dev-cpp/gtest/files/gtest-1.8.0-fix-gcc6-undefined-behavior.patch b/dev-cpp/gtest/files/gtest-1.8.0-fix-gcc6-undefined-behavior.patch
new file mode 100644
index 000000000000..eadfe6197389
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-1.8.0-fix-gcc6-undefined-behavior.patch
@@ -0,0 +1,21 @@
+Fix build with GCC 6 due to lifetime issues.
+
+--- a/googletest/src/gtest.cc
++++ b/googletest/src/gtest.cc
+@@ -2654,10 +2654,12 @@
+ test->Run();
+ }
+
+- // Deletes the test object.
+- impl->os_stack_trace_getter()->UponLeavingGTest();
+- internal::HandleExceptionsInMethodIfSupported(
+- test, &Test::DeleteSelf_, "the test fixture's destructor");
++ if (test != NULL) {
++ // Deletes the test object.
++ impl->os_stack_trace_getter()->UponLeavingGTest();
++ internal::HandleExceptionsInMethodIfSupported(
++ test, &Test::DeleteSelf_, "the test fixture's destructor");
++ }
+
+ result_.set_elapsed_time(internal::GetTimeInMillis() - start);
+
diff --git a/dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch b/dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch
new file mode 100644
index 000000000000..22ac0b6d4a12
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch
@@ -0,0 +1,14 @@
+Bug: https://bugs.gentoo.org/629620
+Upstream PR: https://github.com/google/googletest/pull/1274
+
+--- a/googletest/src/gtest-death-test.cc
++++ b/googletest/src/gtest-death-test.cc
+@@ -1070,7 +1070,7 @@
+
+ if (!use_fork) {
+ static const bool stack_grows_down = StackGrowsDown();
+- const size_t stack_size = getpagesize();
++ const size_t stack_size = getpagesize() * 10;
+ // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
+ void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_PRIVATE, -1, 0);
diff --git a/dev-cpp/gtest/files/gtest-1.8.0-multilib-strict.patch b/dev-cpp/gtest/files/gtest-1.8.0-multilib-strict.patch
new file mode 100644
index 000000000000..c18b58e16fb6
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-1.8.0-multilib-strict.patch
@@ -0,0 +1,40 @@
+--- a/googlemock/CMakeLists.txt
++++ b/googlemock/CMakeLists.txt
+@@ -11,6 +11,8 @@
+
+ option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
+
++set(LIB_INSTALL_DIR lib CACHE STRING "Library install directory")
++
+ # A directory to find Google Test sources.
+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
+ set(gtest_dir gtest)
+@@ -104,7 +106,7 @@
+ #
+ # Install rules
+ install(TARGETS gmock gmock_main
+- DESTINATION lib)
++ DESTINATION ${LIB_INSTALL_DIR})
+ install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock
+ DESTINATION include)
+
+--- a/googletest/CMakeLists.txt
++++ b/googletest/CMakeLists.txt
+@@ -27,6 +27,8 @@
+ "Build gtest with internal symbols hidden in shared libraries."
+ OFF)
+
++set(LIB_INSTALL_DIR lib CACHE STRING "Library install directory")
++
+ # Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
+ include(cmake/hermetic_build.cmake OPTIONAL)
+
+@@ -103,7 +105,7 @@
+ #
+ # Install rules
+ install(TARGETS gtest gtest_main
+- DESTINATION lib)
++ DESTINATION ${LIB_INSTALL_DIR})
+ install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest
+ DESTINATION include)
+
diff --git a/dev-cpp/gtest/files/gtest-1.9.0_pre20190607-increase-clone-stack-size.patch b/dev-cpp/gtest/files/gtest-1.9.0_pre20190607-increase-clone-stack-size.patch
new file mode 100755
index 000000000000..38d515a48ddb
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-1.9.0_pre20190607-increase-clone-stack-size.patch
@@ -0,0 +1,13 @@
+Bug: https://bugs.gentoo.org/692464
+
+--- a/googletest/src/gtest-death-test.cc
++++ b/googletest/src/gtest-death-test.cc
+@@ -1070,7 +1070,7 @@
+
+ if (!use_fork) {
+ static const bool stack_grows_down = StackGrowsDown();
+- const auto stack_size = static_cast<size_t>(getpagesize());
++ const auto stack_size = static_cast<size_t>(getpagesize()* 10);
+ // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
+ void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_PRIVATE, -1, 0);
diff --git a/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch b/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch
new file mode 100644
index 000000000000..8dfed46d4585
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch
@@ -0,0 +1,17 @@
+Fix build with GCC 6 due to lifetime issues.
+
+--- a/googletest/src/gtest.cc
++++ b/googletest/src/gtest.cc
+@@ -2693,10 +2693,12 @@
+ test->Run();
+ }
+
++ if (test != NULL) {
+ // Deletes the test object.
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ test, &Test::DeleteSelf_, "the test fixture's destructor");
++ }
+
+ result_.set_elapsed_time(internal::GetTimeInMillis() - start);
+
diff --git a/dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch b/dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch
new file mode 100644
index 000000000000..ba63c7b3eeb3
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch
@@ -0,0 +1,19 @@
+Fix python tests that use broken generator expressions
+
+--- a/googletest/cmake/internal_utils.cmake
++++ b/googletest/cmake/internal_utils.cmake
+@@ -247,12 +247,12 @@
+ add_test(
+ NAME ${name}
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+- --build_dir=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>)
++ --build_dir=${CMAKE_CURRENT_BINARY_DIR})
+ else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
+ add_test(
+ ${name}
+ ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+- --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE})
++ --build_dir=${CMAKE_CURRENT_BINARY_DIR})
+ endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
+ endif()
+ endfunction()
diff --git a/dev-cpp/gtest/gtest-1.10.0.ebuild b/dev-cpp/gtest/gtest-1.10.0.ebuild
new file mode 100644
index 000000000000..12d496c44be4
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.10.0.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python2_7 )
+CMAKE_ECLASS=cmake
+inherit cmake-multilib python-any-r1
+
+MY_PV=1.10.x
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/google/googletest"
+else
+ if [[ -z ${GOOGLETEST_COMMIT} ]]; then
+ URI_PV=v${MY_PV:-${PV}}
+ else
+ URI_PV=${MY_PV:=${GOOGLETEST_COMMIT}}
+ fi
+ SRC_URI="https://github.com/google/googletest/archive/${URI_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+ S="${WORKDIR}"/googletest-${MY_PV}
+fi
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.0_pre20190607-increase-clone-stack-size.patch
+)
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i -e '/set(cxx_base_flags /s:-Werror::' \
+ googletest/cmake/internal_utils.cmake || die "sed failed!"
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DINSTALL_GTEST=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/.
+ docinto googlemock
+ dodoc -r googlemock/docs/.
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/gtest-1.8.0-r1.ebuild b/dev-cpp/gtest/gtest-1.8.0-r1.ebuild
new file mode 100644
index 000000000000..bf4d578fa31f
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.8.0-r1.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python3_6 )
+
+inherit python-any-r1 cmake-multilib
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9999-fix-py-tests.patch
+ "${FILESDIR}"/${PN}-1.8.0-fix-gcc6-undefined-behavior.patch
+ "${FILESDIR}"/${PN}-1.8.0-multilib-strict.patch
+ "${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
+ "${FILESDIR}"/${PN}-1.8.0-fix-doublefree.patch
+)
+
+S="${WORKDIR}"/googletest-release-${PV}
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DBUILD_GTEST=ON
+ -DLIB_INSTALL_DIR=$(get_libdir)
+ -Dgtest_build_samples=OFF
+ -Dgtest_disable_pthreads=OFF
+ -DBUILD_SHARED_LIBS=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake-utils_src_configure mycmakeargs
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/*
+ docinto googlemock
+ dodoc -r googlemock/docs/*
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/gtest-1.8.0.ebuild b/dev-cpp/gtest/gtest-1.8.0.ebuild
new file mode 100644
index 000000000000..2d1d2af328f7
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.8.0.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python3_6 )
+
+inherit python-any-r1 cmake-multilib
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9999-fix-py-tests.patch
+ "${FILESDIR}"/${PN}-1.8.0-fix-gcc6-undefined-behavior.patch
+ "${FILESDIR}"/${PN}-1.8.0-multilib-strict.patch
+ "${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
+)
+
+S="${WORKDIR}"/googletest-release-${PV}
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DBUILD_GTEST=ON
+ -DLIB_INSTALL_DIR=$(get_libdir)
+ -Dgtest_build_samples=OFF
+ -Dgtest_disable_pthreads=OFF
+ -DBUILD_SHARED_LIBS=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake-utils_src_configure mycmakeargs
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/*
+ docinto googlemock
+ dodoc -r googlemock/docs/*
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/gtest-1.8.1-r1.ebuild b/dev-cpp/gtest/gtest-1.8.1-r1.ebuild
new file mode 100644
index 000000000000..030ed3477e90
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.8.1-r1.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python2_7 )
+CMAKE_ECLASS=cmake
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/google/googletest"
+else
+ SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+ S="${WORKDIR}"/googletest-release-${PV}
+fi
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9999-fix-gcc6-undefined-behavior.patch
+ "${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
+)
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i -e '/set(cxx_base_flags /s:-Werror::' \
+ googletest/cmake/internal_utils.cmake || die "sed failed!"
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DINSTALL_GTEST=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/.
+ docinto googlemock
+ dodoc -r googlemock/docs/.
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/gtest-1.8.1.ebuild b/dev-cpp/gtest/gtest-1.8.1.ebuild
new file mode 100644
index 000000000000..4c66697b04aa
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.8.1.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python2_7 )
+
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/google/googletest"
+else
+ SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
+ S="${WORKDIR}"/googletest-release-${PV}
+fi
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9999-fix-gcc6-undefined-behavior.patch
+ "${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
+)
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake-utils_src_prepare
+
+ sed -i -e '/set(cxx_base_flags /s:-Werror::' \
+ googletest/cmake/internal_utils.cmake || die "sed failed!"
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DINSTALL_GTEST=ON
+ -DBUILD_SHARED_LIBS=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake-utils_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/.
+ docinto googlemock
+ dodoc -r googlemock/docs/.
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/gtest-1.9.0_pre20190607.ebuild b/dev-cpp/gtest/gtest-1.9.0_pre20190607.ebuild
new file mode 100644
index 000000000000..9aa2139201bd
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.9.0_pre20190607.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python2_7 )
+
+CMAKE_ECLASS=cmake
+GOOGLETEST_COMMIT=da10da05c262af0a9e8fa91789a272a3dec67655
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/google/googletest"
+else
+ if [[ -z ${GOOGLETEST_COMMIT} ]]; then
+ MY_PV=release-${PV}
+ else
+ MY_PV=${GOOGLETEST_COMMIT}
+ fi
+ SRC_URI="https://github.com/google/googletest/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
+ S="${WORKDIR}"/googletest-${MY_PV}
+fi
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.0_pre20190607-increase-clone-stack-size.patch
+)
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i -e '/set(cxx_base_flags /s:-Werror::' \
+ googletest/cmake/internal_utils.cmake || die "sed failed!"
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DINSTALL_GTEST=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/.
+ docinto googlemock
+ dodoc -r googlemock/docs/.
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/gtest-9999.ebuild b/dev-cpp/gtest/gtest-9999.ebuild
new file mode 100644
index 000000000000..753803041fce
--- /dev/null
+++ b/dev-cpp/gtest/gtest-9999.ebuild
@@ -0,0 +1,79 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python2_7 )
+
+CMAKE_ECLASS=cmake
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/google/googletest"
+else
+ if [[ -z ${GOOGLETEST_COMMIT} ]]; then
+ URI_PV=v${MY_PV:-${PV}}
+ else
+ URI_PV=${MY_PV:=${GOOGLETEST_COMMIT}}
+ fi
+ SRC_URI="https://github.com/google/googletest/archive/${URI_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+ S="${WORKDIR}"/googletest-${MY_PV}
+fi
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.0_pre20190607-increase-clone-stack-size.patch
+)
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i -e '/set(cxx_base_flags /s:-Werror::' \
+ googletest/cmake/internal_utils.cmake || die "sed failed!"
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_GMOCK=ON
+ -DINSTALL_GTEST=ON
+
+ # tests
+ -Dgmock_build_tests=$(usex test)
+ -Dgtest_build_tests=$(usex test)
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ cmake_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ if use doc; then
+ docinto googletest
+ dodoc -r googletest/docs/.
+ docinto googlemock
+ dodoc -r googlemock/docs/.
+ fi
+
+ if use examples; then
+ docinto examples
+ dodoc googletest/samples/*.{cc,h}
+ fi
+}
diff --git a/dev-cpp/gtest/metadata.xml b/dev-cpp/gtest/metadata.xml
new file mode 100644
index 000000000000..a1ad0272994b
--- /dev/null
+++ b/dev-cpp/gtest/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>plevine457@gmail.com</email>
+ <name>Peter Levine</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <upstream>
+ <doc lang="en">https://github.com/google/googletest/tree/master/googletest/docs</doc>
+ <remote-id type="github">google/googletest</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>