xref: /llvm-project/third-party/benchmark/cmake/GoogleTest.cmake.in (revision a290770fa848cfe9b46dcc2c44e06e15cafd0f23)
15dda2efdSMircea Trofincmake_minimum_required(VERSION 2.8.12)
25dda2efdSMircea Trofin
35dda2efdSMircea Trofinproject(googletest-download NONE)
45dda2efdSMircea Trofin
55dda2efdSMircea Trofin# Enable ExternalProject CMake module
65dda2efdSMircea Trofininclude(ExternalProject)
75dda2efdSMircea Trofin
85dda2efdSMircea Trofinoption(ALLOW_DOWNLOADING_GOOGLETEST "If googletest src tree is not found in location specified by GOOGLETEST_PATH, do fetch the archive from internet" OFF)
95dda2efdSMircea Trofinset(GOOGLETEST_PATH "/usr/src/googletest" CACHE PATH
105dda2efdSMircea Trofin                    "Path to the googletest root tree. Should contain googletest and googlemock subdirs. And CMakeLists.txt in root, and in both of these subdirs")
115dda2efdSMircea Trofin
125dda2efdSMircea Trofin# Download and install GoogleTest
135dda2efdSMircea Trofin
145dda2efdSMircea Trofinmessage(STATUS "Looking for Google Test sources")
155dda2efdSMircea Trofinmessage(STATUS "Looking for Google Test sources in ${GOOGLETEST_PATH}")
165dda2efdSMircea Trofinif(EXISTS "${GOOGLETEST_PATH}"            AND IS_DIRECTORY "${GOOGLETEST_PATH}"            AND EXISTS "${GOOGLETEST_PATH}/CMakeLists.txt" AND
175dda2efdSMircea Trofin   EXISTS "${GOOGLETEST_PATH}/googletest" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googletest" AND EXISTS "${GOOGLETEST_PATH}/googletest/CMakeLists.txt" AND
185dda2efdSMircea Trofin   EXISTS "${GOOGLETEST_PATH}/googlemock" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googlemock" AND EXISTS "${GOOGLETEST_PATH}/googlemock/CMakeLists.txt")
195dda2efdSMircea Trofin  message(STATUS "Found Google Test in ${GOOGLETEST_PATH}")
205dda2efdSMircea Trofin
215dda2efdSMircea Trofin  ExternalProject_Add(
225dda2efdSMircea Trofin    googletest
235dda2efdSMircea Trofin    PREFIX            "${CMAKE_BINARY_DIR}"
245dda2efdSMircea Trofin    DOWNLOAD_DIR      "${CMAKE_BINARY_DIR}/download"
255dda2efdSMircea Trofin    SOURCE_DIR        "${GOOGLETEST_PATH}" # use existing src dir.
265dda2efdSMircea Trofin    BINARY_DIR        "${CMAKE_BINARY_DIR}/build"
275dda2efdSMircea Trofin    CONFIGURE_COMMAND ""
285dda2efdSMircea Trofin    BUILD_COMMAND     ""
295dda2efdSMircea Trofin    INSTALL_COMMAND   ""
305dda2efdSMircea Trofin    TEST_COMMAND      ""
315dda2efdSMircea Trofin  )
325dda2efdSMircea Trofinelse()
335dda2efdSMircea Trofin  if(NOT ALLOW_DOWNLOADING_GOOGLETEST)
34*a290770fSMircea Trofin    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.")
35*a290770fSMircea Trofin    return()
365dda2efdSMircea Trofin  else()
375dda2efdSMircea Trofin    message(WARNING "Did not find Google Test sources! Fetching from web...")
385dda2efdSMircea Trofin    ExternalProject_Add(
395dda2efdSMircea Trofin      googletest
405dda2efdSMircea Trofin      GIT_REPOSITORY    https://github.com/google/googletest.git
41*a290770fSMircea Trofin      GIT_TAG           "release-1.11.0"
425dda2efdSMircea Trofin      PREFIX            "${CMAKE_BINARY_DIR}"
435dda2efdSMircea Trofin      STAMP_DIR         "${CMAKE_BINARY_DIR}/stamp"
445dda2efdSMircea Trofin      DOWNLOAD_DIR      "${CMAKE_BINARY_DIR}/download"
455dda2efdSMircea Trofin      SOURCE_DIR        "${CMAKE_BINARY_DIR}/src"
465dda2efdSMircea Trofin      BINARY_DIR        "${CMAKE_BINARY_DIR}/build"
475dda2efdSMircea Trofin      CONFIGURE_COMMAND ""
485dda2efdSMircea Trofin      BUILD_COMMAND     ""
495dda2efdSMircea Trofin      INSTALL_COMMAND   ""
505dda2efdSMircea Trofin      TEST_COMMAND      ""
515dda2efdSMircea Trofin    )
525dda2efdSMircea Trofin  endif()
535dda2efdSMircea Trofinendif()
545dda2efdSMircea Trofin
555dda2efdSMircea TrofinExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
565dda2efdSMircea Trofinfile(WRITE googletest-paths.cmake
575dda2efdSMircea Trofin"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
585dda2efdSMircea Trofinset(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
595dda2efdSMircea Trofin")
60