Added NEC compiler descriptions for SX machines.

This commit is contained in:
Harald Klimach 2015-02-25 11:15:55 +01:00
parent c4e25382cd
commit 7775cda5c3
2 changed files with 125 additions and 0 deletions

72
waflib/extras/c_nec.py Normal file
View File

@ -0,0 +1,72 @@
#! /usr/bin/env python
# encoding: utf-8
# harald at klimachs.de
"""
NEC SX Compiler for SX vector systems
"""
import os
import re
from waflib import Utils
from waflib.Tools import ccroot,ar
from waflib.Configure import conf
from waflib.Tools import xlc # method xlc_common_flags
from waflib.Tools.compiler_c import c_compiler
c_compiler['linux'].append('c_nec')
@conf
def find_sxc(conf):
cc = conf.find_program(['sxcc'], var='CC')
conf.get_sxc_version(cc)
conf.env.CC = cc
conf.env.CC_NAME = 'sxcc'
@conf
def get_sxc_version(conf, fc):
version_re = re.compile(r"C\+\+/SX\s*Version\s*(?P<major>\d*)\.(?P<minor>\d*)", re.I).search
cmd = fc + ['-V']
p = Utils.subprocess.Popen(cmd, stdin=False, stdout=Utils.subprocess.PIPE, stderr=Utils.subprocess.PIPE, env=None)
out, err = p.communicate()
if out: match = version_re(out)
else: match = version_re(err)
if not match:
conf.fatal('Could not determine the NEC C compiler version.')
k = match.groupdict()
conf.env['C_VERSION'] = (k['major'], k['minor'])
@conf
def sxc_common_flags(conf):
v=conf.env
v['CC_SRC_F']=[]
v['CC_TGT_F']=['-c','-o']
if not v['LINK_CC']:v['LINK_CC']=v['CC']
v['CCLNK_SRC_F']=[]
v['CCLNK_TGT_F']=['-o']
v['CPPPATH_ST']='-I%s'
v['DEFINES_ST']='-D%s'
v['LIB_ST']='-l%s'
v['LIBPATH_ST']='-L%s'
v['STLIB_ST']='-l%s'
v['STLIBPATH_ST']='-L%s'
v['RPATH_ST']=''
v['SONAME_ST']=[]
v['SHLIB_MARKER']=[]
v['STLIB_MARKER']=[]
v['LINKFLAGS_cprogram']=['']
v['cprogram_PATTERN']='%s'
v['CFLAGS_cshlib']=['-fPIC']
v['LINKFLAGS_cshlib']=['']
v['cshlib_PATTERN']='lib%s.so'
v['LINKFLAGS_cstlib']=[]
v['cstlib_PATTERN']='lib%s.a'
def configure(conf):
conf.find_sxc()
conf.find_program('sxar',VAR='AR')
conf.sxc_common_flags()
conf.cc_load_tools()
conf.cc_add_flags()
conf.link_add_flags()

53
waflib/extras/fc_nec.py Normal file
View File

@ -0,0 +1,53 @@
#! /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'].append('fc_nec')
@conf
def find_sxf90(conf):
"""Find the NEC fortran compiler (will look in the environment variable 'FC')"""
fc = conf.find_program(['sxf90'], var='FC')
conf.get_sxf90_version(fc)
conf.env.FC_NAME = 'NEC'
conf.env.FC_MOD_CAPITALIZATION = 'UPPER.mod'
@conf
def sxf90_flags(conf):
v = conf.env
v['_FCMODOUTFLAGS'] = [] # enable module files and put them in the current directoy
v['FCFLAGS_DEBUG'] = [] # more verbose compiler warnings
v['FCFLAGS_fcshlib'] = []
v['LINKFLAGS_fcshlib'] = []
v['FCSTLIB_MARKER'] = ''
v['FCSHLIB_MARKER'] = ''
@conf
def get_sxf90_version(conf, fc):
version_re = re.compile(r"FORTRAN90/SX\s*Version\s*(?P<major>\d*)\.(?P<minor>\d*)", re.I).search
cmd = fc + ['-V']
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 NEC Fortran compiler version.')
k = match.groupdict()
conf.env['FC_VERSION'] = (k['major'], k['minor'])
def configure(conf):
conf.find_sxf90()
conf.find_program('sxar',var='AR')
conf.add_os_flags('ARFLAGS')
if not conf.env.ARFLAGS:
conf.env.ARFLAGS=['rcs']
conf.fc_flags()
conf.fc_add_flags()
conf.sxf90_flags()