Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions distros/humble/patch/ros2-ament-cmake-gmock.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
diff --git a/ament_cmake_gmock-extras.cmake b/ament_cmake_gmock-extras.cmake
index 631d059..2dc3846 100644
--- a/ament_cmake_gmock-extras.cmake
+++ b/ament_cmake_gmock-extras.cmake
@@ -20,101 +20,12 @@ macro(_ament_cmake_gmock_find_gmock)
set(_AMENT_CMAKE_GMOCK_FIND_GMOCK TRUE)

find_package(ament_cmake_test QUIET REQUIRED)
- find_package(gmock_vendor QUIET)
-
- # if gmock sources were not found in a previous run
- if(NOT GMOCK_FROM_SOURCE_FOUND)
- # search path for gmock includes and sources
- set(_search_path_include "")
- set(_search_path_src "")
-
- # option() consider environment variable to find gmock
- if(NOT $ENV{GMOCK_DIR} STREQUAL "")
- list(APPEND _search_path_include "$ENV{GMOCK_DIR}/include/gmock")
- list(APPEND _search_path_src "$ENV{GMOCK_DIR}/src")
- endif()
-
- # check to system installed path (i.e. on Ubuntu)
- set(_search_path_include "/usr/include/gmock")
- set(_search_path_src "/usr/src/gmock/src")
-
- # check gmock_vendor path, prefer this version over a system installed
- if(gmock_vendor_FOUND AND gmock_vendor_BASE_DIR)
- list(INSERT _search_path_include 0 "${gmock_vendor_BASE_DIR}/include/gmock")
- list(INSERT _search_path_src 0 "${gmock_vendor_BASE_DIR}/src")
- endif()
-
- find_file(_gmock_header_file "gmock.h"
- PATHS ${_search_path_include}
- NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
- )
- find_file(_gmock_src_file
- "gmock.cc"
- "gmock-all.cc"
- PATHS ${_search_path_src}
- NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
- )
-
- if(_gmock_header_file AND _gmock_src_file)
- # set from-source variables
- set(GMOCK_FROM_SOURCE_FOUND TRUE CACHE INTERNAL "")
-
- get_filename_component(_gmock_base_dir "${_gmock_src_file}" PATH)
- get_filename_component(_gmock_base_dir "${_gmock_base_dir}" PATH)
- set(GMOCK_FROM_SOURCE_BASE_DIR "${_gmock_base_dir}" CACHE INTERNAL "")
-
- get_filename_component(_gmock_include_dir "${_gmock_header_file}" PATH)
- get_filename_component(_gmock_include_dir ${_gmock_include_dir} PATH)
- set(GMOCK_FROM_SOURCE_INCLUDE_DIRS "${_gmock_include_dir}" CACHE INTERNAL "")
-
- set(GMOCK_FROM_SOURCE_LIBRARY_DIRS "${CMAKE_BINARY_DIR}/gmock" CACHE INTERNAL "")
-
- set(GMOCK_FROM_SOURCE_LIBRARIES "gmock" CACHE INTERNAL "")
- set(GMOCK_FROM_SOURCE_MAIN_LIBRARIES "gmock_main" CACHE INTERNAL "")
- endif()
- endif()
-
- if(GMOCK_FROM_SOURCE_FOUND)
- message(STATUS "Found gmock sources under '${GMOCK_FROM_SOURCE_BASE_DIR}': "
- "C++ tests using 'Google Mock' will be built")
-
- # if gmock is already a target, do not add again
- # this can happen when ament_add_gmock() is called from a subdirectory
- if(NOT TARGET gmock)
- # add CMakeLists.txt from gmock dir
- add_subdirectory("${GMOCK_FROM_SOURCE_BASE_DIR}" "${CMAKE_BINARY_DIR}/gmock")
-
- # mark gmock targets with EXCLUDE_FROM_ALL to only build
- # when tests are built which depend on them
- set_target_properties(gmock gmock_main PROPERTIES EXCLUDE_FROM_ALL 1)
- endif()
-
- # set the same variables as find_package() would set
- # but do NOT set GMOCK_FOUND in the cache when using gmock from source
- # since the subdirectory must always be added to add the gmock targets
- set(GMOCK_FOUND ${GMOCK_FROM_SOURCE_FOUND})
- set(GMOCK_INCLUDE_DIRS ${GMOCK_FROM_SOURCE_INCLUDE_DIRS})
- set(GMOCK_LIBRARY_DIRS ${GMOCK_FROM_SOURCE_LIBRARY_DIRS})
- set(GMOCK_LIBRARIES ${GMOCK_FROM_SOURCE_LIBRARIES})
- set(GMOCK_MAIN_LIBRARIES ${GMOCK_FROM_SOURCE_MAIN_LIBRARIES})
-
- if(GMOCK_FROM_SOURCE_BASE_DIR STREQUAL gmock_vendor_BASE_DIR)
- # the GMock headers require the GTest headers
- find_package(ament_cmake_gtest REQUIRED)
- ament_find_gtest()
- list(APPEND GMOCK_INCLUDE_DIRS ${GTEST_INCLUDE_DIRS})
- endif()
- endif()
-
- if(NOT GMOCK_FOUND)
- message(WARNING
- "'gmock' not found, C++ tests using 'Google Mock' can not be built. "
- "Please install the 'Google Mock' headers globally in your system to "
- "enable these tests (e.g. on Ubuntu/Debian install the package "
- "'google-mock') or get the ament package 'gmock_vendor'")
- endif()
+ # Not a typo. GTest provides GMock
+ find_package(GTest REQUIRED)
+ ament_find_gmock()
endif()
endmacro()

+
include("${ament_cmake_gmock_DIR}/ament_add_gmock.cmake")
include("${ament_cmake_gmock_DIR}/ament_find_gmock.cmake")
diff --git a/cmake/ament_find_gmock.cmake b/cmake/ament_find_gmock.cmake
index 58802b7..5e4d1fe 100644
--- a/cmake/ament_find_gmock.cmake
+++ b/cmake/ament_find_gmock.cmake
@@ -22,6 +22,7 @@
# ``GMOCK_LIBRARIES`` or ``GMOCK_MAIN_LIBRARIES``
#
# @public
+# @deprecated
#
macro(ament_find_gmock)
set(_ARGN "${ARGN}")
@@ -29,5 +30,9 @@ macro(ament_find_gmock)
message(FATAL_ERROR
"ament_find_gmock() called with unused arguments: ${_ARGN}")
endif()
- _ament_cmake_gmock_find_gmock()
+ # Not a typo. GMock is provided by GTest package
+ find_package(GTest REQUIRED)
+ set(GMOCK_FOUND ${GTest_FOUND})
+ set(GMOCK_LIBRARIES GTest::gmock GTest::gtest)
+ set(GMOCK_MAIN_LIBRARIES GTest::gmock_main)
endmacro()
diff --git a/package.xml b/package.xml
index 3e6ddee..dc0128e 100644
--- a/package.xml
+++ b/package.xml
@@ -16,8 +16,7 @@

<buildtool_export_depend>ament_cmake_gtest</buildtool_export_depend>
<buildtool_export_depend>ament_cmake_test</buildtool_export_depend>
- <buildtool_export_depend>gmock_vendor</buildtool_export_depend>
- <buildtool_export_depend>google-mock</buildtool_export_depend>
+ <buildtool_export_depend>libgmock-dev</buildtool_export_depend>

<export>
<build_type>ament_cmake</build_type>
152 changes: 152 additions & 0 deletions distros/humble/patch/ros2-ament-cmake-gtest.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
diff --git a/ament_cmake_gtest-extras.cmake b/ament_cmake_gtest-extras.cmake
index c60c1f1..316b8b3 100644
--- a/ament_cmake_gtest-extras.cmake
+++ b/ament_cmake_gtest-extras.cmake
@@ -20,98 +20,8 @@ macro(_ament_cmake_gtest_find_gtest)
set(_AMENT_CMAKE_GTEST_FIND_GTEST TRUE)

find_package(ament_cmake_test QUIET REQUIRED)
-
- # if gtest sources were not found in a previous run
- if(NOT GTEST_FROM_SOURCE_FOUND)
- # search path for gtest includes and sources
- set(_search_path_include "")
- set(_search_path_src "")
-
- # option() consider environment variable to find gtest
- if(NOT $ENV{GTEST_DIR} STREQUAL "")
- list(APPEND _search_path_include "$ENV{GTEST_DIR}/include/gtest")
- list(APPEND _search_path_src "$ENV{GTEST_DIR}/src")
- endif()
-
- # check to system installed path (i.e. on Ubuntu)
- set(_search_path_include "/usr/include/gtest")
- set(_search_path_src "/usr/src/gtest/src")
-
- # check gtest_vendor path, prefer this version over a system installed
- find_package(gtest_vendor QUIET)
- if(gtest_vendor_FOUND AND gtest_vendor_BASE_DIR)
- list(INSERT _search_path_include 0 "${gtest_vendor_BASE_DIR}/include/gtest")
- list(INSERT _search_path_src 0 "${gtest_vendor_BASE_DIR}/src")
- endif()
-
- find_file(_gtest_header_file "gtest.h"
- PATHS ${_search_path_include}
- NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
- )
- find_file(_gtest_src_file
- "gtest.cc"
- "gtest-all.cc"
- PATHS ${_search_path_src}
- NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
- )
-
- if(_gtest_header_file AND _gtest_src_file)
- # set from-source variables
- set(GTEST_FROM_SOURCE_FOUND TRUE CACHE INTERNAL "")
-
- get_filename_component(_gtest_base_dir "${_gtest_src_file}" PATH)
- get_filename_component(_gtest_base_dir "${_gtest_base_dir}" PATH)
- set(GTEST_FROM_SOURCE_BASE_DIR "${_gtest_base_dir}" CACHE INTERNAL "")
-
- get_filename_component(_gtest_include_dir "${_gtest_header_file}" PATH)
- get_filename_component(_gtest_include_dir ${_gtest_include_dir} PATH)
- set(GTEST_FROM_SOURCE_INCLUDE_DIRS "${_gtest_include_dir}" CACHE INTERNAL "")
-
- set(GTEST_FROM_SOURCE_LIBRARY_DIRS "${CMAKE_BINARY_DIR}/gtest" CACHE INTERNAL "")
-
- set(GTEST_FROM_SOURCE_LIBRARIES "gtest" CACHE INTERNAL "")
- set(GTEST_FROM_SOURCE_MAIN_LIBRARIES "gtest_main" CACHE INTERNAL "")
- endif()
- endif()
-
- if(GTEST_FROM_SOURCE_FOUND)
- message(STATUS "Found gtest sources under '${GTEST_FROM_SOURCE_BASE_DIR}': "
- "C++ tests using 'Google Test' will be built")
-
- # if the gtest sources are from a subfolder of gmock (not the case for gmock_vendor)
- # the subdirectory was already added by gmock
- if(NOT TARGET gtest)
- # add CMakeLists.txt from gtest dir
- add_subdirectory("${GTEST_FROM_SOURCE_BASE_DIR}" "${CMAKE_BINARY_DIR}/gtest")
-
- # mark gtest targets with EXCLUDE_FROM_ALL to only build
- # when tests are built which depend on them
- set_target_properties(gtest gtest_main PROPERTIES EXCLUDE_FROM_ALL 1)
- if(NOT WIN32)
- target_compile_options(gtest PRIVATE -Wno-null-dereference)
- endif()
- target_include_directories(gtest SYSTEM BEFORE PUBLIC "${GTEST_FROM_SOURCE_INCLUDE_DIRS}")
- target_include_directories(gtest_main SYSTEM BEFORE PUBLIC "${GTEST_FROM_SOURCE_INCLUDE_DIRS}")
- endif()
-
- # set the same variables as find_package()
- # but do NOT set GTEST_FOUND in the cache when using gtest from source
- # since the subdirectory must always be added to add the gtest targets
- set(GTEST_FOUND ${GTEST_FROM_SOURCE_FOUND})
- set(GTEST_INCLUDE_DIRS ${GTEST_FROM_SOURCE_INCLUDE_DIRS})
- set(GTEST_LIBRARY_DIRS ${GTEST_FROM_SOURCE_LIBRARY_DIRS})
- set(GTEST_LIBRARIES ${GTEST_FROM_SOURCE_LIBRARIES})
- set(GTEST_MAIN_LIBRARIES ${GTEST_FROM_SOURCE_MAIN_LIBRARIES})
- set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})
- endif()
-
- if(NOT GTEST_FOUND)
- message(WARNING
- "'gtest' not found, C++ tests using 'Google Test' can not be built. "
- "Please install the 'Google Test' headers globally in your system "
- "to enable these tests (e.g. on Ubuntu/Debian install the package "
- "'libgtest-dev') or get the ament package 'gtest_vendor'")
- endif()
+ find_package(GTest REQUIRED)
+ ament_find_gtest()
endif()
endmacro()

diff --git a/cmake/ament_add_gtest_executable.cmake b/cmake/ament_add_gtest_executable.cmake
index e287b89..e12674c 100644
--- a/cmake/ament_add_gtest_executable.cmake
+++ b/cmake/ament_add_gtest_executable.cmake
@@ -33,7 +33,7 @@
#
macro(ament_add_gtest_executable target)
_ament_cmake_gtest_find_gtest()
- if(GTEST_FOUND)
+ if(GTest_FOUND)
_ament_add_gtest_executable("${target}" ${ARGN})
endif()
endmacro()
diff --git a/cmake/ament_find_gtest.cmake b/cmake/ament_find_gtest.cmake
index 9158be1..72a30f9 100644
--- a/cmake/ament_find_gtest.cmake
+++ b/cmake/ament_find_gtest.cmake
@@ -23,6 +23,7 @@
# additionally against ``GTEST_MAIN_LIBRARIES``.
#
# @public
+# @deprecated
#
macro(ament_find_gtest)
set(_ARGN "${ARGN}")
@@ -30,5 +31,6 @@ macro(ament_find_gtest)
message(FATAL_ERROR
"ament_find_gtest() called with unused arguments: ${_ARGN}")
endif()
- _ament_cmake_gtest_find_gtest()
+ find_package(GTest REQUIRED)
+ set(GTEST_FOUND ${GTest_FOUND})
endmacro()
diff --git a/package.xml b/package.xml
index 7b2b9a9..0e9322a 100644
--- a/package.xml
+++ b/package.xml
@@ -15,8 +15,7 @@
<buildtool_depend>ament_cmake_core</buildtool_depend>

<buildtool_export_depend>ament_cmake_test</buildtool_export_depend>
- <buildtool_export_depend>gtest</buildtool_export_depend>
- <buildtool_export_depend>gtest_vendor</buildtool_export_depend>
+ <buildtool_export_depend>libgtest-dev</buildtool_export_depend>

<export>
<build_type>ament_cmake</build_type>
Loading