@@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.8)
22
33project (Thrust CXX )
44
5+ set (THRUST_SOURCE ${CMAKE_SOURCE_DIR} )
6+ include (cmake/common_variables.cmake )
7+
58# Default to a release build.
69if ("" STREQUAL "${CMAKE_BUILD_TYPE} " )
710 set (CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build." FORCE )
@@ -177,6 +180,12 @@ if ("GNU" STREQUAL "${CMAKE_CXX_COMPILER_ID}")
177180 # becoming part of the type system; we don't care.
178181 append_option_if_available ("-Wnoexcept-type" THRUST_CXX_WARNINGS )
179182 endif ()
183+
184+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1 AND CMAKE_CXX_STANDARD EQUAL 98)
185+ # thrust::complex can't really be made trivially copyable in pre-11
186+ # disable a warning about a non-trivially-copyable type being memmoved that was added to GCC 8
187+ append_option_if_available ("-Wno-class-memaccess" THRUST_CXX_WARNINGS )
188+ endif ()
180189endif ()
181190
182191if (("Clang" STREQUAL "${CMAKE_CXX_COMPILER_ID} " ) OR
@@ -319,6 +328,10 @@ enable_testing()
319328
320329# Handle tests
321330
331+ set (THRUST_TEST_RUN_ARGUMENTS
332+ -DTHRUST_SOURCE=${CMAKE_SOURCE_DIR}
333+ -P "${CMAKE_SOURCE_DIR} /cmake/run_test.cmake" )
334+
322335list (APPEND THRUST_TESTFRAMEWORK_FILES testing/unittest/testframework.cu)
323336if ("CUDA" STREQUAL "${THRUST_DEVICE_SYSTEM} " )
324337 list (APPEND THRUST_TESTFRAMEWORK_FILES testing/unittest/cuda/testframework.cu)
@@ -447,7 +460,10 @@ foreach (THRUST_TEST_SOURCE IN LISTS THRUST_TESTS)
447460 ${THRUST_ADDITIONAL_LIBRARIES} )
448461
449462 if (THRUST_TEST_ADD_TO_CTEST)
450- add_test (${THRUST_TEST} ${THRUST_TEST} )
463+ add_test (NAME ${THRUST_TEST}
464+ COMMAND ${CMAKE_COMMAND}
465+ -DTHRUST_BINARY=$<TARGET_FILE:${THRUST_TEST}>
466+ ${THRUST_TEST_RUN_ARGUMENTS} )
451467 endif ()
452468
453469 if ("CUDA" STREQUAL "${THRUST_DEVICE_SYSTEM} " )
@@ -474,7 +490,10 @@ foreach (THRUST_TEST_SOURCE IN LISTS THRUST_TESTS)
474490 PROPERTIES CUDA_SEPARABLE_COMPILATION ON )
475491
476492 if (THRUST_TEST_ADD_TO_CTEST)
477- add_test (${THRUST_TEST_RDC} ${THRUST_TEST_RDC} )
493+ add_test (NAME ${THRUST_TEST_RDC}
494+ COMMAND ${CMAKE_COMMAND}
495+ -DTHRUST_BINARY=$<TARGET_FILE:${THRUST_TEST_RDC}>
496+ ${THRUST_TEST_RUN_ARGUMENTS} )
478497 endif ()
479498 endif ()
480499endforeach ()
@@ -484,6 +503,20 @@ endforeach ()
484503option (THRUST_EXAMPLE_FILECHECK_PATH "Path to the LLVM FileCheck utility." "" )
485504option (THRUST_ENABLE_EXAMPLES_WITH_RDC "Also build all examples with RDC." OFF )
486505
506+ set (THRUST_EXAMPLE_FILECHECK_ENABLED OFF )
507+ if (NOT "" STREQUAL "${THRUST_EXAMPLE_FILECHECK_PATH} " )
508+ execute_process (
509+ COMMAND "${THRUST_EXAMPLE_FILECHECK_PATH} " "${THRUST_FILECHECK_DATA_PATH} /thrust.sanity.filecheck"
510+ INPUT_FILE "${CMAKE_SOURCE_DIR} /cmake/sanity"
511+ RESULT_VARIABLE THRUST_FILECHECK_RESULT
512+ )
513+
514+ if ("0" STREQUAL "${THRUST_FILECHECK_RESULT} " )
515+ set (THRUST_EXAMPLE_FILECHECK_ENABLED ON )
516+ message ("-- FileCheck enabled: ${THRUST_EXAMPLE_FILECHECK_PATH} " )
517+ endif ()
518+ endif ()
519+
487520list (APPEND THRUST_EXAMPLE_GLOBS examples/*.cu)
488521list (APPEND THRUST_EXAMPLE_GLOBS examples/*.cpp)
489522
@@ -509,6 +542,12 @@ else ()
509542 )
510543endif ()
511544
545+ set (THRUST_EXAMPLE_RUN_ARGUMENTS
546+ -DTHRUST_SOURCE=${CMAKE_SOURCE_DIR}
547+ -DTHRUST_FILECHECK_ENABLED=${THRUST_EXAMPLE_FILECHECK_ENABLED}
548+ -DTHRUST_FILECHECK=${THRUST_EXAMPLE_FILECHECK_PATH}
549+ -P "${CMAKE_SOURCE_DIR} /cmake/run_example.cmake" )
550+
512551foreach (THRUST_EXAMPLE_SOURCE IN LISTS THRUST_EXAMPLES)
513552 # TODO: Per-example flags.
514553
@@ -545,7 +584,11 @@ foreach (THRUST_EXAMPLE_SOURCE IN LISTS THRUST_EXAMPLES)
545584 target_link_libraries (${THRUST_EXAMPLE}
546585 ${THRUST_ADDITIONAL_LIBRARIES} )
547586
548- add_test (${THRUST_EXAMPLE} ${THRUST_EXAMPLE} )
587+ add_test (NAME ${THRUST_EXAMPLE}
588+ COMMAND ${CMAKE_COMMAND}
589+ -DTHRUST_EXAMPLE=${THRUST_EXAMPLE}
590+ -DTHRUST_BINARY=$<TARGET_FILE:${THRUST_EXAMPLE}>
591+ ${THRUST_EXAMPLE_RUN_ARGUMENTS} )
549592
550593 if ("CUDA" STREQUAL "${THRUST_DEVICE_SYSTEM} " AND THRUST_ENABLE_EXAMPLES_WITH_RDC)
551594 set (THRUST_EXAMPLE_RDC "thrust.example.${THRUST_EXAMPLE_CATEGORY} rdc.${THRUST_EXAMPLE_NAME} " )
@@ -567,7 +610,11 @@ foreach (THRUST_EXAMPLE_SOURCE IN LISTS THRUST_EXAMPLES)
567610 set_target_properties (${THRUST_EXAMPLE_RDC}
568611 PROPERTIES CUDA_SEPERABLE_COMPILATION ON )
569612
570- add_test (${THRUST_EXAMPLE_RDC} ${THRUST_EXAMPLE_RDC} )
613+ add_test (NAME ${THRUST_EXAMPLE_RDC}
614+ COMMAND ${CMAKE_COMMAND}
615+ -DTHRUST_EXAMPLE=${THRUST_EXAMPLE}
616+ -DTHRUST_BINARY=$<TARGET_FILE:${THRUST_EXAMPLE_RDC}>
617+ ${THRUST_EXAMPLE_RUN_ARGUMENTS} )
571618 endif ()
572619endforeach ()
573620
0 commit comments