aboutsummaryrefslogtreecommitdiff
path: root/ninjabackend.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-07-30 15:49:01 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-07-30 15:49:01 +0300
commit6af7f92ab3a4d3fd70efa93b377d88056b9cbf02 (patch)
tree5b9286c8e64cd027bef4948ceed260d12d31e81b /ninjabackend.py
parent735bacb050b7bb0da3d8e9459bb68bdb815357a7 (diff)
downloadmeson-6af7f92ab3a4d3fd70efa93b377d88056b9cbf02.zip
meson-6af7f92ab3a4d3fd70efa93b377d88056b9cbf02.tar.gz
meson-6af7f92ab3a4d3fd70efa93b377d88056b9cbf02.tar.bz2
Handle C# resource files.
Diffstat (limited to 'ninjabackend.py')
-rw-r--r--ninjabackend.py26
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())