set(GOOGLETEST_PREFIX "${RAWSPEED_BINARY_DIR}/src/external/googletest") if(NOT EXISTS ${GOOGLETEST_PREFIX}/googletest-paths.cmake OR ${RAWSPEED_SOURCE_DIR}/cmake/Modules/GoogleTest.cmake.in IS_NEWER_THAN ${GOOGLETEST_PREFIX}/googletest-paths.cmake) # Download and unpack googletest at configure time configure_file(${RAWSPEED_SOURCE_DIR}/cmake/Modules/GoogleTest.cmake.in ${GOOGLETEST_PREFIX}/CMakeLists.txt @ONLY) execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -DALLOW_DOWNLOADING_GOOGLETEST=${ALLOW_DOWNLOADING_GOOGLETEST} -DGOOGLETEST_PATH:PATH=${GOOGLETEST_PATH} . RESULT_VARIABLE result WORKING_DIRECTORY ${GOOGLETEST_PREFIX} ) if(result) message(FATAL_ERROR "CMake step for googletest failed: ${result}") endif() execute_process( COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result WORKING_DIRECTORY ${GOOGLETEST_PREFIX} ) if(result) message(FATAL_ERROR "Build step for googletest failed: ${result}") endif() endif() # shared googletest exibits various spurious failures. # let's insist on static library. set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) # Prevent overriding the parent project's compiler/linker # settings on Windows set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) if(NOT (UNIX OR APPLE)) set(gtest_disable_pthreads ON CACHE BOOL "" FORCE) endif() set(CMAKE_C_FLAGS_SAVE "${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS_SAVE "${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") set(CMAKE_CXX_CLANG_TIDY_SAVE "${CMAKE_CXX_CLANG_TIDY}") set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE}") unset(CMAKE_CXX_CLANG_TIDY) unset(CMAKE_CXX_INCLUDE_WHAT_YOU_USE) include(${GOOGLETEST_PREFIX}/googletest-paths.cmake) # Add googletest directly to our build. This defines # the gtest and gtest_main targets. add_subdirectory(${GOOGLETEST_SOURCE_DIR} ${GOOGLETEST_BINARY_DIR} EXCLUDE_FROM_ALL) set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $) set_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $) set_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $) set_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $) foreach(target gtest gtest_main gmock gmock_main) target_compile_definitions(${target} PUBLIC -DGTEST_REMOVE_LEGACY_TEST_CASEAPI_) endforeach() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_SAVE}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}") set(CMAKE_CXX_CLANG_TIDY "${CMAKE_CXX_CLANG_TIDY_SAVE}") set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE}")