From 1ffc1b569dc27ef7b70c1861d5913516722947de Mon Sep 17 00:00:00 2001 From: Arkady Shapkin Date: Wed, 14 Nov 2018 22:05:11 +0300 Subject: [PATCH] [gtest] Update to version 1.8.1 (#4220) * [gtest] Update to version 1.8.1 * [gtest] Fix typo in cmake adjustment code. Revert usage to follow CMake official guidelines. --- ...eatures-for-VS2015-fix-appveyor-fail.patch | 180 ------------------ ports/gtest/CONTROL | 2 +- ports/gtest/portfile.cmake | 61 +++--- ports/gtest/usage | 2 +- 4 files changed, 29 insertions(+), 216 deletions(-) delete mode 100644 ports/gtest/0001-Enable-C-11-features-for-VS2015-fix-appveyor-fail.patch diff --git a/ports/gtest/0001-Enable-C-11-features-for-VS2015-fix-appveyor-fail.patch b/ports/gtest/0001-Enable-C-11-features-for-VS2015-fix-appveyor-fail.patch deleted file mode 100644 index b5082a1b20..0000000000 --- a/ports/gtest/0001-Enable-C-11-features-for-VS2015-fix-appveyor-fail.patch +++ /dev/null @@ -1,180 +0,0 @@ -diff --git a/.gitignore b/.gitignore -index ce310bc..08a67cd 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -1,2 +1,15 @@ - # Ignore CI build directory - build/ -+_build/ -+ -+# Visual Studio files -+*.sdf -+*.opensdf -+*.VC.opendb -+*.suo -+*.user -+_ReSharper.Caches/ -+Win32-Debug/ -+Win32-Release/ -+x64-Debug/ -+x64-Release/ -diff --git a/googlemock/test/gmock-matchers_test.cc b/googlemock/test/gmock-matchers_test.cc -index 9f62c3d..eaba362 100644 ---- a/googlemock/test/gmock-matchers_test.cc -+++ b/googlemock/test/gmock-matchers_test.cc -@@ -58,6 +58,11 @@ - # include // NOLINT - #endif - -+// Disable MSVC warning: "decorated name length exceeded, name was truncated". -+#ifdef _MSC_VER -+# pragma warning(disable:4503) -+#endif -+ - namespace testing { - - namespace internal { -diff --git a/googletest/include/gtest/internal/gtest-port.h b/googletest/include/gtest/internal/gtest-port.h -index 0094ed5..09779fa 100644 ---- a/googletest/include/gtest/internal/gtest-port.h -+++ b/googletest/include/gtest/internal/gtest-port.h -@@ -323,7 +323,7 @@ - // -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a - // value for __cplusplus, and recent versions of clang, gcc, and - // probably other compilers set that too in C++11 mode. --# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L -+# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L || _MSC_VER >= 1900 - // Compiling in at least C++11 mode. - # define GTEST_LANG_CXX11 1 - # else -@@ -355,12 +355,16 @@ - #if GTEST_STDLIB_CXX11 - # define GTEST_HAS_STD_BEGIN_AND_END_ 1 - # define GTEST_HAS_STD_FORWARD_LIST_ 1 --# define GTEST_HAS_STD_FUNCTION_ 1 -+# if !defined(_MSC_VER) || (_MSC_FULL_VER >= 190023824) // works only with VS2015U2 and better -+# define GTEST_HAS_STD_FUNCTION_ 1 -+# endif - # define GTEST_HAS_STD_INITIALIZER_LIST_ 1 - # define GTEST_HAS_STD_MOVE_ 1 - # define GTEST_HAS_STD_SHARED_PTR_ 1 - # define GTEST_HAS_STD_TYPE_TRAITS_ 1 - # define GTEST_HAS_STD_UNIQUE_PTR_ 1 -+# define GTEST_HAS_UNORDERED_MAP_ 1 -+# define GTEST_HAS_UNORDERED_SET_ 1 - #endif - - // C++11 specifies that provides std::tuple. -@@ -616,7 +620,7 @@ struct _RTL_CRITICAL_SECTION; - // Determines if hash_map/hash_set are available. - // Only used for testing against those containers. - #if !defined(GTEST_HAS_HASH_MAP_) --# if _MSC_VER -+# if defined(_MSC_VER) && (_MSC_VER < 1900) - # define GTEST_HAS_HASH_MAP_ 1 // Indicates that hash_map is available. - # define GTEST_HAS_HASH_SET_ 1 // Indicates that hash_set is available. - # endif // _MSC_VER -@@ -629,6 +633,9 @@ struct _RTL_CRITICAL_SECTION; - # if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) - // STLport, provided with the Android NDK, has neither or . - # define GTEST_HAS_TR1_TUPLE 0 -+# elif defined(_MSC_VER) && (_MSC_VER >= 1910) -+// Prevent `warning C4996: 'std::tr1': warning STL4002: The non-Standard std::tr1 namespace and TR1-only machinery are deprecated and will be REMOVED.` -+# define GTEST_HAS_TR1_TUPLE 0 - # else - // The user didn't tell us not to do it, so we assume it's OK. - # define GTEST_HAS_TR1_TUPLE 1 -@@ -813,7 +820,7 @@ using ::std::tuple_size; - // value-parameterized tests are enabled. The implementation doesn't - // work on Sun Studio since it doesn't understand templated conversion - // operators. --#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) -+#if GTEST_HAS_PARAM_TEST && (GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_) && !defined(__SUNPRO_CC) - # define GTEST_HAS_COMBINE 1 - #endif - -diff --git a/googletest/test/gtest-printers_test.cc b/googletest/test/gtest-printers_test.cc -index 3e97cc2..6320563 100644 ---- a/googletest/test/gtest-printers_test.cc -+++ b/googletest/test/gtest-printers_test.cc -@@ -51,10 +51,15 @@ - #include "gtest/gtest.h" - - // hash_map and hash_set are available under Visual C++, or on Linux. --#if GTEST_HAS_HASH_MAP_ -+#if GTEST_HAS_UNORDERED_MAP_ -+# include // NOLINT -+#elif GTEST_HAS_HASH_MAP_ - # include // NOLINT - #endif // GTEST_HAS_HASH_MAP_ --#if GTEST_HAS_HASH_SET_ -+ -+#if GTEST_HAS_UNORDERED_SET_ -+# include // NOLINT -+#elif GTEST_HAS_HASH_SET_ - # include // NOLINT - #endif // GTEST_HAS_HASH_SET_ - -@@ -217,18 +222,46 @@ using ::testing::internal::string; - // The hash_* classes are not part of the C++ standard. STLport - // defines them in namespace std. MSVC defines them in ::stdext. GCC - // defines them in ::. -+#if GTEST_HAS_UNORDERED_MAP_ -+ -+#define GTEST_HAS_HASH_MAP_ 1 -+template -+using hash_map = ::std::unordered_map; -+template -+using hash_multimap = ::std::unordered_multimap; -+ -+#elif GTEST_HAS_HASH_MAP_ -+ - #ifdef _STLP_HASH_MAP // We got from STLport. - using ::std::hash_map; --using ::std::hash_set; - using ::std::hash_multimap; --using ::std::hash_multiset; - #elif _MSC_VER - using ::stdext::hash_map; --using ::stdext::hash_set; - using ::stdext::hash_multimap; -+#endif -+ -+#endif -+ -+#if GTEST_HAS_UNORDERED_SET_ -+ -+#define GTEST_HAS_HASH_SET_ 1 -+template -+using hash_set = ::std::unordered_set; -+template -+using hash_multiset = ::std::unordered_multiset; -+ -+#elif GTEST_HAS_HASH_SET_ -+ -+#ifdef _STLP_HASH_MAP // We got from STLport. -+using ::std::hash_set; -+using ::std::hash_multiset; -+#elif _MSC_VER -+using ::stdext::hash_set; - using ::stdext::hash_multiset; - #endif - -+#endif -+ - // Prints a value to a string using the universal value printer. This - // is a helper for testing UniversalPrinter::Print() for various types. - template -diff --git a/googletest/test/gtest_catch_exceptions_test_.cc b/googletest/test/gtest_catch_exceptions_test_.cc -index d0fc82c..c6d953c 100644 ---- a/googletest/test/gtest_catch_exceptions_test_.cc -+++ b/googletest/test/gtest_catch_exceptions_test_.cc -@@ -138,7 +138,7 @@ TEST_F(CxxExceptionInConstructorTest, ThrowsExceptionInConstructor) { - } - - // Exceptions in destructors are not supported in C++11. --#if !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L -+#if !GTEST_LANG_CXX11 - class CxxExceptionInDestructorTest : public Test { - public: - static void TearDownTestCase() { diff --git a/ports/gtest/CONTROL b/ports/gtest/CONTROL index fbb19eaf64..5b3a7c4658 100644 --- a/ports/gtest/CONTROL +++ b/ports/gtest/CONTROL @@ -1,3 +1,3 @@ Source: gtest -Version: 1.8.0-9 +Version: 1.8.1-1 Description: GoogleTest and GoogleMock testing frameworks. diff --git a/ports/gtest/portfile.cmake b/ports/gtest/portfile.cmake index 87b3ce9070..4b0857de48 100644 --- a/ports/gtest/portfile.cmake +++ b/ports/gtest/portfile.cmake @@ -7,12 +7,11 @@ endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO google/googletest - REF ba96d0b1161f540656efdaed035b3c062b60e006 - SHA512 ce78098f973b45f4a177db387c42a56d5ea34407a2af278760b850c326e8450760a58991d62a5408f5df79f89fefd10fee71745b7e8669b2a6f74fa63a259600 + REF release-1.8.1 + SHA512 e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7 HEAD_REF master - PATCHES - ${CMAKE_CURRENT_LIST_DIR}/0001-Enable-C-11-features-for-VS2015-fix-appveyor-fail.patch - ${CMAKE_CURRENT_LIST_DIR}/0002-Fix-z7-override.patch + PATCHES + ${CMAKE_CURRENT_LIST_DIR}/0002-Fix-z7-override.patch ) string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" GTEST_FORCE_SHARED_CRT) @@ -20,16 +19,15 @@ string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" GTEST_FORCE_SHARED_CRT) vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA - OPTIONS + OPTIONS -DBUILD_GMOCK=ON -DBUILD_GTEST=ON -DCMAKE_DEBUG_POSTFIX=d -Dgtest_force_shared_crt=${GTEST_FORCE_SHARED_CRT} ) -set(ENV{_CL_} "/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING") - vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/GTest) file( INSTALL @@ -50,35 +48,30 @@ file( file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(INSTALL ${SOURCE_PATH}/googletest/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/gtest RENAME copyright) -# This block will be unnecessary in googletest 1.9.0 (or later). -# These dll files are installed in ../bin directory by default settings. -if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/gtest.dll) - file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin/) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest.dll ${CURRENT_PACKAGES_DIR}/bin/gtest.dll) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest_main.dll ${CURRENT_PACKAGES_DIR}/bin/gtest_main.dll) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock.dll ${CURRENT_PACKAGES_DIR}/bin/gmock.dll) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock_main.dll ${CURRENT_PACKAGES_DIR}/bin/gmock_main.dll) -endif() -if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/gtestd.dll) - file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin/) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtestd.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gtestd.dll) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_maind.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gtest_maind.dll) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmockd.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gmockd.dll) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock_maind.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gmock_maind.dll) -endif() -if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/gtest.lib) - file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gtest.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gtest_main.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gmock.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gmock_main.lib) -endif() -if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/gtestd.lib) +if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_maind.lib) file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtestd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gtestd.lib) file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_maind.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gtest_maind.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmockd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gmockd.lib) file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock_maind.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gmock_maind.lib) + + file(READ ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-debug.cmake DEBUG_CONFIG) + string(REPLACE "\${_IMPORT_PREFIX}/debug/lib/gtest_maind.lib" + "\${_IMPORT_PREFIX}/debug/lib/manual-link/gtest_maind.lib" DEBUG_CONFIG "${DEBUG_CONFIG}") + string(REPLACE "\${_IMPORT_PREFIX}/debug/lib/gmock_maind.lib" + "\${_IMPORT_PREFIX}/debug/lib/manual-link/gmock_maind.lib" DEBUG_CONFIG "${DEBUG_CONFIG}") + file(WRITE ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-debug.cmake "${DEBUG_CONFIG}") +endif() + +if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/gtest_main.lib) + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link) + file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gtest_main.lib) + file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gmock_main.lib) + + file(READ ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-release.cmake RELEASE_CONFIG) + string(REPLACE "\${_IMPORT_PREFIX}/lib/gtest_main.lib" + "\${_IMPORT_PREFIX}/lib/manual-link/gtest_main.lib" RELEASE_CONFIG "${RELEASE_CONFIG}") + string(REPLACE "\${_IMPORT_PREFIX}/lib/gmock_main.lib" + "\${_IMPORT_PREFIX}/lib/manual-link/gmock_main.lib" RELEASE_CONFIG "${RELEASE_CONFIG}") + file(WRITE ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-release.cmake "${RELEASE_CONFIG}") endif() vcpkg_copy_pdbs() diff --git a/ports/gtest/usage b/ports/gtest/usage index fa226ceede..d40782e0ef 100644 --- a/ports/gtest/usage +++ b/ports/gtest/usage @@ -1,6 +1,6 @@ The package gtest is compatible with built-in CMake targets: enable_testing() - find_package(GTest REQUIRED) + find_package(GTest MODULE REQUIRED) target_link_libraries(main PRIVATE GTest::GTest GTest::Main) add_test(AllTestsInMain main)