# Suppress all warnings from external projects.
set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)

if (TARGET gmock)
  message(STATUS "Google Mock already configured - use it")
elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
  # We need to make sure Google Test does not mess up with the
  # global CRT settings on Windows.
  if(WIN32)
    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
  endif(WIN32)
  add_subdirectory(googletest)
  set(GTEST_TARGETS
    gtest
    gtest_main
    gmock
    gmock_main
  )
  foreach(target ${GTEST_TARGETS})
    set_property(TARGET ${target} PROPERTY FOLDER gtest)
  endforeach()
  mark_as_advanced(gmock_build_tests
    BUILD_GMOCK
    BUILD_GTEST
    BUILD_SHARED_LIBS
    gtest_build_samples
    gtest_build_tests
    gtest_disable_pthreads
    gtest_force_shared_crt
    gtest_hide_internal_symbols)
else()
  message(STATUS
    "Google Mock was not found - tests based on that will not build")
endif()
