diff --git a/testing/cmake/CMakeLists.txt b/testing/cmake/CMakeLists.txt index 6e8206813..294e0e5d4 100644 --- a/testing/cmake/CMakeLists.txt +++ b/testing/cmake/CMakeLists.txt @@ -1,24 +1,3 @@ -thrust_update_system_found_flags() - -set(extra_cmake_flags) - -if (THRUST_CPP_FOUND AND THRUST_CUDA_FOUND) - # Test that we can use `find_package` on an installed Thrust: - add_test( - NAME thrust.test.cmake.test_install - COMMAND "${CMAKE_COMMAND}" - --log-level=VERBOSE - -G "${CMAKE_GENERATOR}" - -S "${CMAKE_CURRENT_SOURCE_DIR}/test_install" - -B "${CMAKE_CURRENT_BINARY_DIR}/test_install" - -D "THRUST_BINARY_DIR=${Thrust_BINARY_DIR}" - -D "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - -D "CMAKE_CUDA_COMPILER=${CMAKE_CUDA_COMPILER}" - -D "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" - ${extra_cmake_flags} - ) -endif() - # Check source code for issues that can be found by pattern matching: add_test( NAME thrust.test.cmake.check_source_files diff --git a/testing/cmake/test_install/CMakeLists.txt b/testing/cmake/test_install/CMakeLists.txt deleted file mode 100644 index 6947fe2c1..000000000 --- a/testing/cmake/test_install/CMakeLists.txt +++ /dev/null @@ -1,110 +0,0 @@ -# Test that an installation of the project can be located by find_package() call -# with appropriate prefix settings. -# -# Expects THRUST_BINARY_DIR to be set to an existing thrust build directory. - -cmake_minimum_required(VERSION 3.15) - -project(ThrustTestInstall LANGUAGES CXX CUDA) - -# This will eventually get deleted recursively -- keep that in mind if modifying -set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/install_prefix/") - -function(do_manual_install) - # Inspired by the VTK-m install tests, we can just glob up all of the - # cmake_install.cmake, include (ie. run) them, and they'll effectively - # install the project into the current value of CMAKE_INSTALL_PREFIX. - - # Gather all of the install files from Thrust's root: - file(GLOB_RECURSE install_files - LIST_DIRECTORIES False - "${THRUST_BINARY_DIR}/cmake_install.cmake" - ) - - message(STATUS "Locating install files...") - foreach (install_file IN LISTS install_files) - message(STATUS " * ${install_file}") - endforeach() - - message(STATUS "Building install tree...") - foreach(install_file IN LISTS install_files) - include("${install_file}") - endforeach() -endfunction() - -function(do_cleanup) - message(STATUS "Removing ${CMAKE_INSTALL_PREFIX}") - file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}") -endfunction() - -function(assert_boolean var_name expect) - if (expect) - if (NOT ${var_name}) - message(FATAL_ERROR "'${var_name}' is false, expected true.") - endif() - else() - if (${var_name}) - message(FATAL_ERROR "'${var_name}' is true, expected false.") - endif() - endif() -endfunction() - -function(assert_target target_name) - if (NOT TARGET "${target_name}") - message(FATAL_ERROR "Target '${target_name}' not defined.") - endif() -endfunction() - -function(find_installed_project) - set(CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}") - find_package(Thrust CONFIG COMPONENTS CPP CUDA) - - if (NOT Thrust_FOUND) - message(FATAL_ERROR - "find_package(Thrust) failed. " - "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" - ) - endif() - - # Test some internal config vars to check that this is the expected install: - # TODO The cmake_path (3.19) command will provide more robust ways to do this - - # Escape regex special characters in the install prefix, see - # https://gitlab.kitware.com/cmake/cmake/-/issues/18580 - string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" - prefix_regex - "${CMAKE_INSTALL_PREFIX}" - ) - if (NOT _THRUST_INCLUDE_DIR MATCHES "^${prefix_regex}") - message(FATAL_ERROR - "Found Thrust in unexpected location: " - " * _THRUST_INCLUDE_DIR=${_THRUST_INCLUDE_DIR} " - " * ExpectedPrefix=${CMAKE_INSTALL_DIR}" - ) - endif() - if (NOT _CUB_INCLUDE_DIR MATCHES "^${prefix_regex}") - message(FATAL_ERROR - "Found CUB in unexpected location: " - " * _CUB_INCLUDE_DIR=${_CUB_INCLUDE_DIR} " - " * ExpectedPrefix=${CMAKE_INSTALL_DIR}" - ) - endif() - - thrust_create_target(Thrust) - assert_target(Thrust) - assert_target(CUB::CUB) - assert_target(Thrust::CPP::Host) - assert_target(Thrust::CUDA::Device) - - thrust_update_system_found_flags() - assert_boolean(THRUST_CPP_FOUND TRUE) - assert_boolean(THRUST_CUDA_FOUND TRUE) - assert_boolean(THRUST_OMP_FOUND FALSE) - assert_boolean(THRUST_TBB_FOUND FALSE) - -endfunction() - -do_cleanup() # Prepare for new installation -do_manual_install() -find_installed_project() -do_cleanup() # Clean up if successful