xref: /aosp_15_r20/external/google-benchmark/cmake/GoogleTest.cmake (revision dbb99499c3810fa1611fa2242a2fc446be01a57c)
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