1*dbb99499SAndroid Build Coastguard Worker# Download and unpack googletest at configure time 2*dbb99499SAndroid Build Coastguard Workerset(GOOGLETEST_PREFIX "${benchmark_BINARY_DIR}/third_party/googletest") 3*dbb99499SAndroid Build Coastguard Workerconfigure_file(${benchmark_SOURCE_DIR}/cmake/GoogleTest.cmake.in ${GOOGLETEST_PREFIX}/CMakeLists.txt @ONLY) 4*dbb99499SAndroid Build Coastguard Worker 5*dbb99499SAndroid Build Coastguard Workerset(GOOGLETEST_PATH "${CMAKE_CURRENT_SOURCE_DIR}/googletest" CACHE PATH "") # Mind the quotes 6*dbb99499SAndroid Build Coastguard Workerexecute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" 7*dbb99499SAndroid Build Coastguard Worker -DALLOW_DOWNLOADING_GOOGLETEST=${BENCHMARK_DOWNLOAD_DEPENDENCIES} -DGOOGLETEST_PATH:PATH=${GOOGLETEST_PATH} . 8*dbb99499SAndroid Build Coastguard Worker RESULT_VARIABLE result 9*dbb99499SAndroid Build Coastguard Worker WORKING_DIRECTORY ${GOOGLETEST_PREFIX} 10*dbb99499SAndroid Build Coastguard Worker) 11*dbb99499SAndroid Build Coastguard Worker 12*dbb99499SAndroid Build Coastguard Workerif(result) 13*dbb99499SAndroid Build Coastguard Worker message(FATAL_ERROR "CMake step for googletest failed: ${result}") 14*dbb99499SAndroid Build Coastguard Workerendif() 15*dbb99499SAndroid Build Coastguard Worker 16*dbb99499SAndroid Build Coastguard Workerexecute_process( 17*dbb99499SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} --build . 18*dbb99499SAndroid Build Coastguard Worker RESULT_VARIABLE result 19*dbb99499SAndroid Build Coastguard Worker WORKING_DIRECTORY ${GOOGLETEST_PREFIX} 20*dbb99499SAndroid Build Coastguard Worker) 21*dbb99499SAndroid Build Coastguard Worker 22*dbb99499SAndroid Build Coastguard Workerif(result) 23*dbb99499SAndroid Build Coastguard Worker message(FATAL_ERROR "Build step for googletest failed: ${result}") 24*dbb99499SAndroid Build Coastguard Workerendif() 25*dbb99499SAndroid Build Coastguard Worker 26*dbb99499SAndroid Build Coastguard Worker# Prevent overriding the parent project's compiler/linker 27*dbb99499SAndroid Build Coastguard Worker# settings on Windows 28*dbb99499SAndroid Build Coastguard Workerset(gtest_force_shared_crt ON CACHE BOOL "" FORCE) 29*dbb99499SAndroid Build Coastguard Worker 30*dbb99499SAndroid Build Coastguard Workerinclude(${GOOGLETEST_PREFIX}/googletest-paths.cmake) 31*dbb99499SAndroid Build Coastguard Worker 32*dbb99499SAndroid Build Coastguard Worker# Add googletest directly to our build. This defines 33*dbb99499SAndroid Build Coastguard Worker# the gtest and gtest_main targets. 34*dbb99499SAndroid Build Coastguard Workeradd_subdirectory(${GOOGLETEST_SOURCE_DIR} 35*dbb99499SAndroid Build Coastguard Worker ${GOOGLETEST_BINARY_DIR} 36*dbb99499SAndroid Build Coastguard Worker EXCLUDE_FROM_ALL) 37*dbb99499SAndroid Build Coastguard Worker 38*dbb99499SAndroid Build Coastguard Worker# googletest doesn't seem to want to stay build warning clean so let's not hurt ourselves. 39*dbb99499SAndroid Build Coastguard Workerif (MSVC) 40*dbb99499SAndroid Build Coastguard Worker target_compile_options(gtest PRIVATE "/wd4244" "/wd4722") 41*dbb99499SAndroid Build Coastguard Worker target_compile_options(gtest_main PRIVATE "/wd4244" "/wd4722") 42*dbb99499SAndroid Build Coastguard Worker target_compile_options(gmock PRIVATE "/wd4244" "/wd4722") 43*dbb99499SAndroid Build Coastguard Worker target_compile_options(gmock_main PRIVATE "/wd4244" "/wd4722") 44*dbb99499SAndroid Build Coastguard Workerelse() 45*dbb99499SAndroid Build Coastguard Worker target_compile_options(gtest PRIVATE "-w") 46*dbb99499SAndroid Build Coastguard Worker target_compile_options(gtest_main PRIVATE "-w") 47*dbb99499SAndroid Build Coastguard Worker target_compile_options(gmock PRIVATE "-w") 48*dbb99499SAndroid Build Coastguard Worker target_compile_options(gmock_main PRIVATE "-w") 49*dbb99499SAndroid Build Coastguard Workerendif() 50*dbb99499SAndroid Build Coastguard Worker 51*dbb99499SAndroid Build Coastguard Workerif(NOT DEFINED GTEST_COMPILE_COMMANDS) 52*dbb99499SAndroid Build Coastguard Worker set(GTEST_COMPILE_COMMANDS ON) 53*dbb99499SAndroid Build Coastguard Workerendif() 54*dbb99499SAndroid Build Coastguard Worker 55*dbb99499SAndroid Build Coastguard Workerset_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES> EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS}) 56*dbb99499SAndroid Build Coastguard Workerset_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest_main,INTERFACE_INCLUDE_DIRECTORIES> EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS}) 57*dbb99499SAndroid Build Coastguard Workerset_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock,INTERFACE_INCLUDE_DIRECTORIES> EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS}) 58*dbb99499SAndroid Build Coastguard Workerset_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock_main,INTERFACE_INCLUDE_DIRECTORIES> EXPORT_COMPILE_COMMANDS ${GTEST_COMPILE_COMMANDS}) 59