| cmake_minimum_required (VERSION 3.13...3.22) | |
| project(googletest-download NONE) | |
| # Enable ExternalProject CMake module | |
| include(ExternalProject) | |
| option(ALLOW_DOWNLOADING_GOOGLETEST "If googletest src tree is not found in location specified by GOOGLETEST_PATH, do fetch the archive from internet" OFF) | |
| set(GOOGLETEST_PATH "/usr/src/googletest" CACHE PATH | |
| "Path to the googletest root tree. Should contain googletest and googlemock subdirs. And CMakeLists.txt in root, and in both of these subdirs") | |
| # Download and install GoogleTest | |
| message(STATUS "Looking for Google Test sources") | |
| message(STATUS "Looking for Google Test sources in ${GOOGLETEST_PATH}") | |
| if(EXISTS "${GOOGLETEST_PATH}" AND IS_DIRECTORY "${GOOGLETEST_PATH}" AND EXISTS "${GOOGLETEST_PATH}/CMakeLists.txt" AND | |
| EXISTS "${GOOGLETEST_PATH}/googletest" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googletest" AND EXISTS "${GOOGLETEST_PATH}/googletest/CMakeLists.txt" AND | |
| EXISTS "${GOOGLETEST_PATH}/googlemock" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googlemock" AND EXISTS "${GOOGLETEST_PATH}/googlemock/CMakeLists.txt") | |
| message(STATUS "Found Google Test in ${GOOGLETEST_PATH}") | |
| ExternalProject_Add( | |
| googletest | |
| PREFIX "${CMAKE_BINARY_DIR}" | |
| DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download" | |
| SOURCE_DIR "${GOOGLETEST_PATH}" # use existing src dir. | |
| BINARY_DIR "${CMAKE_BINARY_DIR}/build" | |
| CONFIGURE_COMMAND "" | |
| BUILD_COMMAND "" | |
| INSTALL_COMMAND "" | |
| TEST_COMMAND "" | |
| ) | |
| else() | |
| if(NOT ALLOW_DOWNLOADING_GOOGLETEST) | |
| message(SEND_ERROR "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable BENCHMARK_DOWNLOAD_DEPENDENCIES, or disable BENCHMARK_USE_BUNDLED_GTEST, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.") | |
| return() | |
| else() | |
| message(STATUS "Did not find Google Test sources! Fetching from web...") | |
| ExternalProject_Add( | |
| googletest | |
| GIT_REPOSITORY https://github.com/google/googletest.git | |
| GIT_TAG "v1.15.2" | |
| GIT_SHALLOW "ON" | |
| PREFIX "${CMAKE_BINARY_DIR}" | |
| STAMP_DIR "${CMAKE_BINARY_DIR}/stamp" | |
| DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download" | |
| SOURCE_DIR "${CMAKE_BINARY_DIR}/src" | |
| BINARY_DIR "${CMAKE_BINARY_DIR}/build" | |
| CONFIGURE_COMMAND "" | |
| BUILD_COMMAND "" | |
| INSTALL_COMMAND "" | |
| TEST_COMMAND "" | |
| ) | |
| endif() | |
| endif() | |
| ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR) | |
| file(WRITE googletest-paths.cmake | |
| "set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\") | |
| set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\") | |
| ") |