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