Googletest export
Internal Change PiperOrigin-RevId: 212656679
This commit is contained in:
		
							parent
							
								
									5131cf737c
								
							
						
					
					
						commit
						e1b8d82fa6
					
				@ -1,233 +0,0 @@
 | 
			
		||||
########################################################################
 | 
			
		||||
# CMake build script for Google Mock.
 | 
			
		||||
#
 | 
			
		||||
# To run the tests for Google Mock itself on Linux, use 'make test' or
 | 
			
		||||
# ctest.  You can select which tests to run using 'ctest -R regex'.
 | 
			
		||||
# For more options, run 'ctest --help'.
 | 
			
		||||
 | 
			
		||||
option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
 | 
			
		||||
 | 
			
		||||
# A directory to find Google Test sources.
 | 
			
		||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
 | 
			
		||||
  set(gtest_dir gtest)
 | 
			
		||||
else()
 | 
			
		||||
  set(gtest_dir ../googletest)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
 | 
			
		||||
include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL)
 | 
			
		||||
 | 
			
		||||
if (COMMAND pre_project_set_up_hermetic_build)
 | 
			
		||||
  # Google Test also calls hermetic setup functions from add_subdirectory,
 | 
			
		||||
  # although its changes will not affect things at the current scope.
 | 
			
		||||
  pre_project_set_up_hermetic_build()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Project-wide settings
 | 
			
		||||
 | 
			
		||||
# Name of the project.
 | 
			
		||||
#
 | 
			
		||||
# CMake files in this project can refer to the root source directory
 | 
			
		||||
# as ${gmock_SOURCE_DIR} and to the root binary directory as
 | 
			
		||||
# ${gmock_BINARY_DIR}.
 | 
			
		||||
# Language "C" is required for find_package(Threads).
 | 
			
		||||
if (CMAKE_VERSION VERSION_LESS 3.0)
 | 
			
		||||
  project(gmock CXX C)
 | 
			
		||||
else()
 | 
			
		||||
  cmake_policy(SET CMP0048 NEW)
 | 
			
		||||
  project(gmock VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C)
 | 
			
		||||
endif()
 | 
			
		||||
cmake_minimum_required(VERSION 2.6.4)
 | 
			
		||||
 | 
			
		||||
if (COMMAND set_up_hermetic_build)
 | 
			
		||||
  set_up_hermetic_build()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Instructs CMake to process Google Test's CMakeLists.txt and add its
 | 
			
		||||
# targets to the current scope.  We are placing Google Test's binary
 | 
			
		||||
# directory in a subdirectory of our own as VC compilation may break
 | 
			
		||||
# if they are the same (the default).
 | 
			
		||||
add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/gtest")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# These commands only run if this is the main project
 | 
			
		||||
if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
 | 
			
		||||
  # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
 | 
			
		||||
  # make it prominent in the GUI.
 | 
			
		||||
  option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
 | 
			
		||||
else()
 | 
			
		||||
  mark_as_advanced(gmock_build_tests)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Although Google Test's CMakeLists.txt calls this function, the
 | 
			
		||||
# changes there don't affect the current scope.  Therefore we have to
 | 
			
		||||
# call it again here.
 | 
			
		||||
config_compiler_and_linker()  # from ${gtest_dir}/cmake/internal_utils.cmake
 | 
			
		||||
 | 
			
		||||
# Adds Google Mock's and Google Test's header directories to the search path.
 | 
			
		||||
set(gmock_build_include_dirs
 | 
			
		||||
  "${gmock_SOURCE_DIR}/include"
 | 
			
		||||
  "${gmock_SOURCE_DIR}"
 | 
			
		||||
  "${gtest_SOURCE_DIR}/include"
 | 
			
		||||
  # This directory is needed to build directly from Google Test sources.
 | 
			
		||||
  "${gtest_SOURCE_DIR}")
 | 
			
		||||
include_directories(${gmock_build_include_dirs})
 | 
			
		||||
 | 
			
		||||
# Summary of tuple support for Microsoft Visual Studio:
 | 
			
		||||
# Compiler    version(MS)  version(cmake)  Support
 | 
			
		||||
# ----------  -----------  --------------  -----------------------------
 | 
			
		||||
# <= VS 2010  <= 10        <= 1600         Use Google Tests's own tuple.
 | 
			
		||||
# VS 2012     11           1700            std::tr1::tuple + _VARIADIC_MAX=10
 | 
			
		||||
# VS 2013     12           1800            std::tr1::tuple
 | 
			
		||||
# VS 2015     14           1900            std::tuple
 | 
			
		||||
# VS 2017     15           >= 1910         std::tuple
 | 
			
		||||
if (MSVC AND MSVC_VERSION EQUAL 1700)
 | 
			
		||||
  add_definitions(/D _VARIADIC_MAX=10)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Defines the gmock & gmock_main libraries.  User tests should link
 | 
			
		||||
# with one of them.
 | 
			
		||||
 | 
			
		||||
# Google Mock libraries.  We build them using more strict warnings than what
 | 
			
		||||
# are used for other targets, to ensure that Google Mock can be compiled by
 | 
			
		||||
# a user aggressive about warnings.
 | 
			
		||||
if (MSVC)
 | 
			
		||||
  cxx_library(gmock
 | 
			
		||||
              "${cxx_strict}"
 | 
			
		||||
              "${gtest_dir}/src/gtest-all.cc"
 | 
			
		||||
              src/gmock-all.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_library(gmock_main
 | 
			
		||||
              "${cxx_strict}"
 | 
			
		||||
              "${gtest_dir}/src/gtest-all.cc"
 | 
			
		||||
              src/gmock-all.cc
 | 
			
		||||
              src/gmock_main.cc)
 | 
			
		||||
else()
 | 
			
		||||
  cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
 | 
			
		||||
  target_link_libraries(gmock PUBLIC gtest)
 | 
			
		||||
  cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
 | 
			
		||||
  target_link_libraries(gmock_main PUBLIC gmock)
 | 
			
		||||
endif()
 | 
			
		||||
# If the CMake version supports it, attach header directory information
 | 
			
		||||
# to the targets for when we are part of a parent build (ie being pulled
 | 
			
		||||
# in via add_subdirectory() rather than being a standalone build).
 | 
			
		||||
if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
 | 
			
		||||
  target_include_directories(gmock SYSTEM INTERFACE
 | 
			
		||||
    "$<BUILD_INTERFACE:${gmock_build_include_dirs}>"
 | 
			
		||||
    "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
 | 
			
		||||
  target_include_directories(gmock_main SYSTEM INTERFACE
 | 
			
		||||
    "$<BUILD_INTERFACE:${gmock_build_include_dirs}>"
 | 
			
		||||
    "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Install rules
 | 
			
		||||
install_project(gmock gmock_main)
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Google Mock's own tests.
 | 
			
		||||
#
 | 
			
		||||
# You can skip this section if you aren't interested in testing
 | 
			
		||||
# Google Mock itself.
 | 
			
		||||
#
 | 
			
		||||
# The tests are not built by default.  To build them, set the
 | 
			
		||||
# gmock_build_tests option to ON.  You can do it by running ccmake
 | 
			
		||||
# or specifying the -Dgmock_build_tests=ON flag when running cmake.
 | 
			
		||||
 | 
			
		||||
if (gmock_build_tests)
 | 
			
		||||
  # This must be set in the root directory for the tests to be run by
 | 
			
		||||
  # 'make test' or ctest.
 | 
			
		||||
  enable_testing()
 | 
			
		||||
 | 
			
		||||
  ############################################################
 | 
			
		||||
  # C++ tests built with standard compiler flags.
 | 
			
		||||
 | 
			
		||||
  cxx_test(gmock-actions_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-cardinalities_test gmock_main)
 | 
			
		||||
  cxx_test(gmock_ex_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-generated-actions_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-generated-function-mockers_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-generated-internal-utils_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-generated-matchers_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-internal-utils_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-matchers_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-more-actions_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-nice-strict_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-port_test gmock_main)
 | 
			
		||||
  cxx_test(gmock-spec-builders_test gmock_main)
 | 
			
		||||
  cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc)
 | 
			
		||||
  cxx_test(gmock_test gmock_main)
 | 
			
		||||
 | 
			
		||||
  if (DEFINED GTEST_HAS_PTHREAD)
 | 
			
		||||
    cxx_test(gmock_stress_test gmock)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  # gmock_all_test is commented to save time building and running tests.
 | 
			
		||||
  # Uncomment if necessary.
 | 
			
		||||
  # cxx_test(gmock_all_test gmock_main)
 | 
			
		||||
 | 
			
		||||
  ############################################################
 | 
			
		||||
  # C++ tests built with non-standard compiler flags.
 | 
			
		||||
 | 
			
		||||
  if (MSVC)
 | 
			
		||||
    cxx_library(gmock_main_no_exception "${cxx_no_exception}"
 | 
			
		||||
      "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
 | 
			
		||||
 | 
			
		||||
    cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
 | 
			
		||||
      "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
 | 
			
		||||
 | 
			
		||||
    if (MSVC_VERSION LESS 1600)  # 1600 is Visual Studio 2010.
 | 
			
		||||
      # Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
 | 
			
		||||
      # conflict with our own definitions. Therefore using our own tuple does not
 | 
			
		||||
      # work on those compilers.
 | 
			
		||||
      cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
 | 
			
		||||
        "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
 | 
			
		||||
 | 
			
		||||
      cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
 | 
			
		||||
        gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
 | 
			
		||||
    endif()
 | 
			
		||||
  else()
 | 
			
		||||
    cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc)
 | 
			
		||||
    target_link_libraries(gmock_main_no_exception PUBLIC gmock)
 | 
			
		||||
 | 
			
		||||
    cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc)
 | 
			
		||||
    target_link_libraries(gmock_main_no_rtti PUBLIC gmock)
 | 
			
		||||
 | 
			
		||||
    cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" src/gmock_main.cc)
 | 
			
		||||
    target_link_libraries(gmock_main_use_own_tuple PUBLIC gmock)
 | 
			
		||||
  endif()
 | 
			
		||||
  cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
 | 
			
		||||
    gmock_main_no_exception test/gmock-more-actions_test.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}"
 | 
			
		||||
    gmock_main_no_rtti test/gmock-spec-builders_test.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_shared_library(shared_gmock_main "${cxx_default}"
 | 
			
		||||
    "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
 | 
			
		||||
 | 
			
		||||
  # Tests that a binary can be built with Google Mock as a shared library.  On
 | 
			
		||||
  # some system configurations, it may not possible to run the binary without
 | 
			
		||||
  # knowing more details about the system configurations. We do not try to run
 | 
			
		||||
  # this binary. To get a more robust shared library coverage, configure with
 | 
			
		||||
  # -DBUILD_SHARED_LIBS=ON.
 | 
			
		||||
  cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}"
 | 
			
		||||
    shared_gmock_main test/gmock-spec-builders_test.cc)
 | 
			
		||||
  set_target_properties(shared_gmock_test_
 | 
			
		||||
    PROPERTIES
 | 
			
		||||
    COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
 | 
			
		||||
 | 
			
		||||
  ############################################################
 | 
			
		||||
  # Python tests.
 | 
			
		||||
 | 
			
		||||
  cxx_executable(gmock_leak_test_ test gmock_main)
 | 
			
		||||
  py_test(gmock_leak_test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(gmock_output_test_ test gmock)
 | 
			
		||||
  py_test(gmock_output_test)
 | 
			
		||||
endif()
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
 | 
			
		||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 | 
			
		||||
 | 
			
		||||
Name: gmock
 | 
			
		||||
Description: GoogleMock (without main() function)
 | 
			
		||||
Version: @PROJECT_VERSION@
 | 
			
		||||
URL: https://github.com/google/googletest
 | 
			
		||||
Requires: gtest
 | 
			
		||||
Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
 | 
			
		||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 | 
			
		||||
 | 
			
		||||
Name: gmock_main
 | 
			
		||||
Description: GoogleMock (with main() function)
 | 
			
		||||
Version: @PROJECT_VERSION@
 | 
			
		||||
URL: https://github.com/google/googletest
 | 
			
		||||
Requires: gmock
 | 
			
		||||
Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
@ -1,331 +0,0 @@
 | 
			
		||||
########################################################################
 | 
			
		||||
# CMake build script for Google Test.
 | 
			
		||||
#
 | 
			
		||||
# To run the tests for Google Test itself on Linux, use 'make test' or
 | 
			
		||||
# ctest.  You can select which tests to run using 'ctest -R regex'.
 | 
			
		||||
# For more options, run 'ctest --help'.
 | 
			
		||||
 | 
			
		||||
# When other libraries are using a shared version of runtime libraries,
 | 
			
		||||
# Google Test also has to use one.
 | 
			
		||||
option(
 | 
			
		||||
  gtest_force_shared_crt
 | 
			
		||||
  "Use shared (DLL) run-time lib even when Google Test is built as static lib."
 | 
			
		||||
  OFF)
 | 
			
		||||
 | 
			
		||||
option(gtest_build_tests "Build all of gtest's own tests." OFF)
 | 
			
		||||
 | 
			
		||||
option(gtest_build_samples "Build gtest's sample programs." OFF)
 | 
			
		||||
 | 
			
		||||
option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF)
 | 
			
		||||
 | 
			
		||||
option(
 | 
			
		||||
  gtest_hide_internal_symbols
 | 
			
		||||
  "Build gtest with internal symbols hidden in shared libraries."
 | 
			
		||||
  OFF)
 | 
			
		||||
 | 
			
		||||
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
 | 
			
		||||
include(cmake/hermetic_build.cmake OPTIONAL)
 | 
			
		||||
 | 
			
		||||
if (COMMAND pre_project_set_up_hermetic_build)
 | 
			
		||||
  pre_project_set_up_hermetic_build()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Project-wide settings
 | 
			
		||||
 | 
			
		||||
# Name of the project.
 | 
			
		||||
#
 | 
			
		||||
# CMake files in this project can refer to the root source directory
 | 
			
		||||
# as ${gtest_SOURCE_DIR} and to the root binary directory as
 | 
			
		||||
# ${gtest_BINARY_DIR}.
 | 
			
		||||
# Language "C" is required for find_package(Threads).
 | 
			
		||||
if (CMAKE_VERSION VERSION_LESS 3.0)
 | 
			
		||||
  project(gtest CXX C)
 | 
			
		||||
else()
 | 
			
		||||
  cmake_policy(SET CMP0048 NEW)
 | 
			
		||||
  project(gtest VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C)
 | 
			
		||||
endif()
 | 
			
		||||
cmake_minimum_required(VERSION 2.6.4)
 | 
			
		||||
 | 
			
		||||
if (POLICY CMP0063) # Visibility
 | 
			
		||||
  cmake_policy(SET CMP0063 NEW)
 | 
			
		||||
endif (POLICY CMP0063)
 | 
			
		||||
 | 
			
		||||
if (COMMAND set_up_hermetic_build)
 | 
			
		||||
  set_up_hermetic_build()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# These commands only run if this is the main project
 | 
			
		||||
if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
 | 
			
		||||
 | 
			
		||||
  # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
 | 
			
		||||
  # make it prominent in the GUI.
 | 
			
		||||
  option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
 | 
			
		||||
 | 
			
		||||
else()
 | 
			
		||||
 | 
			
		||||
  mark_as_advanced(
 | 
			
		||||
    gtest_force_shared_crt
 | 
			
		||||
    gtest_build_tests
 | 
			
		||||
    gtest_build_samples
 | 
			
		||||
    gtest_disable_pthreads
 | 
			
		||||
    gtest_hide_internal_symbols)
 | 
			
		||||
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if (gtest_hide_internal_symbols)
 | 
			
		||||
  set(CMAKE_CXX_VISIBILITY_PRESET hidden)
 | 
			
		||||
  set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Define helper functions and macros used by Google Test.
 | 
			
		||||
include(cmake/internal_utils.cmake)
 | 
			
		||||
 | 
			
		||||
config_compiler_and_linker()  # Defined in internal_utils.cmake.
 | 
			
		||||
 | 
			
		||||
# Create the CMake package file descriptors.
 | 
			
		||||
if (INSTALL_GTEST)
 | 
			
		||||
  include(CMakePackageConfigHelpers)
 | 
			
		||||
  set(cmake_package_name GTest)
 | 
			
		||||
  set(targets_export_name ${cmake_package_name}Targets CACHE INTERNAL "")
 | 
			
		||||
  set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated" CACHE INTERNAL "")
 | 
			
		||||
  set(cmake_files_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${cmake_package_name}")
 | 
			
		||||
  set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake")
 | 
			
		||||
  write_basic_package_version_file(${version_file} COMPATIBILITY AnyNewerVersion)
 | 
			
		||||
  install(EXPORT ${targets_export_name}
 | 
			
		||||
    NAMESPACE ${cmake_package_name}::
 | 
			
		||||
    DESTINATION ${cmake_files_install_dir})
 | 
			
		||||
  set(config_file "${generated_dir}/${cmake_package_name}Config.cmake")
 | 
			
		||||
  configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in"
 | 
			
		||||
    "${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir})
 | 
			
		||||
  install(FILES ${version_file} ${config_file}
 | 
			
		||||
    DESTINATION ${cmake_files_install_dir})
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Where Google Test's .h files can be found.
 | 
			
		||||
set(gtest_build_include_dirs
 | 
			
		||||
  "${gtest_SOURCE_DIR}/include"
 | 
			
		||||
  "${gtest_SOURCE_DIR}")
 | 
			
		||||
include_directories(${gtest_build_include_dirs})
 | 
			
		||||
 | 
			
		||||
# Summary of tuple support for Microsoft Visual Studio:
 | 
			
		||||
# Compiler    version(MS)  version(cmake)  Support
 | 
			
		||||
# ----------  -----------  --------------  -----------------------------
 | 
			
		||||
# <= VS 2010  <= 10        <= 1600         Use Google Tests's own tuple.
 | 
			
		||||
# VS 2012     11           1700            std::tr1::tuple + _VARIADIC_MAX=10
 | 
			
		||||
# VS 2013     12           1800            std::tr1::tuple
 | 
			
		||||
# VS 2015     14           1900            std::tuple
 | 
			
		||||
# VS 2017     15           >= 1910         std::tuple
 | 
			
		||||
if (MSVC AND MSVC_VERSION EQUAL 1700)
 | 
			
		||||
  add_definitions(/D _VARIADIC_MAX=10)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Defines the gtest & gtest_main libraries.  User tests should link
 | 
			
		||||
# with one of them.
 | 
			
		||||
 | 
			
		||||
# Google Test libraries.  We build them using more strict warnings than what
 | 
			
		||||
# are used for other targets, to ensure that gtest can be compiled by a user
 | 
			
		||||
# aggressive about warnings.
 | 
			
		||||
cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
 | 
			
		||||
cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
 | 
			
		||||
# If the CMake version supports it, attach header directory information
 | 
			
		||||
# to the targets for when we are part of a parent build (ie being pulled
 | 
			
		||||
# in via add_subdirectory() rather than being a standalone build).
 | 
			
		||||
if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
 | 
			
		||||
  target_include_directories(gtest SYSTEM INTERFACE
 | 
			
		||||
    "$<BUILD_INTERFACE:${gtest_build_include_dirs}>"
 | 
			
		||||
    "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
 | 
			
		||||
  target_include_directories(gtest_main SYSTEM INTERFACE
 | 
			
		||||
    "$<BUILD_INTERFACE:${gtest_build_include_dirs}>"
 | 
			
		||||
    "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
 | 
			
		||||
endif()
 | 
			
		||||
target_link_libraries(gtest_main PUBLIC gtest)
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Install rules
 | 
			
		||||
install_project(gtest gtest_main)
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Samples on how to link user tests with gtest or gtest_main.
 | 
			
		||||
#
 | 
			
		||||
# They are not built by default.  To build them, set the
 | 
			
		||||
# gtest_build_samples option to ON.  You can do it by running ccmake
 | 
			
		||||
# or specifying the -Dgtest_build_samples=ON flag when running cmake.
 | 
			
		||||
 | 
			
		||||
if (gtest_build_samples)
 | 
			
		||||
  cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc)
 | 
			
		||||
  cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc)
 | 
			
		||||
  cxx_executable(sample3_unittest samples gtest_main)
 | 
			
		||||
  cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc)
 | 
			
		||||
  cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc)
 | 
			
		||||
  cxx_executable(sample6_unittest samples gtest_main)
 | 
			
		||||
  cxx_executable(sample7_unittest samples gtest_main)
 | 
			
		||||
  cxx_executable(sample8_unittest samples gtest_main)
 | 
			
		||||
  cxx_executable(sample9_unittest samples gtest)
 | 
			
		||||
  cxx_executable(sample10_unittest samples gtest)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Google Test's own tests.
 | 
			
		||||
#
 | 
			
		||||
# You can skip this section if you aren't interested in testing
 | 
			
		||||
# Google Test itself.
 | 
			
		||||
#
 | 
			
		||||
# The tests are not built by default.  To build them, set the
 | 
			
		||||
# gtest_build_tests option to ON.  You can do it by running ccmake
 | 
			
		||||
# or specifying the -Dgtest_build_tests=ON flag when running cmake.
 | 
			
		||||
 | 
			
		||||
if (gtest_build_tests)
 | 
			
		||||
  # This must be set in the root directory for the tests to be run by
 | 
			
		||||
  # 'make test' or ctest.
 | 
			
		||||
  enable_testing()
 | 
			
		||||
 | 
			
		||||
  ############################################################
 | 
			
		||||
  # C++ tests built with standard compiler flags.
 | 
			
		||||
 | 
			
		||||
  cxx_test(googletest-death-test-test gtest_main)
 | 
			
		||||
  cxx_test(gtest_environment_test gtest)
 | 
			
		||||
  cxx_test(googletest-filepath-test gtest_main)
 | 
			
		||||
  cxx_test(googletest-linked-ptr-test gtest_main)
 | 
			
		||||
  cxx_test(googletest-listener-test gtest_main)
 | 
			
		||||
  cxx_test(gtest_main_unittest gtest_main)
 | 
			
		||||
  cxx_test(googletest-message-test gtest_main)
 | 
			
		||||
  cxx_test(gtest_no_test_unittest gtest)
 | 
			
		||||
  cxx_test(googletest-options-test gtest_main)
 | 
			
		||||
  cxx_test(googletest-param-test-test gtest
 | 
			
		||||
    test/googletest-param-test2-test.cc)
 | 
			
		||||
  cxx_test(googletest-port-test gtest_main)
 | 
			
		||||
  cxx_test(gtest_pred_impl_unittest gtest_main)
 | 
			
		||||
  cxx_test(gtest_premature_exit_test gtest
 | 
			
		||||
    test/gtest_premature_exit_test.cc)
 | 
			
		||||
  cxx_test(googletest-printers-test gtest_main)
 | 
			
		||||
  cxx_test(gtest_prod_test gtest_main
 | 
			
		||||
    test/production.cc)
 | 
			
		||||
  cxx_test(gtest_repeat_test gtest)
 | 
			
		||||
  cxx_test(gtest_sole_header_test gtest_main)
 | 
			
		||||
  cxx_test(gtest_stress_test gtest)
 | 
			
		||||
  cxx_test(googletest-test-part-test gtest_main)
 | 
			
		||||
  cxx_test(gtest_throw_on_failure_ex_test gtest)
 | 
			
		||||
  cxx_test(gtest-typed-test_test gtest_main
 | 
			
		||||
    test/gtest-typed-test2_test.cc)
 | 
			
		||||
  cxx_test(gtest_unittest gtest_main)
 | 
			
		||||
  cxx_test(gtest-unittest-api_test gtest)
 | 
			
		||||
 | 
			
		||||
  ############################################################
 | 
			
		||||
  # C++ tests built with non-standard compiler flags.
 | 
			
		||||
 | 
			
		||||
  # MSVC 7.1 does not support STL with exceptions disabled.
 | 
			
		||||
  if (NOT MSVC OR MSVC_VERSION GREATER 1310)
 | 
			
		||||
    cxx_library(gtest_no_exception "${cxx_no_exception}"
 | 
			
		||||
      src/gtest-all.cc)
 | 
			
		||||
    cxx_library(gtest_main_no_exception "${cxx_no_exception}"
 | 
			
		||||
      src/gtest-all.cc src/gtest_main.cc)
 | 
			
		||||
  endif()
 | 
			
		||||
  cxx_library(gtest_main_no_rtti "${cxx_no_rtti}"
 | 
			
		||||
    src/gtest-all.cc src/gtest_main.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_test_with_flags(gtest-death-test_ex_nocatch_test
 | 
			
		||||
    "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0"
 | 
			
		||||
    gtest test/googletest-death-test_ex_test.cc)
 | 
			
		||||
  cxx_test_with_flags(gtest-death-test_ex_catch_test
 | 
			
		||||
    "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1"
 | 
			
		||||
    gtest test/googletest-death-test_ex_test.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}"
 | 
			
		||||
    gtest_main_no_rtti test/gtest_unittest.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_shared_library(gtest_dll "${cxx_default}"
 | 
			
		||||
    src/gtest-all.cc src/gtest_main.cc)
 | 
			
		||||
 | 
			
		||||
  cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}"
 | 
			
		||||
    gtest_dll test/gtest_all_test.cc)
 | 
			
		||||
  set_target_properties(gtest_dll_test_
 | 
			
		||||
                        PROPERTIES
 | 
			
		||||
                        COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
 | 
			
		||||
 | 
			
		||||
  if (NOT MSVC OR MSVC_VERSION LESS 1600)  # 1600 is Visual Studio 2010.
 | 
			
		||||
    # Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
 | 
			
		||||
    # conflict with our own definitions. Therefore using our own tuple does not
 | 
			
		||||
    # work on those compilers.
 | 
			
		||||
    cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
 | 
			
		||||
      src/gtest-all.cc src/gtest_main.cc)
 | 
			
		||||
 | 
			
		||||
    cxx_test_with_flags(googletest-tuple-test "${cxx_use_own_tuple}"
 | 
			
		||||
      gtest_main_use_own_tuple test/googletest-tuple-test.cc)
 | 
			
		||||
 | 
			
		||||
    cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}"
 | 
			
		||||
      gtest_main_use_own_tuple
 | 
			
		||||
      test/googletest-param-test-test.cc test/googletest-param-test2-test.cc)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  ############################################################
 | 
			
		||||
  # Python tests.
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-break-on-failure-unittest_ test gtest)
 | 
			
		||||
  py_test(googletest-break-on-failure-unittest)
 | 
			
		||||
 | 
			
		||||
  # Visual Studio .NET 2003 does not support STL with exceptions disabled.
 | 
			
		||||
  if (NOT MSVC OR MSVC_VERSION GREATER 1310)  # 1310 is Visual Studio .NET 2003
 | 
			
		||||
    cxx_executable_with_flags(
 | 
			
		||||
      googletest-catch-exceptions-no-ex-test_
 | 
			
		||||
      "${cxx_no_exception}"
 | 
			
		||||
      gtest_main_no_exception
 | 
			
		||||
      test/googletest-catch-exceptions-test_.cc)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  cxx_executable_with_flags(
 | 
			
		||||
    googletest-catch-exceptions-ex-test_
 | 
			
		||||
    "${cxx_exception}"
 | 
			
		||||
    gtest_main
 | 
			
		||||
    test/googletest-catch-exceptions-test_.cc)
 | 
			
		||||
  py_test(googletest-catch-exceptions-test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-color-test_ test gtest)
 | 
			
		||||
  py_test(googletest-color-test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-env-var-test_ test gtest)
 | 
			
		||||
  py_test(googletest-env-var-test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-filter-unittest_ test gtest)
 | 
			
		||||
  py_test(googletest-filter-unittest)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(gtest_help_test_ test gtest_main)
 | 
			
		||||
  py_test(gtest_help_test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-list-tests-unittest_ test gtest)
 | 
			
		||||
  py_test(googletest-list-tests-unittest)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-output-test_ test gtest)
 | 
			
		||||
  py_test(googletest-output-test --no_stacktrace_support)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-shuffle-test_ test gtest)
 | 
			
		||||
  py_test(googletest-shuffle-test)
 | 
			
		||||
 | 
			
		||||
  # MSVC 7.1 does not support STL with exceptions disabled.
 | 
			
		||||
  if (NOT MSVC OR MSVC_VERSION GREATER 1310)
 | 
			
		||||
    cxx_executable(googletest-throw-on-failure-test_ test gtest_no_exception)
 | 
			
		||||
    set_target_properties(googletest-throw-on-failure-test_
 | 
			
		||||
      PROPERTIES
 | 
			
		||||
      COMPILE_FLAGS "${cxx_no_exception}")
 | 
			
		||||
    py_test(googletest-throw-on-failure-test)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  cxx_executable(googletest-uninitialized-test_ test gtest)
 | 
			
		||||
  py_test(googletest-uninitialized-test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(gtest_xml_outfile1_test_ test gtest_main)
 | 
			
		||||
  cxx_executable(gtest_xml_outfile2_test_ test gtest_main)
 | 
			
		||||
  py_test(gtest_xml_outfiles_test)
 | 
			
		||||
  py_test(googletest-json-outfiles-test)
 | 
			
		||||
 | 
			
		||||
  cxx_executable(gtest_xml_output_unittest_ test gtest)
 | 
			
		||||
  py_test(gtest_xml_output_unittest --no_stacktrace_support)
 | 
			
		||||
  py_test(googletest-json-output-unittest --no_stacktrace_support)
 | 
			
		||||
endif()
 | 
			
		||||
@ -1,9 +0,0 @@
 | 
			
		||||
@PACKAGE_INIT@
 | 
			
		||||
include(CMakeFindDependencyMacro)
 | 
			
		||||
if (@GTEST_HAS_PTHREAD@)
 | 
			
		||||
  set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@)
 | 
			
		||||
  find_dependency(Threads)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
 | 
			
		||||
check_required_components("@project_name@")
 | 
			
		||||
@ -1,9 +0,0 @@
 | 
			
		||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
 | 
			
		||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 | 
			
		||||
 | 
			
		||||
Name: gtest
 | 
			
		||||
Description: GoogleTest (without main() function)
 | 
			
		||||
Version: @PROJECT_VERSION@
 | 
			
		||||
URL: https://github.com/google/googletest
 | 
			
		||||
Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
 | 
			
		||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 | 
			
		||||
 | 
			
		||||
Name: gtest_main
 | 
			
		||||
Description: GoogleTest (with main() function)
 | 
			
		||||
Version: @PROJECT_VERSION@
 | 
			
		||||
URL: https://github.com/google/googletest
 | 
			
		||||
Requires: gtest
 | 
			
		||||
Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
 | 
			
		||||
@ -1,318 +0,0 @@
 | 
			
		||||
# Defines functions and macros useful for building Google Test and
 | 
			
		||||
# Google Mock.
 | 
			
		||||
#
 | 
			
		||||
# Note:
 | 
			
		||||
#
 | 
			
		||||
# - This file will be run twice when building Google Mock (once via
 | 
			
		||||
#   Google Test's CMakeLists.txt, and once via Google Mock's).
 | 
			
		||||
#   Therefore it shouldn't have any side effects other than defining
 | 
			
		||||
#   the functions and macros.
 | 
			
		||||
#
 | 
			
		||||
# - The functions/macros defined in this file may depend on Google
 | 
			
		||||
#   Test and Google Mock's option() definitions, and thus must be
 | 
			
		||||
#   called *after* the options have been defined.
 | 
			
		||||
 | 
			
		||||
# Tweaks CMake's default compiler/linker settings to suit Google Test's needs.
 | 
			
		||||
#
 | 
			
		||||
# This must be a macro(), as inside a function string() can only
 | 
			
		||||
# update variables in the function scope.
 | 
			
		||||
macro(fix_default_compiler_settings_)
 | 
			
		||||
  if (MSVC)
 | 
			
		||||
    # For MSVC, CMake sets certain flags to defaults we want to override.
 | 
			
		||||
    # This replacement code is taken from sample in the CMake Wiki at
 | 
			
		||||
    # https://gitlab.kitware.com/cmake/community/wikis/FAQ#dynamic-replace.
 | 
			
		||||
    foreach (flag_var
 | 
			
		||||
             CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
 | 
			
		||||
             CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
 | 
			
		||||
      if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt)
 | 
			
		||||
        # When Google Test is built as a shared library, it should also use
 | 
			
		||||
        # shared runtime libraries.  Otherwise, it may end up with multiple
 | 
			
		||||
        # copies of runtime library data in different modules, resulting in
 | 
			
		||||
        # hard-to-find crashes. When it is built as a static library, it is
 | 
			
		||||
        # preferable to use CRT as static libraries, as we don't have to rely
 | 
			
		||||
        # on CRT DLLs being available. CMake always defaults to using shared
 | 
			
		||||
        # CRT libraries, so we override that default here.
 | 
			
		||||
        string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")
 | 
			
		||||
      endif()
 | 
			
		||||
 | 
			
		||||
      # We prefer more strict warning checking for building Google Test.
 | 
			
		||||
      # Replaces /W3 with /W4 in defaults.
 | 
			
		||||
      string(REPLACE "/W3" "/W4" ${flag_var} "${${flag_var}}")
 | 
			
		||||
 | 
			
		||||
      # Prevent D9025 warning for targets that have exception handling
 | 
			
		||||
      # turned off (/EHs-c- flag). Where required, exceptions are explicitly
 | 
			
		||||
      # re-enabled using the cxx_exception_flags variable.
 | 
			
		||||
      string(REPLACE "/EHsc" "" ${flag_var} "${${flag_var}}")
 | 
			
		||||
    endforeach()
 | 
			
		||||
  endif()
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
# Defines the compiler/linker flags used to build Google Test and
 | 
			
		||||
# Google Mock.  You can tweak these definitions to suit your need.  A
 | 
			
		||||
# variable's value is empty before it's explicitly assigned to.
 | 
			
		||||
macro(config_compiler_and_linker)
 | 
			
		||||
  # Note: pthreads on MinGW is not supported, even if available
 | 
			
		||||
  # instead, we use windows threading primitives
 | 
			
		||||
  unset(GTEST_HAS_PTHREAD)
 | 
			
		||||
  if (NOT gtest_disable_pthreads AND NOT MINGW)
 | 
			
		||||
    # Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT.
 | 
			
		||||
    set(THREADS_PREFER_PTHREAD_FLAG ON)
 | 
			
		||||
    find_package(Threads)
 | 
			
		||||
    if (CMAKE_USE_PTHREADS_INIT)
 | 
			
		||||
      set(GTEST_HAS_PTHREAD ON)
 | 
			
		||||
    endif()
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  fix_default_compiler_settings_()
 | 
			
		||||
  if (MSVC)
 | 
			
		||||
    # Newlines inside flags variables break CMake's NMake generator.
 | 
			
		||||
    # TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds.
 | 
			
		||||
    set(cxx_base_flags "-GS -W4 -WX -wd4251 -wd4275 -nologo -J -Zi")
 | 
			
		||||
    if (MSVC_VERSION LESS 1400)  # 1400 is Visual Studio 2005
 | 
			
		||||
      # Suppress spurious warnings MSVC 7.1 sometimes issues.
 | 
			
		||||
      # Forcing value to bool.
 | 
			
		||||
      set(cxx_base_flags "${cxx_base_flags} -wd4800")
 | 
			
		||||
      # Copy constructor and assignment operator could not be generated.
 | 
			
		||||
      set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512")
 | 
			
		||||
      # Compatibility warnings not applicable to Google Test.
 | 
			
		||||
      # Resolved overload was found by argument-dependent lookup.
 | 
			
		||||
      set(cxx_base_flags "${cxx_base_flags} -wd4675")
 | 
			
		||||
    endif()
 | 
			
		||||
    if (MSVC_VERSION LESS 1500)  # 1500 is Visual Studio 2008
 | 
			
		||||
      # Conditional expression is constant.
 | 
			
		||||
      # When compiling with /W4, we get several instances of C4127
 | 
			
		||||
      # (Conditional expression is constant). In our code, we disable that
 | 
			
		||||
      # warning on a case-by-case basis. However, on Visual Studio 2005,
 | 
			
		||||
      # the warning fires on std::list. Therefore on that compiler and earlier,
 | 
			
		||||
      # we disable the warning project-wide.
 | 
			
		||||
      set(cxx_base_flags "${cxx_base_flags} -wd4127")
 | 
			
		||||
    endif()
 | 
			
		||||
    if (NOT (MSVC_VERSION LESS 1700))  # 1700 is Visual Studio 2012.
 | 
			
		||||
      # Suppress "unreachable code" warning on VS 2012 and later.
 | 
			
		||||
      # http://stackoverflow.com/questions/3232669 explains the issue.
 | 
			
		||||
      set(cxx_base_flags "${cxx_base_flags} -wd4702")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
 | 
			
		||||
    set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
 | 
			
		||||
    set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
 | 
			
		||||
    set(cxx_no_exception_flags "-EHs-c- -D_HAS_EXCEPTIONS=0")
 | 
			
		||||
    set(cxx_no_rtti_flags "-GR-")
 | 
			
		||||
  elseif (CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
    set(cxx_base_flags "-Wall -Wshadow -Werror")
 | 
			
		||||
    if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0)
 | 
			
		||||
      set(cxx_base_flags "${cxx_base_flags} -Wno-error=dangling-else")
 | 
			
		||||
    endif()
 | 
			
		||||
    set(cxx_exception_flags "-fexceptions")
 | 
			
		||||
    set(cxx_no_exception_flags "-fno-exceptions")
 | 
			
		||||
    # Until version 4.3.2, GCC doesn't define a macro to indicate
 | 
			
		||||
    # whether RTTI is enabled.  Therefore we define GTEST_HAS_RTTI
 | 
			
		||||
    # explicitly.
 | 
			
		||||
    set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0")
 | 
			
		||||
    set(cxx_strict_flags
 | 
			
		||||
      "-Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
 | 
			
		||||
  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
 | 
			
		||||
    set(cxx_exception_flags "-features=except")
 | 
			
		||||
    # Sun Pro doesn't provide macros to indicate whether exceptions and
 | 
			
		||||
    # RTTI are enabled, so we define GTEST_HAS_* explicitly.
 | 
			
		||||
    set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0")
 | 
			
		||||
    set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0")
 | 
			
		||||
  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR
 | 
			
		||||
      CMAKE_CXX_COMPILER_ID STREQUAL "XL")
 | 
			
		||||
    # CMake 2.8 changes Visual Age's compiler ID to "XL".
 | 
			
		||||
    set(cxx_exception_flags "-qeh")
 | 
			
		||||
    set(cxx_no_exception_flags "-qnoeh")
 | 
			
		||||
    # Until version 9.0, Visual Age doesn't define a macro to indicate
 | 
			
		||||
    # whether RTTI is enabled.  Therefore we define GTEST_HAS_RTTI
 | 
			
		||||
    # explicitly.
 | 
			
		||||
    set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0")
 | 
			
		||||
  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP")
 | 
			
		||||
    set(cxx_base_flags "-AA -mt")
 | 
			
		||||
    set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1")
 | 
			
		||||
    set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0")
 | 
			
		||||
    # RTTI can not be disabled in HP aCC compiler.
 | 
			
		||||
    set(cxx_no_rtti_flags "")
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  # The pthreads library is available and allowed?
 | 
			
		||||
  if (DEFINED GTEST_HAS_PTHREAD)
 | 
			
		||||
    set(GTEST_HAS_PTHREAD_MACRO "-DGTEST_HAS_PTHREAD=1")
 | 
			
		||||
  else()
 | 
			
		||||
    set(GTEST_HAS_PTHREAD_MACRO "-DGTEST_HAS_PTHREAD=0")
 | 
			
		||||
  endif()
 | 
			
		||||
  set(cxx_base_flags "${cxx_base_flags} ${GTEST_HAS_PTHREAD_MACRO}")
 | 
			
		||||
 | 
			
		||||
  # For building gtest's own tests and samples.
 | 
			
		||||
  set(cxx_exception "${cxx_base_flags} ${cxx_exception_flags}")
 | 
			
		||||
  set(cxx_no_exception
 | 
			
		||||
    "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}")
 | 
			
		||||
  set(cxx_default "${cxx_exception}")
 | 
			
		||||
  set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}")
 | 
			
		||||
  set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1")
 | 
			
		||||
 | 
			
		||||
  # For building the gtest libraries.
 | 
			
		||||
  set(cxx_strict "${cxx_default} ${cxx_strict_flags}")
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
# Defines the gtest & gtest_main libraries.  User tests should link
 | 
			
		||||
# with one of them.
 | 
			
		||||
function(cxx_library_with_type name type cxx_flags)
 | 
			
		||||
  # type can be either STATIC or SHARED to denote a static or shared library.
 | 
			
		||||
  # ARGN refers to additional arguments after 'cxx_flags'.
 | 
			
		||||
  add_library(${name} ${type} ${ARGN})
 | 
			
		||||
  set_target_properties(${name}
 | 
			
		||||
    PROPERTIES
 | 
			
		||||
    COMPILE_FLAGS "${cxx_flags}")
 | 
			
		||||
  # Generate debug library name with a postfix.
 | 
			
		||||
  set_target_properties(${name}
 | 
			
		||||
    PROPERTIES
 | 
			
		||||
    DEBUG_POSTFIX "d")
 | 
			
		||||
  if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED")
 | 
			
		||||
    set_target_properties(${name}
 | 
			
		||||
      PROPERTIES
 | 
			
		||||
      COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1")
 | 
			
		||||
    if (NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
 | 
			
		||||
      target_compile_definitions(${name} INTERFACE
 | 
			
		||||
        $<INSTALL_INTERFACE:GTEST_LINKED_AS_SHARED_LIBRARY=1>)
 | 
			
		||||
    endif()
 | 
			
		||||
  endif()
 | 
			
		||||
  if (DEFINED GTEST_HAS_PTHREAD)
 | 
			
		||||
    if ("${CMAKE_VERSION}" VERSION_LESS "3.1.0")
 | 
			
		||||
      set(threads_spec ${CMAKE_THREAD_LIBS_INIT})
 | 
			
		||||
    else()
 | 
			
		||||
      set(threads_spec Threads::Threads)
 | 
			
		||||
    endif()
 | 
			
		||||
    target_link_libraries(${name} PUBLIC ${threads_spec})
 | 
			
		||||
  endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
#
 | 
			
		||||
# Helper functions for creating build targets.
 | 
			
		||||
 | 
			
		||||
function(cxx_shared_library name cxx_flags)
 | 
			
		||||
  cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function(cxx_library name cxx_flags)
 | 
			
		||||
  cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# cxx_executable_with_flags(name cxx_flags libs srcs...)
 | 
			
		||||
#
 | 
			
		||||
# creates a named C++ executable that depends on the given libraries and
 | 
			
		||||
# is built from the given source files with the given compiler flags.
 | 
			
		||||
function(cxx_executable_with_flags name cxx_flags libs)
 | 
			
		||||
  add_executable(${name} ${ARGN})
 | 
			
		||||
  if (MSVC AND (NOT (MSVC_VERSION LESS 1700)))  # 1700 is Visual Studio 2012.
 | 
			
		||||
    # BigObj required for tests.
 | 
			
		||||
    set(cxx_flags "${cxx_flags} -bigobj")
 | 
			
		||||
  endif()
 | 
			
		||||
  if (cxx_flags)
 | 
			
		||||
    set_target_properties(${name}
 | 
			
		||||
      PROPERTIES
 | 
			
		||||
      COMPILE_FLAGS "${cxx_flags}")
 | 
			
		||||
  endif()
 | 
			
		||||
  if (BUILD_SHARED_LIBS)
 | 
			
		||||
    set_target_properties(${name}
 | 
			
		||||
      PROPERTIES
 | 
			
		||||
      COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
 | 
			
		||||
  endif()
 | 
			
		||||
  # To support mixing linking in static and dynamic libraries, link each
 | 
			
		||||
  # library in with an extra call to target_link_libraries.
 | 
			
		||||
  foreach (lib "${libs}")
 | 
			
		||||
    target_link_libraries(${name} ${lib})
 | 
			
		||||
  endforeach()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# cxx_executable(name dir lib srcs...)
 | 
			
		||||
#
 | 
			
		||||
# creates a named target that depends on the given libs and is built
 | 
			
		||||
# from the given source files.  dir/name.cc is implicitly included in
 | 
			
		||||
# the source file list.
 | 
			
		||||
function(cxx_executable name dir libs)
 | 
			
		||||
  cxx_executable_with_flags(
 | 
			
		||||
    ${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
 | 
			
		||||
find_package(PythonInterp)
 | 
			
		||||
 | 
			
		||||
# cxx_test_with_flags(name cxx_flags libs srcs...)
 | 
			
		||||
#
 | 
			
		||||
# creates a named C++ test that depends on the given libs and is built
 | 
			
		||||
# from the given source files with the given compiler flags.
 | 
			
		||||
function(cxx_test_with_flags name cxx_flags libs)
 | 
			
		||||
  cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN})
 | 
			
		||||
  add_test(NAME ${name} COMMAND ${name})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# cxx_test(name libs srcs...)
 | 
			
		||||
#
 | 
			
		||||
# creates a named test target that depends on the given libs and is
 | 
			
		||||
# built from the given source files.  Unlike cxx_test_with_flags,
 | 
			
		||||
# test/name.cc is already implicitly included in the source file list.
 | 
			
		||||
function(cxx_test name libs)
 | 
			
		||||
  cxx_test_with_flags("${name}" "${cxx_default}" "${libs}"
 | 
			
		||||
    "test/${name}.cc" ${ARGN})
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# py_test(name)
 | 
			
		||||
#
 | 
			
		||||
# creates a Python test with the given name whose main module is in
 | 
			
		||||
# test/name.py.  It does nothing if Python is not installed.
 | 
			
		||||
function(py_test name)
 | 
			
		||||
  if (PYTHONINTERP_FOUND)
 | 
			
		||||
    if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
 | 
			
		||||
      if (CMAKE_CONFIGURATION_TYPES)
 | 
			
		||||
	# Multi-configuration build generators as for Visual Studio save
 | 
			
		||||
	# output in a subdirectory of CMAKE_CURRENT_BINARY_DIR (Debug,
 | 
			
		||||
	# Release etc.), so we have to provide it here.
 | 
			
		||||
        add_test(
 | 
			
		||||
          NAME ${name}
 | 
			
		||||
          COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
 | 
			
		||||
              --build_dir=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG> ${ARGN})
 | 
			
		||||
      else (CMAKE_CONFIGURATION_TYPES)
 | 
			
		||||
	# Single-configuration build generators like Makefile generators
 | 
			
		||||
	# don't have subdirs below CMAKE_CURRENT_BINARY_DIR.
 | 
			
		||||
        add_test(
 | 
			
		||||
          NAME ${name}
 | 
			
		||||
          COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
 | 
			
		||||
              --build_dir=${CMAKE_CURRENT_BINARY_DIR} ${ARGN})
 | 
			
		||||
      endif (CMAKE_CONFIGURATION_TYPES)
 | 
			
		||||
    else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
 | 
			
		||||
      # ${CMAKE_CURRENT_BINARY_DIR} is known at configuration time, so we can
 | 
			
		||||
      # directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known
 | 
			
		||||
      # only at ctest runtime (by calling ctest -c <Configuration>), so
 | 
			
		||||
      # we have to escape $ to delay variable substitution here.
 | 
			
		||||
      add_test(
 | 
			
		||||
        ${name}
 | 
			
		||||
        ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
 | 
			
		||||
          --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE} ${ARGN})
 | 
			
		||||
    endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
 | 
			
		||||
  endif(PYTHONINTERP_FOUND)
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# install_project(targets...)
 | 
			
		||||
#
 | 
			
		||||
# Installs the specified targets and configures the associated pkgconfig files.
 | 
			
		||||
function(install_project)
 | 
			
		||||
  if(INSTALL_GTEST)
 | 
			
		||||
    install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
 | 
			
		||||
      DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
 | 
			
		||||
    # Install the project targets.
 | 
			
		||||
    install(TARGETS ${ARGN}
 | 
			
		||||
      EXPORT ${targets_export_name}
 | 
			
		||||
      RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
 | 
			
		||||
      ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
 | 
			
		||||
      LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
 | 
			
		||||
    # Configure and install pkgconfig files.
 | 
			
		||||
    foreach(t ${ARGN})
 | 
			
		||||
      set(configured_pc "${generated_dir}/${t}.pc")
 | 
			
		||||
      configure_file("${PROJECT_SOURCE_DIR}/cmake/${t}.pc.in"
 | 
			
		||||
        "${configured_pc}" @ONLY)
 | 
			
		||||
      install(FILES "${configured_pc}"
 | 
			
		||||
        DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 | 
			
		||||
    endforeach()
 | 
			
		||||
  endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
@ -2117,7 +2117,7 @@ class UnitTestRecordPropertyTestEnvironment : public Environment {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// This will test property recording outside of any test or test case.
 | 
			
		||||
static Environment* record_property_env GTEST_ATTRIBUTE_UNUSED_ =
 | 
			
		||||
static Environment* record_property_env =
 | 
			
		||||
    AddGlobalTestEnvironment(new UnitTestRecordPropertyTestEnvironment);
 | 
			
		||||
 | 
			
		||||
// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user