LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
cuda.py
Go to the documentation of this file.
1 """
2 cuda
3 
4 CUDA Tool for SCons
5 
6 """
7 
8 import os
9 import SCons.Tool
10 import SCons.Scanner.C
11 import SCons.Defaults
12 
13 CUDAScanner = SCons.Scanner.C.CScanner()
14 
15 # this object emitters add '.linkinfo' suffixed files as extra targets
16 # these files are generated by nvcc. The reason to do this is to remove
17 # the extra .linkinfo files when calling scons -c
18 def CUDANVCCStaticObjectEmitter(target, source, env):
19  tgt, src = SCons.Defaults.StaticObjectEmitter(target, source, env)
20  for file in src:
21  lifile = os.path.splitext(src[0].rstr())[0] + '.linkinfo'
22  #tgt.append(lifile)
23  return tgt, src
24 def CUDANVCCSharedObjectEmitter(target, source, env):
25  tgt, src = SCons.Defaults.SharedObjectEmitter(target, source, env)
26  for file in src:
27  lifile = os.path.splitext(src[0].rstr())[0] + '.linkinfo'
28  #tgt.append(lifile)
29  return tgt, src
30 
31 def generate(env):
32  staticObjBuilder, sharedObjBuilder = SCons.Tool.createObjBuilders(env);
33  staticObjBuilder.add_action('.cu', '$STATICNVCCCMD')
34  staticObjBuilder.add_emitter('.cu', CUDANVCCStaticObjectEmitter)
35  sharedObjBuilder.add_action('.cu', '$SHAREDNVCCCMD')
36  sharedObjBuilder.add_emitter('.cu', CUDANVCCSharedObjectEmitter)
37  SCons.Tool.SourceFileScanner.add_scanner('.cu', CUDAScanner)
38 
39  # default compiler
40  env['NVCC'] = 'nvcc'
41 
42  # default flags for the NVCC compiler
43  env['NVCCFLAGS'] = ''
44  env['STATICNVCCFLAGS'] = ''
45  env['SHAREDNVCCFLAGS'] = ''
46  env['ENABLESHAREDNVCCFLAG'] = '-shared'
47  env['NVCCCMDLINE'] = ''
48 
49  # default NVCC commands
50  env['STATICNVCCCMD'] = '$NVCC -o $TARGET -c $NVCCFLAGS $_CPPINCFLAGS $STATICNVCCFLAGS $NVCCCMDLINE $SOURCES'
51  env['SHAREDNVCCCMD'] = '$NVCC -o $TARGET -c $NVCCFLAGS $_CPPINCFLAGS $SHAREDNVCCFLAGS $ENABLESHAREDNVCCFLAG $NVCCCMDLINE $SOURCES'
52 
53 def exists(env):
54  return env.Detect('nvcc')
55 
def CUDANVCCSharedObjectEmitter
Definition: cuda.py:24
def CUDANVCCStaticObjectEmitter
Definition: cuda.py:18
def exists
Definition: cuda.py:53
def generate
Definition: cuda.py:31