Can generate custom rules for dependencies.
This commit is contained in:
parent
71ce75899a
commit
a869da185f
18
backends.py
18
backends.py
|
@ -418,12 +418,30 @@ class NinjaBackend(Backend):
|
|||
datafile.write(self.get_target_filename(t.get_exe()) + '\n')
|
||||
datafile.close()
|
||||
|
||||
def generate_dep_gen_rules(self, outfile):
|
||||
outfile.write('# Rules for external dependency generators.\n\n')
|
||||
processed = {}
|
||||
for dep in self.environment.coredata.deps.values():
|
||||
name = dep.get_name()
|
||||
if name in processed:
|
||||
continue
|
||||
processed[name] = True
|
||||
for rule in dep.get_generate_rules():
|
||||
outfile.write('rule %s\n' % rule.name)
|
||||
command = ' '.join([ninja_quote(x) for x in rule.cmd_list])
|
||||
command = command.replace('@INFILE@', '$in').replace('@OUTFILE@', '$out')
|
||||
outfile.write(' command = %s\n' % command)
|
||||
desc = rule.description.replace('@INFILE@', '$in')
|
||||
outfile.write(' description = %s\n' % desc)
|
||||
outfile.write('\n')
|
||||
|
||||
def generate_rules(self, outfile):
|
||||
outfile.write('# Rules for compiling.\n\n')
|
||||
self.generate_compile_rules(outfile)
|
||||
outfile.write('# Rules for linking.\n\n')
|
||||
self.generate_static_link_rules(outfile)
|
||||
self.generate_dynamic_link_rules(outfile)
|
||||
self.generate_dep_gen_rules(outfile)
|
||||
outfile.write('# Other rules\n\n')
|
||||
outfile.write('rule CUSTOM_COMMAND\n')
|
||||
outfile.write(' command = $COMMAND\n')
|
||||
|
|
|
@ -28,6 +28,14 @@ class DependencyException(MesonException):
|
|||
def __init__(self, *args, **kwargs):
|
||||
MesonException.__init__(self, *args, **kwargs)
|
||||
|
||||
class CustomRule:
|
||||
def __init__(self, cmd_list, name_templ, src_keyword, name, description):
|
||||
self.cmd_list = cmd_list
|
||||
self.name_templ = name_templ
|
||||
self.src_keyword = src_keyword
|
||||
self.name = name
|
||||
self.description = description
|
||||
|
||||
class Dependency():
|
||||
def __init__(self):
|
||||
self.name = "null"
|
||||
|
@ -49,6 +57,11 @@ class Dependency():
|
|||
def get_name(self):
|
||||
return self.name
|
||||
|
||||
# Rules for commands to execute before compilation
|
||||
# such as Qt's moc preprocessor.
|
||||
def get_generate_rules(self):
|
||||
return []
|
||||
|
||||
class PkgConfigDependency(Dependency):
|
||||
pkgconfig_found = False
|
||||
|
||||
|
@ -316,6 +329,13 @@ class Qt5Dependency(Dependency):
|
|||
return False
|
||||
return True
|
||||
|
||||
def get_generate_rules(self):
|
||||
moc_rule = CustomRule([self.moc.get_command(), '@INFILE@', '-o', '@OUTFILE@'],
|
||||
'moc_%BASENAME%.cpp','moc_headers', 'moc_compile',
|
||||
'Compiling @INFILE@ with the moc preprocessor')
|
||||
return [moc_rule]
|
||||
|
||||
|
||||
def get_dep_identifier(name, kwargs):
|
||||
elements = [name]
|
||||
modlist = kwargs.get('modules', [])
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include <QObject>
|
||||
#include <QMainWindow>
|
||||
#include "ui_mainWindow.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue