blob: 7ba7e220870d0c33924cc3941445ab57cee8392a [file] [log] [blame]
# example here is inspired by Nvidia's blog post:
# https://developer.nvidia.com/blog/separate-compilation-linking-cuda-device-code/
# code:
# https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#examples
project('device linking', ['cpp'], version : '1.0.0')
# test that optional initialization of cuda works to disable thin archives
add_languages('cuda')
nvcc = meson.get_compiler('cuda')
cuda = import('unstable-cuda')
arch_flags = cuda.nvcc_arch_flags(nvcc.version(), 'Common')
message('NVCC version: ' + nvcc.version())
message('NVCC flags: ' + ' '.join(arch_flags))
# test device linking with -dc (which is equivalent to `--relocatable-device-code true`)
lib = static_library('devicefuncs', ['b.cu'], cuda_args : ['-dc'] + arch_flags)
exe = executable('app', 'main.cu', cuda_args : ['-dc'] + arch_flags, link_with : lib, link_args : arch_flags)
# if we don't have a CUDA-capable GPU available, avoid creating the test
if run_command('__nvcc_device_query', check : false).returncode() == 0
test('cudatest', exe)
endif