Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / infra / nnfw / cmake / packages / GTestConfig.cmake
1 if(${BUILD_GTEST})
2   nnas_include(ExternalSourceTools)
3   nnas_include(ExternalProjectTools)
4   nnas_include(OptionTools)
5
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})
9
10   # gtest_SOURCE_DIR is used in gtest subdirectorty's cmake
11   set(sourcedir_gtest ${gtest_SOURCE_DIR})
12   unset(gtest_SOURCE_DIR)
13
14   if(NOT TARGET gtest_main)
15     add_extdirectory(${sourcedir_gtest} gtest EXCLUDE_FROM_ALL)
16   endif(NOT TARGET gtest_main)
17
18   set(GTest_FOUND TRUE)
19   return()
20 endif(${BUILD_GTEST})
21
22 ### Find and use pre-installed Google Test
23 find_package(GTest)
24 find_package(Threads)
25
26 if(${GTEST_FOUND} AND TARGET Threads::Threads)
27   if(NOT TARGET gtest)
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)
32
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)
39
40   if(NOT TARGET gmock)
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)
49
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)
60
61   # TODO Check whether this command is necessary or not
62   include_directories(${GTEST_INCLUDE_DIR})
63   set(GTest_FOUND TRUE)
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)
69
70   if(GTEST_INCLUDE_DIR AND GMOCK_INCLUDE_DIR AND GMOCK_LIBRARIES AND GMOCK_MAIN_LIBRARIES AND TARGET Threads::Threads)
71     if(NOT TARGET gmock)
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)
76
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)
83
84     if(NOT TARGET gtest)
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)
89
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)
96
97     set(GTest_FOUND TRUE)
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)