Change search strategy for prebuilt GoogleTest/GoogleMock libraries

Prebuilt GoogleTest/GoogleMock libraries are now only searched, if
GTEST_ROOT and GMOCK_ROOT are not defined.
This commit is contained in:
Christian Gruber 2019-08-21 23:36:17 +02:00
parent b303fc6d99
commit 84d9f1c9a5

View File

@ -129,56 +129,63 @@ function(gnc_gtest_configure)
if (NOT DEFINED ${GMOCK_ROOT})
set(GMOCK_ROOT $ENV{GMOCK_ROOT})
endif()
find_path(GTEST_INCLUDE_DIR gtest/gtest.h
HINTS ${GTEST_ROOT}/include ${GMOCK_ROOT}/gtest/include /usr/include)
unset(GTEST_SRC_DIR CACHE)
find_path(GTEST_SRC_DIR src/gtest-all.cc
HINTS ${GTEST_ROOT} ${GMOCK_ROOT}/gtest /usr/src/gtest)
if (GTEST_SRC_DIR AND GTEST_INCLUDE_DIR)
set(lib_gtest_SOURCES
"${GTEST_SRC_DIR}/src/gtest_main.cc"
"${GTEST_SRC_DIR}/src/gtest-all.cc"
PARENT_SCOPE)
if (GTEST_ROOT)
find_path(GTEST_INCLUDE_DIR gtest/gtest.h
HINTS ${GTEST_ROOT}/include ${GMOCK_ROOT}/gtest/include)
find_path(GTEST_SRC_DIR src/gtest-all.cc
HINTS ${GTEST_ROOT} ${GMOCK_ROOT}/gtest /usr/src/gtest)
if (GTEST_SRC_DIR AND GTEST_INCLUDE_DIR)
set(lib_gtest_SOURCES
"${GTEST_SRC_DIR}/src/gtest_main.cc"
"${GTEST_SRC_DIR}/src/gtest-all.cc"
PARENT_SCOPE)
else()
message(FATAL_ERROR "GTEST not found in GTEST_ROOT")
endif()
else()
find_path(GTEST_INCLUDE_DIR gtest/gtest.h)
find_library(GTEST_SHARED_LIB gtest)
find_library(GTEST_MAIN_LIB gtest_main)
if (NOT (GTEST_SHARED_LIB AND GTEST_MAIN_LIB AND GTEST_INCLUDE_DIR))
message(FATAL_ERROR "GTEST not found. Please install it or set GTEST_ROOT or GMOCK_ROOT")
endif()
endif()
if ((GTEST_SHARED_LIB OR GTEST_SRC_DIR) AND GTEST_INCLUDE_DIR)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(GTEST_FOUND YES CACHE INTERNAL "Found GTest")
else()
message(FATAL_ERROR "GTEST not found. Please install it or set GTEST_ROOT or GMOCK_ROOT")
endif()
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(GTEST_FOUND YES CACHE INTERNAL "Found GTest")
message(STATUS "Checking for GMOCK")
find_path(GMOCK_INCLUDE_DIR gmock/gmock.h
HINTS ${GMOCK_ROOT}/include /usr/include)
unset(GMOCK_SRC_DIR CACHE)
find_path(GMOCK_SRC_DIR src/gmock-all.cc
HINTS ${GMOCK_ROOT} /usr/src/gmock)
if (GMOCK_SRC_DIR)
set(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}/src")
else()
find_path(GMOCK_SRC_DIR gmock-all.cc
if (GMOCK_ROOT)
find_path(GMOCK_INCLUDE_DIR gmock/gmock.h
HINTS ${GMOCK_ROOT}/include)
find_path(GMOCK_SRC_DIR src/gmock-all.cc
HINTS ${GMOCK_ROOT} /usr/src/gmock)
if (GMOCK_SRC_DIR)
set(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}")
set(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}/src")
else()
find_path(GMOCK_SRC_DIR gmock-all.cc
HINTS ${GMOCK_ROOT} /usr/src/gmock)
if (GMOCK_SRC_DIR)
set(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}")
endif()
endif()
if (GMOCK_SRC_DIR AND GMOCK_INCLUDE_DIR)
set(GMOCK_SRC "${GMOCK_MAIN_SRC_DIR}/gmock-all.cc" PARENT_SCOPE)
set(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgmock.a" PARENT_SCOPE)
else()
message(FATAL_ERROR "GMOCK not found in GMOCK_ROOT")
endif()
endif()
if (GMOCK_SRC_DIR AND GMOCK_INCLUDE_DIR)
set(GMOCK_SRC "${GMOCK_MAIN_SRC_DIR}/gmock-all.cc" PARENT_SCOPE)
set(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgmock.a" PARENT_SCOPE)
else()
find_path(GMOCK_INCLUDE_DIR gmock/gmock.h)
find_library(GMOCK_SHARED_LIB gmock)
find_library(GMOCK_MAIN_LIB gmock_main)
if (GMOCK_MAIN_LIB AND GMOCK_SHARED_LIB)
if (GMOCK_MAIN_LIB AND GMOCK_SHARED_LIB AND GMOCK_INCLUDE_DIR)
set(GMOCK_LIB "${GMOCK_SHARED_LIB};${GMOCK_MAIN_LIB}" PARENT_SCOPE)
else()
message(FATAL_ERROR "GMOCK not found. Please install it or set GMOCK_ROOT")
endif()
endif()
if (GMOCK_INCLUDE_DIR AND (GMOCK_SHARED_LIB OR GMOCK_SRC_DIR))
set(GMOCK_FOUND YES PARENT_SCOPE)
else()
message(FATAL_ERROR "GMOCK not found. Please install it or set GMOCK_ROOT")
endif()
set(GMOCK_FOUND YES PARENT_SCOPE)
endfunction()