EXT_RCC=['.qrc']
EXT_UI=['.ui']
EXT_QT4=['.cpp','.cc','.cxx','.C']
-QT4_LIBS="QtCore QtGui QtUiTools QtNetwork QtOpenGL QtSql QtSvg QtTest QtXml QtXmlPatterns QtWebKit Qt3Support QtHelp QtScript QtDeclarative"
-class qxx(cxx.cxx):
+QT4_LIBS="QtCore QtGui QtUiTools QtNetwork QtOpenGL QtSql QtSvg QtTest QtXml QtXmlPatterns QtWebKit Qt3Support QtHelp QtScript QtDeclarative QtDesigner"
+class qxx(Task.classes['cxx']):
def __init__(self,*k,**kw):
Task.Task.__init__(self,*k,**kw)
self.moc_done=0
def scan(self):
(nodes,names)=c_preproc.scan(self)
+ lst=[]
for x in nodes:
if x.name.endswith('.moc'):
- nodes.remove(x)
- names.append(x.path_from(self.inputs[0].parent.get_bld()))
- return(nodes,names)
+ s=x.path_from(self.inputs[0].parent.get_bld())
+ if s not in names:
+ names.append(s)
+ else:
+ lst.append(x)
+ return(lst,names)
def runnable_status(self):
if self.moc_done:
return Task.Task.runnable_status(self)
return Task.ASK_LATER
self.add_moc_tasks()
return Task.Task.runnable_status(self)
+ def create_moc_task(self,h_node,m_node):
+ try:
+ moc_cache=self.generator.bld.moc_cache
+ except AttributeError:
+ moc_cache=self.generator.bld.moc_cache={}
+ try:
+ return moc_cache[h_node]
+ except KeyError:
+ tsk=moc_cache[h_node]=Task.classes['moc'](env=self.env,generator=self.generator)
+ tsk.set_inputs(h_node)
+ tsk.set_outputs(m_node)
+ gen=self.generator.bld.producer
+ gen.outstanding.insert(0,tsk)
+ gen.total+=1
+ return tsk
def add_moc_tasks(self):
node=self.inputs[0]
bld=self.generator.bld
if not h_node:
raise Errors.WafError('no header found for %r which is a moc file'%d)
bld.node_deps[(self.inputs[0].parent.abspath(),m_node.name)]=h_node
- task=Task.classes['moc'](env=self.env,generator=self.generator)
- task.set_inputs(h_node)
- task.set_outputs(m_node)
- gen=bld.producer
- gen.outstanding.insert(0,task)
- gen.total+=1
+ task=self.create_moc_task(h_node,m_node)
moctasks.append(task)
tmp_lst=bld.raw_deps[self.uid()]=mocfiles
lst=bld.node_deps.get(self.uid(),())
for d in lst:
name=d.name
if name.endswith('.moc'):
- task=Task.classes['moc'](env=self.env,generator=self.generator)
- task.set_inputs(bld.node_deps[(self.inputs[0].parent.abspath(),name)])
- task.set_outputs(d)
- gen=bld.producer
- gen.outstanding.insert(0,task)
- gen.total+=1
+ task=self.create_moc_task(bld.node_deps[(self.inputs[0].parent.abspath(),name)],d)
moctasks.append(task)
self.run_after.update(set(moctasks))
self.moc_done=1
lst.append('-'+flag[1:])
else:
lst.append(flag)
- self.env['MOC_FLAGS']=lst
+ self.env.append_value('MOC_FLAGS',lst)
@extension(*EXT_QT4)
def cxx_hook(self,node):
return self.create_compiled_task('qxx',node)
def configure(self):
self.find_qt4_binaries()
self.set_qt4_libs_to_check()
+ self.set_qt4_defines()
self.find_qt4_libraries()
self.add_qt4_rpath()
self.simplify_qt4_libs()
@conf
def add_qt4_rpath(self):
env=self.env
- if Options.options.want_rpath:
+ if getattr(Options.options,'want_rpath',False):
def process_rpath(vars_,coreval):
for d in vars_:
var=d.upper()
if not hasattr(self,'qt4_vars_debug'):
self.qt4_vars_debug=[a+'_debug'for a in self.qt4_vars]
self.qt4_vars_debug=Utils.to_list(self.qt4_vars_debug)
+@conf
+def set_qt4_defines(self):
+ if sys.platform!='win32':
+ return
+ for x in self.qt4_vars:
+ y=x[2:].upper()
+ self.env.append_unique('DEFINES_%s'%x.upper(),'QT_%s_LIB'%y)
+ self.env.append_unique('DEFINES_%s_DEBUG'%x.upper(),'QT_%s_LIB'%y)
def options(opt):
opt.add_option('--want-rpath',action='store_true',default=False,dest='want_rpath',help='enable the rpath for qt libraries')
opt.add_option('--header-ext',type='string',default='',help='header extension for moc files',dest='qt_header_ext')