diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/gtest | |
Diffstat (limited to 'vcpkg/ports/gtest')
| -rw-r--r-- | vcpkg/ports/gtest/001-fix-UWP-death-test.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/gtest/clang-tidy-no-lint.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/gtest/fix-main-lib-path.patch | 64 | ||||
| -rw-r--r-- | vcpkg/ports/gtest/portfile.cmake | 62 | ||||
| -rw-r--r-- | vcpkg/ports/gtest/usage | 8 | ||||
| -rw-r--r-- | vcpkg/ports/gtest/vcpkg.json | 18 |
6 files changed, 178 insertions, 0 deletions
diff --git a/vcpkg/ports/gtest/001-fix-UWP-death-test.patch b/vcpkg/ports/gtest/001-fix-UWP-death-test.patch new file mode 100644 index 0000000..0348490 --- /dev/null +++ b/vcpkg/ports/gtest/001-fix-UWP-death-test.patch @@ -0,0 +1,13 @@ +diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc +index a64e887c..45ff24c3 100644 +--- a/googletest/src/gtest.cc ++++ b/googletest/src/gtest.cc +@@ -5434,7 +5434,7 @@ int UnitTest::Run() { + // used for the duration of the program. + impl()->set_catch_exceptions(GTEST_FLAG_GET(catch_exceptions)); + +-#ifdef GTEST_OS_WINDOWS ++#if defined(GTEST_OS_WINDOWS) && defined(GTEST_HAS_DEATH_TEST) + // Either the user wants Google Test to catch exceptions thrown by the + // tests or this is executing in the context of death test child + // process. In either case the user does not want to see pop-up dialogs diff --git a/vcpkg/ports/gtest/clang-tidy-no-lint.patch b/vcpkg/ports/gtest/clang-tidy-no-lint.patch new file mode 100644 index 0000000..588a1d6 --- /dev/null +++ b/vcpkg/ports/gtest/clang-tidy-no-lint.patch @@ -0,0 +1,13 @@ +diff --git a/googletest/include/gtest/gtest-matchers.h b/googletest/include/gtest/gtest-matchers.h +index 2bd3dcf6..12cd60f6 100644 +--- a/googletest/include/gtest/gtest-matchers.h ++++ b/googletest/include/gtest/gtest-matchers.h +@@ -403,6 +403,7 @@ class MatcherBase : private MatcherDescriberInterface { + }; + + void Destroy() { ++ // NOLINTNEXTLINE + if (IsShared() && buffer_.shared->Unref()) { + vtable_->shared_destroy(buffer_.shared); + } + diff --git a/vcpkg/ports/gtest/fix-main-lib-path.patch b/vcpkg/ports/gtest/fix-main-lib-path.patch new file mode 100644 index 0000000..2cfd2c4 --- /dev/null +++ b/vcpkg/ports/gtest/fix-main-lib-path.patch @@ -0,0 +1,64 @@ +diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt +index 99b2411f..74610b12 100644 +--- a/googlemock/CMakeLists.txt ++++ b/googlemock/CMakeLists.txt +@@ -112,8 +112,9 @@ target_include_directories(gmock_main SYSTEM INTERFACE + + ######################################################################## + # +-# Install rules. +-install_project(gmock gmock_main) ++# Install rules ++install_project(gmock) ++install_project(gmock_main) + + ######################################################################## + # +diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt +index dce6a7c9..d8faf644 100644 +--- a/googletest/CMakeLists.txt ++++ b/googletest/CMakeLists.txt +@@ -154,8 +154,9 @@ target_link_libraries(gtest_main PUBLIC gtest) + + ######################################################################## + # +-# Install rules. +-install_project(gtest gtest_main) ++# Install rules ++install_project(gtest) ++install_project(gtest_main) + + ######################################################################## + # +diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake +index 580ac1cb..78a5b659 100644 +--- a/googletest/cmake/internal_utils.cmake ++++ b/googletest/cmake/internal_utils.cmake +@@ -302,12 +302,16 @@ function(install_project) + COMPONENT "${PROJECT_NAME}" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + # Install the project targets. ++ set (LIB_INSTALL_DST ${CMAKE_INSTALL_LIBDIR}) ++ if (${ARGN} MATCHES "_main") ++ set (LIB_INSTALL_DST ${CMAKE_INSTALL_LIBDIR}/manual-link) ++ endif() + install(TARGETS ${ARGN} + EXPORT ${targets_export_name} + COMPONENT "${PROJECT_NAME}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") ++ ARCHIVE DESTINATION "${LIB_INSTALL_DST}" ++ LIBRARY DESTINATION "${LIB_INSTALL_DST}") + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + # Install PDBs. + foreach(t ${ARGN}) +@@ -317,7 +321,7 @@ function(install_project) + install(FILES + "${t_pdb_output_directory}/\${CMAKE_INSTALL_CONFIG_NAME}/$<$<CONFIG:Debug>:${t_pdb_name_debug}>$<$<NOT:$<CONFIG:Debug>>:${t_pdb_name}>.pdb" + COMPONENT "${PROJECT_NAME}" +- DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ DESTINATION ${LIB_INSTALL_DST} + OPTIONAL) + endforeach() + endif() diff --git a/vcpkg/ports/gtest/portfile.cmake b/vcpkg/ports/gtest/portfile.cmake new file mode 100644 index 0000000..eb03577 --- /dev/null +++ b/vcpkg/ports/gtest/portfile.cmake @@ -0,0 +1,62 @@ +if (EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git") + file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src) +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO google/googletest + REF "v${VERSION}" + SHA512 0f57e9ef06925e5b7722df1eb92ef5850e8dce79220ea16a8aaff586a71c0b01460ef1713649ee24ffedb2e6ad5a51e9198c5a5ae1b2789e43feb1f494e7d45c + HEAD_REF main + PATCHES + 001-fix-UWP-death-test.patch + clang-tidy-no-lint.patch + fix-main-lib-path.patch +) + +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" GTEST_FORCE_SHARED_CRT) + +vcpkg_cmake_configure( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS + -DBUILD_GMOCK=ON + -Dgtest_force_shared_crt=${GTEST_FORCE_SHARED_CRT} +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/GTest) + +file( + INSTALL + "${SOURCE_PATH}/googletest/src/gtest.cc" + "${SOURCE_PATH}/googletest/src/gtest_main.cc" + "${SOURCE_PATH}/googletest/src/gtest-all.cc" + "${SOURCE_PATH}/googletest/src/gtest-assertion-result.cc" + "${SOURCE_PATH}/googletest/src/gtest-death-test.cc" + "${SOURCE_PATH}/googletest/src/gtest-filepath.cc" + "${SOURCE_PATH}/googletest/src/gtest-internal-inl.h" + "${SOURCE_PATH}/googletest/src/gtest-matchers.cc" + "${SOURCE_PATH}/googletest/src/gtest-port.cc" + "${SOURCE_PATH}/googletest/src/gtest-printers.cc" + "${SOURCE_PATH}/googletest/src/gtest-test-part.cc" + "${SOURCE_PATH}/googletest/src/gtest-typed-test.cc" + DESTINATION + ${CURRENT_PACKAGES_DIR}/src +) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +vcpkg_fixup_pkgconfig() +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/gmock_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/gtest_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link") +endif() +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gmock_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gtest_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link") +endif() +vcpkg_copy_pdbs() + +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/vcpkg/ports/gtest/usage b/vcpkg/ports/gtest/usage new file mode 100644 index 0000000..3ed1944 --- /dev/null +++ b/vcpkg/ports/gtest/usage @@ -0,0 +1,8 @@ +The package gtest is compatible with built-in CMake targets:
+
+ enable_testing()
+
+ find_package(GTest CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main)
+
+ add_test(AllTestsInMain main)
diff --git a/vcpkg/ports/gtest/vcpkg.json b/vcpkg/ports/gtest/vcpkg.json new file mode 100644 index 0000000..b3f30d2 --- /dev/null +++ b/vcpkg/ports/gtest/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "gtest", + "version-semver": "1.17.0", + "port-version": 2, + "description": "Google Testing and Mocking Framework", + "homepage": "https://github.com/google/googletest", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |