| # Create meta targets that build all examples for a single configuration: |
| foreach(cub_target IN LISTS CUB_TARGETS) |
| cub_get_target_property(config_prefix ${cub_target} PREFIX) |
| set(config_meta_target ${config_prefix}.examples) |
| add_custom_target(${config_meta_target}) |
| add_dependencies(${config_prefix}.all ${config_meta_target}) |
| endforeach() |
|
|
| ## cub_add_example |
| # |
| # Add an example executable and register it with ctest. |
| # |
| # target_name_var: Variable name to overwrite with the name of the example |
| # target. Useful for post-processing target information per-backend. |
| # example_name: The name of the example minus "<config_prefix>.example." For |
| # instance, examples/vector.cu will be "vector", and examples/cuda/copy.cu |
| # would be "cuda.copy". |
| # example_src: The source file that implements the example. |
| # cub_target: The reference cub target with configuration information. |
| # |
| function(cub_add_example target_name_var example_name example_src cub_target) |
| cub_get_target_property(config_prefix ${cub_target} PREFIX) |
|
|
| # The actual name of the test's target: |
| set(example_target ${config_prefix}.example.${example_name}) |
| set(${target_name_var} ${example_target} PARENT_SCOPE) |
|
|
| # Related target names: |
| set(config_meta_target ${config_prefix}.examples) |
| set(example_meta_target cub.all.example.${example_name}) |
|
|
| add_executable(${example_target} "${example_src}") |
| target_link_libraries(${example_target} ${cub_target}) |
| cub_clone_target_properties(${example_target} ${cub_target}) |
| target_include_directories(${example_target} PRIVATE "${CUB_SOURCE_DIR}/examples") |
|
|
| # Add to the active configuration's meta target |
| add_dependencies(${config_meta_target} ${example_target}) |
|
|
| # Meta target that builds examples with this name for all configurations: |
| if (NOT TARGET ${example_meta_target}) |
| add_custom_target(${example_meta_target}) |
| endif() |
| add_dependencies(${example_meta_target} ${example_target}) |
|
|
| if (CUB_ENABLE_EXAMPLES_WITH_RDC) |
| set_target_properties(${example_target} PROPERTIES |
| CUDA_SEPARABLE_COMPILATION ON |
| ) |
| endif() |
|
|
| add_test(NAME ${example_target} |
| COMMAND "$<TARGET_FILE:${example_target}>" |
| ) |
| endfunction() |
|
|
| add_subdirectory(block) |
| add_subdirectory(device) |
|
|