@@ -1449,121 +1449,7 @@ if (testing OR testsupport)
14491449endif ()
14501450
14511451if (builtin_gtest)
1452- # Add googletest
1453- # http://stackoverflow.com/questions/9689183/cmake-googletest
1454-
1455- set (_gtest_byproduct_binary_dir
1456- ${CMAKE_CURRENT_BINARY_DIR } /googletest-prefix/src/googletest-build)
1457- set (_gtest_byproducts
1458- ${_gtest_byproduct_binary_dir } /lib/libgtest.a
1459- ${_gtest_byproduct_binary_dir } /lib/libgtest_main.a
1460- ${_gtest_byproduct_binary_dir } /lib/libgmock.a
1461- ${_gtest_byproduct_binary_dir } /lib/libgmock_main.a
1462- )
1463-
1464- set (GTEST_CXX_FLAGS "${ROOT_EXTERNAL_CXX_FLAGS} " )
1465- if (MSVC )
1466- if (winrtdebug)
1467- set (GTEST_BUILD_TYPE Debug)
1468- else ()
1469- set (GTEST_BUILD_TYPE Release)
1470- endif ()
1471- set (_gtest_byproducts
1472- ${_gtest_byproduct_binary_dir } /lib/gtest.lib
1473- ${_gtest_byproduct_binary_dir } /lib/gtest_main.lib
1474- ${_gtest_byproduct_binary_dir } /lib/gmock.lib
1475- ${_gtest_byproduct_binary_dir } /lib/gmock_main.lib
1476- )
1477- if (CMAKE_GENERATOR MATCHES Ninja)
1478- set (GTEST_BUILD_COMMAND "BUILD_COMMAND ${CMAKE_COMMAND } --build <BINARY_DIR>" )
1479- else ()
1480- set (GTEST_BUILD_COMMAND "BUILD_COMMAND ${CMAKE_COMMAND } --build <BINARY_DIR> --config ${GTEST_BUILD_TYPE} " )
1481- endif ()
1482- if (asan)
1483- if (NOT winrtdebug)
1484- set (gtestbuild "RelWithDebInfo" )
1485- endif ()
1486- set (GTEST_CXX_FLAGS "${ROOT_EXTERNAL_CXX_FLAGS} ${ASAN_EXTRA_CXX_FLAGS} " )
1487- endif ()
1488- set (EXTRA_GTEST_OPTS
1489- -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG }
1490- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH =${_gtest_byproduct_binary_dir } /lib/
1491- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH =${_gtest_byproduct_binary_dir } /lib/
1492- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH =${_gtest_byproduct_binary_dir } /lib/
1493- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH =${_gtest_byproduct_binary_dir } /lib/
1494- -Dgtest_force_shared_crt=ON
1495- ${GTEST_BUILD_COMMAND} )
1496- else ()
1497- set (GTEST_BUILD_TYPE Release)
1498- endif ()
1499- if (APPLE )
1500- set (EXTRA_GTEST_OPTS
1501- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} )
1502- endif ()
1503- set (ROOT_GOOGLETEST_VERSION 1.17.0) # https://github.com/google/googletest/releases/tag/v1.17.0 Date: Apr 30, 2025
1504- set (ROOT_GOOGLETEST_HASH "65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c" )
1505- ExternalProject_Add (
1506- googletest
1507- # GIT_REPOSITORY https://github.com/google/googletest.git
1508- # GIT_SHALLOW 1
1509- # GIT_TAG v1.17.0
1510- URL ${lcgpackages} /googletest-${ROOT_GOOGLETEST_VERSION} .tar.gz
1511- URL_HASH SHA256=${ROOT_GOOGLETEST_HASH}
1512- UPDATE_COMMAND ""
1513- # # Force separate output paths for debug and release builds to allow easy
1514- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
1515- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
1516- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
1517- # -Dgtest_force_shared_crt=ON
1518- CMAKE_ARGS -G ${CMAKE_GENERATOR }
1519- -DCMAKE_BUILD_TYPE=${GTEST_BUILD_TYPE}
1520- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER }
1521- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS }
1522- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER }
1523- -DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}
1524- -DCMAKE_AR=${CMAKE_AR }
1525- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX }
1526- ${EXTRA_GTEST_OPTS}
1527- # Disable install step
1528- INSTALL_COMMAND ""
1529- BUILD_BYPRODUCTS ${_gtest_byproducts}
1530- # Wrap download, configure and build steps in a script to log output
1531- LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON LOG_OUTPUT_ON_FAILURE ON
1532- TIMEOUT 600
1533- )
1534-
1535- # Specify include dirs for gtest and gmock
1536- ExternalProject_Get_Property (googletest source_dir )
1537- set (GTEST_INCLUDE_DIR ${source_dir} /googletest/include)
1538- set (GMOCK_INCLUDE_DIR ${source_dir} /googlemock/include)
1539- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052
1540- file (MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} )
1541-
1542- # Libraries
1543- ExternalProject_Get_Property (googletest binary_dir )
1544- set (_G_LIBRARY_PATH ${binary_dir} /lib/)
1545-
1546- # Use gmock_main instead of gtest_main because it initializes gtest as well.
1547- # Note: The libraries are listed in reverse order of their dependencies.
1548- foreach (lib gtest gtest_main gmock gmock_main)
1549- add_library (${lib} IMPORTED STATIC GLOBAL )
1550- set_target_properties (${lib} PROPERTIES
1551- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX }${lib}${CMAKE_STATIC_LIBRARY_SUFFIX } "
1552- )
1553- add_dependencies (${lib} googletest )
1554- if ("${CMAKE_CXX_COMPILER_ID } " STREQUAL "GNU" AND
1555- ${CMAKE_CXX_COMPILER_VERSION } VERSION_GREATER_EQUAL 9)
1556- target_compile_options (${lib} INTERFACE -Wno-deprecated-copy )
1557- endif ()
1558- endforeach ()
1559- target_include_directories (gtest INTERFACE ${GTEST_INCLUDE_DIR} )
1560- target_include_directories (gmock INTERFACE ${GMOCK_INCLUDE_DIR} )
1561-
1562- set_property (TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gtest${CMAKE_STATIC_LIBRARY_SUFFIX } )
1563- set_property (TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX } )
1564- set_property (TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gmock${CMAKE_STATIC_LIBRARY_SUFFIX } )
1565- set_property (TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX } )
1566-
1452+ add_subdirectory (builtins/gtest )
15671453endif ()
15681454
15691455# Starting from cmake 3.23, the GTest targets will have stable names.
0 commit comments