]> git.proxmox.com Git - ceph.git/blob - ceph/src/dmclock/cmake/modules/BuildGTest.cmake
update sources to v12.1.3
[ceph.git] / ceph / src / dmclock / cmake / modules / BuildGTest.cmake
1 macro(_build_gtest gtest_root)
2 include(ExternalProject)
3 ExternalProject_Add(googletest
4 SOURCE_DIR ${gtest_root}
5 CMAKE_ARGS -DBUILD_GMOCK=OFF -DBUILD_GTEST=ON
6 INSTALL_COMMAND ""
7 LOG_CONFIGURE ON
8 LOG_BUILD ON)
9
10 ExternalProject_Get_Property(googletest source_dir)
11 set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include)
12 set(GMOCK_INCLUDE_DIRS ${source_dir}/googlemock/include)
13
14 find_package(Threads REQUIRED)
15
16 ExternalProject_Get_Property(googletest binary_dir)
17 set(GTEST_LIBRARY_PATH ${binary_dir}/googletest/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a)
18 set(GTEST_LIBRARY gtest)
19 add_library(${GTEST_LIBRARY} STATIC IMPORTED)
20 set_target_properties(${GTEST_LIBRARY} PROPERTIES
21 INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
22 IMPORTED_LOCATION ${GTEST_LIBRARY_PATH}
23 IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
24 IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
25 add_dependencies(${GTEST_LIBRARY} googletest)
26 set(GTEST_LIBRARIES ${GTEST_LIBRARY})
27
28 set(GTEST_MAIN_LIBRARY_PATH ${binary_dir}/googletest/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main.a)
29 set(GTEST_MAIN_LIBRARY gtest_main)
30 add_library(${GTEST_MAIN_LIBRARY} STATIC IMPORTED)
31 set_target_properties(${GTEST_MAIN_LIBRARY} PROPERTIES
32 INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
33 IMPORTED_LOCATION ${GTEST_MAIN_LIBRARY_PATH}
34 IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
35 add_dependencies(${GTEST_MAIN_LIBRARY} googletest)
36
37 set(GMOCK_LIBRARY_PATH ${binary_dir}/googlemock/${CMAKE_FIND_LIBRARY_PREFIXES}gmock.a)
38 set(GMOCK_LIBRARY gmock)
39 add_library(${GMOCK_LIBRARY} STATIC IMPORTED)
40 set_target_properties(${GMOCK_LIBRARY} PROPERTIES
41 INTERFACE_INCLUDE_DIRECTORIES "${GMOCK_INCLUDE_DIRS}"
42 IMPORTED_LOCATION "${GMOCK_LIBRARY_PATH}"
43 IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
44 IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
45 add_dependencies(${GMOCK_LIBRARY} googletest)
46
47 set(GMOCK_MAIN_LIBRARY_PATH ${binary_dir}/googlemock/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main.a)
48 set(GMOCK_MAIN_LIBRARY gmock_main)
49 add_library(${GMOCK_MAIN_LIBRARY} STATIC IMPORTED)
50 set_target_properties(${GMOCK_MAIN_LIBRARY} PROPERTIES
51 INTERFACE_INCLUDE_DIRECTORIES "${GMOCK_INCLUDE_DIRS}"
52 IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARY_PATH}
53 IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
54 IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
55 add_dependencies(${GMOCK_MAIN_LIBRARY} ${GTEST_LIBRARY})
56 endmacro()
57
58 find_path(GTEST_ROOT src/gtest.cc
59 HINTS $ENV{GTEST_ROOT}
60 PATHS /usr/src/googletest/googletest /usr/src/gtest)
61
62 if(EXISTS ${GTEST_ROOT})
63 message(STATUS "Found googletest: ${GTEST_ROOT}")
64 _build_gtest(${GTEST_ROOT})
65 else()
66 message(SEND_ERROR "Could NOT find googletest")
67 endif()