aboutsummaryrefslogtreecommitdiff
path: root/ninjabackend.py
diff options
context:
space:
mode:
Diffstat (limited to 'ninjabackend.py')
-rw-r--r--ninjabackend.py38
1 files changed, 1 insertions, 37 deletions
diff --git a/ninjabackend.py b/ninjabackend.py
index f9d1979..f1274a7 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -287,19 +287,13 @@ class NinjaBackend(backends.Backend):
self.generate_target(t, outfile)
def generate_custom_target(self, target, outfile):
- ofilenames = [os.path.join(self.get_target_dir(target), i) for i in target.output]
+ (srcs, ofilenames, cmd) = self.eval_custom_target_command(target)
deps = []
for i in target.get_dependencies():
# FIXME, should not grab element at zero but rather expand all.
if isinstance(i, list):
i = i[0]
deps.append(os.path.join(self.get_target_dir(i), i.get_filename()[0]))
- srcs = []
- for i in target.sources:
- if isinstance(i, str):
- srcs.append(os.path.join(self.build_to_src, target.subdir, i))
- else:
- srcs.append(i.rel_to_builddir(self.build_to_src))
if target.build_always:
deps.append('PHONY')
elem = NinjaBuildElement(ofilenames, 'CUSTOM_COMMAND', srcs)
@@ -315,36 +309,6 @@ class NinjaBackend(backends.Backend):
tmp = [tmp]
for fname in tmp:
elem.add_dep(os.path.join(self.get_target_dir(d), fname))
- cmd = []
- for i in target.command:
- if isinstance(i, build.CustomTarget):
- # GIR scanner will attempt to execute this binary but
- # it assumes that it is in path, so always give it a full path.
- tmp = i.get_filename()[0]
- i = os.path.join(self.get_target_dir(i), tmp)
- for (j, src) in enumerate(srcs):
- i = i.replace('@INPUT%d@' % j, src)
- for (j, res) in enumerate(ofilenames):
- i = i.replace('@OUTPUT%d@' % j, res)
- if i == '@INPUT@':
- cmd += srcs
- elif i == '@OUTPUT@':
- cmd += ofilenames
- else:
- if '@OUTDIR@' in i:
- i = i.replace('@OUTDIR@', self.get_target_dir(target))
- elif '@PRIVATE_OUTDIR_' in i:
- match = re.search('@PRIVATE_OUTDIR_(ABS_)?([-a-zA-Z0-9.@:]*)@', i)
- source = match.group(0)
- if match.group(1) is None:
- lead_dir = ''
- else:
- lead_dir = self.environment.get_build_dir()
- target_id = match.group(2)
- i = i.replace(source,
- os.path.join(lead_dir,
- self.get_target_dir(self.build.targets[target_id])))
- cmd.append(i)
elem.add_item('COMMAND', cmd)
elem.add_item('description', 'Generating %s with a custom command.' % target.name)