From 84d9f1c9a58d837fd036d5820a7c234cd9fbe230 Mon Sep 17 00:00:00 2001 From: Christian Gruber Date: Wed, 21 Aug 2019 23:36:17 +0200 Subject: [PATCH] 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. --- common/cmake_modules/GncAddTest.cmake | 77 +++++++++++++++------------ 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/common/cmake_modules/GncAddTest.cmake b/common/cmake_modules/GncAddTest.cmake index 5efc410fee..ba9be28f7d 100644 --- a/common/cmake_modules/GncAddTest.cmake +++ b/common/cmake_modules/GncAddTest.cmake @@ -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()