env = Environment() # config # just comment following line to disable CUDA cuda = 'cuda-9.2' try: cuda except NameError: cuda = '' cuda_path = '/opt/' + cuda cuda_bin = cuda_path + '/bin' cuda_pkgconfig = cuda_path + '/pkgconfig' cuda_flags = '-O3 -use_fast_math' libs = ['gl', 'x11', 'OpenCL'] # compute build options flags = ' -O3 -Wall -fmessage-length=0 -DGL_GLEXT_PROTOTYPES' cuda_flags = ' ' if cuda: flags += ' -DCUDA' # remember pkg-config path old = env['ENV']['PKG_CONFIG_PATH'] if 'PKG_CONFIG_PATH' in env['ENV'] else None env['ENV']['PKG_CONFIG_PATH'] = cuda_pkgconfig env.ParseConfig('pkg-config --cflags --libs ' + cuda) # restore pkg-config path if old: env['ENV']['PKG_CONFIG_PATH'] = old env['BUILDERS']['Cuda'] = Builder( action = cuda_bin + '/nvcc ' + cuda_flags + '-ptx $SOURCE -o $TARGET', suffix = '.ptx', src_suffix = '.cu' ) # files lists target = 'contourgl' sources = [ 'contourgl.cpp', 'clcontext.cpp', 'clrender.cpp', 'contour.cpp', 'contourbuilder.cpp', 'environment.cpp', 'geometry.cpp', 'glcontext.cpp', 'measure.cpp', 'polyspan.cpp', 'shaders.cpp', 'swrender.cpp', 'test.cpp', 'triangulator.cpp', 'utils.cpp' ] if cuda: sources += [ 'cudacontext.cpp', 'cudarender.cpp' ] cuda_sources = [ 'cuda/contour.cu', 'cuda/hello.cu' ] # build env.ParseConfig('pkg-config --cflags --libs ' + ' '.join(libs)) if cuda: for cuda_source in cuda_sources: env.Cuda(cuda_source) env.Program( target = target, source = sources, parse_flags = flags )