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