@@ -1299,121 +1299,7 @@ if (testing OR testsupport)
12991299endif ()
13001300
13011301if (builtin_gtest)
1302- # Add googletest
1303- # http://stackoverflow.com/questions/9689183/cmake-googletest
1304-
1305- set (_gtest_byproduct_binary_dir
1306- ${CMAKE_CURRENT_BINARY_DIR } /googletest-prefix/src/googletest-build)
1307- set (_gtest_byproducts
1308- ${_gtest_byproduct_binary_dir } /lib/libgtest.a
1309- ${_gtest_byproduct_binary_dir } /lib/libgtest_main.a
1310- ${_gtest_byproduct_binary_dir } /lib/libgmock.a
1311- ${_gtest_byproduct_binary_dir } /lib/libgmock_main.a
1312- )
1313-
1314- set (GTEST_CXX_FLAGS "${ROOT_EXTERNAL_CXX_FLAGS} " )
1315- if (MSVC )
1316- if (winrtdebug)
1317- set (GTEST_BUILD_TYPE Debug)
1318- else ()
1319- set (GTEST_BUILD_TYPE Release)
1320- endif ()
1321- set (_gtest_byproducts
1322- ${_gtest_byproduct_binary_dir } /lib/gtest.lib
1323- ${_gtest_byproduct_binary_dir } /lib/gtest_main.lib
1324- ${_gtest_byproduct_binary_dir } /lib/gmock.lib
1325- ${_gtest_byproduct_binary_dir } /lib/gmock_main.lib
1326- )
1327- if (CMAKE_GENERATOR MATCHES Ninja)
1328- set (GTEST_BUILD_COMMAND "BUILD_COMMAND ${CMAKE_COMMAND } --build <BINARY_DIR>" )
1329- else ()
1330- set (GTEST_BUILD_COMMAND "BUILD_COMMAND ${CMAKE_COMMAND } --build <BINARY_DIR> --config ${GTEST_BUILD_TYPE} " )
1331- endif ()
1332- if (asan)
1333- if (NOT winrtdebug)
1334- set (gtestbuild "RelWithDebInfo" )
1335- endif ()
1336- set (GTEST_CXX_FLAGS "${ROOT_EXTERNAL_CXX_FLAGS} ${ASAN_EXTRA_CXX_FLAGS} " )
1337- endif ()
1338- set (EXTRA_GTEST_OPTS
1339- -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG }
1340- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH =${_gtest_byproduct_binary_dir } /lib/
1341- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH =${_gtest_byproduct_binary_dir } /lib/
1342- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH =${_gtest_byproduct_binary_dir } /lib/
1343- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH =${_gtest_byproduct_binary_dir } /lib/
1344- -Dgtest_force_shared_crt=ON
1345- ${GTEST_BUILD_COMMAND} )
1346- else ()
1347- set (GTEST_BUILD_TYPE Release)
1348- endif ()
1349- if (APPLE )
1350- set (EXTRA_GTEST_OPTS
1351- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} )
1352- endif ()
1353- set (ROOT_GOOGLETEST_VERSION 1.17.0) # https://github.com/google/googletest/releases/tag/v1.17.0 Date: Apr 30, 2025
1354- set (ROOT_GOOGLETEST_HASH "65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c" )
1355- ExternalProject_Add (
1356- googletest
1357- # GIT_REPOSITORY https://github.com/google/googletest.git
1358- # GIT_SHALLOW 1
1359- # GIT_TAG v1.17.0
1360- URL ${lcgpackages} /googletest-${ROOT_GOOGLETEST_VERSION} .tar.gz
1361- URL_HASH SHA256=${ROOT_GOOGLETEST_HASH}
1362- UPDATE_COMMAND ""
1363- # # Force separate output paths for debug and release builds to allow easy
1364- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
1365- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
1366- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
1367- # -Dgtest_force_shared_crt=ON
1368- CMAKE_ARGS -G ${CMAKE_GENERATOR }
1369- -DCMAKE_BUILD_TYPE=${GTEST_BUILD_TYPE}
1370- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER }
1371- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS }
1372- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER }
1373- -DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}
1374- -DCMAKE_AR=${CMAKE_AR }
1375- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX }
1376- ${EXTRA_GTEST_OPTS}
1377- # Disable install step
1378- INSTALL_COMMAND ""
1379- BUILD_BYPRODUCTS ${_gtest_byproducts}
1380- # Wrap download, configure and build steps in a script to log output
1381- LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON LOG_OUTPUT_ON_FAILURE ON
1382- TIMEOUT 600
1383- )
1384-
1385- # Specify include dirs for gtest and gmock
1386- ExternalProject_Get_Property (googletest source_dir )
1387- set (GTEST_INCLUDE_DIR ${source_dir} /googletest/include)
1388- set (GMOCK_INCLUDE_DIR ${source_dir} /googlemock/include)
1389- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052
1390- file (MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} )
1391-
1392- # Libraries
1393- ExternalProject_Get_Property (googletest binary_dir )
1394- set (_G_LIBRARY_PATH ${binary_dir} /lib/)
1395-
1396- # Use gmock_main instead of gtest_main because it initializes gtest as well.
1397- # Note: The libraries are listed in reverse order of their dependencies.
1398- foreach (lib gtest gtest_main gmock gmock_main)
1399- add_library (${lib} IMPORTED STATIC GLOBAL )
1400- set_target_properties (${lib} PROPERTIES
1401- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX }${lib}${CMAKE_STATIC_LIBRARY_SUFFIX } "
1402- )
1403- add_dependencies (${lib} googletest )
1404- if ("${CMAKE_CXX_COMPILER_ID } " STREQUAL "GNU" AND
1405- ${CMAKE_CXX_COMPILER_VERSION } VERSION_GREATER_EQUAL 9)
1406- target_compile_options (${lib} INTERFACE -Wno-deprecated-copy )
1407- endif ()
1408- endforeach ()
1409- target_include_directories (gtest INTERFACE ${GTEST_INCLUDE_DIR} )
1410- target_include_directories (gmock INTERFACE ${GMOCK_INCLUDE_DIR} )
1411-
1412- set_property (TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gtest${CMAKE_STATIC_LIBRARY_SUFFIX } )
1413- set_property (TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX } )
1414- set_property (TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gmock${CMAKE_STATIC_LIBRARY_SUFFIX } )
1415- set_property (TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH} /${CMAKE_STATIC_LIBRARY_PREFIX } gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX } )
1416-
1302+ add_subdirectory (builtins/gtest )
14171303endif ()
14181304
14191305# Starting from cmake 3.23, the GTest targets will have stable names.
0 commit comments