diff options
author | David Robillard <d@drobilla.net> | 2018-09-15 14:51:03 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-09-15 14:51:03 +0200 |
commit | 425cbb48dc333294954897ed7e783f9469ef8b13 (patch) | |
tree | 78f197a5770b9cda2c4ac3af5970fe730ea8b752 /waflib/extras/fc_open64.py | |
parent | 3dd24e7fa4330452336b79bd6f2f6e9cd4ec9449 (diff) | |
parent | c2b0355b0de23f6ec83b5fa5be038bcce208e26f (diff) | |
download | sratom-425cbb48dc333294954897ed7e783f9469ef8b13.tar.gz sratom-425cbb48dc333294954897ed7e783f9469ef8b13.tar.bz2 sratom-425cbb48dc333294954897ed7e783f9469ef8b13.zip |
Merge commit 'c2b0355b0de23f6ec83b5fa5be038bcce208e26f' as 'waflib'
Diffstat (limited to 'waflib/extras/fc_open64.py')
-rw-r--r-- | waflib/extras/fc_open64.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/waflib/extras/fc_open64.py b/waflib/extras/fc_open64.py new file mode 100644 index 0000000..413719f --- /dev/null +++ b/waflib/extras/fc_open64.py @@ -0,0 +1,58 @@ +#! /usr/bin/env python +# encoding: utf-8 +# harald at klimachs.de + +import re +from waflib import Utils +from waflib.Tools import fc,fc_config,fc_scan +from waflib.Configure import conf + +from waflib.Tools.compiler_fc import fc_compiler +fc_compiler['linux'].insert(0, 'fc_open64') + +@conf +def find_openf95(conf): + """Find the Open64 Fortran Compiler (will look in the environment variable 'FC')""" + + fc = conf.find_program(['openf95', 'openf90'], var='FC') + conf.get_open64_version(fc) + conf.env.FC_NAME = 'OPEN64' + conf.env.FC_MOD_CAPITALIZATION = 'UPPER.mod' + +@conf +def openf95_flags(conf): + v = conf.env + v['FCFLAGS_DEBUG'] = ['-fullwarn'] + +@conf +def openf95_modifier_platform(conf): + dest_os = conf.env['DEST_OS'] or Utils.unversioned_sys_platform() + openf95_modifier_func = getattr(conf, 'openf95_modifier_' + dest_os, None) + if openf95_modifier_func: + openf95_modifier_func() + +@conf +def get_open64_version(conf, fc): + """Get the Open64 compiler version""" + + version_re = re.compile(r"Open64 Compiler Suite: *Version *(?P<major>\d*)\.(?P<minor>\d*)", re.I).search + cmd = fc + ['-version'] + + out, err = fc_config.getoutput(conf,cmd,stdin=False) + if out: + match = version_re(out) + else: + match = version_re(err) + if not match: + conf.fatal('Could not determine the Open64 version.') + k = match.groupdict() + conf.env['FC_VERSION'] = (k['major'], k['minor']) + +def configure(conf): + conf.find_openf95() + conf.find_ar() + conf.fc_flags() + conf.fc_add_flags() + conf.openf95_flags() + conf.openf95_modifier_platform() + |