diff --git a/SConscript.py b/SConscript.py index 5c91c3bbc14cfe7ce6f5544dd481308517609c96..e346e9aac0d0f7de3c0d8328dd9fabe985d4cf83 100644 --- a/SConscript.py +++ b/SConscript.py @@ -4,12 +4,12 @@ import os import re import SCons.Util -Import ('baseenv') +Import ('pbaseenv') ######## ROOT Dictionaries ######### -roothcdict = baseenv.subst('$HC_DIR')+'/HallCDict.C' -roothcobj = baseenv.subst('$HC_SRC')+'/HallCDict.so' +roothcdict = pbaseenv.subst('$HC_DIR')+'/HallCDict.C' +roothcobj = pbaseenv.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 @@ -19,12 +19,10 @@ hcheaders = Split(""" src/THcRawShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcGlobals.h src/THcDCTrack.h src/HallC_LinkDef.h """) -baseenv.RootCint(roothcdict,hcheaders) -baseenv.SharedObject(target = roothcobj, source = roothcdict) - +pbaseenv.RootCint(roothcdict,hcheaders) +pbaseenv.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']) +analyzer = pbaseenv.Program(target = 'hcana', source = 'src/main.o') +pbaseenv.Install('./bin',analyzer) +pbaseenv.Alias('install',['./bin']) diff --git a/SConstruct.py b/SConstruct.py index d4c4fb654eb1ae9885ae49289a487e9431cf7b4a..db837bb3e38b79e87ad72e0a85e1739e11156da9 100644 --- a/SConstruct.py +++ b/SConstruct.py @@ -22,13 +22,17 @@ def rootcint(target,source,env): 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]) +####### Check SCons version ################## +print('!!! You should be using the local version of SCons, invoked with:') +print('!!! ./podd/scons/scons.py') +EnsureSConsVersion(4,9,9) + ####### Hall A Build Environment ############# # # Edit for the location of your root installation here ... @@ -75,18 +79,23 @@ if not conf.CheckFunc('printf'): baseenv = conf.Finish() ######## ROOT Dictionaries ######### - -rootsys = baseenv['ENV']['ROOTSYS'] -baseenv.Append(ROOTCONFIG = rootsys+'/bin/root-config') -baseenv.Append(ROOTCINT = rootsys+'/bin/rootcint') +baseenv.Append(ROOTCONFIG = 'root-config') +baseenv.Append(ROOTCINT = 'rootcint') try: - baseenv.ParseConfig('$ROOTCONFIG --cflags') - baseenv.ParseConfig('$ROOTCONFIG --libs') - #baseenv.MergeFlags('-fPIC') + baseenv.ParseConfig('$ROOTCONFIG --cflags') + baseenv.ParseConfig('$ROOTCONFIG --libs') + baseenv.MergeFlags('-fPIC') except OSError: - print "ROOT not found!!" - exit(1) + try: + baseenv.Replace(ROOTCONFIG = baseenv['ENV']['ROOTSYS'] + '/bin/root-config') + baseenv.Replace(ROOTCINT = baseenv['ENV']['ROOTSYS'] + '/bin/rootcint') + baseenv.ParseConfig('$ROOTCONFIG --cflags') + baseenv.ParseConfig('$ROOTCONFIG --libs') + baseenv.MergeFlags('-fPIC') + except KeyError: + print('!!! Cannot find ROOT. Check if root-config is in your PATH.') + Exit(1) bld = Builder(action=rootcint) baseenv.Append(BUILDERS = {'RootCint': bld}) @@ -99,11 +108,16 @@ dclib = 'dc' scalerlib = 'scaler' baseenv.Append(LIBPATH=['$HC_DIR','$HA_DIR','$HC_SRC','$HA_SRC','$HA_DC','$HA_SCALER']) -baseenv.Append(LIBS=[hallclib,hallalib,dclib,scalerlib]) baseenv.Replace(SHLIBSUFFIX = '.so') +baseenv.Append(CPPDEFINES = '-DHALLC_MODS') directorylist = ['./','src','podd','podd/src','podd/hana_decode','podd/hana_scaler'] -SConscript(dirs = directorylist,name='SConscript.py',exports='baseenv') +pbaseenv=baseenv.Clone() +pbaseenv.Append(LIBS=[hallclib,hallalib,dclib,scalerlib]) +baseenv.Append(LIBS=[hallalib,dclib,scalerlib]) +Export('pbaseenv') + +SConscript(dirs = directorylist,name='SConscript.py',exports='pbaseenv') ####### End of SConstruct ######### diff --git a/configure.py b/configure.py index 0a927b15246c16c6b0c162454811528116a887e8..b88a0edae749cac9b87966fb0a9ab4b6c3a339b8 100644 --- a/configure.py +++ b/configure.py @@ -6,44 +6,48 @@ 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) + for element in platform.architecture(): + if (element == '32bit'): + print '32-bit Linux build' + env['MEMORYMODEL'] = '32bit' + import linux32 + linux32.config(env, args) + break + elif (element == '64bit'): + print '64-bit Linux build' + env['MEMORYMODEL'] = '64bit' + import linux64 + linux64.config(env, args) + break + else: + print 'Memory model not specified, so I\'m building 32-bit...' + env['MEMORYMODEL'] = '32bit' + import linux32 + linux32.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'] == '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' diff --git a/linux32.py b/linux32.py index 035ccb547a172c3a7cd11017917af69159b1e655..4db891cdce1eca54f65684aea17c48ae2202b105 100644 --- a/linux32.py +++ b/linux32.py @@ -14,7 +14,7 @@ def config(env,args): if int(standalone): env.Append(STANDALONE= '1') - env.Append(CXXFLAGS = '-Wall -Woverloaded-virtual') + env.Append(CXXFLAGS = '-m32 -Wall -Woverloaded-virtual') env.Append(CPPDEFINES = '-DLINUXVERS') cxxversion = env.subst('$CXXVERSION') @@ -25,7 +25,7 @@ def config(env,args): if float(cxxversion[0:2])>=3.0: env.Append(CPPDEFINES = '-DHAS_SSTREAM') - env['SHLINKFLAGS'] = '$LINKFLAGS -shared' + env['SHLINKFLAGS'] = '$LINKFLAGS -m32 -shared' env['SHLIBSUFFIX'] = '.so' diff --git a/linux6432.py b/linux64.py similarity index 100% rename from linux6432.py rename to linux64.py diff --git a/podd b/podd index 5dbaea975ff82d567c1ec4ef866634dc97bb55b3..19b46dc1681c8e4c3955b2eb3f7596e782bbabba 160000 --- a/podd +++ b/podd @@ -1 +1 @@ -Subproject commit 5dbaea975ff82d567c1ec4ef866634dc97bb55b3 +Subproject commit 19b46dc1681c8e4c3955b2eb3f7596e782bbabba