summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorGereon Kremer <gereon.kremer@cs.rwth-aachen.de>2021-03-30 00:24:46 +0200
committerGitHub <noreply@github.com>2021-03-29 22:24:46 +0000
commitef31c2518c194029a913fe2872e2040d2f5e4294 (patch)
tree216abc5f72110d34d99fd345566fee9bc36ce736 /cmake
parent96ac1d2a5d1f25eaa1b0b265bb21d1a8b3c3d872 (diff)
Add external project to install gtest (#6229)
This PR enables us to build gtest ourselves if it is not already installed.
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindGTest.cmake85
1 files changed, 85 insertions, 0 deletions
diff --git a/cmake/FindGTest.cmake b/cmake/FindGTest.cmake
new file mode 100644
index 000000000..786a51b35
--- /dev/null
+++ b/cmake/FindGTest.cmake
@@ -0,0 +1,85 @@
+#####################
+## FindGTest.cmake
+## Top contributors (to current version):
+## Gereon Kremer
+## This file is part of the CVC4 project.
+## Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
+## in the top-level source directory and their institutional affiliations.
+## All rights reserved. See the file COPYING in the top-level source
+## directory for licensing information.
+##
+#
+# Find GTest
+
+include(deps-helper)
+
+find_path(GTest_INCLUDE_DIR NAMES gtest/gtest.h)
+find_library(GTest_LIBRARIES NAMES gtest)
+find_library(GTest_MAIN_LIBRARIES NAMES gtest_main)
+
+set(GTest_FOUND_SYSTEM FALSE)
+if(GTest_INCLUDE_DIR AND GTest_LIBRARIES AND GTest_MAIN_LIBRARIES)
+ set(GTest_FOUND_SYSTEM TRUE)
+endif()
+
+if(NOT GTest_FOUND_SYSTEM)
+ include(ExternalProject)
+
+ set(GTest_VERSION "1.10.0")
+
+ ExternalProject_Add(
+ GTest-EP
+ PREFIX ${DEPS_PREFIX}
+ URL https://github.com/google/googletest/archive/refs/tags/release-${GTest_VERSION}.tar.gz
+ URL_HASH SHA1=9c89be7df9c5e8cb0bc20b3c4b39bf7e82686770
+ DOWNLOAD_NAME gtest.tar.gz
+ CMAKE_ARGS
+ -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
+ BUILD_COMMAND ${CMAKE_COMMAND} --build .
+ --config ${CMAKE_BUILD_TYPE} --target gtest
+ COMMAND ${CMAKE_COMMAND} --build .
+ --config ${CMAKE_BUILD_TYPE} --target gtest_main
+ BUILD_BYPRODUCTS
+ <INSTALL_DIR>/lib/libgtest.a
+ <INSTALL_DIR>/lib/libgtest_main.a
+ )
+
+ set(GTest_INCLUDE_DIR "${DEPS_BASE}/include/")
+ set(GTest_LIBRARIES "${DEPS_BASE}/lib/libgtest.a")
+ set(GTest_MAIN_LIBRARIES "${DEPS_BASE}/lib/libgtest_main.a")
+endif()
+
+set(GTest_FOUND TRUE)
+
+add_library(GTest::GTest STATIC IMPORTED GLOBAL)
+set_target_properties(GTest::GTest PROPERTIES
+ IMPORTED_LOCATION "${GTest_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GTest_INCLUDE_DIR}"
+)
+
+add_library(GTest::Main STATIC IMPORTED GLOBAL)
+set_target_properties(GTest::Main PROPERTIES
+ IMPORTED_LOCATION "${GTest_MAIN_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GTest_INCLUDE_DIR}"
+)
+
+find_package(Threads QUIET)
+if(TARGET Threads::Threads)
+ set_target_properties(GTest::GTest PROPERTIES
+ INTERFACE_LINK_LIBRARIES Threads::Threads)
+endif()
+
+mark_as_advanced(GTest_FOUND)
+mark_as_advanced(GTest_FOUND_SYSTEM)
+mark_as_advanced(GTest_INCLUDE_DIR)
+mark_as_advanced(GTest_LIBRARIES)
+mark_as_advanced(GTest_MAIN_LIBRARIES)
+
+if(GTest_FOUND_SYSTEM)
+ message(STATUS "Found GTest ${GTest_VERSION}: ${GTest_LIBRARIES}")
+else()
+ message(STATUS "Building GTest ${GTest_VERSION}: ${GTest_LIBRARIES}")
+ add_dependencies(GTest::GTest GTest-EP)
+ add_dependencies(GTest::Main GTest-EP)
+endif()
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback