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
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])
|