waf

FORK: waf with some random patches
git clone https://git.neptards.moe/neptards/waf.git
Log | Files | Refs | README

fc_solstudio.py (1642B)


      1 #! /usr/bin/env python
      2 # encoding: utf-8
      3 # harald at klimachs.de
      4 
      5 import re
      6 from waflib import Utils
      7 from waflib.Tools import fc,fc_config,fc_scan
      8 from waflib.Configure import conf
      9 
     10 from waflib.Tools.compiler_fc import fc_compiler
     11 fc_compiler['linux'].append('fc_solstudio')
     12 
     13 @conf
     14 def find_solstudio(conf):
     15 	"""Find the Solaris Studio compiler (will look in the environment variable 'FC')"""
     16 
     17 	fc = conf.find_program(['sunf95', 'f95', 'sunf90', 'f90'], var='FC')
     18 	conf.get_solstudio_version(fc)
     19 	conf.env.FC_NAME = 'SOL'
     20 
     21 @conf
     22 def solstudio_flags(conf):
     23 	v = conf.env
     24 	v['FCFLAGS_fcshlib'] = ['-Kpic']
     25 	v['FCFLAGS_DEBUG'] = ['-w3']
     26 	v['LINKFLAGS_fcshlib'] = ['-G']
     27 	v['FCSTLIB_MARKER'] = '-Bstatic'
     28 	v['FCSHLIB_MARKER'] = '-Bdynamic'
     29 	v['SONAME_ST']      = '-h %s'
     30 
     31 @conf
     32 def solstudio_modifier_platform(conf):
     33 	dest_os = conf.env['DEST_OS'] or Utils.unversioned_sys_platform()
     34 	solstudio_modifier_func = getattr(conf, 'solstudio_modifier_' + dest_os, None)
     35 	if solstudio_modifier_func:
     36 		solstudio_modifier_func()
     37 
     38 @conf
     39 def get_solstudio_version(conf, fc):
     40 	"""Get the compiler version"""
     41 
     42 	version_re = re.compile(r"Sun Fortran 95 *(?P<major>\d*)\.(?P<minor>\d*)", re.I).search
     43 	cmd = fc + ['-V']
     44 
     45 	out, err = fc_config.getoutput(conf,cmd,stdin=False)
     46 	if out:
     47 		match = version_re(out)
     48 	else:
     49 		match = version_re(err)
     50 	if not match:
     51 		conf.fatal('Could not determine the Sun Studio Fortran version.')
     52 	k = match.groupdict()
     53 	conf.env['FC_VERSION'] = (k['major'], k['minor'])
     54 
     55 def configure(conf):
     56 	conf.find_solstudio()
     57 	conf.find_ar()
     58 	conf.fc_flags()
     59 	conf.fc_add_flags()
     60 	conf.solstudio_flags()
     61 	conf.solstudio_modifier_platform()
     62