changed: support system installed gtest
This commit is contained in:
parent
6784897dcc
commit
6df2fd3084
@ -61,7 +61,6 @@ set(IFEM_INCLUDES
|
|||||||
${PROJECT_SOURCE_DIR}/src/Utility
|
${PROJECT_SOURCE_DIR}/src/Utility
|
||||||
${PROJECT_SOURCE_DIR}/3rdparty
|
${PROJECT_SOURCE_DIR}/3rdparty
|
||||||
${PROJECT_SOURCE_DIR}/3rdparty/expreval
|
${PROJECT_SOURCE_DIR}/3rdparty/expreval
|
||||||
${PROJECT_SOURCE_DIR}/3rdparty/gtest/include
|
|
||||||
${PROJECT_BINARY_DIR}
|
${PROJECT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -195,6 +194,7 @@ else()
|
|||||||
configure_file(cmake/Templates/IFEMConfig.cmake.in IFEMConfig.cmake @ONLY)
|
configure_file(cmake/Templates/IFEMConfig.cmake.in IFEMConfig.cmake @ONLY)
|
||||||
install(FILES ${CMAKE_BINARY_DIR}/IFEMConfigVersion.cmake
|
install(FILES ${CMAKE_BINARY_DIR}/IFEMConfigVersion.cmake
|
||||||
${CMAKE_BINARY_DIR}/IFEMConfig.cmake
|
${CMAKE_BINARY_DIR}/IFEMConfig.cmake
|
||||||
|
cmake/Modules/FindTestLib.cmake
|
||||||
cmake/Scripts/CheckCommits.cmake
|
cmake/Scripts/CheckCommits.cmake
|
||||||
cmake/Scripts/DownloadGTest.cmake
|
cmake/Scripts/DownloadGTest.cmake
|
||||||
cmake/Scripts/UseMultiArch.cmake
|
cmake/Scripts/UseMultiArch.cmake
|
||||||
|
@ -77,8 +77,7 @@ else()
|
|||||||
${IFEM_PATH}/src/LinAlg
|
${IFEM_PATH}/src/LinAlg
|
||||||
${IFEM_PATH}/src/SIM
|
${IFEM_PATH}/src/SIM
|
||||||
${IFEM_PATH}/src/Utility
|
${IFEM_PATH}/src/Utility
|
||||||
${IFEM_PATH}/3rdparty
|
${IFEM_PATH}/3rdparty)
|
||||||
${IFEM_PATH}/3rdparty/gtest/include)
|
|
||||||
|
|
||||||
find_library(IFEM_LIBRARIES
|
find_library(IFEM_LIBRARIES
|
||||||
NAMES IFEM
|
NAMES IFEM
|
||||||
@ -155,8 +154,5 @@ set(IFEM_CXX_FLAGS "${IFEM_CXX_FLAGS} -DReal=double")
|
|||||||
list(APPEND IFEM_DEFINITIONS -DReal=double)
|
list(APPEND IFEM_DEFINITIONS -DReal=double)
|
||||||
|
|
||||||
set(IFEM_CONFIGURED 1)
|
set(IFEM_CONFIGURED 1)
|
||||||
if(NOT IFEM_TESTING_INCLUDED)
|
|
||||||
include(../Scripts/IFEMTesting)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(../Scripts/IFEMDoxy)
|
include(../Scripts/IFEMDoxy)
|
||||||
|
@ -55,6 +55,7 @@ ENDIF(IFEM_WHOLE_PROG_OPTIM)
|
|||||||
FIND_PACKAGE(GoTools REQUIRED)
|
FIND_PACKAGE(GoTools REQUIRED)
|
||||||
FIND_PACKAGE(GoTrivariate REQUIRED)
|
FIND_PACKAGE(GoTrivariate REQUIRED)
|
||||||
FIND_PACKAGE(ARPACK REQUIRED)
|
FIND_PACKAGE(ARPACK REQUIRED)
|
||||||
|
find_package(TestLib REQUIRED)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
27
cmake/Modules/FindTestLib.cmake
Normal file
27
cmake/Modules/FindTestLib.cmake
Normal 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()
|
@ -25,8 +25,11 @@ set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include)
|
|||||||
# Library
|
# Library
|
||||||
externalproject_get_property(googletest binary_dir)
|
externalproject_get_property(googletest binary_dir)
|
||||||
set(GTEST_LIBRARIES ${binary_dir}/googlemock/gtest/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a)
|
set(GTEST_LIBRARIES ${binary_dir}/googlemock/gtest/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a)
|
||||||
add_library(gtest UNKNOWN IMPORTED)
|
add_library(GTest::GTest UNKNOWN IMPORTED)
|
||||||
set_property(TARGET gtest PROPERTY IMPORTED_LOCATION
|
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIRS})
|
||||||
${GTEST_LIBRARIES})
|
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)
|
set_property(TARGET googletest PROPERTY EXCLUDE_FROM_ALL 1)
|
||||||
add_dependencies(gtest googletest)
|
add_dependencies(GTest::GTest googletest)
|
||||||
|
@ -4,6 +4,11 @@ macro(IFEM_add_test_app path workdir name parallel)
|
|||||||
else()
|
else()
|
||||||
set(TEST_SRCS ${path})
|
set(TEST_SRCS ${path})
|
||||||
endif()
|
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})
|
add_executable(${name}-test ${EXCL_ALL} ${IFEM_PATH}/src/IFEM-test.C ${TEST_SRCS})
|
||||||
if(${parallel} GREATER 0)
|
if(${parallel} GREATER 0)
|
||||||
set_property(TARGET ${name}-test PROPERTY
|
set_property(TARGET ${name}-test PROPERTY
|
||||||
@ -14,7 +19,7 @@ macro(IFEM_add_test_app path workdir name parallel)
|
|||||||
WORKING_DIRECTORY ${workdir}
|
WORKING_DIRECTORY ${workdir}
|
||||||
NO_PRETTY_VALUES)
|
NO_PRETTY_VALUES)
|
||||||
list(APPEND TEST_APPS ${name}-test)
|
list(APPEND TEST_APPS ${name}-test)
|
||||||
target_link_libraries(${name}-test ${ARGN} gtest pthread)
|
target_link_libraries(${name}-test GTest::GTest ${ARGN})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(IFEM_add_unittests IFEM_PATH)
|
macro(IFEM_add_unittests IFEM_PATH)
|
||||||
@ -122,9 +127,6 @@ macro(add_check_target)
|
|||||||
if(IFEM_AS_SUBMODULE OR IFEM_LIBRARY_BUILD)
|
if(IFEM_AS_SUBMODULE OR IFEM_LIBRARY_BUILD)
|
||||||
ifem_add_unittests(${IFEM_PATH})
|
ifem_add_unittests(${IFEM_PATH})
|
||||||
endif()
|
endif()
|
||||||
if(NOT TARGET gtest)
|
|
||||||
add_subdirectory(${IFEM_PATH}/3rdparty/gtest gtest ${EXCL_ALL})
|
|
||||||
endif()
|
|
||||||
add_dependencies(check ${TEST_APPS})
|
add_dependencies(check ${TEST_APPS})
|
||||||
add_custom_target(testapps DEPENDS ${TEST_APPS})
|
add_custom_target(testapps DEPENDS ${TEST_APPS})
|
||||||
|
|
||||||
@ -179,19 +181,7 @@ endif()
|
|||||||
set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=yes")
|
set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=yes")
|
||||||
include(CTest)
|
include(CTest)
|
||||||
|
|
||||||
set(IFEM_TESTING_INCLUDED 1)
|
find_package(TestLib REQUIRED)
|
||||||
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_program(VTFLS_COMMAND vtfls)
|
find_program(VTFLS_COMMAND vtfls)
|
||||||
find_program(H5LS_COMMAND h5ls)
|
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_CPPCHECK_TEST_SCRIPT} cppcheck-test.sh @ONLY)
|
||||||
configure_file(${IFEM_IOTEST_SCRIPT} iotest.sh @ONLY)
|
configure_file(${IFEM_IOTEST_SCRIPT} iotest.sh @ONLY)
|
||||||
|
|
||||||
if(IFEM_BUILD_TESTING)
|
set(IFEM_TESTING_INCLUDED 1 CACHE BOOL "" FORCE)
|
||||||
set(EXCL_ALL)
|
|
||||||
else()
|
|
||||||
set(EXCL_ALL EXCLUDE_FROM_ALL)
|
|
||||||
endif()
|
|
||||||
|
@ -104,11 +104,12 @@ function build_module {
|
|||||||
test $? -eq 0 || exit 2
|
test $? -eq 0 || exit 2
|
||||||
njob=$(( $nproc / 2 ))
|
njob=$(( $nproc / 2 ))
|
||||||
nomp=$(( $nproc > 1 ? 2 : 1))
|
nomp=$(( $nproc > 1 ? 2 : 1))
|
||||||
|
CTEST_OP=${CTEST_OP:-Test}
|
||||||
if test -z "$CTEST_CONFIGURATION"
|
if test -z "$CTEST_CONFIGURATION"
|
||||||
then
|
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
|
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
|
for log in Testing/Temporary/MemoryCheck.*.log
|
||||||
do
|
do
|
||||||
if ! grep -q "ERROR SUMMARY: 0 errors" $log
|
if ! grep -q "ERROR SUMMARY: 0 errors" $log
|
||||||
|
Loading…
Reference in New Issue
Block a user