Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / 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()