aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Christensen <philc@microsoft.com>2019-08-23 10:41:01 -0700
committerGitHub <noreply@github.com>2019-08-23 10:41:01 -0700
commitcf447c050c734fc71e5254ea9e05e1bc4a9d208d (patch)
tree1c008b6cfae6a72ac53bb5c0aa738cf74e70a234
parentbc5a1bf1a00d875da0440bd5dc5f80e19919688e (diff)
parentf9b5fe08866130156c534c5055f2b47e9e7313cf (diff)
downloadvcpkg-cf447c050c734fc71e5254ea9e05e1bc4a9d208d.tar.gz
vcpkg-cf447c050c734fc71e5254ea9e05e1bc4a9d208d.zip
Merge pull request #7316 from JackBoosY/dev/jack/4167
[gtest]Re-fix port_main/port_maind libraries path and add gmock cmake files.
-rw-r--r--ports/gtest/CONTROL2
-rw-r--r--ports/gtest/fix-gmock-cmake.patch30
-rw-r--r--ports/gtest/fix-main-lib-path.patch68
-rw-r--r--ports/gtest/portfile.cmake11
-rw-r--r--ports/gtest/usage5
5 files changed, 114 insertions, 2 deletions
diff --git a/ports/gtest/CONTROL b/ports/gtest/CONTROL
index 97b5ad3a8..203c90aca 100644
--- a/ports/gtest/CONTROL
+++ b/ports/gtest/CONTROL
@@ -1,4 +1,4 @@
Source: gtest
-Version: 2019-08-14
+Version: 2019-08-14-1
Homepage: https://github.com/google/googletest
Description: GoogleTest and GoogleMock testing frameworks.
diff --git a/ports/gtest/fix-gmock-cmake.patch b/ports/gtest/fix-gmock-cmake.patch
new file mode 100644
index 000000000..6bb963a2b
--- /dev/null
+++ b/ports/gtest/fix-gmock-cmake.patch
@@ -0,0 +1,30 @@
+diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
+index 9d135ff..0be8a22 100644
+--- a/googlemock/CMakeLists.txt
++++ b/googlemock/CMakeLists.txt
+@@ -66,6 +66,25 @@ endif()
+ # call it again here.
+ config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake
+
++# Create the CMake package file descriptors.
++if (INSTALL_GTEST)
++ include(CMakePackageConfigHelpers)
++ set(cmake_package_name GMock)
++ set(targets_export_name ${cmake_package_name}Targets CACHE INTERNAL "")
++ set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated" CACHE INTERNAL "")
++ set(cmake_files_install_dir "share/${cmake_package_name}")
++ set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake")
++ write_basic_package_version_file(${version_file} COMPATIBILITY AnyNewerVersion)
++ install(EXPORT ${targets_export_name}
++ NAMESPACE ${cmake_package_name}::
++ DESTINATION ${cmake_files_install_dir})
++ set(config_file "${generated_dir}/${cmake_package_name}Config.cmake")
++ configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in"
++ "${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir})
++ install(FILES ${version_file} ${config_file}
++ DESTINATION ${cmake_files_install_dir})
++endif()
++
+ # Adds Google Mock's and Google Test's header directories to the search path.
+ set(gmock_build_include_dirs
+ "${gmock_SOURCE_DIR}/include"
diff --git a/ports/gtest/fix-main-lib-path.patch b/ports/gtest/fix-main-lib-path.patch
new file mode 100644
index 000000000..e07806eec
--- /dev/null
+++ b/ports/gtest/fix-main-lib-path.patch
@@ -0,0 +1,68 @@
+diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
+index 3e72d75..9d135ff 100644
+--- a/googlemock/CMakeLists.txt
++++ b/googlemock/CMakeLists.txt
+@@ -115,7 +115,8 @@ endif()
+ ########################################################################
+ #
+ # Install rules
+-install_project(gmock gmock_main)
++install_project(gmock)
++install_project(gmock_main)
+
+ ########################################################################
+ #
+diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt
+index e33718b..a049c2c 100644
+--- a/googletest/CMakeLists.txt
++++ b/googletest/CMakeLists.txt
+@@ -136,7 +136,8 @@ target_link_libraries(gtest_main PUBLIC gtest)
+ ########################################################################
+ #
+ # Install rules
+-install_project(gtest gtest_main)
++install_project(gtest)
++install_project(gtest_main)
+
+ ########################################################################
+ #
+diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake
+index 69defc8..cf7295a 100644
+--- a/googletest/cmake/internal_utils.cmake
++++ b/googletest/cmake/internal_utils.cmake
+@@ -317,11 +317,15 @@ function(install_project)
+ install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
+ 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}
+ 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})
+@@ -330,7 +334,7 @@ function(install_project)
+ get_target_property(t_pdb_output_directory ${t} PDB_OUTPUT_DIRECTORY)
+ install(FILES
+ "${t_pdb_output_directory}/\${CMAKE_INSTALL_CONFIG_NAME}/$<$<CONFIG:Debug>:${t_pdb_name_debug}>$<$<NOT:$<CONFIG:Debug>>:${t_pdb_name}>.pdb"
+- DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ DESTINATION ${LIB_INSTALL_DST}
+ OPTIONAL)
+ endforeach()
+ endif()
+@@ -340,7 +344,7 @@ function(install_project)
+ configure_file("${PROJECT_SOURCE_DIR}/cmake/${t}.pc.in"
+ "${configured_pc}" @ONLY)
+ install(FILES "${configured_pc}"
+- DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
++ DESTINATION "${LIB_INSTALL_DST}/pkgconfig")
+ endforeach()
+ endif()
+ endfunction()
diff --git a/ports/gtest/portfile.cmake b/ports/gtest/portfile.cmake
index c6fd0162c..2c36341ef 100644
--- a/ports/gtest/portfile.cmake
+++ b/ports/gtest/portfile.cmake
@@ -11,7 +11,9 @@ vcpkg_from_github(
SHA512 fc874a7977f11be58dc63993b520b4ae6ca43654fb5250c8b56df62a21f4dca8fcbdc81dfa106374b2bb7c59bc88952fbfc0e3ae4c7d63fdb502afbaeb39c822
HEAD_REF master
PATCHES
- ${CMAKE_CURRENT_LIST_DIR}/0002-Fix-z7-override.patch
+ 0002-Fix-z7-override.patch
+ fix-main-lib-path.patch
+ fix-gmock-cmake.patch
)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" GTEST_FORCE_SHARED_CRT)
@@ -28,6 +30,7 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/GTest)
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/GMock)
file(
INSTALL
@@ -49,6 +52,12 @@ file(
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(INSTALL ${SOURCE_PATH}/googletest/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/gtest RENAME copyright)
+# Install gmock cmake files.
+file(GLOB GMOCK_CMAKE_FILES ${CURRENT_PACKAGES_DIR}/share/gtest/GMock*.cmake)
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/gmock)
+file(COPY ${GMOCK_CMAKE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/share/gmock)
+file(REMOVE ${GMOCK_CMAKE_FILES})
+
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/gtest_maind.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gtest_maind.lib)
diff --git a/ports/gtest/usage b/ports/gtest/usage
index d40782e0e..9ba65996e 100644
--- a/ports/gtest/usage
+++ b/ports/gtest/usage
@@ -1,6 +1,11 @@
The package gtest is compatible with built-in CMake targets:
enable_testing()
+
find_package(GTest MODULE REQUIRED)
target_link_libraries(main PRIVATE GTest::GTest GTest::Main)
+
+ find_package(GMock CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE GMock::gmock GMock::gmock_main)
+
add_test(AllTestsInMain main)