changed: support system installed gtest

This commit is contained in:
Arne Morten Kvarving 2022-05-11 15:49:26 +02:00
parent 6784897dcc
commit 6df2fd3084
7 changed files with 48 additions and 34 deletions

View File

@ -61,7 +61,6 @@ set(IFEM_INCLUDES
${PROJECT_SOURCE_DIR}/src/Utility
${PROJECT_SOURCE_DIR}/3rdparty
${PROJECT_SOURCE_DIR}/3rdparty/expreval
${PROJECT_SOURCE_DIR}/3rdparty/gtest/include
${PROJECT_BINARY_DIR}
)
@ -195,6 +194,7 @@ else()
configure_file(cmake/Templates/IFEMConfig.cmake.in IFEMConfig.cmake @ONLY)
install(FILES ${CMAKE_BINARY_DIR}/IFEMConfigVersion.cmake
${CMAKE_BINARY_DIR}/IFEMConfig.cmake
cmake/Modules/FindTestLib.cmake
cmake/Scripts/CheckCommits.cmake
cmake/Scripts/DownloadGTest.cmake
cmake/Scripts/UseMultiArch.cmake

View File

@ -77,8 +77,7 @@ else()
${IFEM_PATH}/src/LinAlg
${IFEM_PATH}/src/SIM
${IFEM_PATH}/src/Utility
${IFEM_PATH}/3rdparty
${IFEM_PATH}/3rdparty/gtest/include)
${IFEM_PATH}/3rdparty)
find_library(IFEM_LIBRARIES
NAMES IFEM
@ -155,8 +154,5 @@ set(IFEM_CXX_FLAGS "${IFEM_CXX_FLAGS} -DReal=double")
list(APPEND IFEM_DEFINITIONS -DReal=double)
set(IFEM_CONFIGURED 1)
if(NOT IFEM_TESTING_INCLUDED)
include(../Scripts/IFEMTesting)
endif()
include(../Scripts/IFEMDoxy)

View File

@ -55,6 +55,7 @@ ENDIF(IFEM_WHOLE_PROG_OPTIM)
FIND_PACKAGE(GoTools REQUIRED)
FIND_PACKAGE(GoTrivariate REQUIRED)
FIND_PACKAGE(ARPACK REQUIRED)
find_package(TestLib REQUIRED)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

View File

@ -0,0 +1,27 @@
find_package(GTest QUIET)
if(NOT TestLib_FOUND)
if(GTest_FOUND)
set(TESTLIB_LIBRARY GTest::GTest)
else()
find_package(Threads REQUIRED)
if(IFEM_INTREE_BUILD OR IFEM_LIBRARY_BUILD OR IFEM_AS_SUBMODULE)
add_subdirectory(${IFEM_PATH}/3rdparty/gtest gtest EXCLUDE_FROM_ALL)
add_library(GTest::GTest UNKNOWN IMPORTED)
set_target_properties(GTest::GTest PROPERTIES
IMPORTED_LOCATION ${PROJECT_BINARY_DIR}/gtest/libgtest.a
INTERFACE_LINK_LIBRARIES Threads::Threads
INTERFACE_INCLUDE_DIRECTORIES ${IFEM_PATH}/3rdparty/gtest/include)
add_dependencies(GTest::GTest gtest)
else()
include(DownloadGTest)
endif()
get_target_property(TESTLIB_LIBRARY GTest::GTest IMPORTED_LOCATION)
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(TestLib DEFAULT_MSG
TESTLIB_LIBRARY)
if(TestLib_FOUND)
set(GTest_FOUND CACHE BOOL "" FORCE)
endif()

View File

@ -25,8 +25,11 @@ set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include)
# Library
externalproject_get_property(googletest binary_dir)
set(GTEST_LIBRARIES ${binary_dir}/googlemock/gtest/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a)
add_library(gtest UNKNOWN IMPORTED)
set_property(TARGET gtest PROPERTY IMPORTED_LOCATION
${GTEST_LIBRARIES})
add_library(GTest::GTest UNKNOWN IMPORTED)
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIRS})
set_target_properties(GTest::GTest PROPERTIES
IMPORTED_LOCATION ${GTEST_LIBRARIES}
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS}
INTERFACE_LINK_LIBRARIES Threads::Threads)
set_property(TARGET googletest PROPERTY EXCLUDE_FROM_ALL 1)
add_dependencies(gtest googletest)
add_dependencies(GTest::GTest googletest)

View File

@ -4,6 +4,11 @@ macro(IFEM_add_test_app path workdir name parallel)
else()
set(TEST_SRCS ${path})
endif()
if(IFEM_BUILD_TESTING)
set(EXCL_ALL)
else()
set(EXCL_ALL EXCLUDE_FROM_ALL)
endif()
add_executable(${name}-test ${EXCL_ALL} ${IFEM_PATH}/src/IFEM-test.C ${TEST_SRCS})
if(${parallel} GREATER 0)
set_property(TARGET ${name}-test PROPERTY
@ -14,7 +19,7 @@ macro(IFEM_add_test_app path workdir name parallel)
WORKING_DIRECTORY ${workdir}
NO_PRETTY_VALUES)
list(APPEND TEST_APPS ${name}-test)
target_link_libraries(${name}-test ${ARGN} gtest pthread)
target_link_libraries(${name}-test GTest::GTest ${ARGN})
endmacro()
macro(IFEM_add_unittests IFEM_PATH)
@ -122,9 +127,6 @@ macro(add_check_target)
if(IFEM_AS_SUBMODULE OR IFEM_LIBRARY_BUILD)
ifem_add_unittests(${IFEM_PATH})
endif()
if(NOT TARGET gtest)
add_subdirectory(${IFEM_PATH}/3rdparty/gtest gtest ${EXCL_ALL})
endif()
add_dependencies(check ${TEST_APPS})
add_custom_target(testapps DEPENDS ${TEST_APPS})
@ -179,19 +181,7 @@ endif()
set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=yes")
include(CTest)
set(IFEM_TESTING_INCLUDED 1)
if(IFEM_INTREE_BUILD)
include_directories(${IFEM_PATH}/3rdparty/gtest/include)
elseif(NOT IFEM_AS_SUBMODULE AND NOT IFEM_LIBRARY_BUILD
AND NOT TARGET gtest)
if (EXISTS ${PROJECT_SOURCE_DIR}/../gtest)
add_subdirectory(${PROJECT_SOURCE_DIR}/../gtest gtest)
include_directories(${PROJECT_SOURCE_DIR}/../gtest/include)
else()
include(DownloadGTest)
include_directories(${GTEST_INCLUDE_DIRS})
endif()
endif()
find_package(TestLib REQUIRED)
find_program(VTFLS_COMMAND vtfls)
find_program(H5LS_COMMAND h5ls)
@ -202,8 +192,4 @@ configure_file(${IFEM_CLANG_CHECK_TEST_SCRIPT} clang-check-test.sh @ONLY)
configure_file(${IFEM_CPPCHECK_TEST_SCRIPT} cppcheck-test.sh @ONLY)
configure_file(${IFEM_IOTEST_SCRIPT} iotest.sh @ONLY)
if(IFEM_BUILD_TESTING)
set(EXCL_ALL)
else()
set(EXCL_ALL EXCLUDE_FROM_ALL)
endif()
set(IFEM_TESTING_INCLUDED 1 CACHE BOOL "" FORCE)

View File

@ -104,11 +104,12 @@ function build_module {
test $? -eq 0 || exit 2
njob=$(( $nproc / 2 ))
nomp=$(( $nproc > 1 ? 2 : 1))
CTEST_OP=${CTEST_OP:-Test}
if test -z "$CTEST_CONFIGURATION"
then
OMP_NUM_THREADS=$nomp ctest -T Test --test-timeout 180 --no-compress-output -j$njob
OMP_NUM_THREADS=$nomp ctest -T ${CTEST_OP} --test-timeout 180 --no-compress-output -j$njob
else
OMP_NUM_THREADS=$nomp ctest -C $CTEST_CONFIGURATION -T Test --test-timeout 180 --no-compress-output -j$njob
OMP_NUM_THREADS=$nomp ctest -C $CTEST_CONFIGURATION -T ${CTEST_OP} --test-timeout 180 --no-compress-output -j$njob
for log in Testing/Temporary/MemoryCheck.*.log
do
if ! grep -q "ERROR SUMMARY: 0 errors" $log