2 nnas_include(ExternalSourceTools)
3 nnas_include(ExternalProjectTools)
4 nnas_include(OptionTools)
6 envoption(EXTERNAL_DOWNLOAD_SERVER "https://github.com")
7 set(GTEST_URL ${EXTERNAL_DOWNLOAD_SERVER}/google/googletest/archive/release-1.8.0.tar.gz)
8 ExternalSource_Download("gtest" ${GTEST_URL})
10 # gtest_SOURCE_DIR is used in gtest subdirectorty's cmake
11 set(sourcedir_gtest ${gtest_SOURCE_DIR})
12 unset(gtest_SOURCE_DIR)
14 if(NOT TARGET gtest_main)
15 add_extdirectory(${sourcedir_gtest} gtest EXCLUDE_FROM_ALL)
16 endif(NOT TARGET gtest_main)
22 ### Find and use pre-installed Google Test
26 if(${GTEST_FOUND} AND TARGET Threads::Threads)
28 add_library(gtest INTERFACE)
29 target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIRS})
30 target_link_libraries(gtest INTERFACE ${GTEST_LIBRARIES} Threads::Threads)
31 endif(NOT TARGET gtest)
33 if(NOT TARGET gtest_main)
34 add_library(gtest_main INTERFACE)
35 target_include_directories(gtest_main INTERFACE ${GTEST_INCLUDE_DIRS})
36 target_link_libraries(gtest_main INTERFACE gtest)
37 target_link_libraries(gtest_main INTERFACE ${GTEST_MAIN_LIBRARIES})
38 endif(NOT TARGET gtest_main)
41 find_library(GMOCK_LIBRARIES gmock)
42 find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)
43 if(GMOCK_LIBRARIES AND GMOCK_INCLUDE_DIR)
44 add_library(gmock INTERFACE)
45 target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR})
46 target_link_libraries(gmock INTERFACE ${GMOCK_LIBRARIES} Threads::Threads)
47 endif(GMOCK_LIBRARIES)
48 endif(NOT TARGET gmock)
50 if(NOT TARGET gmock_main)
51 find_library(GMOCK_MAIN_LIBRARIES gmock_main)
52 find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)
53 if(GMOCK_MAIN_LIBRARIES AND GMOCK_INCLUDE_DIR)
54 add_library(gmock_main INTERFACE)
55 target_include_directories(gmock_main INTERFACE ${GMOCK_INCLUDE_DIR})
56 target_link_libraries(gmock_main INTERFACE gmock)
57 target_link_libraries(gmock_main INTERFACE ${GMOCK_MAIN_LIBRARIES})
58 endif(GMOCK_MAIN_LIBRARIES AND GMOCK_INCLUDE_DIR)
59 endif(NOT TARGET gmock_main)
61 # TODO Check whether this command is necessary or not
62 include_directories(${GTEST_INCLUDE_DIR})
64 else(${GTEST_FOUND} AND TARGET Threads::Threads)
65 find_path(GTEST_INCLUDE_DIR gtest/gtest.h)
66 find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)
67 find_library(GMOCK_LIBRARIES libgmock.so)
68 find_library(GMOCK_MAIN_LIBRARIES libgmock_main.so)
70 if(GTEST_INCLUDE_DIR AND GMOCK_INCLUDE_DIR AND GMOCK_LIBRARIES AND GMOCK_MAIN_LIBRARIES AND TARGET Threads::Threads)
72 add_library(gmock INTERFACE)
73 target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIRS})
74 target_link_libraries(gmock INTERFACE ${GMOCK_LIBRARIES} Threads::Threads)
75 endif(NOT TARGET gmock)
77 if(NOT TARGET gmock_main)
78 add_library(gmock_main INTERFACE)
79 target_include_directories(gmock_main INTERFACE ${GMOCK_INCLUDE_DIRS})
80 target_link_libraries(gmock_main INTERFACE gmock)
81 target_link_libraries(gmock_main INTERFACE ${GMOCK_MAIN_LIBRARIES})
82 endif(NOT TARGET gmock_main)
85 add_library(gtest INTERFACE)
86 target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIRS})
87 target_link_libraries(gtest INTERFACE ${GMOCK_LIBRARIES} Threads::Threads)
88 endif(NOT TARGET gtest)
90 if(NOT TARGET gtest_main)
91 add_library(gtest_main INTERFACE)
92 target_include_directories(gtest_main INTERFACE ${GTEST_INCLUDE_DIRS})
93 target_link_libraries(gtest_main INTERFACE gtest)
94 target_link_libraries(gtest_main INTERFACE ${GMOCK_MAIN_LIBRARIES})
95 endif(NOT TARGET gtest_main)
98 endif(GTEST_INCLUDE_DIR AND GMOCK_INCLUDE_DIR AND GMOCK_LIBRARIES AND GMOCK_MAIN_LIBRARIES AND TARGET Threads::Threads)
99 endif(${GTEST_FOUND} AND TARGET Threads::Threads)