mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-26 23:33:49 +01:00
Update lilv, lv2, serd, sord, sratom, and add suil.
This commit is contained in:
116
lib-src/lv2/sratom/waflib/Tools/fc.py
Normal file
116
lib-src/lv2/sratom/waflib/Tools/fc.py
Normal file
@@ -0,0 +1,116 @@
|
||||
#! /usr/bin/env python
|
||||
# encoding: utf-8
|
||||
# WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
|
||||
|
||||
import re
|
||||
from waflib import Utils,Task,TaskGen,Logs
|
||||
from waflib.Tools import ccroot,fc_config,fc_scan
|
||||
from waflib.TaskGen import feature,before_method,after_method,extension
|
||||
from waflib.Configure import conf
|
||||
ccroot.USELIB_VARS['fc']=set(['FCFLAGS','DEFINES','INCLUDES'])
|
||||
ccroot.USELIB_VARS['fcprogram_test']=ccroot.USELIB_VARS['fcprogram']=set(['LIB','STLIB','LIBPATH','STLIBPATH','LINKFLAGS','RPATH','LINKDEPS'])
|
||||
ccroot.USELIB_VARS['fcshlib']=set(['LIB','STLIB','LIBPATH','STLIBPATH','LINKFLAGS','RPATH','LINKDEPS'])
|
||||
ccroot.USELIB_VARS['fcstlib']=set(['ARFLAGS','LINKDEPS'])
|
||||
@feature('fcprogram','fcshlib','fcstlib','fcprogram_test')
|
||||
def dummy(self):
|
||||
pass
|
||||
@extension('.f','.f90','.F','.F90','.for','.FOR')
|
||||
def fc_hook(self,node):
|
||||
return self.create_compiled_task('fc',node)
|
||||
@conf
|
||||
def modfile(conf,name):
|
||||
return{'lower':name.lower()+'.mod','lower.MOD':name.upper()+'.MOD','UPPER.mod':name.upper()+'.mod','UPPER':name.upper()+'.MOD'}[conf.env.FC_MOD_CAPITALIZATION or'lower']
|
||||
def get_fortran_tasks(tsk):
|
||||
bld=tsk.generator.bld
|
||||
tasks=bld.get_tasks_group(bld.get_group_idx(tsk.generator))
|
||||
return[x for x in tasks if isinstance(x,fc)and not getattr(x,'nomod',None)and not getattr(x,'mod_fortran_done',None)]
|
||||
class fc(Task.Task):
|
||||
color='GREEN'
|
||||
run_str='${FC} ${FCFLAGS} ${FCINCPATH_ST:INCPATHS} ${FCDEFINES_ST:DEFINES} ${_FCMODOUTFLAGS} ${FC_TGT_F}${TGT[0].abspath()} ${FC_SRC_F}${SRC[0].abspath()}'
|
||||
vars=["FORTRANMODPATHFLAG"]
|
||||
def scan(self):
|
||||
tmp=fc_scan.fortran_parser(self.generator.includes_nodes)
|
||||
tmp.task=self
|
||||
tmp.start(self.inputs[0])
|
||||
if Logs.verbose:
|
||||
Logs.debug('deps: deps for %r: %r; unresolved %r'%(self.inputs,tmp.nodes,tmp.names))
|
||||
return(tmp.nodes,tmp.names)
|
||||
def runnable_status(self):
|
||||
if getattr(self,'mod_fortran_done',None):
|
||||
return super(fc,self).runnable_status()
|
||||
bld=self.generator.bld
|
||||
lst=get_fortran_tasks(self)
|
||||
for tsk in lst:
|
||||
tsk.mod_fortran_done=True
|
||||
for tsk in lst:
|
||||
ret=tsk.runnable_status()
|
||||
if ret==Task.ASK_LATER:
|
||||
for x in lst:
|
||||
x.mod_fortran_done=None
|
||||
return Task.ASK_LATER
|
||||
ins=Utils.defaultdict(set)
|
||||
outs=Utils.defaultdict(set)
|
||||
for tsk in lst:
|
||||
key=tsk.uid()
|
||||
for x in bld.raw_deps[key]:
|
||||
if x.startswith('MOD@'):
|
||||
name=bld.modfile(x.replace('MOD@',''))
|
||||
node=bld.srcnode.find_or_declare(name)
|
||||
tsk.set_outputs(node)
|
||||
outs[id(node)].add(tsk)
|
||||
for tsk in lst:
|
||||
key=tsk.uid()
|
||||
for x in bld.raw_deps[key]:
|
||||
if x.startswith('USE@'):
|
||||
name=bld.modfile(x.replace('USE@',''))
|
||||
node=bld.srcnode.find_resource(name)
|
||||
if node and node not in tsk.outputs:
|
||||
if not node in bld.node_deps[key]:
|
||||
bld.node_deps[key].append(node)
|
||||
ins[id(node)].add(tsk)
|
||||
for k in ins.keys():
|
||||
for a in ins[k]:
|
||||
a.run_after.update(outs[k])
|
||||
tmp=[]
|
||||
for t in outs[k]:
|
||||
tmp.extend(t.outputs)
|
||||
a.dep_nodes.extend(tmp)
|
||||
a.dep_nodes.sort(key=lambda x:x.abspath())
|
||||
for tsk in lst:
|
||||
try:
|
||||
delattr(tsk,'cache_sig')
|
||||
except AttributeError:
|
||||
pass
|
||||
return super(fc,self).runnable_status()
|
||||
class fcprogram(ccroot.link_task):
|
||||
color='YELLOW'
|
||||
run_str='${FC} ${LINKFLAGS} ${FCLNK_SRC_F}${SRC} ${FCLNK_TGT_F}${TGT[0].abspath()} ${RPATH_ST:RPATH} ${FCSTLIB_MARKER} ${FCSTLIBPATH_ST:STLIBPATH} ${FCSTLIB_ST:STLIB} ${FCSHLIB_MARKER} ${FCLIBPATH_ST:LIBPATH} ${FCLIB_ST:LIB}'
|
||||
inst_to='${BINDIR}'
|
||||
class fcshlib(fcprogram):
|
||||
inst_to='${LIBDIR}'
|
||||
class fcprogram_test(fcprogram):
|
||||
def can_retrieve_cache(self):
|
||||
return False
|
||||
def runnable_status(self):
|
||||
ret=super(fcprogram_test,self).runnable_status()
|
||||
if ret==Task.SKIP_ME:
|
||||
ret=Task.RUN_ME
|
||||
return ret
|
||||
def exec_command(self,cmd,**kw):
|
||||
bld=self.generator.bld
|
||||
kw['shell']=isinstance(cmd,str)
|
||||
kw['stdout']=kw['stderr']=Utils.subprocess.PIPE
|
||||
kw['cwd']=bld.variant_dir
|
||||
bld.out=bld.err=''
|
||||
bld.to_log('command: %s\n'%cmd)
|
||||
kw['output']=0
|
||||
try:
|
||||
(bld.out,bld.err)=bld.cmd_and_log(cmd,**kw)
|
||||
except Exception ,e:
|
||||
return-1
|
||||
if bld.out:
|
||||
bld.to_log("out: %s\n"%bld.out)
|
||||
if bld.err:
|
||||
bld.to_log("err: %s\n"%bld.err)
|
||||
class fcstlib(ccroot.stlink_task):
|
||||
pass
|
||||
Reference in New Issue
Block a user