aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@google.com>2020-02-26 15:46:53 -0500
committerGravatar Benjamin Barenblat <bbaren@google.com>2020-02-26 16:17:30 -0500
commit898fb3a7043bd5af6a42c18b21109f12138c977c (patch)
tree001f8922a5756dcae1b6d39a164ef16a235ae508
parent454202fc0b6d6baa15aec328053c28e0d46d0551 (diff)
Support testing with a local googletest checkout
Add a new variable, `ABSL_LOCAL_GOOGLETEST_DIR`, that points to a local checkout of googletest. Building with `-DABSL_RUN_TESTS=ON -DABSL_USE_GOOGLETEST_HEAD=OFF` will then use that directory rather than cloning the googletest repo from GitHub.
-rw-r--r--CMake/Googletest/CMakeLists.txt.in31
-rw-r--r--CMake/Googletest/DownloadGTest.cmake9
-rw-r--r--CMakeLists.txt10
3 files changed, 34 insertions, 16 deletions
diff --git a/CMake/Googletest/CMakeLists.txt.in b/CMake/Googletest/CMakeLists.txt.in
index 72a7131..0c64218 100644
--- a/CMake/Googletest/CMakeLists.txt.in
+++ b/CMake/Googletest/CMakeLists.txt.in
@@ -3,13 +3,24 @@ cmake_minimum_required(VERSION 2.8.2)
project(googletest-download NONE)
include(ExternalProject)
-ExternalProject_Add(googletest
- GIT_REPOSITORY https://github.com/google/googletest.git
- GIT_TAG master
- SOURCE_DIR "${absl_gtest_src_dir}"
- BINARY_DIR "${absl_gtest_build_dir}"
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- TEST_COMMAND ""
-) \ No newline at end of file
+if(${ABSL_USE_GOOGLETEST_HEAD})
+ ExternalProject_Add(googletest
+ GIT_REPOSITORY https://github.com/google/googletest.git
+ GIT_TAG master
+ SOURCE_DIR "${absl_gtest_src_dir}"
+ BINARY_DIR "${absl_gtest_build_dir}"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ TEST_COMMAND ""
+ )
+else()
+ ExternalProject_Add(googletest
+ SOURCE_DIR "${absl_gtest_src_dir}"
+ BINARY_DIR "${absl_gtest_build_dir}"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ TEST_COMMAND ""
+ )
+endif() \ No newline at end of file
diff --git a/CMake/Googletest/DownloadGTest.cmake b/CMake/Googletest/DownloadGTest.cmake
index d616fe2..9b4f62b 100644
--- a/CMake/Googletest/DownloadGTest.cmake
+++ b/CMake/Googletest/DownloadGTest.cmake
@@ -1,7 +1,8 @@
-# Downloads and unpacks googletest at configure time. Based on the instructions
-# at https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project
+# Integrates googletest at configure time. Based on the instructions at
+# https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project
-# Download the latest googletest from Github master
+# Set up the external googletest project, downloading the latest from Github
+# master if requested.
configure_file(
${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in
${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt
@@ -14,7 +15,7 @@ if (BUILD_SHARED_LIBS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_CREATE_SHARED_LIBRARY=1")
endif()
-# Configure and build the downloaded googletest source
+# Configure and build the googletest source.
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 26cd2d0..74b5cd9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -84,6 +84,10 @@ find_package(Threads REQUIRED)
option(ABSL_USE_GOOGLETEST_HEAD
"If ON, abseil will download HEAD from googletest at config time." OFF)
+set(ABSL_LOCAL_GOOGLETEST_DIR "/usr/src/googletest" CACHE PATH
+ "If ABSL_USE_GOOGLETEST_HEAD is OFF, specifies the directory of a local googletest checkout."
+ )
+
option(ABSL_RUN_TESTS "If ON, Abseil tests will be run." OFF)
if(${ABSL_RUN_TESTS})
@@ -96,11 +100,13 @@ endif()
## check targets
if(BUILD_TESTING)
+ set(absl_gtest_build_dir ${CMAKE_BINARY_DIR}/googletest-build)
if(${ABSL_USE_GOOGLETEST_HEAD})
set(absl_gtest_src_dir ${CMAKE_BINARY_DIR}/googletest-src)
- set(absl_gtest_build_dir ${CMAKE_BINARY_DIR}/googletest-build)
- include(CMake/Googletest/DownloadGTest.cmake)
+ else()
+ set(absl_gtest_src_dir ${ABSL_LOCAL_GOOGLETEST_DIR})
endif()
+ include(CMake/Googletest/DownloadGTest.cmake)
check_target(gtest)
check_target(gtest_main)