# # Karin Lagergren # # To build debug executable: scons debug=1 # To make gprof executable: scons prof=1 # To clean away all files built by scons: scons -c # To build ppc version: scons ppc=1 # To build version for "symmetric" gretina detector: scons symmetric=1 # If ppc=1 is used, symmetric has no effect # To build libsignal.so/libsignal_symm.so libsignal_ppc.so: # scons [ppc=1] libsignal[_symm|_ppc|].so # To install libsignal in /usr/local/lib: scons [ppc=1] install # To set install prefix: scons prefix=... # "scons ." will build everything prefix = '/usr/local' symmetric = ppc = wc = 'no' cflags = ['-Wall'] if ARGUMENTS.get('debug', 0): cflags.append('-g') if ARGUMENTS.get('prof', 0): cflags.append('-pg') if ARGUMENTS.get('symmetric', 0): cflags.append('-DSYMMETRIC_CRYSTAL') symmetric = 'yes' if ARGUMENTS.get('chatty',0): cflags.append('-DCHATTY'); if ARGUMENTS.get('ppc',0): cflags.append('-DSYMMETRIC_CRYSTAL') cflags.append('-DPPC') ppc = 'yes' if ARGUMENTS.get('wc',0): cflags.append('-DWEIRD_COAXIAL_GEOMETRY') wc = 'yes' if ARGUMENTS.get('prefix',0): prefix = ARGUMENTS.get('prefix') libs = ['m', 'readline', 'ncurses'] #readline for signal_tester.c libpath = [] includepath = [] if symmetric == 'yes' and ppc == 'yes': symmetric = no Default("stester") env = Environment( CCFLAGS=cflags, CPPPATH = includepath, LIBS=libs, LIBPATH=libpath, RPATH=libpath, TARFLAGS = '-c -j -h')#create, bzip2, dereference symlinks #common files -- the signal calculation .c files mksignal_files_gretina = ['calc_signal.c', 'detector_geometry.c', 'fields.c', 'signal_calc_util.c', 'point.c'] mksignal_files_ppc = ['calc_signal.c', 'detector_geometry_ppc.c', 'fields_ppc.c', 'signal_calc_util.c', 'point.c'] mksignal_files_wc = ['calc_signal.c', 'detector_geometry_wc.c', 'fields.c', 'signal_calc_util.c', 'point.c'] mksignal_files = mksignal_files_gretina if ppc == 'yes': mksignal_files = mksignal_files_ppc if wc == 'yes': mksignal_files = mksignal_files_wc #and the header files (used with libsignal) mksignal_headers = ['assym_detector.h', 'calc_signal.h', 'detector_geometry.h', 'fields.h', 'signal_calc_util.h', 'cyl_point.h', 'point.h'] #variation of RMS distance accross crystal env.Program(target = 'rmsd', source = ['rmsdist.c','cyl_point.c',]+ mksignal_files); #Sanity check of signals calculated for random points in detector env.Program(target = 'cks', source = ['cksignal.c','cyl_point.c'] + mksignal_files) #Interactive interface for signal calculation code env.Program(target = 'stester', source = ['signal_tester.c', 'cyl_point.c'] + mksignal_files) #Signal calculation for single-segment simulated events, makes sim superpulses for xtalk env.Program(target = 'intpt2tr', source = ['intpt2tr.c'] + mksignal_files) #EXtract a 2D slice from segment env.Program(target = 'img', source = ['image.c', 'cyl_point.c'] + mksignal_files) #EXtract a 2D slice from segment env.Program(target = 'imgb', source = ['imageb.c', 'cyl_point.c'] + mksignal_files) #Make a signal calculation library if ppc == 'yes': libsignal = env.SharedLibrary(target = 'signal_ppc', source = [mksignal_files, 'cyl_point.c']) elif wc == 'yes': libsignal = env.SharedLibrary(target = 'signal_wc', source = [mksignal_files, 'cyl_point.c']) elif symmetric == 'yes': libsignal = env.SharedLibrary(target = 'signal_symm', source = [mksignal_files, 'cyl_point.c']) else: libsignal = env.SharedLibrary(target = 'signal', source = [mksignal_files, 'cyl_point.c']) #installation of library + header files env.Alias(target='install', source=env.Install(dir = prefix + '/lib', source=libsignal)) env.Alias(target='install', source=env.Install(dir= prefix + '/include', source=mksignal_headers)) env.Alias('tar','signal_calc.tar.bz2') #some archives... env.Tar(target='signal_calc.tar.bz2', source = ['calc_signal.c', 'calc_signal.h', 'cyl_point.c', 'cyl_point.h', 'detector_geometry.c', 'detector_geometry_wc.c', 'detector_geometry_ppc.c', 'detector_geometry.h', 'assym_detector.h', 'fields.c', 'fields_ppc.c', 'fields.h', 'signal_calc_util.c', 'signal_calc_util.h', 'point.c', 'point.h', 'signal_tester.c', 'drift_vel.tab', 'geometry_setup.dat', 'geometry_setup_ppc.dat', 'field_setup.dat', 'field_setup_ppc.dat', 'calc_signal_setup.dat', 'calc_signal_setup_ppc.dat', 'SConstruct'])