diff options
Diffstat (limited to 'ninjabackend.py')
-rw-r--r-- | ninjabackend.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/ninjabackend.py b/ninjabackend.py index 547a8ae..b165ef5 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -441,6 +441,27 @@ class NinjaBackend(backends.Backend): elem.add_item('ARGS', commands) elem.write(outfile) + def generate_cs_resource_tasks(self, target, outfile): + args = [] + deps = [] + for r in target.resources: + rel_sourcefile = os.path.join(self.build_to_src, target.subdir, r) + if r.endswith('.resources'): + a = '-resource:' + rel_sourcefile + elif r.endswith('.txt') or r.endswith('.resx'): + ofilebase = os.path.splitext(os.path.basename(r))[0] + '.resources' + ofilename = os.path.join(self.get_target_dir(target), target.get_basename() + '.dir', ofilebase) + elem = NinjaBuildElement(ofilename, "CUSTOM_COMMAND", rel_sourcefile) + elem.add_item('COMMAND', ['resgen', rel_sourcefile, ofilename]) + elem.add_item('DESC', 'Compiling resource %s.' % rel_sourcefile) + elem.write(outfile) + deps.append(ofilename) + a = '-resource:' + ofilename + else: + raise InvalidArguments('Unknown resource file %s.' % r) + args.append(a) + return (args, deps) + def generate_cs_target(self, target, outfile): buildtype = self.environment.coredata.buildtype fname = target.get_filename() @@ -450,6 +471,7 @@ class NinjaBackend(backends.Backend): compiler = self.get_compiler_for_source(src_list[0]) assert(compiler.get_language() == 'cs') rel_srcs = [os.path.join(self.build_to_src, s) for s in src_list] + deps = [] commands = target.extra_args.get('cs', []) commands += compiler.get_buildtype_args(buildtype) if isinstance(target, build.Executable): @@ -458,8 +480,10 @@ class NinjaBackend(backends.Backend): commands.append('-target:library') else: raise MesonException('Unknown C# target type.') + (resource_args, resource_deps) = self.generate_cs_resource_tasks(target, outfile) + commands += resource_args + deps += resource_deps commands += compiler.get_output_args(outname_rel) - deps = [] for l in target.link_targets: commands += compiler.get_link_args(l.get_filename()) deps.append(l.get_filename()) |