diff --git a/SConscript.py b/SConscript.py new file mode 100644 index 0000000000000000000000000000000000000000..ff43c9011db4e2a7eba5344eb5cc73181340a976 --- /dev/null +++ b/SConscript.py @@ -0,0 +1,29 @@ +###### Hall C Software Main SConscript File ##### +###### Author: Edward Brash (brash@jlab.org) June 2013 + +import os +import re +import SCons.Util +Import ('baseenv') + +######## ROOT Dictionaries ######### + +roothcdict = baseenv.subst('$HC_DIR')+'/HallCDict.C' +roothcobj = baseenv.subst('$HC_SRC')+'/HallCDict.so' +hcheaders = Split(""" + src/THcInterface.h src/THcParmList.h src/THcAnalyzer.h src/THcHallCSpectrometer.h + src/THcDetectorMap.h src/THcRawHit.h src/THcHitList.h src/THcSignalHit.h src/THcHodoscope.h + src/THcScintillatorPlane.h src/THcHodoscopeHit.h src/THcDC.h src/THcDriftChamberPlane.h + src/THcDriftChamber.h src/THcRawDCHit.h src/THcDCHit.h src/THcDCWire.h src/THcSpacePoint.h + src/THcDCLookupTTDConv.h src/THcDCTimeToDistConv.h src/THcShower.h src/THcShowerPlane.h + src/THcShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcGlobals.h src/HallC_LinkDef.h + """) +baseenv.RootCint(roothcdict,hcheaders) +baseenv.SharedObject(target = roothcobj, source = roothcdict) + + +####### Start of main SConscript ########### + +analyzer = baseenv.Program(target = 'hcana', source = 'src/main.o') +baseenv.Install('./bin',analyzer) +baseenv.Alias('install',['./bin']) diff --git a/SConstruct b/SConstruct new file mode 120000 index 0000000000000000000000000000000000000000..0fe1cae2e2aaa80a9dbba1a7c62ed71003c29aeb --- /dev/null +++ b/SConstruct @@ -0,0 +1 @@ +SConstruct.py \ No newline at end of file diff --git a/SConstruct.py b/SConstruct.py new file mode 100644 index 0000000000000000000000000000000000000000..f4f6277e308dc0c3b2e2bd0d084c9ccc0a3f5208 --- /dev/null +++ b/SConstruct.py @@ -0,0 +1,109 @@ +###### Hall C Software Main SConstruct Build File ##### +###### Author: Edward Brash (brash@jlab.org) June 2013 + +import os +import sys +import platform +import commands + +def rootcint(target,source,env): + """Executes the ROOT dictionary generator over a list of headers.""" + dictname = target[0] + headers = "" + cpppath = env.subst('$_CCCOMCOM') + ccflags = env.subst('$CCFLAGS') + rootcint = env.subst('$ROOTCINT') + print "Doing rootcint call now ..." + for f in source: + headers += str(f) + " " + command = rootcint + " -f %s -c -pthread -fPIC %s %s" % (dictname,cpppath,headers) + print ('RootCint Command = %s\n' % command) + ok = os.system(command) + return ok + +baseenv = Environment(ENV = os.environ) + +#dict = baseenv.Dictionary() +#keys = dict.keys() +#keys.sort() +#for key in keys: +# print "Construction variable = '%s', value = '%s'" % (key, dict[key]) + +####### Hall A Build Environment ############# +# +# Edit for the location of your root installation here ... +# +#baseenv.Append(ROOTSYS = '/usr/local/root') +# +baseenv.Append(MAIN_DIR = Dir('.').abspath) +baseenv.Append(HC_DIR = baseenv.subst('$MAIN_DIR')) +baseenv.Append(HC_SRC = baseenv.subst('$HC_DIR')+'/src ') +baseenv.Append(HA_DIR = baseenv.subst('$HC_DIR')+'/podd ') +baseenv.Append(HA_SRC = baseenv.subst('$HA_DIR')+'/src ') +baseenv.Append(HA_DC = baseenv.subst('$HA_DIR')+'/hana_decode ') +baseenv.Append(HA_SCALER = baseenv.subst('$HA_DIR')+'/hana_scaler ') +baseenv.Append(SOVERSION = '1.5') +baseenv.Append(PATCH = '24') +baseenv.Append(VERSION = baseenv.subst('$SOVERSION')+'.'+baseenv.subst('$PATCH')) +baseenv.Append(EXTVERS = '') +baseenv.Append(HA_VERSION = baseenv.subst('$VERSION')+baseenv.subst('$EXTVERS')) +print "Hall C Main Directory = %s" % baseenv.subst('$HC_DIR') +print "Hall C Source Directory = %s" % baseenv.subst('$HC_SRC') +print "Hall A Main Directory = %s" % baseenv.subst('$HA_DIR') +print "Software Version = %s" % baseenv.subst('$VERSION') +ivercode = 65536*int(float(baseenv.subst('$SOVERSION')))+ 256*int(10*(float(baseenv.subst('$SOVERSION'))-int(float(baseenv.subst('$SOVERSION')))))+ int(float(baseenv.subst('$PATCH'))) +baseenv.Append(VERCODE = ivercode) +baseenv.Append(CPPPATH = ['$HC_SRC','$HA_SRC','$HA_DC','$HA_SCALER']) + +######## Configure Section ####### + +import configure +configure.config(baseenv,ARGUMENTS) + +Export('baseenv') + +conf = Configure(baseenv) + +if not conf.CheckCXX(): + print('!!! Your compiler and/or environment is not correctly configured.') + Exit(0) + +if not conf.CheckFunc('printf'): + print('!! Your compiler and/or environment is not correctly configured.') + Exit(0) + +baseenv = conf.Finish() + +######## ROOT Dictionaries ######### + +rootsys = baseenv['ENV']['ROOTSYS'] +baseenv.Append(ROOTCONFIG = rootsys+'/bin/root-config') +baseenv.Append(ROOTCINT = rootsys+'/bin/rootcint') + +try: + baseenv.ParseConfig('$ROOTCONFIG --cflags') + baseenv.ParseConfig('$ROOTCONFIG --libs') + #baseenv.MergeFlags('-fPIC') +except OSError: + print "ROOT not found!!" + exit(1) + +bld = Builder(action=rootcint) +baseenv.Append(BUILDERS = {'RootCint': bld}) + +####### Start of main SConstruct ############ + +hallclib = 'HallC' +hallalib = 'HallA' +dclib = 'dc' +scalerlib = 'scaler' + +baseenv.Append(LIBPATH=['$HC_SRC','$HA_SRC','$HA_DC','$HA_SCALER']) +baseenv.Append(LIBS=[hallclib,hallalib,dclib,scalerlib]) +baseenv.Replace(SHLIBSUFFIX = '.so') + +directorylist = ['./','src','podd','podd/src','podd/hana_decode','podd/hana_scaler'] + +SConscript(dirs = directorylist,name='SConscript.py',exports='baseenv') + +####### End of SConstruct ######### diff --git a/configure.py b/configure.py new file mode 100644 index 0000000000000000000000000000000000000000..0a927b15246c16c6b0c162454811528116a887e8 --- /dev/null +++ b/configure.py @@ -0,0 +1,55 @@ +import platform +import os + +def config(env,args): + + if env['PLATFORM'] == 'posix': + if (platform.machine() == 'x86_64'): + print "Got a 64-bit processor, I can do a 64-bit build in theory..." + if args.get('32bit', 0): + print '32-bit Linux build' + env['MEMORYMODEL'] = '32bit' + #import linux6432 + #linux6432.config(env, args) + elif args.get('64bit', 0): + env['MEMORYMODEL'] = '64bit' + #import linux64 + #linux64.config(env, args) + else: + print 'Memory model not specified, so I\'m building 32-bit...' + env['MEMORYMODEL'] = '32bit' + import linux6432 + linux6432.config(env, args) + else: + print '32-bit Linux Build.' + env['MEMORYMODEL'] = '32bit' + import linux32 + linux32.config(env, args) + elif env['PLATFORM'] == 'win32': + if (os.environ['PROCESSOR_ARCHITECTURE'] == 'AMD64' or (os.environ.has_key('PROCESSOR_ARCHITEW6432') and os.environ['PROCESSOR_ARCHITEW6432'] == 'AMD64')): + print "Got a 64-bit processor, I can do a 64-bit build in theory..." + if args.get('32bit', 0): + print '32-bit Windows build.' + #import win6432 + #win6432.config(env, args) + elif args.get('64bit', 0): + print '64-bit Windows build.' + #import win64 + #win64.config(env, args) + else: + print 'Memory model not specified, so I\'m building 32-bit.' + #import win6432 + #win6432.config(env, args) + else: + print '32-bit Windows build.' + #import win32 + #win32.config(env, args) + elif env['PLATFORM'] == 'darwin': + print 'OS X Darwin is a 64-bit build.' + env['MEMORYMODEL'] = '64bit' + import darwin64 + darwin64.config(env, args) + else: + print 'ERROR! unrecognized platform. Twonk.' + +#end configure.py diff --git a/darwin64.py b/darwin64.py new file mode 100644 index 0000000000000000000000000000000000000000..5fc4f470a055f6b2061339cd394bba1c4b9d0008 --- /dev/null +++ b/darwin64.py @@ -0,0 +1,32 @@ +import platform +import os + +def config(env,args): + + debug = args.get('debug',0) + standalone = args.get('standalone',0) + if int(debug): + env.Append(CXXFLAGS = '-g -O0') + else: + env.Append(CXXFLAGS = '-O') + env.Append(CPPDEFINES= '-DNDEBUG') + + if int(standalone): + env.Append(STANDALONE= '1') + + env.Append(CXXFLAGS = '-Wall -Woverloaded-virtual -pthread -rdynamic') + env.Append(CPPDEFINES = '-DMACVERS') + + cxxversion = env.subst('$CXXVERSION') + +# if float(cxxversion[0:2])>=4.0: +# env.Append(CXXFLAGS = '-Wextra -Wno-missing-field-initializers') + + if float(cxxversion[0:2])>=3.0: + env.Append(CPPDEFINES = '-DHAS_SSTREAM') + + env['SHLINKFLAGS'] = '$LINKFLAGS -shared -Wl,-undefined,dynamic_lookup' + env['SHLIBSUFFIX'] = '.so' + + +#end darwin64.py diff --git a/linux32.py b/linux32.py new file mode 100644 index 0000000000000000000000000000000000000000..035ccb547a172c3a7cd11017917af69159b1e655 --- /dev/null +++ b/linux32.py @@ -0,0 +1,32 @@ +import platform +import os + +def config(env,args): + + debug = args.get('debug',0) + standalone = args.get('standalone',0) + if int(debug): + env.Append(CXXFLAGS = '-g -O0') + else: + env.Append(CXXFLAGS = '-O') + env.Append(CPPDEFINES= '-DNDEBUG') + + if int(standalone): + env.Append(STANDALONE= '1') + + env.Append(CXXFLAGS = '-Wall -Woverloaded-virtual') + env.Append(CPPDEFINES = '-DLINUXVERS') + + cxxversion = env.subst('$CXXVERSION') + +# if float(cxxversion[0:2])>=4.0: +# env.Append(CXXFLAGS = '-Wextra -Wno-missing-field-initializers') + + if float(cxxversion[0:2])>=3.0: + env.Append(CPPDEFINES = '-DHAS_SSTREAM') + + env['SHLINKFLAGS'] = '$LINKFLAGS -shared' + env['SHLIBSUFFIX'] = '.so' + + +#end linux32.py diff --git a/linux6432.py b/linux6432.py new file mode 100644 index 0000000000000000000000000000000000000000..d45f862bac15d176558d40901ae03d0882b3efb8 --- /dev/null +++ b/linux6432.py @@ -0,0 +1,32 @@ +import platform +import os + +def config(env,args): + + debug = args.get('debug',0) + standalone = args.get('standalone',0) + if int(debug): + env.Append(CXXFLAGS = '-g -O0') + else: + env.Append(CXXFLAGS = '-O') + env.Append(CPPDEFINES= '-DNDEBUG') + + if int(standalone): + env.Append(STANDALONE= '1') + + env.Append(CXXFLAGS = '-Wall -Woverloaded-virtual') + env.Append(CPPDEFINES = '-DLINUXVERS') + + cxxversion = env.subst('$CXXVERSION') + +# if float(cxxversion[0:2])>=4.0: +# env.Append(CXXFLAGS = '-Wextra -Wno-missing-field-initializers') + + if float(cxxversion[0:2])>=3.0: + env.Append(CPPDEFINES = '-DHAS_SSTREAM') + + env['SHLINKFLAGS'] = '$LINKFLAGS -shared' + env['SHLIBSUFFIX'] = '.so' + + +#end linux6432.py diff --git a/podd b/podd index a7ebab4863214012db9ef82561c7b68ec4b1a4ea..2731ed4f974b24f295a2a997b6581582660bb19a 160000 --- a/podd +++ b/podd @@ -1 +1 @@ -Subproject commit a7ebab4863214012db9ef82561c7b68ec4b1a4ea +Subproject commit 2731ed4f974b24f295a2a997b6581582660bb19a diff --git a/src/SConscript.py b/src/SConscript.py new file mode 100644 index 0000000000000000000000000000000000000000..14510b3a1c2bb696fa6dc06b3dce78f3ebd64856 --- /dev/null +++ b/src/SConscript.py @@ -0,0 +1,37 @@ +###### Hall C Software Source SConscript Build File ##### +###### Author: Edward Brash (brash@jlab.org) June 2013 + +import os +import re +import SCons.Util +Import('baseenv') + +list = Split(""" +THcInterface.cxx THcParmList.cxx THcAnalyzer.cxx \ +THcHallCSpectrometer.cxx \ +THcDetectorMap.cxx \ +THcRawHit.cxx THcHitList.cxx \ +THcSignalHit.cxx \ +THcHodoscope.cxx THcScintillatorPlane.cxx \ +THcHodoscopeHit.cxx \ +THcDC.cxx THcDriftChamberPlane.cxx \ +THcDriftChamber.cxx \ +THcRawDCHit.cxx THcDCHit.cxx \ +THcDCWire.cxx \ +THcSpacePoint.cxx \ +THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx \ +THcShower.cxx THcShowerPlane.cxx \ +THcShowerHit.cxx \ +THcAerogel.cxx THcAerogelHit.cxx +""") + +baseenv.Object('main.C') + +sotarget = 'HallC' + +#srclib = baseenv.SharedLibrary(target = sotarget, source = list+['HallCDict.so'],SHLIBVERSION=['$VERSION'],LIBS=['']) +srclib = baseenv.SharedLibrary(target = sotarget, source = list+['HallCDict.so'],LIBS=['']) +print ('Source shared library = %s\n' % srclib) +baseenv.Install('../',srclib) +baseenv.Alias('install',['../']) +