• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cmake_minimum_required(VERSION 2.8.12)
2
3project(googletest-download NONE)
4
5# Enable ExternalProject CMake module
6include(ExternalProject)
7
8option(ALLOW_DOWNLOADING_GOOGLETEST "If googletest src tree is not found in location specified by GOOGLETEST_PATH, do fetch the archive from internet" OFF)
9set(GOOGLETEST_PATH "/usr/src/googletest" CACHE PATH
10                    "Path to the googletest root tree. Should contain googletest and googlemock subdirs. And CMakeLists.txt in root, and in both of these subdirs")
11
12# Download and install GoogleTest
13
14message(STATUS "Looking for Google Test sources")
15message(STATUS "Looking for Google Test sources in ${GOOGLETEST_PATH}")
16if(EXISTS "${GOOGLETEST_PATH}"            AND IS_DIRECTORY "${GOOGLETEST_PATH}"            AND EXISTS "${GOOGLETEST_PATH}/CMakeLists.txt" AND
17   EXISTS "${GOOGLETEST_PATH}/googletest" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googletest" AND EXISTS "${GOOGLETEST_PATH}/googletest/CMakeLists.txt" AND
18   EXISTS "${GOOGLETEST_PATH}/googlemock" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googlemock" AND EXISTS "${GOOGLETEST_PATH}/googlemock/CMakeLists.txt")
19  message(STATUS "Found Google Test in ${GOOGLETEST_PATH}")
20
21  ExternalProject_Add(
22    googletest
23    PREFIX            "${CMAKE_BINARY_DIR}"
24    DOWNLOAD_DIR      "${CMAKE_BINARY_DIR}/download"
25    SOURCE_DIR        "${GOOGLETEST_PATH}" # use existing src dir.
26    BINARY_DIR        "${CMAKE_BINARY_DIR}/build"
27    CONFIGURE_COMMAND ""
28    BUILD_COMMAND     ""
29    INSTALL_COMMAND   ""
30    TEST_COMMAND      ""
31  )
32else()
33  if(NOT ALLOW_DOWNLOADING_GOOGLETEST)
34    message(SEND_ERROR "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable BENCHMARK_DOWNLOAD_DEPENDENCIES, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.")
35  else()
36    message(WARNING "Did not find Google Test sources! Fetching from web...")
37    ExternalProject_Add(
38      googletest
39      GIT_REPOSITORY    https://github.com/google/googletest.git
40      GIT_TAG           master
41      PREFIX            "${CMAKE_BINARY_DIR}"
42      STAMP_DIR         "${CMAKE_BINARY_DIR}/stamp"
43      DOWNLOAD_DIR      "${CMAKE_BINARY_DIR}/download"
44      SOURCE_DIR        "${CMAKE_BINARY_DIR}/src"
45      BINARY_DIR        "${CMAKE_BINARY_DIR}/build"
46      CONFIGURE_COMMAND ""
47      BUILD_COMMAND     ""
48      INSTALL_COMMAND   ""
49      TEST_COMMAND      ""
50    )
51  endif()
52endif()
53
54ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
55file(WRITE googletest-paths.cmake
56"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
57set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
58")
59