summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@gmail.com>2019-05-29 14:55:17 +0200
committerCristian Adam <cristian.adam@qt.io>2019-05-29 13:46:25 +0000
commitf50859e856b911ba0667fc9aaa5df4c8882f8679 (patch)
tree2ec84f115cf26374c6c0cd57fd257d758ca95f6e /cmake
parent0bbc5ef57465b94c63fed1cf8255a9b2a07e981c (diff)
downloadqt-creator-f50859e856b911ba0667fc9aaa5df4c8882f8679.tar.gz
CMake build: Add unittest CMake build files
On MinGW 8.1 I get the following after running ctest -j 40 99% tests passed, 35 tests failed out of 2631 Change-Id: I2c3ce7940b036e52ef393feab5837886355e7b5a Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindGoogleBenchmark.cmake82
-rw-r--r--cmake/FindGoogletest.cmake102
2 files changed, 184 insertions, 0 deletions
diff --git a/cmake/FindGoogleBenchmark.cmake b/cmake/FindGoogleBenchmark.cmake
new file mode 100644
index 0000000000..ce2cf3f66d
--- /dev/null
+++ b/cmake/FindGoogleBenchmark.cmake
@@ -0,0 +1,82 @@
+#.rst:
+# FindGoogleBenchmark
+# -----------------
+#
+# Try to locate the GoogleBenchmark source files, and then build them as a
+# static library.
+#
+# The ``GOOGLEBENCHMARK_DIR`` (CMake or Environment) variable should be used
+# to pinpoint the GoogleBenchmark source files.
+#
+# If found, this will define the following variables:
+#
+# ``GoogleBenchmark_FOUND``
+# True if the GoogleBenchmark source package has been found.
+#
+# ``GoogleBenchmark``
+# Target compiled as static library.
+#
+
+find_path(GOOGLE_BENCHMARK_INCLUDE_DIR
+ NAMES benchmark/benchmark.h
+ PATH_SUFFIXES include
+ HINTS
+ "${GOOGLEBENCHMARK_DIR}" ENV GOOGLEBENCHMARK_DIR
+ "${CMAKE_SOURCE_DIR}/../benchmark"
+ "${CMAKE_SOURCE_DIR}/../../benchmark"
+)
+
+find_path(GOOGLE_BENCHMARK_SRC_DIR
+ NAMES benchmark.cc
+ PATH_SUFFIXES src
+ HINTS
+ "${GOOGLEBENCHMARK_DIR}" ENV GOOGLEBENCHMARK_DIR
+ "${CMAKE_SOURCE_DIR}/../benchmark"
+ "${CMAKE_SOURCE_DIR}/../../benchmark"
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GoogleBenchmark
+ DEFAULT_MSG
+ GOOGLE_BENCHMARK_INCLUDE_DIR GOOGLE_BENCHMARK_SRC_DIR
+)
+
+if(GoogleBenchmark_FOUND AND NOT TARGET GoogleBenchmark)
+ add_library(GoogleBenchmark STATIC
+ "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_api_internal.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_name.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_register.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_runner.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/colorprint.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/commandlineflags.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/complexity.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/console_reporter.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/counter.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/csv_reporter.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/json_reporter.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/reporter.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/sleep.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/statistics.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/string_util.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/sysinfo.cc"
+ "${GOOGLE_BENCHMARK_SRC_DIR}/timers.cc"
+ )
+ target_include_directories(GoogleBenchmark
+ PUBLIC
+ "${GOOGLE_BENCHMARK_INCLUDE_DIR}"
+ PRIVATE
+ "${GOOGLE_BENCHMARK_SRC_DIR}"
+ )
+ target_compile_definitions(GoogleBenchmark PRIVATE HAVE_STD_REGEX WITH_BENCHMARKS)
+ if (WIN32)
+ target_link_libraries(GoogleBenchmark PRIVATE shlwapi)
+ endif()
+endif()
+
+mark_as_advanced(GOOGLE_BENCHMARK_INCLUDE_DIR GOOGLE_BENCHMARK_SRC_DIR)
+
+include(FeatureSummary)
+set_package_properties(GoogleBenchmark PROPERTIES
+ URL "https://github.com/google/benchmark"
+ DESCRIPTION "A microbenchmark support library")
diff --git a/cmake/FindGoogletest.cmake b/cmake/FindGoogletest.cmake
new file mode 100644
index 0000000000..b73f7680fc
--- /dev/null
+++ b/cmake/FindGoogletest.cmake
@@ -0,0 +1,102 @@
+#.rst:
+# FindGoogletest
+# -----------------
+#
+# Try to locate the Googletest source files, and then build them as a
+# static library.
+#
+# The ``GOOGLETEST_DIR`` (CMake or Environment) variable should be used
+# to pinpoint the Googletest source files.
+#
+# If found, this will define the following variables:
+#
+# ``Googletest_FOUND``
+# True if the Googletest source package has been found.
+#
+# ``Googletest``
+# Target compiled as static library.
+#
+
+find_path(GOOGLE_TEST_INCLUDE_DIR
+ NAMES gtest/gtest.h
+ PATH_SUFFIXES googletest/include
+ HINTS
+ "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
+ "${CMAKE_SOURCE_DIR}/../googletest"
+ "${CMAKE_SOURCE_DIR}/../../googletest"
+)
+
+find_path(GOOGLE_TEST_SRC_ALL
+ NAMES gtest-all.cc
+ PATH_SUFFIXES googletest/src
+ HINTS
+ "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
+ "${CMAKE_SOURCE_DIR}/../googletest"
+ "${CMAKE_SOURCE_DIR}/../../googletest"
+)
+
+
+find_path(GOOGLE_MOCK_INCLUDE_DIR
+ NAMES gmock/gmock.h
+ PATH_SUFFIXES googlemock/include
+ HINTS
+ "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
+ "${CMAKE_SOURCE_DIR}/../googletest"
+ "${CMAKE_SOURCE_DIR}/../../googletest"
+)
+
+find_path(GOOGLE_MOCK_SRC_ALL
+ NAMES gmock-all.cc
+ PATH_SUFFIXES googlemock/src
+ HINTS
+ "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
+ "${CMAKE_SOURCE_DIR}/../googletest"
+ "${CMAKE_SOURCE_DIR}/../../googletest"
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Googletest
+ DEFAULT_MSG
+ GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR
+ GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL
+)
+
+if(Googletest_FOUND AND NOT TARGET Googletest)
+ add_library(Googletest STATIC
+ "${GOOGLE_TEST_SRC_ALL}/gtest-all.cc"
+ "${GOOGLE_MOCK_SRC_ALL}/gmock-all.cc"
+ )
+ target_include_directories(Googletest
+ PUBLIC
+ "${GOOGLE_TEST_INCLUDE_DIR}"
+ "${GOOGLE_MOCK_INCLUDE_DIR}"
+ PRIVATE
+ "${GOOGLE_TEST_SRC_ALL}/.."
+ "${GOOGLE_MOCK_SRC_ALL}/.."
+ )
+ target_compile_definitions(Googletest
+ PRIVATE
+ GTEST_HAS_STD_INITIALIZER_LIST_
+ GTEST_LANG_CXX11
+ GTEST_HAS_STD_TUPLE_
+ GTEST_HAS_STD_TYPE_TRAITS_
+ GTEST_HAS_STD_FUNCTION_
+ GTEST_HAS_RTTI
+ GTEST_HAS_STD_BEGIN_AND_END_
+ GTEST_HAS_STD_UNIQUE_PTR_
+ GTEST_HAS_EXCEPTIONS
+ GTEST_HAS_STREAM_REDIRECTION
+ GTEST_HAS_TYPED_TEST
+ GTEST_HAS_TYPED_TEST_P
+ GTEST_HAS_PARAM_TEST
+ GTEST_HAS_DEATH_TEST
+ )
+endif()
+
+mark_as_advanced(GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR
+ GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL)
+
+include(FeatureSummary)
+set_package_properties(Googletest PROPERTIES
+ URL "https://github.com/google/googletest"
+ DESCRIPTION "Google Testing and Mocking Framework")