if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") # MSVC builds fail at runtime. Benchmarks are linux-only for now. message(STATUS "Thrust benchmarking is not available on MSVC.") return() endif() add_custom_target(thrust.all.bench) foreach(thrust_target IN LISTS THRUST_TARGETS) thrust_get_target_property(config_host ${thrust_target} HOST) thrust_get_target_property(config_device ${thrust_target} DEVICE) thrust_get_target_property(config_prefix ${thrust_target} PREFIX) # Skip non cpp.cuda targets: if (NOT config_host STREQUAL "CPP" OR NOT config_device STREQUAL "CUDA") continue() endif() set(bench_target ${config_prefix}.bench) add_executable(${bench_target} bench.cu) target_link_libraries(${bench_target} PRIVATE ${thrust_target}) target_include_directories(${bench_target} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") thrust_clone_target_properties(${bench_target} ${thrust_target}) thrust_fix_clang_nvcc_build_for(${bench_target}) add_dependencies(thrust.all.bench ${bench_target}) add_dependencies(${config_prefix}.all ${bench_target}) endforeach()