You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
3.7 KiB

#!/usr/bin/env python
import re,os,sys,subprocess
locdir,thisFile = os.path.split(os.path.abspath(sys.argv[0]))
srcdir = os.path.join(locdir,'src')
sys.path.append(srcdir)
import avh_pc,avh_pc_olo
dpkind = ''
qpkind = ''
kindmod = ''
ddtype = ''
qdtype = ''
mptype = ''
tlevel = 'no'
cppintf = 'no'
ddf90mod = ''
mpf90mod = ''
lines = open('Config','r').readlines()
for line in lines:
line = line.rstrip('\n')
if re.match(r'^ *FC' ,line): fc = re.sub(r'^ *FC *= *' ,'',line)
elif re.match(r'^ *FFLAGS' ,line): fflags = re.sub(r'^ *FFLAGS *= *' ,'',line)
elif re.match(r'^ *DPKIND' ,line): dpkind = re.sub(r'^ *DPKIND *= *' ,'',line)
elif re.match(r'^ *QPKIND' ,line): qpkind = re.sub(r'^ *QPKIND *= *' ,'',line)
elif re.match(r'^ *KINDMOD' ,line): kindmod = re.sub(r'^ *KINDMOD *= *' ,'',line)
elif re.match(r'^ *DDTYPE' ,line): ddtype = re.sub(r'^ *DDTYPE *= *' ,'',line)
elif re.match(r'^ *QDTYPE' ,line): qdtype = re.sub(r'^ *QDTYPE *= *' ,'',line)
elif re.match(r'^ *MPTYPE' ,line): mptype = re.sub(r'^ *MPTYPE *= *' ,'',line)
elif re.match(r'^ *TLEVEL' ,line): tlevel = re.sub(r'^ *TLEVEL *= *' ,'',line)
elif re.match(r'^ *CPPINTF' ,line): cppintf = re.sub(r'^ *CPPINTF *= *' ,'',line)
elif re.match(r'^ *DDF90MOD',line): ddf90mod = re.sub(r'^ *DDF90MOD *= *','',line)
elif re.match(r'^ *MPF90MOD',line): mpf90mod = re.sub(r'^ *MPF90MOD *= *','',line)
ddf90mod = re.sub(r'^~',os.getenv("HOME"),re.sub(r'\/*$','/',ddf90mod))
mpf90mod = re.sub(r'^~',os.getenv("HOME"),re.sub(r'\/*$','/',mpf90mod))
avh_pc.prnt(sys.argv[0]+': creating source file...')
sourcef = avh_pc_olo.full( srcdir ,dpkind,qpkind,kindmod
,ddtype,qdtype,mptype
,tlevel,cppintf )
if len(sys.argv) > 1:
if sys.argv[1] == 'source':
sys.exit()
elif sys.argv[1] == 'dynamic':
avh_pc.prnt(sys.argv[0]+': compiling source file...')
subprocess.call([fc,'-O','-fPIC','-c','avh_olo.f90','-o','avh_olo.o'])
avh_pc.prnt(sys.argv[0]+': building dynamic library...')
subprocess.call([fc,'-shared','-o','libavh_olo.so','avh_olo.o'])
sys.exit()
elif sys.argv[1] != 'static':
avh_pc.prnt('ERROR in '+sys.argv[0]+': don\'t know how to create '+sys.argv[1])
sys.exit()
objects = re.sub(r'\.f90','.o',sourcef)
library = 'lib'+re.sub(r'\.f90','.a',sourcef)
head = [fc]+fflags.split()+['-c']
tail = [sourcef,'-o',objects]
if ddtype+qdtype+mptype == '':
avh_pc.prnt(sys.argv[0]+': compiling source file...')
subprocess.call(head+tail)
avh_pc.prnt(sys.argv[0]+': building library...')
subprocess.call(['ar','cru',library,objects])
subprocess.call(['ranlib',library])
# subprocess.call(['gfortran','-shared','-o','libavh_olo.so','avh_olo.o'])
elif ddtype+qdtype+mptype == 'ddfun90':
avh_pc.prnt(sys.argv[0]+': compiling source file...')
subprocess.call(head+['-I'+ddf90mod]+tail)
avh_pc.prnt(sys.argv[0]+': building library...')
subprocess.call(['ar','cru',library,objects])
subprocess.call(['ranlib',library])
elif ddtype+qdtype+mptype == 'mpfun90':
avh_pc.prnt(sys.argv[0]+': compiling source file...')
subprocess.call(head+['-I'+mpf90mod]+tail)
avh_pc.prnt(sys.argv[0]+': building library...')
subprocess.call(['ar','cru',library,objects])
subprocess.call(['ranlib',library])
elif ddtype+qdtype+mptype == 'ddfun90'+'mpfun90':
avh_pc.prnt(sys.argv[0]+': compiling source file...')
subprocess.call(head+['-I'+ddf90mod,'-I'+mpf90mod]+tail)
avh_pc.prnt(sys.argv[0]+': building library...')
subprocess.call(['ar','cru',library,objects])
subprocess.call(['ranlib',library])