/[escript]/trunk/SConstruct
ViewVC logotype

Diff of /trunk/SConstruct

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2531 by jfenwick, Thu Jul 9 23:56:57 2009 UTC revision 2604 by jfenwick, Wed Aug 12 01:21:46 2009 UTC
# Line 1  Line 1 
1    
2  ########################################################  ########################################################
3  #  #
4  # Copyright (c) 2003-2008 by University of Queensland  # Copyright (c) 2003-2009 by University of Queensland
5  # Earth Systems Science Computational Center (ESSCC)  # Earth Systems Science Computational Center (ESSCC)
6  # http://www.uq.edu.au/esscc  # http://www.uq.edu.au/esscc
7  #  #
# Line 16  EnsureSConsVersion(0,96,91) Line 16  EnsureSConsVersion(0,96,91)
16  EnsurePythonVersion(2,3)  EnsurePythonVersion(2,3)
17    
18  import sys, os, re, socket, platform, stat  import sys, os, re, socket, platform, stat
19    # For copy()
20    import shutil
21    
22  # Add our extensions  # Add our extensions
23  if os.path.isdir('scons'): sys.path.append('scons')  if os.path.isdir('scons'): sys.path.append('scons')
# Line 33  IS_WINDOWS_PLATFORM = (os.name== "nt") Line 35  IS_WINDOWS_PLATFORM = (os.name== "nt")
35    
36  prefix = ARGUMENTS.get('prefix', Dir('#.').abspath)  prefix = ARGUMENTS.get('prefix', Dir('#.').abspath)
37    
38    #Holds names of variables from the calling environment which need to be passed
39    #to tools
40    env_export=[]
41    
42  #Determine where to read options from use:  #Determine where to read options from use:
43  #1. command line  #1. command line
44  #2. scons/<hostname>_options.py  #2. scons/<hostname>_options.py
45  #3. name as part of a cluster  #3. name as part of a cluster
46  options_file=ARGUMENTS.get('options_file', None)  options_file=ARGUMENTS.get('options_file', None)
47    effective_hostname=socket.gethostname().split('.')[0]
48  if not options_file:  if not options_file:
49    hostname = re.sub("[^0-9a-zA-Z]", "_", socket.gethostname().split('.')[0])    mangledhostname = re.sub("[^0-9a-zA-Z]", "_", effective_hostname)
50    options_file = os.path.join("scons",hostname+"_options.py")    options_file = os.path.join("scons",mangledhostname+"_options.py")
51    #If there is no options file with that name see if there is a substitute    #If there is no options file with that name see if there is a substitute
52    if not os.path.isfile(options_file):    if not os.path.isfile(options_file):
53      tmp = scons_extensions.effectiveName(hostname)      effective_hostname = scons_extensions.effectiveName(effective_hostname)
54      options_file = os.path.join("scons",tmp+"_options.py")      mangledhostname = re.sub("[^0-9a-zA-Z]", "_", effective_hostname)
55        options_file = os.path.join("scons",mangledhostname+"_options.py")
56    
57  if not os.path.isfile(options_file):  if not os.path.isfile(options_file):
58    print "Options file not found (expected '%s')" % options_file    print "Options file not found (expected '%s')" % options_file
# Line 157  adder( Line 165  adder(
165  # finer control over library building, intel aggressive global optimisation  # finer control over library building, intel aggressive global optimisation
166  # works with dynamic libraries on windows.  # works with dynamic libraries on windows.
167    ('share_esysUtils', 'control static or dynamic esysUtils lib', False),    ('share_esysUtils', 'control static or dynamic esysUtils lib', False),
168    ('share_paso', 'control static or dynamic paso lib', False)    ('share_paso', 'control static or dynamic paso lib', False),
169      ('env_export','Environment variables to be passed to children',[])
170  )  )
171    
172    
173    
174  ############ Specify which compilers to use ####################  ############ Specify which compilers to use ####################
175    
176  # intelc uses regular expressions improperly and emits a warning about  # intelc uses regular expressions improperly and emits a warning about
# Line 170  if IS_WINDOWS_PLATFORM: Line 181  if IS_WINDOWS_PLATFORM:
181        env = Environment(tools = ['default'] + env['tools_names'],        env = Environment(tools = ['default'] + env['tools_names'],
182                          options = opts)                          options = opts)
183  else:  else:
184     if socket.gethostname().split('.')[0] == 'service0':     if effective_hostname == 'service0':
185        env = Environment(tools = ['default', 'intelc'], options = opts)        env = Environment(tools = ['default', 'intelc'], options = opts)
186     elif os.uname()[4]=='ia64':     elif os.uname()[4]=='ia64':
187        env = Environment(tools = ['default', 'intelc'], options = opts)        env = Environment(tools = ['default', 'intelc'], options = opts)
# Line 180  else: Line 191  else:
191        env = Environment(tools = ['default'], options = opts)        env = Environment(tools = ['default'], options = opts)
192  Help(opts.GenerateHelpText(env))  Help(opts.GenerateHelpText(env))
193    
194    
195    ############ Make sure target directories exist ################
196    
197    if not os.path.isdir(env['bininstall']):
198        os.makedirs(env['bininstall'])
199    if not os.path.isdir(env['libinstall']):
200        os.makedirs(env['libinstall'])
201    if not os.path.isdir(env['pyinstall']):
202        os.makedirs(env['pyinstall'])
203    
204    ########## Copy required environment vars ######################
205    
206    for i in env['env_export']:
207       env.Append(ENV = {i:os.environ[i]})
208    
209  ############ Fill in compiler options if not set above #########  ############ Fill in compiler options if not set above #########
210    
211  # Backwards compatibility: allow dodebug=yes and useMPI=yes  # Backwards compatibility: allow dodebug=yes and useMPI=yes
# Line 873  if not IS_WINDOWS_PLATFORM: Line 899  if not IS_WINDOWS_PLATFORM:
899      print "Error attempting to write unittests file."      print "Error attempting to write unittests file."
900      sys.exit(1)      sys.exit(1)
901    
902       #Make sure that the escript wrapper is in place
903       if not os.path.isfile(os.path.join(env['bininstall'],'escript')):
904           print "Copying escript wrapper"
905           shutil.copy("bin/escript",os.path.join(env['bininstall'],'escript'))

Legend:
Removed from v.2531  
changed lines
  Added in v.2604

  ViewVC Help
Powered by ViewVC 1.1.26